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:
(no author)
2008-01-05 10:28:04 +00:00
parent b481d9407e
commit 118917dc58
5 changed files with 144 additions and 105 deletions
+67 -36
View File
@@ -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
View File
@@ -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
View File
@@ -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
View File
@@ -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
View File
@@ -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