From aa58720700de8cadfa017bfab569d448d937238b Mon Sep 17 00:00:00 2001 From: René 'Necoro' Neumann Date: Tue, 4 Mar 2008 11:36:58 +0100 Subject: Improved selection handling in sessions. --- portato/gui/gtk/windows.py | 44 +++++++++++++++++++++++++++++--------------- 1 file changed, 29 insertions(+), 15 deletions(-) (limited to 'portato/gui') 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) ]) -- cgit v1.2.3-54-g00ecf