[gnome-clocks] Display number of selected item
- From: Paolo Borelli <pborelli src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-clocks] Display number of selected item
- Date: Mon, 20 Aug 2012 21:43:32 +0000 (UTC)
commit daa15ce956fa172367f014fe1bfb98162ceef437
Author: Paolo Borelli <pborelli gnome org>
Date: Mon Aug 20 21:29:43 2012 +0200
Display number of selected item
Implement get_selection that returns a list of the selected GtkTreePaths
and use it to implement the display of the number of selected items in
the toolbar
gnomeclocks/app.py | 39 +++++++++++++++++++++++++++------------
gnomeclocks/clocks.py | 17 ++++++++++++++---
gnomeclocks/widgets.py | 9 +++++++++
3 files changed, 50 insertions(+), 15 deletions(-)
---
diff --git a/gnomeclocks/app.py b/gnomeclocks/app.py
index d1c8774..1d03339 100644
--- a/gnomeclocks/app.py
+++ b/gnomeclocks/app.py
@@ -159,9 +159,10 @@ class SelectionToolbar(Gtk.Toolbar):
self.insert(sep, -1)
toolitem = Gtk.ToolItem()
- label = Gtk.Label("(%s)" % _("Click on items to select them"))
- label.set_halign(Gtk.Align.CENTER)
- toolitem.add(label)
+ self.label = Gtk.Label()
+ self.label.set_halign(Gtk.Align.CENTER)
+ self.set_selection_label(0)
+ toolitem.add(self.label)
self.insert(toolitem, -1)
sep = Gtk.SeparatorToolItem()
@@ -185,6 +186,27 @@ class SelectionToolbar(Gtk.Toolbar):
box.pack_start(self.doneButton, False, False, 0)
toolbox.pack_start(box, True, True, 0)
+ self.current_view = None
+
+ def set_selection_label(self, n):
+ if n == 0:
+ self.label.set_markup("(%s)" % _("Click on items to select them"))
+ elif n == 1:
+ self.label.set_markup("<b>1 item selected</b>")
+ else:
+ self.label.set_markup("<b>%d items selected</b>" % (n))
+
+ def set_current_view(self, view):
+ if self.current_view:
+ self.current_view.disconnect_by_func(self._on_selection_changed)
+
+ self.current_view = view
+ self.current_view.connect("selection-changed", self._on_selection_changed)
+
+ def _on_selection_changed(self, view):
+ selection = view.get_selection()
+ self.set_selection_label(len(selection))
+
class ClockButton(Gtk.RadioButton):
_group = None
@@ -344,15 +366,8 @@ class ClocksToolbar(Gtk.Toolbar):
def _on_selection_mode(self, button, selection_mode):
self.selection_toolbar.set_visible(selection_mode)
self.set_visible(not selection_mode)
-
- active_view = None
- for view in self.views:
- if view.button.get_active():
- active_view = view
- active_view.set_selection_mode(selection_mode)
-
- def _delete_clock(self, button):
- pass
+ self.selection_toolbar.set_current_view(self.current_view)
+ self.current_view.set_selection_mode(selection_mode)
class ClocksApplication(Gtk.Application):
diff --git a/gnomeclocks/clocks.py b/gnomeclocks/clocks.py
index b39fe32..9c8200d 100644
--- a/gnomeclocks/clocks.py
+++ b/gnomeclocks/clocks.py
@@ -41,7 +41,9 @@ class Clock(Gtk.EventBox):
__gsignals__ = {'show-requested': (GObject.SignalFlags.RUN_LAST,
None, ()),
'show-clock': (GObject.SignalFlags.RUN_LAST,
- None, (GObject.TYPE_PYOBJECT, ))}
+ None, (GObject.TYPE_PYOBJECT, )),
+ 'selection-changed': (GObject.SignalFlags.RUN_LAST,
+ None, ())}
def __init__(self, label, hasNew=False, hasSelectionMode=False):
Gtk.EventBox.__init__(self)
@@ -54,6 +56,9 @@ class Clock(Gtk.EventBox):
def open_new_dialog(self):
pass
+ def get_selection(self):
+ pass
+
def unselect_all(self):
pass
@@ -93,7 +98,10 @@ class World(Clock):
self.emit("show-clock", d)
def _on_selection_changed(self, iconview):
- pass
+ self.emit("selection-changed")
+
+ def get_selection(self):
+ return self.iconview.get_selection()
def load_clocks(self):
self.clocks = worldclockstorage.load_clocks()
@@ -191,7 +199,10 @@ class Alarm(Clock):
self.open_edit_dialog(alarm)
def _on_selection_changed(self, iconview):
- pass
+ self.emit("selection-changed")
+
+ def get_selection(self):
+ return self.iconview.get_selection()
def load_alarms(self):
handler = ICSHandler()
diff --git a/gnomeclocks/widgets.py b/gnomeclocks/widgets.py
index f72e1bf..3a8d7fc 100644
--- a/gnomeclocks/widgets.py
+++ b/gnomeclocks/widgets.py
@@ -639,6 +639,15 @@ class SelectableIconView(Gtk.IconView):
self.pack_start(renderer_text, True)
self.add_attribute(renderer_text, "markup", text_col)
+ def get_selection(self):
+ selection = []
+ store = self.get_model()
+ for i in store:
+ selected = store.get_value(i.iter, self.selection_col)
+ if selected:
+ selection.append(i.path)
+ return selection
+
def set_selection_mode(self, active):
self.selection_mode = active
self.renderer_pixbuf.set_property("toggle_visible", active)
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]