Hello community,
here is the log from the commit of package libyui-ncurses-pkg for
openSUSE:Leap:15.2 checked in at 2020-02-10 16:41:22
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Leap:15.2/libyui-ncurses-pkg (Old)
and /work/SRC/openSUSE:Leap:15.2/.libyui-ncurses-pkg.new.26092 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "libyui-ncurses-pkg"
Mon Feb 10 16:41:22 2020 rev:17 rq:772189 version:2.50.5
Changes:
--------
--- /work/SRC/openSUSE:Leap:15.2/libyui-ncurses-pkg/libyui-ncurses-pkg.changes
2020-02-04 17:54:52.812765959 +0100
+++
/work/SRC/openSUSE:Leap:15.2/.libyui-ncurses-pkg.new.26092/libyui-ncurses-pkg.changes
2020-02-10 16:41:30.227705460 +0100
@@ -1,0 +2,6 @@
+Thu Feb 6 15:24:40 UTC 2020 - Stefan Hundhammer <[email protected]>
+
+- Ask user for confirmation for retracted packages (bsc#1162145)
+- 2.50.5
+
+-------------------------------------------------------------------
Old:
----
libyui-ncurses-pkg-2.50.4.tar.bz2
New:
----
libyui-ncurses-pkg-2.50.5.tar.bz2
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ libyui-ncurses-pkg-doc.spec ++++++
--- /var/tmp/diff_new_pack.9lJfVb/_old 2020-02-10 16:41:30.539705679 +0100
+++ /var/tmp/diff_new_pack.9lJfVb/_new 2020-02-10 16:41:30.543705682 +0100
@@ -20,7 +20,7 @@
%define so_version 11
Name: %{parent}-doc
-Version: 2.50.4
+Version: 2.50.5
Release: 0
Source: %{parent}-%{version}.tar.bz2
++++++ libyui-ncurses-pkg.spec ++++++
--- /var/tmp/diff_new_pack.9lJfVb/_old 2020-02-10 16:41:30.555705691 +0100
+++ /var/tmp/diff_new_pack.9lJfVb/_new 2020-02-10 16:41:30.555705691 +0100
@@ -17,7 +17,7 @@
Name: libyui-ncurses-pkg
-Version: 2.50.4
+Version: 2.50.5
Release: 0
Source: %{name}-%{version}.tar.bz2
++++++ libyui-ncurses-pkg-2.50.4.tar.bz2 -> libyui-ncurses-pkg-2.50.5.tar.bz2
++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/libyui-ncurses-pkg-2.50.4/VERSION.cmake
new/libyui-ncurses-pkg-2.50.5/VERSION.cmake
--- old/libyui-ncurses-pkg-2.50.4/VERSION.cmake 2020-01-24 07:40:20.000000000
+0100
+++ new/libyui-ncurses-pkg-2.50.5/VERSION.cmake 2020-02-06 16:48:26.000000000
+0100
@@ -1,6 +1,6 @@
SET( VERSION_MAJOR "2" )
SET( VERSION_MINOR "50" )
-SET( VERSION_PATCH "4" )
+SET( VERSION_PATCH "5" )
SET( VERSION "${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_PATCH}" )
##### This is need for the libyui core, ONLY.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/libyui-ncurses-pkg-2.50.4/package/libyui-ncurses-pkg-doc.spec
new/libyui-ncurses-pkg-2.50.5/package/libyui-ncurses-pkg-doc.spec
--- old/libyui-ncurses-pkg-2.50.4/package/libyui-ncurses-pkg-doc.spec
2020-01-24 07:40:20.000000000 +0100
+++ new/libyui-ncurses-pkg-2.50.5/package/libyui-ncurses-pkg-doc.spec
2020-02-06 16:48:26.000000000 +0100
@@ -19,7 +19,7 @@
%define so_version 11
Name: %{parent}-doc
-Version: 2.50.4
+Version: 2.50.5
Release: 0
Source: %{parent}-%{version}.tar.bz2
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/libyui-ncurses-pkg-2.50.4/package/libyui-ncurses-pkg.changes
new/libyui-ncurses-pkg-2.50.5/package/libyui-ncurses-pkg.changes
--- old/libyui-ncurses-pkg-2.50.4/package/libyui-ncurses-pkg.changes
2020-01-24 07:40:20.000000000 +0100
+++ new/libyui-ncurses-pkg-2.50.5/package/libyui-ncurses-pkg.changes
2020-02-06 16:48:26.000000000 +0100
@@ -1,4 +1,10 @@
-------------------------------------------------------------------
+Thu Feb 6 15:24:40 UTC 2020 - Stefan Hundhammer <[email protected]>
+
+- Ask user for confirmation for retracted packages (bsc#1162145)
+- 2.50.5
+
+-------------------------------------------------------------------
Thu Jan 23 09:23:11 UTC 2020 - Imobach Gonzalez Sosa <[email protected]>
- Add an option to include a "Search Online" option in the
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/libyui-ncurses-pkg-2.50.4/package/libyui-ncurses-pkg.spec
new/libyui-ncurses-pkg-2.50.5/package/libyui-ncurses-pkg.spec
--- old/libyui-ncurses-pkg-2.50.4/package/libyui-ncurses-pkg.spec
2020-01-24 07:40:20.000000000 +0100
+++ new/libyui-ncurses-pkg-2.50.5/package/libyui-ncurses-pkg.spec
2020-02-06 16:48:26.000000000 +0100
@@ -17,7 +17,7 @@
Name: libyui-ncurses-pkg
-Version: 2.50.4
+Version: 2.50.5
Release: 0
Source: %{name}-%{version}.tar.bz2
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/libyui-ncurses-pkg-2.50.4/src/NCPackageSelector.cc
new/libyui-ncurses-pkg-2.50.5/src/NCPackageSelector.cc
--- old/libyui-ncurses-pkg-2.50.4/src/NCPackageSelector.cc 2020-01-24
07:40:20.000000000 +0100
+++ new/libyui-ncurses-pkg-2.50.5/src/NCPackageSelector.cc 2020-02-06
16:48:26.000000000 +0100
@@ -474,7 +474,7 @@
if ( event == NCursesEvent::handled )
return false;
- yuiMilestone() << "widget event: " << event << endl;
+ // yuiMilestone() << "widget event: " << event << endl;
// Call the appropriate handler
if ( event == NCursesEvent::button )
{
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/libyui-ncurses-pkg-2.50.4/src/NCPackageSelectorPluginImpl.cc
new/libyui-ncurses-pkg-2.50.5/src/NCPackageSelectorPluginImpl.cc
--- old/libyui-ncurses-pkg-2.50.4/src/NCPackageSelectorPluginImpl.cc
2020-01-24 07:40:20.000000000 +0100
+++ new/libyui-ncurses-pkg-2.50.5/src/NCPackageSelectorPluginImpl.cc
2020-02-06 16:48:26.000000000 +0100
@@ -177,7 +177,7 @@
result = ncSelector->handleEvent( event );
// reset to function keys of the main dialog
ncd->setStatusLine();
- yuiMilestone() << "Result of handleEvent: " <<
(result?"true":"false") << endl;
+ // yuiMilestone() << "Result of handleEvent: " <<
(result?"true":"false") << endl;
}
while ( event != NCursesEvent::cancel && result == true );
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/libyui-ncurses-pkg-2.50.4/src/NCPkgFilterLocale.cc
new/libyui-ncurses-pkg-2.50.5/src/NCPkgFilterLocale.cc
--- old/libyui-ncurses-pkg-2.50.4/src/NCPkgFilterLocale.cc 2020-01-24
07:40:20.000000000 +0100
+++ new/libyui-ncurses-pkg-2.50.5/src/NCPkgFilterLocale.cc 2020-02-06
16:48:26.000000000 +0100
@@ -58,6 +58,7 @@
}
+
NCPkgLocaleTable::NCPkgLocaleTable( YWidget *parent, YTableHeader
*tableHeader, NCPackageSelector *pkg )
:NCTable( parent, tableHeader )
, packager(pkg)
@@ -66,6 +67,7 @@
fillLocaleList();
}
+
void NCPkgLocaleTable::fillHeader()
{
std::vector <std::string> header;
@@ -78,6 +80,7 @@
setHeader( header);
}
+
void NCPkgLocaleTable::addLine ( zypp::sat::LocaleSupport l, const
std::vector <std::string> & cols, std::string status )
{
// use default ctor, add cell in the next step
@@ -96,6 +99,7 @@
}
+
std::string NCPkgLocaleTable::status( zypp::Locale lang )
{
ZyppStatus status;
@@ -117,6 +121,7 @@
}
}
+
void NCPkgLocaleTable::fillLocaleList()
{
std::vector <std::string> oneLine;
@@ -134,6 +139,7 @@
myPad()->setOrder(1);
}
+
NCPkgLocaleTag* NCPkgLocaleTable::getTag (const int & index )
{
NCTableLine *line = myPad()->ModifyLine( index );
@@ -150,6 +156,7 @@
return tag;
}
+
zypp::sat::LocaleSupport NCPkgLocaleTable::getLocale( int index )
{
NCPkgLocaleTag *t = getTag( index );
@@ -157,6 +164,7 @@
return t->getLocale();
}
+
void NCPkgLocaleTable::showLocalePackages()
{
int index = getCurrentItem();
@@ -182,7 +190,8 @@
packageList->showInformation();
}
-void NCPkgLocaleTable::toggleStatus()
+
+void NCPkgLocaleTable::cycleStatus()
{
int index = getCurrentItem();
zypp::sat::LocaleSupport myLocale = getLocale( index );
@@ -207,6 +216,7 @@
cellChanged( index, 0, status( myLocale.locale() ) );
}
+
NCursesEvent NCPkgLocaleTable::wHandleInput( wint_t ch )
{
NCursesEvent ret = NCursesEvent::none;
@@ -227,7 +237,7 @@
case KEY_SPACE:
case KEY_RETURN:
ret = NCursesEvent::handled;
- toggleStatus();
+ cycleStatus();
showLocalePackages();
break;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/libyui-ncurses-pkg-2.50.4/src/NCPkgFilterLocale.h
new/libyui-ncurses-pkg-2.50.5/src/NCPkgFilterLocale.h
--- old/libyui-ncurses-pkg-2.50.4/src/NCPkgFilterLocale.h 2020-01-24
07:40:20.000000000 +0100
+++ new/libyui-ncurses-pkg-2.50.5/src/NCPkgFilterLocale.h 2020-02-06
16:48:26.000000000 +0100
@@ -87,7 +87,7 @@
NCPkgLocaleTag* getTag (const int & index );
zypp::sat::LocaleSupport getLocale( int index );
std::string status( zypp::Locale lang );
- void toggleStatus();
+ void cycleStatus();
NCursesEvent wHandleInput( wint_t ch );
};
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/libyui-ncurses-pkg-2.50.4/src/NCPkgMenuAction.cc
new/libyui-ncurses-pkg-2.50.5/src/NCPkgMenuAction.cc
--- old/libyui-ncurses-pkg-2.50.4/src/NCPkgMenuAction.cc 2020-01-24
07:40:20.000000000 +0100
+++ new/libyui-ncurses-pkg-2.50.5/src/NCPkgMenuAction.cc 2020-02-06
16:48:26.000000000 +0100
@@ -68,7 +68,7 @@
{
// Please note: add an appropriate number of whitespaces to get a well
// formated menu (the [ ]s should be in one column) and use unique
hotkeys until end:
- // begin: Actions menu, toggle the status of a package, e.g. change
from installed to delete
+ // begin: Actions menu, cycle the status of a package, e.g. change from
installed to delete
toggleItem = new YMenuItem( _( "&Toggle [SPACE]" ) );
installItem = new YMenuItem( _( "&Install [+]" ) );
deleteItem = new YMenuItem( _( "&Delete [-]" ) );
@@ -128,7 +128,7 @@
if (event.selection == toggleItem)
{
- pkgList->toggleObjStatus();
+ pkgList->cycleObjStatus();
}
else if (event.selection == installItem)
{
@@ -171,7 +171,9 @@
pkgList->changeListObjStatus( NCPkgTable::A_Update );
}
else
- yuiError() << "zatim nic" << endl;
+ {
+ yuiError() << "No action performed." << endl;
+ }
if ( pkg->VersionsList() )
pkg->VersionsList()->updateTable();
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/libyui-ncurses-pkg-2.50.4/src/NCPkgStatusStrategy.cc
new/libyui-ncurses-pkg-2.50.5/src/NCPkgStatusStrategy.cc
--- old/libyui-ncurses-pkg-2.50.4/src/NCPkgStatusStrategy.cc 2020-01-24
07:40:20.000000000 +0100
+++ new/libyui-ncurses-pkg-2.50.5/src/NCPkgStatusStrategy.cc 2020-02-06
16:48:26.000000000 +0100
@@ -53,6 +53,7 @@
using std::endl;
+
//------------------------------------------------------------
// Base class for strategies to handle status
//------------------------------------------------------------
@@ -71,6 +72,7 @@
{
}
+
///////////////////////////////////////////////////////////////////
//
// NCPkgStatusStrategy::getPackageStatus()
@@ -78,7 +80,7 @@
// Gets status from package manager
//
ZyppStatus NCPkgStatusStrategy::getPackageStatus( ZyppSel slbPtr,
- ZyppObj objPtr )
+ ZyppObj objPtr )
{
if ( slbPtr )
{
@@ -91,6 +93,7 @@
}
}
+
/////////////////////////////////////////////////////////////////
//
// NCPkgStatusStrategy::setObjectStatus()
@@ -110,11 +113,12 @@
ok = slbPtr->setStatus( newstatus );
yuiMilestone() << "Set status of: " << slbPtr->name() << " to: "
- << newstatus << " returns: " << (ok?"true":"false") << endl;
+ << newstatus << " returns: " << ( ok ? "true" : "false" )
<< endl;
return ok;
}
+
///////////////////////////////////////////////////////////////////
//
// NCPkgStatusStrategy::keyToStatus()
@@ -122,9 +126,9 @@
// Returns the corresponding status
//
bool NCPkgStatusStrategy::keyToStatus( const int & key,
- ZyppSel slbPtr,
- ZyppObj objPtr,
- ZyppStatus & newStat )
+ ZyppSel slbPtr,
+ ZyppObj objPtr,
+ ZyppStatus & newStat )
{
if ( !slbPtr )
return false;
@@ -148,6 +152,7 @@
retStat = S_NoInst;
}
break;
+
case '+':
if ( oldStatus == S_NoInst
|| oldStatus == S_AutoInstall )
@@ -169,6 +174,7 @@
valid = false;
}
break;
+
case '>':
if ( oldStatus == S_KeepInstalled
|| oldStatus == S_Del
@@ -184,8 +190,9 @@
valid = false;
}
break;
- // this is the case for 'going back' i.e. S_Install -> S_NoInst,
S_Update -> S_KeepInstalled
- // not for S_Del, since '+' key does this
+
+ // this is the case for 'going back' i.e. S_Install -> S_NoInst,
S_Update -> S_KeepInstalled
+ // not for S_Del, since '+' key does this
case '<':
if ( oldStatus == S_Install
|| oldStatus == S_AutoInstall )
@@ -198,21 +205,25 @@
retStat = S_KeepInstalled;
}
break;
+
case '!': // set S_Taboo
if ( !installed )
{
retStat = S_Taboo;
}
break;
+
case '*': // set S_Protected
if ( installed )
{
retStat = S_Protected;
}
break;
+
default:
yuiDebug() << "Key not valid" << endl;
valid = false;
+ break;
}
if ( valid )
@@ -222,15 +233,15 @@
}
-///////////////////////////////////////////////////////////////////
//
-// NCPkgStatusStrategy::toggleStatus()
+// Cycle the status patch to a new one and return the new status in
+// newStat_ret.
//
-// Returns the new status
+// The function return value is 'true' if ok, 'false' if not.
//
-bool NCPkgStatusStrategy::toggleStatus( ZyppSel slbPtr,
- ZyppObj objPtr,
- ZyppStatus & newStat )
+bool NCPkgStatusStrategy::cycleStatus( ZyppSel slbPtr,
+ ZyppObj objPtr,
+ ZyppStatus & newStat_ret )
{
if ( !slbPtr )
return false;
@@ -246,12 +257,15 @@
case S_Del:
newStatus = S_KeepInstalled;
break;
+
case S_Install:
newStatus =S_NoInst;
break;
+
case S_Update:
newStatus = S_Del;
break;
+
case S_KeepInstalled:
if ( patPtr )
newStatus = S_Install;
@@ -265,6 +279,7 @@
newStatus = S_Del;
}
break;
+
case S_NoInst:
if ( slbPtr->hasCandidateObj() || patPtr )
{
@@ -276,31 +291,37 @@
newStatus = S_NoInst;
}
break;
+
case S_AutoInstall:
// this used to be taboo before, but now ZYpp supports
// saving weak locks (unselected packages)
newStatus = S_NoInst;
break;
+
case S_AutoDel:
newStatus = S_KeepInstalled;
break;
+
case S_AutoUpdate:
newStatus = S_KeepInstalled;
break;
+
case S_Taboo:
newStatus = S_NoInst;
break;
+
case S_Protected:
newStatus = S_KeepInstalled;
break;
}
yuiMilestone() << "Status toogled: old " << oldStatus << ", new " <<
newStatus << endl;
- newStat = newStatus;
+ newStat_ret = newStatus;
return ok;
}
+
///////////////////////////////////////////////////////////////////
//
// NCPkgStatusStrategy::solveResolvableCollections()
@@ -364,7 +385,7 @@
bool isRelevant = slbPtr->candidateObj().isRelevant();
bool isBroken = slbPtr->candidateObj().isBroken();
- yuiMilestone() << slbPtr->name() << ": " << (toBeInst?"to be
installed":"not to be installed,")
+ yuiMilestone() << slbPtr->name() << ": " << (toBeInst?"to be installed" :
"not to be installed,")
<< " old status: " << oldStatus << endl;
// get the new status
@@ -428,15 +449,16 @@
return valid;
}
-///////////////////////////////////////////////////////////////////
+
//
-// PatchStatStrategy::toggleStatus()
+// Cycle the status patch to a new one and return the new status in
+// newStat_ret.
//
-// Returns the new status
+// The function return value is 'true' if ok, 'false' if not.
//
-bool PatchStatStrategy::toggleStatus( ZyppSel slbPtr,
- ZyppObj objPtr,
- ZyppStatus & newStat )
+bool PatchStatStrategy::cycleStatus( ZyppSel slbPtr,
+ ZyppObj objPtr,
+ ZyppStatus & newStat_ret )
{
if ( !slbPtr || !slbPtr->hasCandidateObj() )
return false;
@@ -453,12 +475,15 @@
case S_AutoInstall:
newStatus = S_NoInst;
break;
+
case S_KeepInstalled:
newStatus = S_Install;
break;
+
case S_NoInst:
newStatus = S_Install;
break;
+
case S_Taboo:
if ( isBroken )
{
@@ -469,12 +494,14 @@
newStatus = S_NoInst;
}
break;
+
default:
newStatus = oldStatus;
+ break;
}
- yuiMilestone() << "Status toogled: old " << oldStatus << ", new " <<
newStatus << endl;
- newStat = newStatus;
+ yuiMilestone() << "Status toogled: old " << oldStatus << ", new " <<
newStatus << endl;
+ newStat_ret = newStatus;
return ok;
}
@@ -499,7 +526,7 @@
ok = slbPtr->setStatus( newstatus );
yuiMilestone() << "Set status of: " << slbPtr->name() << " to: "
- << newstatus << " returns: " << (ok?"true":"false") << endl;
+ << newstatus << " returns: " << ( ok ? "true" : "false" )
<< endl;
// do a solver run
solveResolvableCollections();
@@ -507,6 +534,7 @@
return ok;
}
+
//------------------------------------------------------------
// Class for strategies for selections
//------------------------------------------------------------
@@ -519,6 +547,7 @@
{
}
+
/////////////////////////////////////////////////////////////////
//
// SelectionStatStrategy::setObjectStatus()
@@ -538,7 +567,7 @@
ok = slbPtr->setStatus( newstatus );
yuiMilestone() << "Set status of: " << slbPtr->name() << " to: "
- << newstatus << " returns: " << (ok?"true":"false") << endl;
+ << newstatus << " returns: " << ( ok ? "true" : "false" )
<< endl;
// do a solver run -> solver runs in NCPkgTable::changeStatus()
// solveResolvableCollections();
@@ -546,6 +575,7 @@
return ok;
}
+
//------------------------------------------------------------
// Class for strategies for depndencies
//------------------------------------------------------------
@@ -558,6 +588,7 @@
{
}
+
//------------------------------------------------------------
// Class for strategies to get status for available packages
//------------------------------------------------------------
@@ -570,6 +601,7 @@
{
}
+
///////////////////////////////////////////////////////////////////
//
// AvailableStatStrategy::setObjectStatus
@@ -577,7 +609,8 @@
// Informs the package manager about the new status (sets the candidate)
//
bool AvailableStatStrategy::setObjectStatus( ZyppStatus newstatus,
- ZyppSel slbPtr, ZyppObj objPtr )
+ ZyppSel slbPtr,
+ ZyppObj objPtr )
{
bool ok = false;
@@ -597,8 +630,7 @@
if ( slbPtr->installedObj() &&
slbPtr->installedObj()->edition() == newCandidate->edition() &&
- slbPtr->installedObj()->vendor() == newCandidate->vendor()
- )
+ slbPtr->installedObj()->vendor() == newCandidate->vendor() )
{
yuiMilestone() << "Identical package installed" << endl;
// Switch back to the original instance -
@@ -630,13 +662,13 @@
// Set candidate
ok = bool( slbPtr->setCandidate( newCandidate ) );
- yuiMilestone() << "Set user candidate returns: " <<
(ok?"true":"false") << endl;
+ yuiMilestone() << "Set user candidate returns: " << ( ok ? "true" :
"false" ) << endl;
if ( ok )
{
// Set status
ok = slbPtr->setStatus( status );
yuiMilestone() << "Set status of: " << slbPtr->name() << " to: "
- << status << " returns: " << (ok?"true":"false") <<
endl;
+ << status << " returns: " << ( ok ? "true" :
"false" ) << endl;
}
}
@@ -656,6 +688,7 @@
{
}
+
///////////////////////////////////////////////////////////////////
//
// MultiVersionStatStrategy::getPackageStatus()
@@ -675,6 +708,7 @@
return slbPtr->pickStatus( itemPtr );
}
+
///////////////////////////////////////////////////////////////////
//
// MultiVersionStatStrategy::setObjectStatus
@@ -683,7 +717,8 @@
// informs the package manager about the new status.
//
bool MultiVersionStatStrategy::setObjectStatus( ZyppStatus newstatus,
- ZyppSel slbPtr, ZyppObj objPtr
)
+ ZyppSel slbPtr,
+ ZyppObj objPtr )
{
bool ok = false;
@@ -706,7 +741,7 @@
{
ok = slbPtr->setPickStatus( itemPtr, newstatus );
yuiMilestone() << "Set new status of: "<< slbPtr->name() << ", " <<
objPtr->edition()
- << " to: " << newstatus << " returns: " <<
(ok?"true":"false") << endl;
+ << " to: " << newstatus << " returns: " << ( ok ?
"true" : "false" ) << endl;
}
else
{
@@ -717,15 +752,13 @@
{
ok = slbPtr->setPickStatus( itemPtr, newstatus );
yuiMilestone() << "Set new status of: "<< slbPtr->name() << ", " <<
objPtr->edition()
- << " to: " << newstatus << " returns: " <<
(ok?"true":"false") << endl;
+ << " to: " << newstatus << " returns: " << ( ok ?
"true" : "false" ) << endl;
}
return ok;
}
-///////////////////////////////////////////////////////////////////
-//
-// MultiVersionStatStrategy::anyMultiVersionToInstall
+
//
// Check if any package version is marked for installation where its
// 'multiversion' flag is set to 'multiversion'.
@@ -765,6 +798,7 @@
return false;
}
+
///////////////////////////////////////////////////////////////////
//
// MultiVersionStatStrategy::mixedMultiVersionPopup
@@ -801,8 +835,6 @@
}
-
-
//------------------------------------------------------------
// Class for strategies to get status for update packages
//------------------------------------------------------------
@@ -828,8 +860,10 @@
{
}
+
bool PatchPkgStatStrategy::setObjectStatus( ZyppStatus newstatus,
- ZyppSel slbPtr, ZyppObj objPtr )
+ ZyppSel slbPtr,
+ ZyppObj objPtr )
{
// it is not possible to set the status of the packages belonging to a
certain patch
return false;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/libyui-ncurses-pkg-2.50.4/src/NCPkgStatusStrategy.h
new/libyui-ncurses-pkg-2.50.5/src/NCPkgStatusStrategy.h
--- old/libyui-ncurses-pkg-2.50.4/src/NCPkgStatusStrategy.h 2020-01-24
07:40:20.000000000 +0100
+++ new/libyui-ncurses-pkg-2.50.5/src/NCPkgStatusStrategy.h 2020-02-06
16:48:26.000000000 +0100
@@ -91,22 +91,20 @@
ZyppStatus & newStat );
/**
- * Toggles the package status (e.g. from installed to delete)
- * @param The object pointer
- * @return bool
+ * Cyle the package status (e.g. from installed to delete)
*/
- virtual bool toggleStatus( ZyppSel slbPtr,
- ZyppObj objPtr,
- ZyppStatus & newStat );
- /**
- * Do a "small" solver run for all "resolvable collections", i.e., for
- * selections, patterns, languages, patches.
- **/
- void solveResolvableCollections();
-
+ virtual bool cycleStatus( ZyppSel slbPtr,
+ ZyppObj objPtr,
+ ZyppStatus & newStat_ret );
+ /**
+ * Do a "small" solver run for all "resolvable collections", i.e., for
+ * selections, patterns, languages, patches.
+ **/
+ void solveResolvableCollections();
};
+
//------------------------------------------------------------
// Class for strategies to handle status of packages
//------------------------------------------------------------
@@ -218,13 +216,11 @@
ZyppStatus & newStat );
/**
- * Toggles the patch status (e.g. from selected to unselected)
- * @param The object pointer
- * @return bool
+ * Cycle the patch status (e.g. from selected to unselected)
*/
- virtual bool toggleStatus( ZyppSel slbPtr,
- ZyppObj objPtr,
- ZyppStatus & newStat );
+ virtual bool cycleStatus( ZyppSel slbPtr,
+ ZyppObj objPtr,
+ ZyppStatus & newStat_ret );
/**
* Sets the status of the patch AND the status of the patch packages
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/libyui-ncurses-pkg-2.50.4/src/NCPkgTable.cc
new/libyui-ncurses-pkg-2.50.5/src/NCPkgTable.cc
--- old/libyui-ncurses-pkg-2.50.4/src/NCPkgTable.cc 2020-01-24
07:40:20.000000000 +0100
+++ new/libyui-ncurses-pkg-2.50.5/src/NCPkgTable.cc 2020-02-06
16:48:26.000000000 +0100
@@ -41,6 +41,7 @@
#define YUILogComponent "ncurses-pkg"
#include <YUILog.h>
#include <YDialog.h>
+#include <boost/format.hpp>
#include "NCurses.h"
#include "NCPkgTable.h"
@@ -53,20 +54,17 @@
#include <zypp/ui/Selectable.h>
#include "NCZypp.h"
+#define SOURCE_INSTALL_SUPPORTED 0
+
+using std::string;
+using std::vector;
using std::endl;
/*
Textdomain "ncurses-pkg"
*/
-///////////////////////////////////////////////////////////////////
-//
-//
-// METHOD NAME : NCPkgTableTag::NCPkgTableTag
-// METHOD TYPE : Constructor
-//
-// DESCRIPTION :
-//
+
NCPkgTableTag::NCPkgTableTag( ZyppObj objPtr, ZyppSel selPtr, ZyppStatus stat )
: YTableCell( " " )
, status ( stat )
@@ -77,31 +75,41 @@
}
-std::string NCPkgTableTag::statusToString( ZyppStatus stat ) const
+string NCPkgTableTag::statusToString( ZyppStatus stat ) const
{
- // convert ZyppStatus to std::string
+ // convert ZyppStatus to string
switch ( stat )
{
case S_NoInst: // Is not installed and will not be installed
return " ";
+
case S_KeepInstalled: // Is installed - keep this version
return " i ";
+
case S_Install: // Will be installed
return " + ";
+
case S_Del: // Will be deleted
return " - ";
+
case S_Update: // Will be updated
return " > ";
+
case S_AutoInstall: // Will be automatically installed
return " a+ ";
+
case S_AutoDel: // Will be automatically deleted
return " a- ";
+
case S_AutoUpdate: // Will be automatically updated
return " a> ";
+
case S_Taboo: // Never install this
return " ---";
- case S_Protected: // always keep installed version
+
+ case S_Protected: // Always keep installed version
return " -i-";
+
default:
return "####";
}
@@ -110,14 +118,6 @@
}
-///////////////////////////////////////////////////////////////////
-//
-//
-// METHOD NAME : NCPkgTable::NCPkgTable
-// METHOD TYPE : Constructor
-//
-// DESCRIPTION :
-//
NCPkgTable::NCPkgTable( YWidget * parent, YTableHeader * tableHeader )
: NCTable( parent, tableHeader )
, packager( 0 )
@@ -130,14 +130,6 @@
}
-///////////////////////////////////////////////////////////////////
-//
-//
-// METHOD NAME : NCPkgTable::~NCPkgTable
-// METHOD TYPE : Destructor
-//
-// DESCRIPTION :
-//
NCPkgTable::~NCPkgTable()
{
delete statusStrategy;
@@ -145,17 +137,8 @@
}
-
-///////////////////////////////////////////////////////////////////
-//
-//
-// METHOD NAME : NCPkgTable::addLine
-// METHOD TYPE : void
-//
-// DESCRIPTION :
-//
void NCPkgTable::addLine( ZyppStatus stat,
- const std::vector<std::string> & elements,
+ const vector<string> & elements,
ZyppObj objPtr,
ZyppSel slbPtr )
{
@@ -164,70 +147,46 @@
// fill first column (containing the status information and the package
pointers)
tabItem->addCell( new NCPkgTableTag( objPtr, slbPtr, stat ));
-
- for ( const std::string& s: elements )
- tabItem->addCell(s);
+ for ( const string& s: elements )
+ tabItem->addCell( s );
// use all-at-once insertion mode - DrawPad() is called only after the loop
- addItem(tabItem, true);
+ addItem( tabItem, true );
}
-///////////////////////////////////////////////////////////////////
-//
-//
-// METHOD NAME : NCPkgTable::deleteAllItems
-// METHOD TYPE : void
-//
-// DESCRIPTION :
-//
void NCPkgTable::itemsCleared()
{
return NCTable::deleteAllItems();
}
-///////////////////////////////////////////////////////////////////
-//
-//
-// METHOD NAME : NCPkgTable::cellChanged
-// METHOD TYPE : void
-//
-// DESCRIPTION :
-//
-void NCPkgTable::cellChanged( int index, int colnum, const std::string &
newtext )
+void NCPkgTable::cellChanged( int index, int colnum, const string & newtext )
{
return NCTable::cellChanged( index, colnum, newtext );
}
-///////////////////////////////////////////////////////////////////
-//
-//
-// METHOD NAME : NCPkgTable::changeStatus
-// METHOD TYPE : bool
//
-// DESCRIPTION : sets the new status in first column of the package table
-// and informs the package manager
+// Set the new status in the first column of the package table and in libzypp
//
bool NCPkgTable::changeStatus( ZyppStatus newstatus,
const ZyppSel & slbPtr,
- // objPtr is candidatePtr or what the user selected instead of it.
- ZyppObj objPtr,
+ ZyppObj objPtr, // this is candidatePtr or what
the user selected instead of it
bool singleChange )
{
if ( !packager || !slbPtr )
return false;
- std::string notify;
- std::string license;
- bool license_confirmed = true;
+ yuiMilestone() << "Changing status of " << slbPtr->name() << endl;
+
+ string notify;
+ string license;
+ bool confirmed = true;
ZyppPkg pkgPtr = NULL;
- std::string header;
+ string header;
bool ok = true;
- int cols = NCurses::cols();
- int lines = NCurses::lines();
switch ( newstatus )
{
@@ -257,60 +216,63 @@
case S_AutoUpdate:
if ( objPtr )
{
- // check license of packages and patches in case of
S_Install/S_Update/S_AutoInstall/S_AutoUpdate
- license = objPtr->licenseToConfirm();
- license_confirmed = slbPtr->hasLicenceConfirmed();
+ if ( objPtr->isRetracted() )
+ confirmed = confirmRetracted( objPtr, slbPtr );
+
+ if ( confirmed )
+ license = objPtr->licenseToConfirm();
}
break;
default: break;
}
- std::string pkgName = slbPtr->name();
+ string pkgName = slbPtr->name();
- if ( !license.empty() )
+ if ( ! license.empty() )
{
- if ( !license_confirmed )
- {
- license_confirmed = packager->showLicensePopup( pkgName, license);
- }
-
- if ( !license_confirmed )
- {
- // make sure the package won't be installed
- switch ( newstatus )
- {
- case S_Install:
- case S_AutoInstall:
- newstatus = S_Taboo;
- break;
-
- case S_Update:
- case S_AutoUpdate:
- newstatus = S_Protected;
- break;
-
- default:
- break;
- }
+ if ( ! slbPtr->hasLicenceConfirmed() )
+ confirmed = packager->showLicensePopup( pkgName, license);
- ok = false;
- }
- else
+ if ( confirmed )
{
yuiMilestone() << "User confirmed license agreement for " <<
pkgName << endl;
slbPtr->setLicenceConfirmed (true);
- }
+ }
}
- if ( ok && !notify.empty() )
+ if ( ! confirmed )
{
- std::string html_text = packager->InfoText()->createHtmlText( notify );
+ // make sure the package won't be installed
+ switch ( newstatus )
+ {
+ case S_Install:
+ case S_AutoInstall:
+ newstatus = S_Taboo;
+ break;
+
+ case S_Update:
+ case S_AutoUpdate:
+ newstatus = S_Protected;
+ break;
+
+ default:
+ break;
+ }
+
+ ok = false;
+ }
+
+ if ( ok && ! notify.empty() )
+ {
+ int cols = NCurses::cols();
+ int lines = NCurses::lines();
+
+ string html_text = packager->InfoText()->createHtmlText( notify );
NCPopupInfo * info = new NCPopupInfo( wpos( (lines * 35)/100, (cols *
25)/100),
header,
- "<i>" + pkgName + "</i><br><br>"
+ html_text
- );
- info->setPreferredSize( (NCurses::cols() * 50)/100, (NCurses::lines() *
30)/100);
+ "<i>" + pkgName + "</i><br><br>"
+ html_text );
+ info->setPreferredSize( (cols * 50)/100, (lines * 30)/100);
info->showInfoPopup();
YDialog::deleteTopmostDialog();
@@ -331,11 +293,13 @@
// show the required diskspace
packager->showDiskSpace();
break;
+
case T_Availables:
// check/show dependencies of packages
packager->showPackageDependencies( false );
// don't show diskspace (type T_Availables is also used in YOU
mode)
break;
+
case T_Selections:
// check/show dependencies of selections
packager->showSelectionDependencies();
@@ -351,6 +315,7 @@
default:
break;
}
+
// update this list to show the status changes
updateTable();
@@ -365,13 +330,8 @@
}
-///////////////////////////////////////////////////////////////////
-//
//
-// METHOD NAME : NCPkgTable::updateTable
-// METHOD TYPE : bool
-//
-// DESCRIPTION : set the new status info if status has changed
+// Set the new status info if status has changed
//
bool NCPkgTable::updateTable()
{
@@ -383,6 +343,7 @@
{
// get the table line
NCTableLine * cl = myPad()->ModifyLine( index );
+
if ( !cl )
{
ret = false;
@@ -408,7 +369,7 @@
{
if ( tableType == T_Availables && !slbPtr->multiversionInstall() )
{
- std::string isCandidate = " ";
+ string isCandidate = " ";
if ( objPtr == slbPtr->candidateObj() )
isCandidate = " x ";
@@ -436,27 +397,18 @@
}
-///////////////////////////////////////////////////////////////////
-//
-// slbHasInstalledObj
-//
-// a helper to call a method
-//
static bool slbHasInstalledObj (const ZyppSel & slb)
{
return ! slb->installedEmpty();
}
-///////////////////////////////////////////////////////////////////
//
-// fillHeader
-//
-// Fillup the column headers of the package table
+// Fill the column headers of the package table
//
void NCPkgTable::fillHeader()
{
- std::vector<std::string> header;
+ vector<string> header;
switch ( tableType )
{
@@ -470,6 +422,7 @@
header.push_back( "L" + NCPkgStrings::PkgStatus() );
header.push_back( "L" + NCPkgStrings::PkgName() );
header.push_back( "L" + NCPkgStrings::PkgSummary() );
+
if ( haveInstalledPkgs > 0 )
{
header.push_back( "L" + NCPkgStrings::PkgVersionNew() );
@@ -480,9 +433,10 @@
{
header.push_back( "L" + NCPkgStrings::PkgVersion() );
}
+
header.push_back( "L" + NCPkgStrings::PkgSize() );
-// installation of source rpms is not possible
-#ifdef FIXME
+
+#if SOURCE_INSTALL_SUPPORTED
header.push_back( "L" + NCPkgStrings::PkgSource() );
#endif
break;
@@ -559,14 +513,9 @@
}
-///////////////////////////////////////////////////////////////////
-//
-// createListEntry
-//
-//
-bool NCPkgTable::createListEntry ( ZyppPkg pkgPtr, ZyppSel slbPtr )
+bool NCPkgTable::createListEntry( ZyppPkg pkgPtr, ZyppSel slbPtr )
{
- std::vector<std::string> pkgLine;
+ vector<string> pkgLine;
pkgLine.reserve(6);
if ( !pkgPtr || !slbPtr )
@@ -578,18 +527,20 @@
// add the package name
pkgLine.push_back( slbPtr->name() );
- std::string instVersion = "";
- std::string version = "";
+ string instVersion = "";
+ string version = "";
ZyppStatus status;
switch ( tableType )
{
- case T_PatchPkgs: {
+ case T_PatchPkgs:
+ {
// if the package is installed, get the installed version
if ( ! slbPtr->installedEmpty() )
{
instVersion = slbPtr->installedObj()->edition().asString();
}
+
// if a candidate is available, get the candidate version
if ( slbPtr->hasCandidateObj() )
{
@@ -614,9 +565,10 @@
break;
}
+
case T_Availables:
{
- std::string isCandidate = " ";
+ string isCandidate = " ";
if ( pkgPtr == slbPtr->candidateObj() )
isCandidate = " x ";
pkgLine.push_back( isCandidate );
@@ -651,6 +603,7 @@
break;
}
+
case T_MultiVersion:
{
version = pkgPtr->edition().asString();
@@ -671,9 +624,12 @@
pkgLine.push_back( pkgPtr->arch().asString()); // architecture
break;
}
- default: {
+
+ default:
+ {
// if the package is installed, get the installed version
pkgLine.push_back( pkgPtr->summary() ); // short description
+
if ( ! slbPtr->installedEmpty() )
{
instVersion = slbPtr->installedObj()->edition().version();
@@ -700,8 +656,7 @@
FSize size(zypp::ByteCount::SizeType(pkgPtr->installSize())); //
installed size
pkgLine.push_back( size.form( 8 ) ); // format size
-// Selectable does not have source_install
-#ifdef FIXME
+#if SOURCE_INSTALL_SUPPORTED
if ( slbPtr->source_install() )
{
pkgLine.push_back( " x " );
@@ -717,41 +672,30 @@
addLine( status, // the package status
pkgLine, // the package data
pkgPtr, // the corresponding package pointer
- slbPtr
- );
+ slbPtr );
return true;
}
-///////////////////////////////////////////////////////////////////
-//
-// createInfoEntry
-//
-//
-bool NCPkgTable::createInfoEntry ( std::string text )
+bool NCPkgTable::createInfoEntry ( string text )
{
- std::vector<std::string> pkgLine;
+ vector<string> pkgLine;
pkgLine.reserve(2);
pkgLine.push_back( text );
addLine( S_NoInst, // use status NoInst
pkgLine,
ZyppObj(),
- ZyppSel()); // null pointer
+ ZyppSel() ); // null pointer
return true;
}
-///////////////////////////////////////////////////////////////////
-//
-// createPatchEntry
-//
-//
bool NCPkgTable::createPatchEntry ( ZyppPatch patchPtr, ZyppSel slb )
{
- std::vector<std::string> pkgLine;
+ vector<string> pkgLine;
pkgLine.reserve(5);
if ( !patchPtr || !slb )
@@ -784,11 +728,6 @@
}
-///////////////////////////////////////////////////////////////////
-//
-// showInformation
-//
-//
bool NCPkgTable::showInformation()
{
ZyppObj objPtr = getDataPointer( getCurrentItem() );
@@ -807,10 +746,12 @@
updateInfo( objPtr, slbPtr, VisibleInfo() );
packager->PackageLabel()->setLabel( slbPtr->name() );
break;
+
case T_Patches:
// show the patch info
updateInfo( objPtr, slbPtr, VisibleInfo() );
break;
+
default:
break;
}
@@ -819,14 +760,6 @@
}
-///////////////////////////////////////////////////////////////////
-//
-//
-// METHOD NAME : NCPkgTable::wHandleInput
-// METHOD TYPE : NCursesEvent
-//
-// DESCRIPTION :
-//
NCursesEvent NCPkgTable::wHandleInput( wint_t key )
{
NCursesEvent ret = NCursesEvent::none;
@@ -849,17 +782,15 @@
case KEY_PPAGE:
case KEY_END:
case KEY_HOME:
- // show the corresponding information
showInformation();
break;
case KEY_SPACE:
case KEY_RETURN:
- // toggle status
- toggleObjStatus();
+ cycleObjStatus();
break;
- // from the parent class, to enable sorting
+ // Inherited from the parent class to enable sorting
case CTRL('o'):
NCTable::wHandleInput( key);
break;
@@ -885,15 +816,11 @@
}
-///////////////////////////////////////////////////////////////////
-//
-// NCPkgTable::getStatus()
//
-// Gets the status of the package of selected line
+// Get the status of the package of the selected line
//
ZyppStatus NCPkgTable::getStatus( int index )
{
- // get the tag
NCPkgTableTag * cc = getTag( index);
if ( !cc )
return S_NoInst;
@@ -904,7 +831,6 @@
ZyppObj NCPkgTable::getDataPointer( int index )
{
- // get the tag
NCPkgTableTag *cc = getTag( index );
if ( !cc )
return ZyppObj();
@@ -915,7 +841,6 @@
ZyppSel NCPkgTable::getSelPointer( int index )
{
- // get the tag
NCPkgTableTag *cc = getTag( index );
if ( !cc )
return ZyppSel();
@@ -926,7 +851,6 @@
NCPkgTableTag * NCPkgTable::getTag( const int & index )
{
- // get the table line
NCTableLine * cl = myPad()->ModifyLine( index );
if ( !cl )
return 0;
@@ -940,12 +864,8 @@
}
-#ifdef FIXME
-///////////////////////////////////////////////////////////////////
-//
-// NCPkgTable::SourceInstall()
-//
-//
+#if SOURCE_INSTALL_SUPPORTED
+
bool NCPkgTable::SourceInstall( bool install )
{
int index = getCurrentItem();
@@ -971,14 +891,14 @@
if ( install && selPtr->providesSources() )
{
ok = selPtr->set_source_install( true );
- yuiMilestone() << "Set source install returns: " << (ok?"true":"false")
<< endl;
+ yuiMilestone() << "Set source install returns: " << ( ok ? "true" :
"false" ) << endl;
if ( currentCol )
currentCol->SetLabel( NClabel( " x " ) );
}
else if ( !install && selPtr->source_install() )
{
ok = selPtr->set_source_install( false );
- yuiMilestone() << "ReSet source install returns: " <<
(ok?"true":"false") << endl;
+ yuiMilestone() << "ReSet source install returns: " << ( ok ? "true" :
"false" ) << endl;
if ( currentCol )
currentCol->SetLabel( NClabel( " " ) );
}
@@ -988,12 +908,7 @@
#endif
-///////////////////////////////////////////////////////////////////
-//
-// NCPkgTable::toggleObjStatus()
-//
-//
-bool NCPkgTable::toggleObjStatus()
+bool NCPkgTable::cycleObjStatus()
{
ZyppSel slbPtr = getSelPointer( getCurrentItem() );
ZyppObj objPtr = getDataPointer( getCurrentItem() );
@@ -1003,7 +918,7 @@
ZyppStatus newStatus;
- bool ok = statusStrategy->toggleStatus( slbPtr, objPtr, newStatus );
+ bool ok = statusStrategy->cycleStatus( slbPtr, objPtr, newStatus );
if ( ok )
{
@@ -1014,37 +929,25 @@
}
-///////////////////////////////////////////////////////////////////
-//
-// NCPkgTable::changeObjStatus()
-//
-//
bool NCPkgTable::changeObjStatus( int key )
{
ZyppSel slbPtr = getSelPointer( getCurrentItem() );
ZyppObj objPtr = getDataPointer( getCurrentItem() );
if ( !slbPtr )
- {
return false;
- }
+
ZyppStatus newStatus;
bool ok = statusStrategy->keyToStatus( key, slbPtr, objPtr, newStatus );
if ( ok )
- {
changeStatus( newStatus, slbPtr, objPtr, true );
- }
+
return true;
}
-///////////////////////////////////////////////////////////////////
-//
-// NCPkgTable::changeListObjStatus()
-//
-//
bool NCPkgTable::changeListObjStatus( NCPkgTableListAction type )
{
ZyppStatus newStatus;
@@ -1068,12 +971,14 @@
ok = statusStrategy->keyToStatus( '+', slbPtr, objPtr,
newStatus );
break;
}
+
case A_Delete:
{
if ( slbPtr->installedObj() && slbPtr->status() !=
S_Protected )
ok = statusStrategy->keyToStatus( '-', slbPtr, objPtr,
newStatus );
break;
}
+
case A_UpdateNewer:
{
// set status to update respecting "vendor change" settings
@@ -1084,12 +989,14 @@
}
break;
}
+
case A_Update:
{
if ( slbPtr->installedObj() && slbPtr->status() !=
S_Protected )
ok = statusStrategy->keyToStatus( '>', slbPtr, objPtr,
newStatus );
break;
}
+
case A_Keep:
{
if ( slbPtr->status() == S_Install
@@ -1102,6 +1009,7 @@
ok = statusStrategy->keyToStatus( '+', slbPtr, objPtr,
newStatus );
break;
}
+
default:
yuiError() << "Unknown list action" << endl;
break;
@@ -1207,7 +1115,7 @@
for ( listIt = pkgList.begin(); listIt != pkgList.end(); ++listIt )
{
ZyppSel selectable = *listIt;
- ZyppPkg pkg = tryCastToZyppPkg (selectable->theObj());
+ ZyppPkg pkg = tryCastToZyppPkg( selectable->theObj() );
// show all matching packages
switch ( type )
{
@@ -1281,3 +1189,35 @@
// catch unhandled enum states
}
}
+
+
+bool NCPkgTable::confirmRetracted( ZyppObj pkg, ZyppSel sel )
+{
+ yuiMilestone() << "Retracted object " << sel->name() << " " <<
pkg->edition() << endl;
+
+ // Headline of confirmation popup
+ string heading = _( "Please confirm" );
+
+ std::ostringstream msg;
+ // %s is a package name
+ msg << boost::format( _( "<p>Really install a retracted version of \"%s\"
?</p>" ) ) % sel->name();
+ int width = msg.str().size() + 2;
+ int height = 7;
+
+ NCPopupInfo * info = new NCPopupInfo( wpos( ( NCurses::lines() - height )
/ 2,
+ ( NCurses::cols() - width )
/ 2 ),
+ heading,
+ msg.str(),
+ NCPkgStrings::YesLabel(),
+ NCPkgStrings::NoLabel() );
+ info->setPreferredSize( width, height );
+ NCursesEvent event = info->showInfoPopup();
+ YDialog::deleteTopmostDialog();
+ bool confirmed = ( event != NCursesEvent::cancel );
+
+ yuiMilestone() << "User " << ( confirmed ? "confirmed" : "rejected" )
+ << " retracted object " << sel->name() << " " <<
pkg->edition()
+ << endl;
+
+ return confirmed;
+}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/libyui-ncurses-pkg-2.50.4/src/NCPkgTable.h
new/libyui-ncurses-pkg-2.50.5/src/NCPkgTable.h
--- old/libyui-ncurses-pkg-2.50.4/src/NCPkgTable.h 2020-01-24
07:40:20.000000000 +0100
+++ new/libyui-ncurses-pkg-2.50.5/src/NCPkgTable.h 2020-02-06
16:48:26.000000000 +0100
@@ -350,7 +350,7 @@
bool changeListObjStatus( NCPkgTableListAction key );
- bool toggleObjStatus();
+ bool cycleObjStatus();
/**
* Set the status information if status has changed
@@ -450,6 +450,12 @@
*/
bool showInformation();
+ /**
+ * Ask the user for confirmation of installing a retracted package.
+ * This returns 'true' if the user confirmed, 'false' if not.
+ **/
+ bool confirmRetracted( ZyppObj pkg, ZyppSel sel );
+
void setVisibleInfo( NCPkgTableInfoType info) { visibleInfo = info; }
NCPkgTableInfoType VisibleInfo() { return visibleInfo; }