some major work on Equo/Spritz interface, something is starting to work
git-svn-id: http://svn.sabayonlinux.org/projects/entropy/trunk@996 cd1c1023-2f26-0410-ae45-c471fc1f0318
This commit is contained in:
@@ -26,67 +26,72 @@ class PackageWrapper:
|
||||
|
||||
if matched_atom[1] == 0:
|
||||
self.dbconn = EquoConnection.clientDbconn
|
||||
self.from_installed = True
|
||||
else:
|
||||
self.dbconn = EquoConnection.openRepositoryDatabase(matched_atom[1])
|
||||
self.from_installed = False
|
||||
self.matched_atom = matched_atom
|
||||
self.idpackage = self.matched_atom[0]
|
||||
self.repository = self.matched_atom[1]
|
||||
self.atom = self.dbconn.retrieveAtom(self.idpackage)
|
||||
self.version = self.dbconn.retrieveVersion(self.idpackage)
|
||||
self.versiontag = self.dbconn.retrieveVersionTag(self.idpackage)
|
||||
self.revision = self.dbconn.retrieveRevision(self.idpackage)
|
||||
self.pkgtuple = (self.version,self.versiontag,self.revision)
|
||||
match = self.dbconn.atomMatch(self.atom)
|
||||
if match[0] != -1:
|
||||
self.available = True
|
||||
else:
|
||||
self.available = False
|
||||
|
||||
def __str__(self):
|
||||
return str(self.atom)
|
||||
return str(self.dbconn.retrieveAtom(self.idpackage))
|
||||
|
||||
def __cmp__(self, pkg):
|
||||
pkgcmp = EquoConnection.entropyTools.entropyCompareVersions(self.pkgtuple,pkg.pkgtuple)
|
||||
pkgcmp = EquoConnection.entropyTools.entropyCompareVersions(self.getTup(),pkg.getTup())
|
||||
return pkgcmp
|
||||
|
||||
def getPkg(self):
|
||||
return self.matched_atom
|
||||
|
||||
def getName(self):
|
||||
return self.atom
|
||||
return self.dbconn.retrieveAtom(self.idpackage)
|
||||
|
||||
def getTup(self):
|
||||
return self.pkgtuple
|
||||
return (self.dbconn.retrieveVersion(self.idpackage),self.dbconn.retrieveVersionTag(self.idpackage),self.dbconn.retrieveRevision(self.idpackage))
|
||||
|
||||
def getRepoId(self):
|
||||
return self.repository
|
||||
if self.matched_atom[1] == 0:
|
||||
return self.dbconn.retrievePackageFromInstalledTable(self.idpackage)
|
||||
else:
|
||||
return self.matched_atom[1]
|
||||
|
||||
def getIdpackage(self):
|
||||
return self.idpackage
|
||||
|
||||
def getRevision(self):
|
||||
return self.dbconn.retrieveRevision(self.idpackage)
|
||||
|
||||
def getVer(self):
|
||||
tag = ""
|
||||
if self.versiontag:
|
||||
tag = "#"+self.versiontag
|
||||
tag += "~"+str(self.revision)
|
||||
return self.version+tag
|
||||
vtag = self.dbconn.retrieveVersionTag(self.idpackage)
|
||||
if vtag:
|
||||
tag = "#"+vtag
|
||||
tag += "~"+str(self.dbconn.retrieveRevision(self.idpackage))
|
||||
return self.dbconn.retrieveVersion(self.idpackage)+tag
|
||||
|
||||
|
||||
def getSummaryFirst(self):
|
||||
return str(self.dbconn.getBaseData(self.idpackage))
|
||||
|
||||
def getSummary(self):
|
||||
return str(self.dbconn.getScopeData(self.idpackage))
|
||||
def getSlot(self):
|
||||
return self.dbconn.retrieveSlot(self.idpackage)
|
||||
|
||||
def getDescription(self):
|
||||
return self.dbconn.retrieveDescription(self.idpackage)
|
||||
|
||||
def getSize(self):
|
||||
def getDownSize(self):
|
||||
return self.dbconn.retrieveSize(self.idpackage)
|
||||
|
||||
def getSizeFmt(self):
|
||||
def getDiskSize(self):
|
||||
return self.dbconn.retrieveOnDiskSize(self.idpackage)
|
||||
|
||||
def getIntelligentSize(self):
|
||||
if self.from_installed:
|
||||
return self.getDiskSizeFmt()
|
||||
else:
|
||||
return self.getDownSizeFmt()
|
||||
|
||||
def getDownSizeFmt(self):
|
||||
return EquoConnection.entropyTools.bytesIntoHuman(self.dbconn.retrieveSize(self.idpackage))
|
||||
|
||||
def getDiskSizeFmt(self):
|
||||
return EquoConnection.entropyTools.bytesIntoHuman(self.dbconn.retrieveOnDiskSize(self.idpackage))
|
||||
|
||||
def getArch(self):
|
||||
return etpConst['currentarch']
|
||||
@@ -109,8 +114,29 @@ class PackageWrapper:
|
||||
rc = unicode( txt, 'iso-8859-1' )
|
||||
return rc
|
||||
|
||||
def getAttr(self,attr): # XXX
|
||||
return eval("self.dbconn.retrieve"+attr)(self.idpackage)
|
||||
def getAttr(self,attr):
|
||||
if attr == "description":
|
||||
return self.dbconn.retrieveDescription(self.idpackage)
|
||||
elif attr == "category":
|
||||
return self.dbconn.retrieveCategory(self.idpackage)
|
||||
elif attr == "license":
|
||||
return self.dbconn.retrieveLicense(self.idpackage)
|
||||
elif attr == "creationdate":
|
||||
return self.dbconn.retrieveDateCreation(self.idpackage)
|
||||
elif attr == "version":
|
||||
return self.dbconn.retrieveVersion(self.idpackage)
|
||||
elif attr == "revision":
|
||||
return self.dbconn.retrieveRevision(self.idpackage)
|
||||
elif attr == "versiontag":
|
||||
t = self.dbconn.retrieveVersionTag(self.idpackage)
|
||||
if not t: return "None"
|
||||
return t
|
||||
elif attr == "branch":
|
||||
return self.dbconn.retrieveBranch(self.idpackage)
|
||||
elif attr == "name":
|
||||
return self.dbconn.retrieveName(self.idpackage)
|
||||
elif attr == "slot":
|
||||
return self.dbconn.retrieveSlot(self.idpackage)
|
||||
|
||||
def _get_time( self ):
|
||||
return self.dbconn.retrieveDateCreation(self.idpackage)
|
||||
@@ -119,22 +145,27 @@ class PackageWrapper:
|
||||
return "No ChangeLog"
|
||||
|
||||
def get_filelist( self ):
|
||||
return self.dbconn.retrieveContent(self.idpackage)
|
||||
c = list(self.dbconn.retrieveContent(self.idpackage))
|
||||
c.sort()
|
||||
return c
|
||||
|
||||
def get_fullname( self ):
|
||||
return self.atom # XXX
|
||||
return self.dbconn.retrieveAtom(self.idpackage)
|
||||
|
||||
pkg = property(fget=getPkg)
|
||||
name = property(fget=getName)
|
||||
repoid = property(fget=getRepoId)
|
||||
ver = property(fget=getVer)
|
||||
revision = property(fget=getRevision)
|
||||
version = property(fget=getVer)
|
||||
release = property(fget=getRel)
|
||||
summary = property(fget=getSummary)
|
||||
slot = property(fget=getSlot)
|
||||
description = property(fget=getDescription)
|
||||
summaryFirst = property(fget=getSummaryFirst)
|
||||
size = property(fget=getSize)
|
||||
sizeFmt = property(fget=getSizeFmt)
|
||||
size = property(fget=getDownSize)
|
||||
intelligentsizeFmt = property(fget=getIntelligentSize)
|
||||
sizeFmt = property(fget=getDownSizeFmt)
|
||||
disksize = property(fget=getDiskSize)
|
||||
disksizeFmt = property(fget=getDiskSizeFmt)
|
||||
arch = property(fget=getArch)
|
||||
epoch = property(fget=getEpoch)
|
||||
pkgtup = property(fget=getTup)
|
||||
+27
-30
@@ -22,7 +22,7 @@
|
||||
import sre_constants
|
||||
import re
|
||||
|
||||
|
||||
|
||||
class YumexFiltering:
|
||||
def __init__(self):
|
||||
self.filters = []
|
||||
@@ -30,7 +30,7 @@ class YumexFiltering:
|
||||
def registerFilter(self,klass):
|
||||
if not klass in self.filters:
|
||||
self.filters.append(klass)
|
||||
|
||||
|
||||
def processFilters(self,po):
|
||||
for flt in self.filters:
|
||||
if flt.process(po):
|
||||
@@ -42,14 +42,14 @@ class YumexFiltering:
|
||||
def listFilters(self):
|
||||
for flt in self.filters:
|
||||
print "%s : %s " % (flt.getName(),flt._state)
|
||||
|
||||
|
||||
def get(self,name):
|
||||
for flt in self.filters:
|
||||
if flt.getName() == name:
|
||||
return flt
|
||||
return None
|
||||
|
||||
|
||||
|
||||
|
||||
# Abstact Filter Classes
|
||||
|
||||
class YumexFilter:
|
||||
@@ -62,22 +62,22 @@ class YumexFilter:
|
||||
|
||||
def process(self,po):
|
||||
raise NotImplementedError()
|
||||
|
||||
|
||||
def activate(self,state=True):
|
||||
self._state = state
|
||||
|
||||
|
||||
|
||||
class ListFilter(YumexFilter):
|
||||
def __init__(self):
|
||||
YumexFilter.__init__(self)
|
||||
self.fltList = []
|
||||
|
||||
|
||||
def setFilterList(self,lst):
|
||||
self.fltList = lst
|
||||
|
||||
def getName(self):
|
||||
return "ListFilter"
|
||||
|
||||
|
||||
def isInList(self,value):
|
||||
if self._state:
|
||||
if value in self.fltList:
|
||||
@@ -89,10 +89,10 @@ class ListFilter(YumexFilter):
|
||||
class BoolFilter(YumexFilter):
|
||||
def __init__(self):
|
||||
YumexFilter.__init__(self)
|
||||
|
||||
|
||||
def getName(self):
|
||||
return "BoolFilter"
|
||||
|
||||
|
||||
def process(self,value):
|
||||
if self._state and not value:
|
||||
return False
|
||||
@@ -103,13 +103,13 @@ class ValueFilter(YumexFilter):
|
||||
def __init__(self):
|
||||
YumexFilter.__init__(self)
|
||||
self._value = None
|
||||
|
||||
|
||||
def getName(self):
|
||||
return "ValueFilter"
|
||||
|
||||
|
||||
def setValue(self,value):
|
||||
self._value = value
|
||||
|
||||
|
||||
def process(self,value):
|
||||
if self._state and not value == self._value:
|
||||
return False
|
||||
@@ -123,14 +123,12 @@ class KeywordFilter(YumexFilter):
|
||||
YumexFilter.__init__(self)
|
||||
self.reList = []
|
||||
self.fields = ['name', 'summary', 'description']
|
||||
|
||||
|
||||
def setKeys(self,criteria):
|
||||
self.reList = []
|
||||
for string in criteria:
|
||||
# FIXME!!!
|
||||
#restring = yum.misc.refineSearchPattern(string)
|
||||
try:
|
||||
crit_re = re.compile(restring, flags=re.I)
|
||||
try:
|
||||
crit_re = re.compile(string, flags=re.I)
|
||||
self.reList.append(crit_re)
|
||||
except sre_constants.error, e:
|
||||
raise Errors.MiscError, \
|
||||
@@ -138,10 +136,10 @@ class KeywordFilter(YumexFilter):
|
||||
|
||||
def getName(self):
|
||||
return "KeywordFilter"
|
||||
|
||||
|
||||
def process(self,pkg):
|
||||
if self._state: # is filter enabled ?
|
||||
for crit_re in self.reList:
|
||||
for crit_re in self.reList:
|
||||
found = False
|
||||
for field in self.fields:
|
||||
value = pkg.getAttr( field )
|
||||
@@ -159,31 +157,30 @@ class KeywordFilter(YumexFilter):
|
||||
class RepoFilter(ListFilter):
|
||||
def getName(self):
|
||||
return "RepoFilter"
|
||||
|
||||
|
||||
def process(self,po):
|
||||
return self.isInList(po.repoid)
|
||||
|
||||
class ArchFilter(ListFilter):
|
||||
def getName(self):
|
||||
return "ArchFilter"
|
||||
|
||||
|
||||
def process(self,po):
|
||||
return self.isInList(po.arch)
|
||||
|
||||
|
||||
class ActionFilter(ListFilter):
|
||||
def getName(self):
|
||||
return "ActionFilter"
|
||||
|
||||
|
||||
def process(self,po):
|
||||
return self.isInList(po.action)
|
||||
|
||||
|
||||
|
||||
class QueuedFilter(BoolFilter):
|
||||
def getName(self):
|
||||
return "QueuedFilter"
|
||||
|
||||
|
||||
yumexFilter = YumexFiltering()
|
||||
yumexFilter.registerFilter(RepoFilter())
|
||||
yumexFilter.registerFilter(ArchFilter())
|
||||
yumexFilter.registerFilter(RepoFilter())
|
||||
yumexFilter.registerFilter(ArchFilter())
|
||||
yumexFilter.registerFilter(KeywordFilter())
|
||||
|
||||
+19
-17
@@ -48,7 +48,7 @@ class YumexPackageInfo:
|
||||
self.pkgFiles.goTop()
|
||||
self.pkgChangeLog.goTop()
|
||||
self.pkgOther.goTop()
|
||||
|
||||
|
||||
def showInfo(self,pkg):
|
||||
self.clear()
|
||||
self.writePkg( self.pkgDesc, pkg, "%s", "description" )
|
||||
@@ -69,26 +69,28 @@ class YumexPackageInfo:
|
||||
obsoletes = self.yumbase.up.getObsoletesTuples( newest=1 )
|
||||
for ( obsoleting, installed ) in obsoletes:
|
||||
if obsoleting[0] == pkg.name:
|
||||
po = self.yumbase.rpmdb.searchPkgTuple( installed )[0]
|
||||
po = self.yumbase.rpmdb.searchPkgTuple( installed )[0]
|
||||
txt = _( "Obsoleting : %s\n\n" ) % str(po)
|
||||
self.pkgInfo.write_line( txt )
|
||||
break
|
||||
|
||||
self.writePkg( self.pkgInfo, pkg, 'RPM Group : %s\n', "group", True )
|
||||
self.writePkg( self.pkgInfo, pkg, 'Source : %s\n', "sourcerpm" )
|
||||
gp = self.yumbase.pkgInGrps.get(pkg.name)
|
||||
if gp:
|
||||
self.pkgInfo.write_line('Yum Group : %s/%s\n' % (gp[0].category.name,gp[0].group.name))
|
||||
gpType = const.GROUP_PACKAGE_TYPE[gp[0].typ]
|
||||
self.pkgInfo.write_line(' -> Type : %s\n' % (gpType))
|
||||
self.writePkgTime( self.pkgInfo, pkg, 'Build Time : %s\n', "buildtime" )
|
||||
if pkg.action =='r':
|
||||
self.writePkgTime( self.pkgInfo, pkg, 'Install Time : %s\n', "installtime" )
|
||||
self.writePkg( self.pkgInfo, pkg, 'License : %s\n', 'license' )
|
||||
self.pkgOther.write_line( _( "Requires:\n\n" ) )
|
||||
reqList = pkg.pkg.requiresList()
|
||||
for req in reqList:
|
||||
self.pkgOther.write_line( "%s\n" % req )
|
||||
self.writePkg( self.pkgInfo, pkg, 'Category : %s\n', "category", True )
|
||||
self.writePkg( self.pkgInfo, pkg, 'Name : %s\n', "name" )
|
||||
if not pkg.from_installed:
|
||||
self.writePkg( self.pkgInfo, pkg, 'Branch : %s\n', "branch" )
|
||||
self.writePkg( self.pkgInfo, pkg, 'Slot : %s\n', "slot" )
|
||||
self.writePkg( self.pkgInfo, pkg, 'Version : %s\n', "version" )
|
||||
self.writePkg( self.pkgInfo, pkg, 'Kernel Tag : %s\n', "versiontag" )
|
||||
self.writePkg( self.pkgInfo, pkg, 'Revision : %s\n', "revision" )
|
||||
if pkg.from_installed:
|
||||
self.writePkgTime( self.pkgInfo, pkg, 'Install time : %s\n', "creationdate" )
|
||||
else:
|
||||
self.writePkgTime( self.pkgInfo, pkg, 'Install time : %s\n', "creationdate" )
|
||||
self.writePkg( self.pkgInfo, pkg, 'License : %s\n', 'license' )
|
||||
|
||||
#if pkg.action =='r':
|
||||
# self.writePkgTime( self.pkgInfo, pkg, 'Install Time : %s\n', "installtime" )
|
||||
# self.pkgOther.write_line( _( "Requires:\n\n" ) )
|
||||
self.goTop()
|
||||
|
||||
def writePkg( self, outobj, pkg, markup, attr, remove_newline=False ):
|
||||
|
||||
+18
-9
@@ -129,7 +129,7 @@ class YumexController(Controller):
|
||||
else:
|
||||
self.ui.pkgSelect.hide()
|
||||
self.ui.pkgDeSelect.hide()
|
||||
|
||||
|
||||
self.addPackages()
|
||||
rb.grab_remove()
|
||||
|
||||
@@ -276,13 +276,13 @@ class YumexController(Controller):
|
||||
flt.activate(False)
|
||||
action = self.lastPkgPB
|
||||
rb = self.packageRB[action]
|
||||
self.on_pkgFilter_toggled(rb,action)
|
||||
self.on_pkgFilter_toggled(rb,action)
|
||||
|
||||
def on_clear_clicked(self,widget):
|
||||
''' Search Clear button handler'''
|
||||
self.ui.pkgFilter.set_text("")
|
||||
self.on_search_clicked(None)
|
||||
|
||||
|
||||
def on_schRepo_toggled(self,rb):
|
||||
''' Search Repo Checkbox handler'''
|
||||
if rb.get_active():
|
||||
@@ -301,7 +301,7 @@ class YumexController(Controller):
|
||||
self.ui.schArchText.set_sensitive(False)
|
||||
self.on_schArchText_activate(self.ui.schArchText)
|
||||
|
||||
def on_schRepoText_activate(self,entry):
|
||||
def on_schRepoText_activate(self,entry):
|
||||
''' Search Repo Entry handler'''
|
||||
txt = entry.get_text()
|
||||
flt = filters.yumexFilter.get('RepoFilter')
|
||||
@@ -330,7 +330,7 @@ class YumexController(Controller):
|
||||
flt.activate(False)
|
||||
action = self.lastPkgPB
|
||||
rb = self.packageRB[action]
|
||||
self.on_pkgFilter_toggled(rb,action)
|
||||
self.on_pkgFilter_toggled(rb,action)
|
||||
|
||||
def on_comps_cursor_changed(self, widget):
|
||||
""" Handle selection of row in Comps Category view """
|
||||
@@ -415,7 +415,8 @@ class YumexApplication(YumexController,YumexGUI):
|
||||
print self.yumexOptions.getArgs()
|
||||
self.logger.info(_('Yum Config Setup'))
|
||||
self.yumexOptions.parseCmdOptions()
|
||||
#self.lastPkgPB = "updates"
|
||||
self.lastPkgPB = "installed" # FIXME: change this in updates
|
||||
self.etpbase.setFilter(filters.yumexFilter.processFilters)
|
||||
|
||||
# Setup GUI
|
||||
self.setupGUI()
|
||||
@@ -470,7 +471,15 @@ class YumexApplication(YumexController,YumexGUI):
|
||||
except Exception, e:
|
||||
self.progressLog(_('Unhandled exception: %s') % (str(e),), extra = "repositories")
|
||||
return 2
|
||||
repoConn.sync()
|
||||
rc = repoConn.sync()
|
||||
if repoConn.syncErrors:
|
||||
self.progress.set_mainLabel(_('Errors updating repositories.'))
|
||||
self.progress.set_subLabel(_('Please check logs below for more info'))
|
||||
else:
|
||||
self.progress.set_mainLabel(_('Repositories updated successfully'))
|
||||
self.progress.set_subLabel(_('Have fun :-)'))
|
||||
if repoConn.newEquo:
|
||||
self.progress.set_extraLabel(_('app-admin/equo needs to be updated as soon as possible.'))
|
||||
|
||||
initConfig_entropyConstants(etpSys['rootdir'])
|
||||
self.setupRepoView()
|
||||
@@ -505,12 +514,12 @@ class YumexApplication(YumexController,YumexGUI):
|
||||
for po in allpkgs:
|
||||
self.pkgView.store.append([po,str(po)])
|
||||
self.ui.viewPkg.set_model(self.pkgView.store)
|
||||
|
||||
|
||||
msg = _('Population Completed')
|
||||
self.progressLog(msg)
|
||||
self.setStatus(msg)
|
||||
normalCursor(self.ui.main)
|
||||
if self.doProgress: self.progress.hide() #Hide Progress
|
||||
if self.doProgress: self.progress.hide() #Hide Progress
|
||||
|
||||
def addCategoryPackages(self,cat = None):
|
||||
msg = _('Package View Population')
|
||||
|
||||
+13
-13
@@ -35,7 +35,7 @@ class YumexCategoryView:
|
||||
|
||||
def setup_view( self ):
|
||||
""" Setup Category View """
|
||||
model = gtk.TreeStore( gobject.TYPE_STRING,gobject.TYPE_STRING )
|
||||
model = gtk.TreeStore( gobject.TYPE_STRING,gobject.TYPE_STRING )
|
||||
self.view.set_model( model )
|
||||
cell1 = gtk.CellRendererText()
|
||||
column1= gtk.TreeViewColumn( _( "Categories" ), cell1, markup=0 )
|
||||
@@ -46,7 +46,7 @@ class YumexCategoryView:
|
||||
self.view.append_column( column1 )
|
||||
self.view.set_headers_visible(False)
|
||||
return model
|
||||
|
||||
|
||||
def populate(self,data,tree=False):
|
||||
self.model.clear()
|
||||
if tree:
|
||||
@@ -54,7 +54,7 @@ class YumexCategoryView:
|
||||
else:
|
||||
for el in data:
|
||||
self.model.append(None,[el,el])
|
||||
|
||||
|
||||
|
||||
class EntropyPackageView:
|
||||
def __init__( self, treeview,qview ):
|
||||
@@ -63,7 +63,7 @@ class EntropyPackageView:
|
||||
self.store = self.setupView()
|
||||
self.queue = qview.queue
|
||||
self.queueView = qview
|
||||
|
||||
|
||||
def setupView( self ):
|
||||
store = gtk.ListStore( gobject.TYPE_PYOBJECT, str)
|
||||
self.view.set_model( store )
|
||||
@@ -89,18 +89,18 @@ class EntropyPackageView:
|
||||
self.view.append_column( column2 )
|
||||
column2.set_clickable( True )
|
||||
|
||||
self.create_text_column( _( "Package" ), 'name' , size=240)
|
||||
self.create_text_column( _( "Arch." ), 'arch' , size = 50 )
|
||||
self.create_text_column( _( "Ver." ), 'ver', size = 100 )
|
||||
self.create_text_column( _( "Summary" ), 'summaryFirst', size=400 )
|
||||
self.create_text_column( _( "Repo." ), 'repoid' , size=100 )
|
||||
self.create_text_column( _( "Size." ), 'sizeFmt' , size=100 )
|
||||
self.create_text_column( _( "Package" ), 'name' , size=360)
|
||||
self.create_text_column( _( "Rev." ), 'revision' , size=50 )
|
||||
self.create_text_column( _( "Slot" ), 'slot' , size = 50 )
|
||||
self.create_text_column( _( "Repository" ), 'repoid', size = 130 )
|
||||
self.create_text_column( _( "Size" ), 'intelligentsizeFmt', size=80 )
|
||||
#self.create_text_column( _( "Download" ), 'sizeFmt' , size=80 )
|
||||
self.view.set_search_column( 1 )
|
||||
self.view.set_enable_search(True)
|
||||
#store.set_sort_column_id(1, gtk.SORT_ASCENDING)
|
||||
self.view.set_reorderable( False )
|
||||
store.set_sort_column_id(1, gtk.SORT_ASCENDING)
|
||||
self.view.set_reorderable( True )
|
||||
return store
|
||||
|
||||
|
||||
def create_text_column( self, hdr, property, size, sortcol = None):
|
||||
"""
|
||||
Create a TreeViewColumn with text and set
|
||||
|
||||
Reference in New Issue
Block a user