41 #define YUILogComponent "ncurses-pkg"
44 #include "NCPkgMenuDeps.h"
45 #include "NCPackageSelector.h"
47 #define CHECK_BOX "[ ] "
48 #define NO_CHECK_BOX " "
56 NCPkgMenuDeps::NCPkgMenuDeps (YWidget *parent, std::string label,
NCPackageSelector *pkger )
57 : NCMenuButton( parent, label)
63 NCPkgMenuDeps::~NCPkgMenuDeps()
68 void NCPkgMenuDeps::setSelected( YMenuItem *item,
bool selected)
70 std::string oldLabel = item->label();
73 if ( item == cleanDepsOnRemove || item == allowVendorChange )
76 std::string newLabel = oldLabel.replace(1,1,1, selected ? sel :
' ');
78 item->setLabel( newLabel);
81 void NCPkgMenuDeps::createLayout()
84 autoCheckDeps =
new YMenuItem( CHECK_BOX + _(
"&Automatic Dependency Check" ) );
85 items.push_back( autoCheckDeps );
86 setSelected( autoCheckDeps, pkg->AutoCheck() );
88 checkNow =
new YMenuItem( NO_CHECK_BOX + _(
"&Check Dependencies Now" ) );
89 items.push_back( checkNow );
91 verifySystemOpt =
new YMenuItem( CHECK_BOX + _(
"&System Verification Mode" ) );
92 items.push_back( verifySystemOpt );
93 setSelected( verifySystemOpt, pkg->VerifySystem() );
95 verifySystem =
new YMenuItem( NO_CHECK_BOX + _(
"&Verify System Now" ) );
96 items.push_back( verifySystem );
98 installRecommendedOpt =
new YMenuItem( CHECK_BOX + _(
"Install &Recommended Packages" ) );
99 items.push_back( installRecommendedOpt );
100 setSelected( installRecommendedOpt, pkg->InstallRecommended() );
102 installRecommendedNow =
new YMenuItem( NO_CHECK_BOX + _(
"&Install Recommended Packages for Already Installed Packages Now" ) );
103 items.push_back( installRecommendedNow );
105 cleanDepsOnRemove =
new YMenuItem( CHECK_BOX + _(
"&Cleanup when Deleting Packages (Temporary Change)" ));
106 items.push_back ( cleanDepsOnRemove );
107 setSelected( cleanDepsOnRemove, pkg->isCleanDepsOnRemove() );
109 allowVendorChange =
new YMenuItem( CHECK_BOX + _(
"&Allow Vendor Change (Temporary Change)" ) );
110 items.push_back ( allowVendorChange );
111 setSelected( allowVendorChange, pkg->isAllowVendorChange() );
113 testCase =
new YMenuItem( NO_CHECK_BOX + _(
"&Generate Dependency Solver Testcase" ) );
114 items.push_back( testCase );
119 bool NCPkgMenuDeps::handleEvent(
const NCursesEvent & event)
121 if (!event.selection)
124 if (event.selection == checkNow )
125 return checkDependencies();
126 else if (event.selection == autoCheckDeps)
127 return setAutoCheck();
128 else if (event.selection == verifySystem)
130 else if (event.selection == verifySystemOpt )
131 return setVerifySystem();
132 else if (event.selection == cleanDepsOnRemove )
133 return setCleanDepsOnRemove();
134 else if (event.selection == installRecommendedOpt )
135 return setInstallRecommended();
136 else if (event.selection == installRecommendedNow )
137 return doInstallRecommended();
138 else if (event.selection == allowVendorChange )
139 return setAllowVendorChange();
140 else if (event.selection == testCase)
141 return generateTestcase();
146 void popupInfo(
const wsze size,
const std::string & text)
148 wpos pos((NCurses::lines() - size.H) / 2, (NCurses::cols() - size.W) / 2);
149 NCPopupInfo * info =
new NCPopupInfo( pos,
152 info->setPreferredSize(size.W, size.H);
153 info->showInfoPopup();
154 YDialog::deleteTopmostDialog();
157 bool NCPkgMenuDeps::checkDependencies()
161 if ( pkg->DepsPopup() )
163 yuiMilestone() <<
"Checking dependencies" << endl;
164 pkg->checkNow ( &ok );
169 popupInfo(wsze(5, 35), _(
"All package dependencies are OK." ));
179 bool NCPkgMenuDeps::doInstallRecommended()
183 yuiMilestone() <<
"Adding recommended packages" << endl;
186 pkg->doInstallRecommended ( &ok );
192 _(
"Automatic Changes"),
194 _(
"Being recommended by already installed packages, the following"),
196 _(
"packages have been automatically selected for installation:")
199 NCursesEvent input = autoChangePopup->showInfoPopup();
200 if ( input == NCursesEvent::cancel )
205 YDialog::deleteTopmostDialog();
215 bool NCPkgMenuDeps::generateTestcase()
217 std::string testCaseDir =
"/var/log/YaST2/solverTestcase";
219 yuiMilestone() <<
"Generating solver test case START" << endl;
220 bool success = zypp::getZYpp()->resolver()->createSolverTestcase( testCaseDir );
221 yuiMilestone() <<
"Generating solver test case END" << endl;
225 popupInfo(wsze(8, 40),
226 _(
"Dependency resolver test case written to " ) +
"<br>"
234 bool NCPkgMenuDeps::setAutoCheck()
236 pkg->setAutoCheck( !pkg->AutoCheck() );
237 setSelected( autoCheckDeps, pkg->AutoCheck() );
242 bool NCPkgMenuDeps::setVerifySystem()
244 pkg->setVerifySystem( !pkg->VerifySystem() );
245 setSelected( verifySystemOpt, pkg->VerifySystem() );
250 bool NCPkgMenuDeps::setCleanDepsOnRemove()
252 pkg->setCleanDepsOnRemove( !pkg->isCleanDepsOnRemove() );
253 setSelected( cleanDepsOnRemove, pkg->isCleanDepsOnRemove() );
258 bool NCPkgMenuDeps::setInstallRecommended()
260 pkg->setInstallRecommended( !pkg->InstallRecommended() );
261 setSelected( installRecommendedOpt, pkg->InstallRecommended() );
267 bool NCPkgMenuDeps::setAllowVendorChange()
269 pkg->setAllowVendorChange( !pkg->isAllowVendorChange() );
270 setSelected( allowVendorChange, pkg->isAllowVendorChange() );
275 bool NCPkgMenuDeps::verify()
279 yuiMilestone() <<
"Verifying system" << endl;
283 pkg->systemVerification( &ok );
289 _(
"Automatic Changes"),
291 _(
"To fulfill the dependencies of already installed packages following"),
293 _(
"packages have been automatically selected for installation:")
295 NCursesEvent input = autoChangePopup->showInfoPopup();
297 if ( input == NCursesEvent::cancel )
302 if ( ok && input == NCursesEvent::button )
305 popupInfo(wsze(5, 35), _(
"System dependencies verify OK." ));
308 YDialog::deleteTopmostDialog();
313 setSelected( verifySystemOpt,
true );
void showDiskSpace()
Calls the package mananager (updateDu()) and shows the required disk space.
void updatePackageList()
Updates the status in list of packages.
void saveState()
Check for changes.
static const std::string OKLabel()
The label of the OK button.