summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRené 'Necoro' Neumann <necoro@necoro.net>2008-12-05 13:18:30 +0100
committerRené 'Necoro' Neumann <necoro@necoro.net>2008-12-05 13:18:30 +0100
commit4f176854bbf939a7519ef28c2311d3c9508cc8a9 (patch)
tree011a5f01f9786b5f18310f1a0ec1deb873d71be9
parent2c79a7fc6ea5995ecdc7e3f8c83fe410586d9f6e (diff)
downloadportato-4f176854bbf939a7519ef28c2311d3c9508cc8a9.tar.gz
portato-4f176854bbf939a7519ef28c2311d3c9508cc8a9.tar.bz2
portato-4f176854bbf939a7519ef28c2311d3c9508cc8a9.zip
Make the use list lazy too
Diffstat (limited to '')
-rw-r--r--portato/gui/templates/MainWindow.glade8
-rw-r--r--portato/gui/windows/main.py146
2 files changed, 79 insertions, 75 deletions
diff --git a/portato/gui/templates/MainWindow.glade b/portato/gui/templates/MainWindow.glade
index 50db1d8..ad6b4a0 100644
--- a/portato/gui/templates/MainWindow.glade
+++ b/portato/gui/templates/MainWindow.glade
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE glade-interface SYSTEM "glade-2.0.dtd">
-<!--Generated with glade3 3.4.5 on Fri Dec 5 12:41:55 2008 -->
+<!--Generated with glade3 3.4.5 on Fri Dec 5 12:57:49 2008 -->
<glade-interface>
<widget class="GtkWindow" id="MainWindow">
<property name="border_width">2</property>
@@ -887,11 +887,7 @@
<property name="hscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
<property name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
<child>
- <widget class="GtkTreeView" id="useList">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
- </widget>
+ <placeholder/>
</child>
</widget>
<packing>
diff --git a/portato/gui/windows/main.py b/portato/gui/windows/main.py
index dd556bb..08c2033 100644
--- a/portato/gui/windows/main.py
+++ b/portato/gui/windows/main.py
@@ -93,15 +93,14 @@ class PackageTable:
self.unmergeBtn = self.tree.get_widget("pkgUnmergeBtn")
self.revertBtn = self.tree.get_widget("pkgRevertBtn")
- # useList
- self.useList = self.tree.get_widget("useList")
- self.build_use_list()
-
# views
- self.ebuildView = self.tree.get_widget("ebuildScroll").get_child()
- self.changelogView = self.tree.get_widget("changelogScroll").get_child()
- self.filesView = self.tree.get_widget("filesScroll").get_child()
- self.depView = self.tree.get_widget("dependencyScroll").get_child()
+ self.views = map (lambda x: self.tree.get_widget(x).get_child(),
+ [
+ "ebuildScroll", "changelogScroll", "filesScroll",
+ "dependencyScroll", "useListScroll"
+ ])
+
+ self.useList = self.tree.get_widget("useListScroll").get_child()
def update (self, pkg, queue = None, doEmerge = True, instantChange = False, type = None):
@@ -196,54 +195,6 @@ class PackageTable:
self.useFlagsLL.hide()
self.useFlagsLabel.hide()
- def fill_use_list(self):
-
- pkg = self.pkg
- pkg_flags = pkg.get_iuse_flags()
- pkg_flags.sort()
-
- actual_exp = None
- actual_exp_it = None
-
- euse = pkg.get_actual_use_flags()
- instuse = pkg.get_installed_use_flags()
-
- store = self.useList.get_model()
-
- for use in pkg_flags:
- exp = pkg.use_expanded(use, suggest = actual_exp)
- if exp is not None:
- if exp != actual_exp:
- actual_exp_it = store.append(None, [None, None, exp, "<i>%s</i>" % _("This is an expanded use flag and cannot be selected")])
- actual_exp = exp
- else:
- actual_exp_it = None
- actual_exp = None
-
- enabled = use in euse
- installed = use in instuse
- store.append(actual_exp_it, [enabled, installed, use, system.get_use_desc(use, self.pkg.get_cp())])
-
- def build_use_list (self):
- """Builds the useList."""
- store = gtk.TreeStore(bool, bool, str, str)
- self.useList.set_model(store)
-
- # build view
- cell = gtk.CellRendererText()
- iCell = gtk.CellRendererToggle()
- iCell.set_property("activatable", False)
- tCell = gtk.CellRendererToggle()
- tCell.set_property("activatable", True)
- tCell.connect("toggled", self.cb_use_flag_toggled, store)
- self.useList.append_column(gtk.TreeViewColumn(_("Enabled"), tCell, active = 0))
- self.useList.append_column(gtk.TreeViewColumn(_("Installed"), iCell, active = 1))
- self.useList.append_column(gtk.TreeViewColumn(_("Flag"), cell, text = 2))
- self.useList.append_column(gtk.TreeViewColumn(_("Description"), cell, markup = 3))
-
- self.useList.set_search_column(2)
- self.useList.set_enable_tree_lines(True)
-
def _update_keywords (self, emerge, update = False):
if emerge:
type = "install" if not self.type else self.type
@@ -267,17 +218,13 @@ class PackageTable:
pkg = self.pkg
# set the views
- for v in (self.ebuildView, self.changelogView, self.filesView, self.depView):
- v.update(pkg, force = self.notebook.get_nth_page(self.notebook.get_current_page()) == v.get_parent())
+ nb_page = self.notebook.get_nth_page(self.notebook.get_current_page())
+ for v in self.views:
+ v.update(pkg, force = nb_page == v.get_parent())
# set the labels
self.set_labels()
- # set use list
- self.useList.get_model().clear()
- self.useList.columns_autosize()
- self.fill_use_list()
-
#
# rebuild the buttons and checkboxes in all the different manners which are possible
#
@@ -435,8 +382,11 @@ class PackageTable:
return True
- def cb_use_flag_toggled (self, cell, path, store):
+ def cb_use_flag_toggled (self, cell, path):
"""Callback for a toggled use-flag button."""
+
+ store = self.useList.get_model()
+
flag = store[path][2]
pkg = self.pkg
@@ -586,10 +536,10 @@ class MainWindow (Window):
filesScroll.add(InstalledOnlyView(show_files))
depScroll = self.tree.get_widget("dependencyScroll")
- self.depList = LazyStoreView(self.fill_dep_list)
- self.build_dep_list()
- depScroll.add(self.depList)
-
+ depScroll.add(self.build_dep_list())
+
+ useScroll = self.tree.get_widget("useListScroll")
+ useScroll.add(self.build_use_list())
# table
self.packageTable = PackageTable(self)
@@ -883,6 +833,8 @@ class MainWindow (Window):
def build_dep_list (self):
+ listView = LazyStoreView(self.fill_dep_list)
+
col = gtk.TreeViewColumn()
cell = gtk.CellRendererPixbuf()
@@ -893,7 +845,10 @@ class MainWindow (Window):
col.pack_start(cell, True)
col.add_attribute(cell, "text", 1)
- self.depList.append_column(col)
+ listView.append_column(col)
+ listView.set_headers_visible(False)
+
+ return listView
def fill_dep_list(self, pkg):
@@ -969,6 +924,56 @@ class MainWindow (Window):
return store
+ def build_use_list (self):
+ """Builds the useList."""
+
+ useList = LazyStoreView(self.fill_use_list)
+
+ # build view
+ cell = gtk.CellRendererText()
+ iCell = gtk.CellRendererToggle()
+ iCell.set_property("activatable", False)
+ tCell = gtk.CellRendererToggle()
+ tCell.set_property("activatable", True)
+ tCell.connect("toggled", self.cb_use_flag_toggled)
+ useList.append_column(gtk.TreeViewColumn(_("Enabled"), tCell, active = 0))
+ useList.append_column(gtk.TreeViewColumn(_("Installed"), iCell, active = 1))
+ useList.append_column(gtk.TreeViewColumn(_("Flag"), cell, text = 2))
+ useList.append_column(gtk.TreeViewColumn(_("Description"), cell, markup = 3))
+
+ useList.set_search_column(2)
+ useList.set_enable_tree_lines(True)
+
+ return useList
+
+ def fill_use_list(self, pkg):
+ store = gtk.TreeStore(bool, bool, str, str)
+
+ pkg_flags = pkg.get_iuse_flags()
+ pkg_flags.sort()
+
+ actual_exp = None
+ actual_exp_it = None
+
+ euse = pkg.get_actual_use_flags()
+ instuse = pkg.get_installed_use_flags()
+
+ for use in pkg_flags:
+ exp = pkg.use_expanded(use, suggest = actual_exp)
+ if exp is not None:
+ if exp != actual_exp:
+ actual_exp_it = store.append(None, [None, None, exp, "<i>%s</i>" % _("This is an expanded use flag and cannot be selected")])
+ actual_exp = exp
+ else:
+ actual_exp_it = None
+ actual_exp = None
+
+ enabled = use in euse
+ installed = use in instuse
+ store.append(actual_exp_it, [enabled, installed, use, system.get_use_desc(use, pkg.get_cp())])
+
+ return store
+
def refresh_stores (self):
"""
Refreshes the category and package stores.
@@ -1843,6 +1848,9 @@ class MainWindow (Window):
self.window.window.show()
else:
self.window.iconify()
+
+ def cb_use_flag_toggled (self, *args):
+ return self.packageTable.cb_use_flag_toggled(*args)
def cb_close (self, *args):
"""