[gnome-music] window: Properly handle trees in Select All/None
- From: Vadim Rutkovsky <vrutkovsky src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-music] window: Properly handle trees in Select All/None
- Date: Mon, 12 May 2014 08:48:58 +0000 (UTC)
commit abb52082e4ed7fd9c2950c99958daea1a8c12952
Author: Arnel Borja <arnelborja src gnome org>
Date: Wed May 7 01:07:56 2014 +0800
window: Properly handle trees in Select All/None
Search view uses tree models instead of lists, so set selection column
if a row has an object, and walk the model recursively.
gnomemusic/window.py | 26 ++++++++++++++++----------
1 files changed, 16 insertions(+), 10 deletions(-)
---
diff --git a/gnomemusic/window.py b/gnomemusic/window.py
index 4482702..0b9762b 100644
--- a/gnomemusic/window.py
+++ b/gnomemusic/window.py
@@ -251,6 +251,20 @@ class Window(Gtk.ApplicationWindow):
self.views[0].populate()
@log
+ def _set_selection(self, model, value, parent=None):
+ count = 0
+ _iter = model.iter_children(parent)
+ while _iter is not None:
+ if model.iter_has_child(_iter):
+ count += self._set_selection(model, value, _iter)
+ if model[_iter][5]:
+ model.set(_iter, [6], [value])
+ count += 1
+ _iter = model.iter_next(_iter)
+ return count
+
+
+ @log
def _on_select_all(self, action, param):
if self.toolbar._selectionMode is False:
return
@@ -258,12 +272,7 @@ class Window(Gtk.ApplicationWindow):
model = self._stack.get_visible_child()._model
else:
model = self._stack.get_visible_child()._albumWidget.model
- _iter = model.get_iter_first()
- count = 0
- while _iter is not None:
- model.set(_iter, [6], [True])
- _iter = model.iter_next(_iter)
- count = count + 1
+ count = self._set_selection(model, True)
if count > 0:
self.toolbar._selection_menu_label.set_text(
ngettext("Selected %d item", "Selected %d items", count) % count)
@@ -279,12 +288,9 @@ class Window(Gtk.ApplicationWindow):
model = self._stack.get_visible_child()._model
else:
model = self._stack.get_visible_child()._albumWidget.model
- _iter = model.get_iter_first()
+ self._set_selection(model, False)
self.selection_toolbar._add_to_playlist_button.set_sensitive(False)
self.selection_toolbar._remove_from_playlist_button.set_sensitive(False)
- while _iter is not None:
- model.set(_iter, [6], [False])
- _iter = model.iter_next(_iter)
self.toolbar._selection_menu_label.set_text(_("Click on items to select them"))
self._stack.get_visible_child().queue_draw()
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]