diff options
author | Florian Festi <ffesti@redhat.com> | 2010-08-28 11:01:42 +0200 |
---|---|---|
committer | Florian Festi <ffesti@redhat.com> | 2010-08-28 11:01:42 +0200 |
commit | 08c5f16dff1c59c9795882b04f07bb5b137aad6f (patch) | |
tree | 26c4456066d3a1cf1ec00674268355ba9f8d7cb8 | |
parent | 42604e86a460a406371f91584022c95e120d029b (diff) | |
download | pkggui-08c5f16dff1c59c9795882b04f07bb5b137aad6f.tar.gz pkggui-08c5f16dff1c59c9795882b04f07bb5b137aad6f.tar.xz pkggui-08c5f16dff1c59c9795882b04f07bb5b137aad6f.zip |
Always show selected group (filtered by selected others)
Limit results to 1000 - still need paging to really fix this
-rwxr-xr-x | gui.py | 26 |
1 files changed, 15 insertions, 11 deletions
@@ -35,7 +35,6 @@ class PackagesUI: } self.activeSearchItems = [] - self.result = set() self.treeItems = {} self.mainwindow = m = uic.loadUi("packages.ui") @@ -64,6 +63,7 @@ class PackagesUI: self.packageProperties = m.findChild(QtGui.QTextBrowser, "packageProperties") self.allPkgs = set(self.yum.pkgSack.returnPackages()) + self.result = self.allPkgs.copy() self.allPackagesByName = dict(((p.name, p) for p in self.allPkgs)) # tags @@ -107,6 +107,13 @@ class PackagesUI: def fillResults(self, pkgs): self.resultList.clear() + # XXX cheat for now + # use pages instead + if len(pkgs) > 1000: + l = [(p.name, p) for p in pkgs] + l.sort() + l = l[:1000] + pkgs = set((p for n, p in l)) for pkg in pkgs: item = QtGui.QListWidgetItem("%s\n\t%s" % (pkg.summary, pkg.name), self.resultList, 0) @@ -162,23 +169,20 @@ class PackagesUI: self.refreshSearchResults() def refreshSearchResults(self): - if self.activeSearchItems: - result = self.activeSearchItems[0].result.copy() - for s in self.activeSearchItems: - result &= s.result - else: - result = set() + result = self.allPkgs.copy() + for s in self.activeSearchItems: + result &= s.result self.result = result self.fillResults(result) self.updateSearchItems() def currentSearchItemChanged(self, current, previous): - if self.activeSearchItems: - return searchItem = current.data(3, 0).toPyObject() if searchItem: - self.fillResults(searchItem.result) + self.fillResults(searchItem.result & self.result) + else: + self.fillResults(self.result) def fillTags(self): for _type, name in (("search", "Searches"), @@ -186,7 +190,7 @@ class PackagesUI: ("menu", "Application Menu"), ("group", "Groups")): if self.result: - items = [(len(item.result & self.result), item.pattern, len(item.result)) + items = [(len(item.result & self.result), item.pattern, len(item.result), item) for item in self.searchItems[_type]] else: items = [(len(item.result), item.pattern, len(item.result), item) |