- some updates to spritz queue handling
git-svn-id: http://svn.sabayonlinux.org/projects/entropy/trunk@1027 cd1c1023-2f26-0410-ae45-c471fc1f0318
This commit is contained in:
@@ -34,7 +34,7 @@ class YumexPackageInfo:
|
||||
self.pkgChangeLog = TextViewConsole( self.ui.pkgCLog, font=self.settings.font_pkgdesc, color=self.settings.color_pkgdesc )
|
||||
self.pkgOther = TextViewConsole( self.ui.pkgOther, font=self.settings.font_pkgdesc, color=self.settings.color_pkgdesc )
|
||||
self.yumbase = None
|
||||
|
||||
|
||||
def clear( self ):
|
||||
self.pkgDesc.clear()
|
||||
self.pkgInfo.clear()
|
||||
@@ -223,7 +223,7 @@ class YumexProgress:
|
||||
|
||||
def setTotal( self, now, total ):
|
||||
self.total.setProgress( now, total )
|
||||
|
||||
|
||||
def set_progress( self, frac, text=None ):
|
||||
if self.parent.quitNow:
|
||||
self.parent.exitNow()
|
||||
@@ -262,13 +262,16 @@ class YumexProgress:
|
||||
|
||||
class YumexGUI:
|
||||
''' This class contains GUI related methods '''
|
||||
def __init__(self):
|
||||
def __init__(self, EquoConnection, etpbase):
|
||||
self.settings = YumexConf()
|
||||
self.output = TextViewConsole( self.ui.viewOutput )
|
||||
# Package & Queue Views
|
||||
self.Entropy = EquoConnection
|
||||
self.etpbase = etpbase
|
||||
self.queue = YumexQueue()
|
||||
self.queueView = YumexQueueView(self.ui.queueView,self.queue)
|
||||
self.pkgView = EntropyPackageView(self.ui.viewPkg,self.queueView)
|
||||
self.queue.connect_objects(self.Entropy, self.etpbase, self.pkgView, self.queueView)
|
||||
#self.catView = YumexCategoryView(self.ui.tvCategory)
|
||||
self.catsView = CategoriesView(self.ui.tvComps,self.queueView)
|
||||
self.catPackages = EntropyPackageView(self.ui.tvCatPackages,self.queueView)
|
||||
|
||||
@@ -158,14 +158,14 @@ class YumexProfile:
|
||||
self.proDict = {}
|
||||
self.load()
|
||||
|
||||
|
||||
|
||||
def save( self ):
|
||||
if self.profiles.has_section('yum-enabled'):
|
||||
self.profiles.remove_section('yum-enabled')
|
||||
f=open( self.filename, "w" )
|
||||
self.profiles.write( f )
|
||||
f.close()
|
||||
|
||||
|
||||
def load( self ):
|
||||
self.profiles.read( self.filename )
|
||||
self.active=self.profiles.get( "main", "LastProfile" )
|
||||
@@ -183,9 +183,9 @@ class YumexProfile:
|
||||
return None
|
||||
|
||||
def writeProfile( self, repos ):
|
||||
self.profiles.remove_section( self.active)
|
||||
return self.addProfile(self.active, repos )
|
||||
|
||||
self.profiles.remove_section( self.active)
|
||||
return self.addProfile(self.active, repos )
|
||||
|
||||
|
||||
def getList( self ):
|
||||
return self.proDict.keys()
|
||||
@@ -196,7 +196,7 @@ class YumexProfile:
|
||||
def setActive( self, name ):
|
||||
if self.profiles.has_section( name ) or name == "yum-enabled":
|
||||
self.active = name
|
||||
self.profiles.set( "main", "LastProfile", name )
|
||||
self.profiles.set( "main", "LastProfile", name )
|
||||
self.save()
|
||||
|
||||
def addProfile( self, name, repos ):
|
||||
@@ -210,7 +210,7 @@ class YumexProfile:
|
||||
else:
|
||||
return False
|
||||
|
||||
|
||||
|
||||
class YumexQueue:
|
||||
def __init__(self):
|
||||
self.logger = logging.getLogger('yumex.YumexQueue')
|
||||
@@ -221,6 +221,16 @@ class YumexQueue:
|
||||
self.groups = {}
|
||||
self.groups['i'] = []
|
||||
self.groups['r'] = []
|
||||
self.Entropy = None
|
||||
self.etpbase = None
|
||||
self.pkgView = None
|
||||
self.queueView = None
|
||||
|
||||
def connect_objects(self, EquoConnection, etpbase, pkgView, queueView):
|
||||
self.Entropy = EquoConnection
|
||||
self.etpbase = etpbase
|
||||
self.pkgView = pkgView
|
||||
self.queueView = queueView
|
||||
|
||||
def clear( self ):
|
||||
del self.packages
|
||||
@@ -231,23 +241,81 @@ class YumexQueue:
|
||||
self.groups = {}
|
||||
self.groups['i'] = []
|
||||
self.groups['r'] = []
|
||||
|
||||
def get( self, action = None ):
|
||||
|
||||
def get( self, action = None ):
|
||||
if action == None:
|
||||
return self.packages
|
||||
else:
|
||||
return self.packages[action]
|
||||
|
||||
|
||||
def total(self):
|
||||
return len(self.packages['i'])+len(self.packages['u'])+len(self.packages['r'])
|
||||
|
||||
def add( self, pkg):
|
||||
list = self.packages[pkg.action]
|
||||
if not pkg in list:
|
||||
list.append( pkg )
|
||||
self.packages[pkg.action] = list
|
||||
|
||||
def remove( self, pkg):
|
||||
def add(self, pkg):
|
||||
action = pkg.action
|
||||
if action in ("u","i"): # update/install
|
||||
|
||||
# XXX add support for deep_deps?
|
||||
# XXX handle status
|
||||
tmpqueue = []
|
||||
if not pkg in self.packages[action]:
|
||||
tmpqueue.append( pkg )
|
||||
|
||||
list = [x.matched_atom for x in self.packages[action]+tmpqueue]
|
||||
(runQueue, removalQueue, status) = self.Entropy.retrieveInstallQueue(list,False,False)
|
||||
if status == 0:
|
||||
# runQueue
|
||||
if runQueue:
|
||||
for dep_pkg in self.etpbase.getPackages('updates')+self.etpbase.getPackages('available'):
|
||||
for matched_atom in runQueue:
|
||||
if (dep_pkg.matched_atom == matched_atom) and (dep_pkg not in self.packages[action]):
|
||||
if str(pkg) != str(dep_pkg):
|
||||
dep_pkg.set_select(True)
|
||||
dep_pkg.queued = dep_pkg.action
|
||||
self.packages[action].append(dep_pkg)
|
||||
# removalQueue
|
||||
if removalQueue:
|
||||
for rem_pkg in self.etpbase.getPackages('installed'):
|
||||
for matched_atom in removalQueue:
|
||||
if rem_pkg.matched_atom == (matched_atom,0):
|
||||
if str(pkg) != str(rem_pkg):
|
||||
rem_pkg.set_select(False)
|
||||
rem_pkg.queued = rem_pkg.action
|
||||
self.packages['r'].append(rem_pkg)
|
||||
|
||||
self.queueView.refresh()
|
||||
return status,0
|
||||
|
||||
else: # remove
|
||||
|
||||
# check if it's a system package
|
||||
valid = self.Entropy.validatePackageRemoval(pkg.matched_atom[0])
|
||||
if not valid:
|
||||
pkg.set_select(not pkg.selected)
|
||||
pkg.queued = None
|
||||
return -2,1
|
||||
|
||||
# XXX handle --nodeps
|
||||
# XXX handle status
|
||||
tmpqueue = []
|
||||
if not pkg in self.packages[action]:
|
||||
tmpqueue.append( pkg )
|
||||
list = [x.matched_atom[0] for x in self.packages[action]+tmpqueue]
|
||||
|
||||
removalQueue = self.Entropy.retrieveRemovalQueue(list)
|
||||
if removalQueue:
|
||||
for rem_pkg in self.etpbase.getPackages('installed'):
|
||||
for matched_atom in removalQueue:
|
||||
if rem_pkg.matched_atom == (matched_atom,0):
|
||||
if str(pkg) != str(rem_pkg):
|
||||
rem_pkg.set_select(False)
|
||||
rem_pkg.queued = rem_pkg.action
|
||||
self.packages[action].append(rem_pkg)
|
||||
|
||||
self.queueView.refresh()
|
||||
return 0,1
|
||||
|
||||
def remove(self, pkg):
|
||||
list = self.packages[pkg.action]
|
||||
if pkg in list:
|
||||
list.remove( pkg )
|
||||
@@ -270,7 +338,7 @@ class YumexQueue:
|
||||
if grp in self.groups[action]:
|
||||
return action
|
||||
return None
|
||||
|
||||
|
||||
def dump(self):
|
||||
self.logger.info(_("Package Queue:"))
|
||||
for action in ['install','update','remove']:
|
||||
@@ -287,7 +355,7 @@ class YumexQueue:
|
||||
self.logger.info(_(" Groups to %s" % action))
|
||||
for grp in list:
|
||||
self.logger.info(" ---> %s " % grp)
|
||||
|
||||
|
||||
def getParser(self):
|
||||
cp = YumexQueueFile()
|
||||
for action in ['install','update','remove']:
|
||||
|
||||
@@ -18,7 +18,6 @@
|
||||
# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||
|
||||
from etpgui.packages import PackageWrapper
|
||||
import exceptionTools
|
||||
import logging
|
||||
import time
|
||||
|
||||
@@ -64,10 +63,6 @@ class EntropyPackage( PackageWrapper ):
|
||||
class EntropyPackages:
|
||||
def __init__(self, EquoInstance):
|
||||
self.Entropy = EquoInstance
|
||||
try:
|
||||
self.Entropy.instanceTest()
|
||||
except:
|
||||
raise exceptionTools.IncorrectParameter("IncorrectParameter: a valid Entropy Instance is needed")
|
||||
self.logger = logging.getLogger('yumex.Packages')
|
||||
self.filterCallback = None
|
||||
self._packages = {}
|
||||
|
||||
@@ -374,7 +374,8 @@ class YumexApplication(YumexController,YumexGUI):
|
||||
YumexController.__init__( self )
|
||||
self.yumexOptions = YumexOptions()
|
||||
self.yumexOptions.parseCmdOptions()
|
||||
YumexGUI.__init__(self)
|
||||
self.Equo = EquoConnection
|
||||
YumexGUI.__init__(self, self.Equo, self.etpbase)
|
||||
self.logger = logging.getLogger("yumex.main")
|
||||
# init flags
|
||||
self.rpmTransactionIsRunning = False
|
||||
@@ -392,7 +393,6 @@ class YumexApplication(YumexController,YumexGUI):
|
||||
self.catsView.etpbase = self.etpbase
|
||||
self.lastPkgPB = "updates"
|
||||
self.etpbase.setFilter(filters.yumexFilter.processFilters)
|
||||
self.Equo = EquoConnection
|
||||
|
||||
# Setup GUI
|
||||
self.setupGUI()
|
||||
|
||||
@@ -221,7 +221,7 @@ class YumexQueueView:
|
||||
model.set_sort_column_id( 0, gtk.SORT_ASCENDING )
|
||||
self.view.get_selection().set_mode( gtk.SELECTION_MULTIPLE )
|
||||
return model
|
||||
|
||||
|
||||
def deleteSelected( self ):
|
||||
rmvlist = []
|
||||
model, paths = self.view.get_selection().get_selected_rows()
|
||||
@@ -239,7 +239,6 @@ class YumexQueueView:
|
||||
self.queue.packages[action] = filter( f, list )
|
||||
self.refresh()
|
||||
|
||||
|
||||
def getPkgsFromList( self, rlist ):
|
||||
rclist = []
|
||||
f = lambda x: str( x ) in rlist
|
||||
|
||||
Reference in New Issue
Block a user