[clocks] Added empty view when no clocks have been set up



commit 313526ae1cb3b90c04724ec7258d73952bf30a74
Author: Seif Lotfy <seif lotfy com>
Date:   Sat Aug 4 11:28:53 2012 +0200

    Added empty view when no clocks have been set up

 clocks.py  |   38 +++++++++++++++++++++++++++++---------
 widgets.py |   31 +++++++++++++++++++------------
 2 files changed, 48 insertions(+), 21 deletions(-)
---
diff --git a/clocks.py b/clocks.py
index d5c070e..2d469aa 100644
--- a/clocks.py
+++ b/clocks.py
@@ -21,7 +21,7 @@
 from gi.repository import Gtk, GObject, Gio, Gdk, Gst, Notify, cairo
 from gi.repository.GdkPixbuf import Pixbuf
 
-from widgets import NewWorldClockDialog, DigitalClock, NewAlarmDialog, AlarmWidget
+from widgets import NewWorldClockDialog, DigitalClock, NewAlarmDialog, AlarmWidget, WorldEmpty
 from alarms_handler import AlarmsHandler
 from storage import worldclockstorage
 
@@ -91,6 +91,8 @@ class World (Clock):
         self.liststore = liststore = Gtk.ListStore(Pixbuf, str, GObject.TYPE_PYOBJECT)
         self.iconview = iconview = Gtk.IconView.new()
         
+        self.empty_view = WorldEmpty ()
+        
         iconview.set_model(liststore)
         iconview.set_spacing(3)
         iconview.set_pixbuf_column(0)
@@ -101,9 +103,9 @@ class World (Clock):
         iconview.pack_start(renderer_text, True)
         iconview.add_attribute(renderer_text, "markup", 1)
 
-        scrolledwindow = Gtk.ScrolledWindow()
+        self.scrolledwindow = scrolledwindow = Gtk.ScrolledWindow()
         scrolledwindow.add(iconview)
-        self.add(scrolledwindow)
+        #self.add(scrolledwindow)
 
         iconview.connect ("selection-changed", self._on_selection_changed)
 
@@ -126,11 +128,15 @@ class World (Clock):
 
     def load_clocks(self):
         self.clocks = worldclockstorage.load_clocks ()
-        for clock in self.clocks:
-            d = DigitalClock (clock)
-            view_iter = self.liststore.append([d.drawing.pixbuf, "<b>"+d.location.get_city_name()+"</b>", d])
-            d.set_iter(self.liststore, view_iter)
-            self.show_all()
+        print self.clocks
+        if len(self.clocks) == 0:
+            self.load_empty_clocks_view ()
+        else:
+            for clock in self.clocks:
+                d = DigitalClock (clock)
+                view_iter = self.liststore.append([d.drawing.pixbuf, "<b>"+d.location.get_city_name()+"</b>", d])
+                d.set_iter(self.liststore, view_iter)
+            self.load_clocks_view ()
 
     def add_clock(self, location):
         location_id = location.id + "---" + location.location.get_code ()
@@ -141,16 +147,19 @@ class World (Clock):
             d.set_iter(self.liststore, view_iter)
             self.show_all()
         worldclockstorage.save_clocks (self.clocks)
+        if len(self.clocks) > 0:
+            self.load_clocks_view ()
 
     def delete_clock (self, d):
         self.clocks.remove (d.location)
         self.liststore.remove (d.view_iter)
         self.iconview.unselect_all ()
+        if len(self.clocks) == 0:
+            self.load_empty_clocks_view ()
 
     def open_new_dialog(self):
         parent = self.get_parent().get_parent().get_parent()
         window = NewWorldClockDialog(parent)
-
         #window.get_children()[0].pack_start(widget, False, False, 0)
         window.connect("add-clock", lambda w, l: self.add_clock(l))
         window.show_all()
@@ -160,6 +169,17 @@ class World (Clock):
         self.addButton.set_sensitive(False)
         self.emit('show-requested')
 
+    def load_clocks_view (self):
+        if self.empty_view in self.get_children ():
+            self.remove (self.empty_view)
+        self.add (self.scrolledwindow)
+        self.show_all ()
+
+    def load_empty_clocks_view (self):
+        if self.scrolledwindow in self.get_children ():
+            self.remove (self.scrolledwindow)
+        self.add (self.empty_view)
+        self.show_all ()
 
 class Alarm (Clock):
     def __init__ (self):
diff --git a/widgets.py b/widgets.py
index d20895a..857aa6c 100644
--- a/widgets.py
+++ b/widgets.py
@@ -561,19 +561,26 @@ class NewAlarmDialog (Gtk.Dialog):
             self.repeat_days.remove('SU')
         self.check_save_button_status()
 
-"""
-if text.startswith("0"):
-    text = text[1:]
-
-
-def get_image(self, local_time):
-    if local_time.tm_hour > 7 and local_time.tm_hour < 19:
-        return "data/cities/day.png"
-    else:
-        return "data/cities/night.png"
-"""
-
 class ClocksHome(Gtk.Box):
     def __init__(self):
         Gt.Box.__init__(self)
         self.set_orientation(Gtk.Orientation.VERTICAL)
+        
+class WorldEmpty(Gtk.Box):
+    def __init__(self):
+        Gtk.Box.__init__(self)
+        self.set_orientation(Gtk.Orientation.VERTICAL)
+        gicon = Gio.ThemedIcon.new_with_default_fallbacks("document-open-recent-symbolic")
+        image = Gtk.Image.new_from_gicon(gicon, Gtk.IconSize.DIALOG)
+        image.set_sensitive (False)
+        text = Gtk.Label("")
+        text.set_markup("<span color='darkgrey'>Select <b>New</b> to add a world clock</span>")
+        self.pack_start(Gtk.Label(""), True, True, 0)
+        self.pack_start(image, False, False, 6)
+        self.pack_start(text, False, False, 6)
+        self.pack_start(Gtk.Label(""), True, True, 0)
+        self.button = Gtk.ToggleButton()
+        self.show_all()
+
+    def unselect_all(self):
+        pass



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