[gnome-clocks] Make the select button insensitive if the list is empty



commit 89d60293a78c95f3647954092a490b840e624f96
Author: Paolo Borelli <pborelli gnome org>
Date:   Sat Aug 25 13:41:53 2012 +0200

    Make the select button insensitive if the list is empty

 gnomeclocks/app.py    |   72 +++++++++++++++++++++++-------------------------
 gnomeclocks/clocks.py |   12 +++++++-
 2 files changed, 45 insertions(+), 39 deletions(-)
---
diff --git a/gnomeclocks/app.py b/gnomeclocks/app.py
index 6e4ddf1..576a8ca 100644
--- a/gnomeclocks/app.py
+++ b/gnomeclocks/app.py
@@ -58,18 +58,18 @@ class Window(Gtk.ApplicationWindow):
         self.notebook.set_show_tabs(False)
         self.notebook.set_show_border(False)
 
-        self.toolbar = ClocksToolbar(embed._selectionToolbar)
-
-        vbox.pack_start(self.toolbar, False, False, 0)
-        vbox.pack_start(self.toolbar.selection_toolbar, False, False, 0)
-
         self.world = World()
         self.alarm = Alarm()
         self.stopwatch = Stopwatch()
         self.timer = Timer()
 
         self.views = (self.world, self.alarm, self.stopwatch, self.timer)
-        self.toolbar.set_clocks(self.views)
+
+        self.toolbar = ClocksToolbar(self.views, embed._selectionToolbar)
+
+        vbox.pack_start(self.toolbar, False, False, 0)
+        vbox.pack_start(self.toolbar.selection_toolbar, False, False, 0)
+
         self.single_evbox = Gtk.EventBox()
 
         vbox.pack_end(self.notebook, True, True, 0)
@@ -260,7 +260,7 @@ class ClocksToolbar(Gtk.Toolbar):
     __gsignals__ = {'view-clock': (GObject.SignalFlags.RUN_LAST,
                     None, (Clock,))}
 
-    def __init__(self, selectionToolbar):
+    def __init__(self, views, selectionToolbar):
         Gtk.Toolbar.__init__(self)
 
         self.get_style_context().add_class("clocks-toolbar")
@@ -274,7 +274,7 @@ class ClocksToolbar(Gtk.Toolbar):
         toolitem.add(toolbox)
         self.insert(toolitem, -1)
 
-        self.views = []
+        self.views = views
 
         self.newButton = Gtk.Button()
 
@@ -305,41 +305,39 @@ class ClocksToolbar(Gtk.Toolbar):
         self.buttonBox.get_style_context().add_class("linked")
         toolbox.pack_start(self.buttonBox, False, False, 0)
 
+        self.viewsButtons = {}
+        for view in views:
+            button = ClockButton(view.label)
+            self.buttonBox.pack_start(button, False, False, 0)
+            button.connect('toggled', self._on_toggled, view)
+            self.viewsButtons[view] = button
+            if view == views[0]:
+                self.current_view = view
+                button.set_active(True)
+
         self.city_label = Gtk.Label()
         toolbox.pack_start(self.city_label, False, False, 0)
         toolbox.pack_start(Gtk.Box(), False, False, 15)
 
         toolbox.pack_start(Gtk.Label(""), True, True, 0)
 
-        self.applyButton = Gtk.Button()
-        #self.applyButton.get_style_context().add_class('raised');
+        self.selectButton = Gtk.Button()
         icon = Gio.ThemedIcon.new_with_default_fallbacks(
             "object-select-symbolic")
         image = Gtk.Image()
         image.set_from_gicon(icon, Gtk.IconSize.MENU)
-        self.applyButton.add(image)
-        self.applyButton.set_size_request(32, 32)
-        self.applyButton.connect('clicked', self._on_selection_mode, True)
+        self.selectButton.add(image)
+        self.selectButton.set_size_request(32, 32)
+        self.selectButton.set_sensitive(self.current_view.can_select())
+        self.selectButton.connect('clicked', self._on_selection_mode, True)
         self.rightBox = box = Gtk.Box()
-        box.pack_end(self.applyButton, False, False, 0)
+        box.pack_end(self.selectButton, False, False, 0)
         toolbox.pack_start(box, True, True, 0)
 
         self.selection_toolbar = SelectionToolbar(selectionToolbar)
         self.selection_toolbar.doneButton.connect("clicked",
             self._on_selection_mode, False)
 
-    def set_clocks(self, views):
-        self.views = views
-        self.viewsButtons = {}
-        for view in views:
-            button = ClockButton(view.label)
-            self.buttonBox.pack_start(button, False, False, 0)
-            button.connect('toggled', self._on_toggled, view)
-            self.viewsButtons[view] = button
-            if view == views[0]:
-                self.current_view = view
-                button.set_active(True)
-
     def activate_view(self, view):
         if view is not self.current_view:
             self.viewsButtons[view].set_active(True)
@@ -347,14 +345,14 @@ class ClocksToolbar(Gtk.Toolbar):
     def _set_overview_toolbar(self):
         self.buttonBox.show()
         self.newButton.show()
-        self.applyButton.show()
+        self.selectButton.show()
         self.backButton.hide()
         self.city_label.hide()
 
     def _set_single_toolbar(self):
         self.buttonBox.hide()
         self.newButton.hide()
-        self.applyButton.hide()
+        self.selectButton.hide()
         if not self.backButton.get_parent():
             self.leftBox.pack_start(self.backButton, False, False, 0)
         self.backButton.show_all()
@@ -374,16 +372,16 @@ class ClocksToolbar(Gtk.Toolbar):
             self.newButton.set_size_request(width, -1)
             self.newButton.get_children()[0].hide()
         if view.hasSelectionMode:
-            self.applyButton.get_children()[0].show_all()
-            self.applyButton.show_all()
-            self.applyButton.set_relief(Gtk.ReliefStyle.NORMAL)
-            self.applyButton.set_sensitive(True)
+            self.selectButton.get_children()[0].show_all()
+            self.selectButton.show_all()
+            self.selectButton.set_relief(Gtk.ReliefStyle.NORMAL)
+            self.selectButton.set_sensitive(view.can_select())
         else:
-            width = self.applyButton.get_allocation().width
-            self.applyButton.set_relief(Gtk.ReliefStyle.NONE)
-            self.applyButton.set_sensitive(False)
-            self.applyButton.set_size_request(width, -1)
-            self.applyButton.get_children()[0].hide()
+            width = self.selectButton.get_allocation().width
+            self.selectButton.set_relief(Gtk.ReliefStyle.NONE)
+            self.selectButton.set_sensitive(False)
+            self.selectButton.set_size_request(width, -1)
+            self.selectButton.get_children()[0].hide()
 
         self.emit("view-clock", view)
 
diff --git a/gnomeclocks/clocks.py b/gnomeclocks/clocks.py
index 8b7c4a3..860a956 100644
--- a/gnomeclocks/clocks.py
+++ b/gnomeclocks/clocks.py
@@ -56,12 +56,14 @@ class Clock(Gtk.EventBox):
     def open_new_dialog(self):
         pass
 
-    def get_selection(self):
+    def can_select(self):
         pass
 
-    def unselect_all(self):
+    def get_selection(self):
         pass
 
+    def unselect_all(self):
+         pass
 
 class World(Clock):
     def __init__(self):
@@ -107,6 +109,9 @@ class World(Clock):
     def set_selection_mode(self, active):
         self.iconview.set_selection_mode(active)
 
+    def can_select(self):
+        return len(self.liststore) != 0
+
     def get_selection(self):
         return self.iconview.get_selection()
 
@@ -223,6 +228,9 @@ class Alarm(Clock):
     def set_selection_mode(self, active):
         self.iconview.set_selection_mode(active)
 
+    def can_select(self):
+        return len(self.liststore) != 0
+
     def get_selection(self):
         return self.iconview.get_selection()
 



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]