summaryrefslogtreecommitdiff
path: root/portato
diff options
context:
space:
mode:
authorRené 'Necoro' Neumann <necoro@necoro.net>2008-03-04 11:36:58 +0100
committerRené 'Necoro' Neumann <necoro@necoro.net>2008-03-04 11:36:58 +0100
commitaa58720700de8cadfa017bfab569d448d937238b (patch)
treef2a1bb46714a1b85f3cf95fd89a9fa97e5327ae0 /portato
parent5f9bda4f89ad515910a34988924541c887d9c259 (diff)
downloadportato-aa58720700de8cadfa017bfab569d448d937238b.tar.gz
portato-aa58720700de8cadfa017bfab569d448d937238b.tar.bz2
portato-aa58720700de8cadfa017bfab569d448d937238b.zip
Improved selection handling in sessions.
Diffstat (limited to 'portato')
-rw-r--r--portato/gui/gtk/windows.py44
1 files changed, 29 insertions, 15 deletions
diff --git a/portato/gui/gtk/windows.py b/portato/gui/gtk/windows.py
index 11588c4..05b9359 100644
--- a/portato/gui/gtk/windows.py
+++ b/portato/gui/gtk/windows.py
@@ -1248,23 +1248,36 @@ class MainWindow (Window):
return [x.get_position() for x in (self.vpaned, self.hpaned)]
# SELECTION
- def load_selection (*positions):
- def _load(list, pos):
- pos = int(pos)
+ def load_selection (list, col):
+ def _load (name):
+ pos = "0" # default
+
+ if name:
+ for cname, path in ((x[col], x.path) for x in list.get_model()):
+ if cname == name:
+ pos = path
+
list.get_selection().select_path(pos)
list.scroll_to_cell(pos)
+
+ return _load
- map(_load, (self.catList, self.pkgList), positions)
-
- def save_selection ():
- def _save(list):
- iter = list.get_selection().get_selected()[1]
- if iter:
- return list.get_model().get_string_from_iter(iter)
- else:
- return "0"
-
- return map(_save, (self.catList, self.pkgList))
+ def save_pkg_selection ():
+ store, iter = self.pkgList.get_selection().get_selected()
+ if iter:
+ return store.get_value(iter, 1)
+ else:
+ return ""
+
+ def save_cat_selection ():
+ # try to find the correct category using the pkgList selection
+ # so we do not select ALL =)
+ # if no package has been selected - return selCatName
+ store, iter = self.pkgList.get_selection().get_selected()
+ if iter:
+ return store.get_value(iter, 2)
+ else:
+ return self.selCatName
# PLUGIN
def load_plugin (p):
@@ -1289,7 +1302,8 @@ class MainWindow (Window):
map(self.session.add_handler,[
([("width", "window"), ("height", "window")], lambda w,h: self.window.resize(int(w), int(h)), self.window.get_size),
([("vpanedpos", "window"), ("hpanedpos", "window")], load_paned, save_paned),
- ([("catsel", "window"), ("pkgsel", "window")], load_selection, save_selection),
+ ([("catsel", "window")], load_selection(self.catList, 0), save_cat_selection),
+ ([("pkgsel", "window")], load_selection(self.pkgList, 1), save_pkg_selection),
([("merge", "queue"), ("unmerge", "queue"), ("oneshot", "queue")], load_queue, save_queue)
])