[clocks] 681000: Save button sensitivity | 678889: Add clock dialog improvements | 681002 Arrow icon in back



commit d93de42a91120f79ccdb3eb81658dcc832b2d224
Author: Eslam Mostafa <cseslam gmail com>
Date:   Thu Aug 2 11:04:50 2012 +0200

    681000: Save button sensitivity | 678889: Add clock dialog improvements | 681002 Arrow icon in back button | 680999: New Alarm dialog hours
    
    Signed-off-by: Seif Lotfy <seif lotfy com>

 alarm.py   |   12 +++++-----
 main.py    |    2 +-
 widgets.py |   74 +++++++++++++++++++++++++++++++++++++++++++++++-------------
 3 files changed, 65 insertions(+), 23 deletions(-)
---
diff --git a/alarm.py b/alarm.py
index a55000a..9f09b74 100644
--- a/alarm.py
+++ b/alarm.py
@@ -28,11 +28,11 @@ class AlarmItem:
     
     def get_vobject(self):                
         alarm = vobject.newFromBehavior('vevent')            
-        alarm.add('summary').value = self.name                
-        #t = datetime.datetime.utcfromtimestamp(self.time)
+        alarm.add('summary').value = self.name                        
         alarm.add('dtstart').value = datetime.datetime.combine(datetime.date.today(), datetime.time(self.h, self.m))        
-        alarm.add('dtend').value = datetime.datetime.combine(datetime.date.today(), datetime.time(self.h+1, self.m))
-        alarm.add('rrule').value = 'FREQ=WEEKLY;BYDAY=%s' % ','.join(self.repeat)
-        alarm.add('action').value = 'audio'
-        alarm.add('attach').value = '/usr/share/sounds/gnome/default/alerts/glass.ogg'
+        if self.h == 23:
+            alarm.add('dtend').value = datetime.datetime.combine(datetime.date.today(), datetime.time(self.h, 59))
+        else:
+            alarm.add('dtend').value = datetime.datetime.combine(datetime.date.today(), datetime.time(self.h+1, self.m))
+        alarm.add('rrule').value = 'FREQ=WEEKLY;BYDAY=%s' % ','.join(self.repeat)        
         return alarm        
diff --git a/main.py b/main.py
index 9fe168d..a546bdb 100644
--- a/main.py
+++ b/main.py
@@ -163,7 +163,7 @@ class ClocksToolbar (Gtk.Toolbar):
         self.backButton = Gtk.Button ()
         icon = Gio.ThemedIcon.new_with_default_fallbacks ("go-previous-symbolic")
         image = Gtk.Image ()
-        image.set_from_gicon (icon, Gtk.IconSize.LARGE_TOOLBAR)
+        image.set_from_gicon (icon, Gtk.IconSize.SMALL_TOOLBAR)
         self.backButton.add(image)
         self.backButton.connect ("clicked", lambda w: self.emit ("view-clock", self._buttonMap[self.last_widget]))
         
diff --git a/widgets.py b/widgets.py
index 1bd6aad..4089889 100644
--- a/widgets.py
+++ b/widgets.py
@@ -35,7 +35,7 @@ class NewWorldClockDialog (Gtk.Dialog):
         self.set_transient_for(parent)
         self.set_modal(True)
         self.set_border_width (9)
-        self.set_size_request(-1,-1)
+        self.set_size_request(400,-1)
         box = Gtk.Box(orientation = Gtk.Orientation.VERTICAL)
         box.set_spacing(9)
         area = self.get_content_area()
@@ -47,10 +47,14 @@ class NewWorldClockDialog (Gtk.Dialog):
 
         world = GWeather.Location.new_world(True)
         self.searchEntry = GWeather.LocationEntry.new(world)
-        #self.searchEntry.set_placeholder_text("Search for a city or a time zone...")
+        self.find_gicon = Gio.ThemedIcon.new_with_default_fallbacks('edit-find-symbolic')
+        self.clear_gicon = Gio.ThemedIcon.new_with_default_fallbacks('edit-clear-symbolic')
+        self.searchEntry.set_icon_from_gicon(Gtk.EntryIconPosition.SECONDARY, self.find_gicon)				
+				#self.searchEntry.set_can_focus(False)
+        self.searchEntry.set_placeholder_text("Search for a city or a time zone...")
 
         header = Gtk.Label("Add New Clock")
-        header.set_markup("<span size='x-large'><b>Add New Clock</b></span>")
+        header.set_markup("<span size='x-large'><b>Add a New World Clock</b></span>")
         
         btnBox = Gtk.Box()
 
@@ -65,6 +69,7 @@ class NewWorldClockDialog (Gtk.Dialog):
 
         self.searchEntry.connect("activate", self._set_city)
         self.searchEntry.connect("changed", self._set_city)
+        self.searchEntry.connect("icon-release", self._icon_released)
         self.connect("response", self._on_response_clicked)
         self.location = None
         self.show_all ()
@@ -79,13 +84,24 @@ class NewWorldClockDialog (Gtk.Dialog):
     def _set_city (self, widget):
         location = self.searchEntry.get_location()
         widget = self.get_widget_for_response (1)
+        if self.searchEntry.get_text () == '':
+            self.searchEntry.set_icon_from_gicon(Gtk.EntryIconPosition.SECONDARY, self.find_gicon)
+        else:
+            self.searchEntry.set_icon_from_gicon(Gtk.EntryIconPosition.SECONDARY, self.clear_gicon)
         if location:
             widget.set_sensitive(True)
         else:
-            widget.set_sensitive(False)
+            widget.set_sensitive(False)        
 
     def get_selection (self):
         return self.location
+        
+    def _icon_released(self, icon_pos, event, data):
+        if self.searchEntry.get_icon_gicon(Gtk.EntryIconPosition.SECONDARY) == self.clear_gicon:
+            self.searchEntry.set_text('')
+            self.searchEntry.set_icon_from_gicon(Gtk.EntryIconPosition.SECONDARY, self.find_gicon)
+            widget = self.get_widget_for_response (1)
+            widget.set_sensitive(False)        
 
 class DigitalClock ():
     def __init__(self, location):              
@@ -204,8 +220,8 @@ class DigitalClockStandalone (Gtk.VBox):
         self.hbox.set_homogeneous (False)
 
         self.hbox.pack_start (Gtk.Label(), True, True, 0)
-        self.hbox.pack_start (imagebox, False, False, 0)
-        self.hbox.pack_start (Gtk.Label (), False, False, 30)
+#        self.hbox.pack_start (imagebox, False, False, 0)
+#        self.hbox.pack_start (Gtk.Label (), False, False, 30)
         self.hbox.pack_start (timebox, False, False, 0)
         self.hbox.pack_start (Gtk.Label(), True, True, 0)
 
@@ -339,23 +355,28 @@ class NewAlarmDialog (Gtk.Dialog):
         table1.set_col_spacings(9)
         content_area = self.get_content_area ()        
         content_area.pack_start(table1, True, True, 0)
-        self.add_buttons("Cancel", 0, "Save", 1)
+        cancel = self.add_button("Cancel", 0)
+        self.save = save = self.add_button("Save", 1)
+        save.get_style_context().add_class('raised')        
+        save.set_sensitive(False)
         self.connect("response", self.on_response)
         table1.set_border_width (5)
         
-        hour = Gtk.Label ("Hour")
+        hour = Gtk.Label ("Hours")
         hour.set_alignment(1.0, 0.5)
         minute = Gtk.Label ("Minutes")
         minute.set_alignment(1.0, 0.5)
 
         houradjust = Gtk.Adjustment(0, 0, 24, 1, 1, 0)
         self.hourselect = hourselect = Gtk.SpinButton()
+        hourselect.connect('value-changed', self._on_hours_changed)
         hourselect.set_adjustment(houradjust)        
         hourbox = Gtk.Box(True, 0)
         hourbox.pack_start (hourselect, True, True, 0)
         
         minuteadjust = Gtk.Adjustment(0, 0, 60, 1, 1, 0)
         self.minuteselect = minuteselect = Gtk.SpinButton()
+        minuteselect.connect('value-changed', self._on_minutes_changed)
         minuteselect.set_adjustment(minuteadjust)
         minutebox = Gtk.Box(True, 0)        
         minutebox.pack_start (minuteselect, True, True, 0)
@@ -423,48 +444,69 @@ class NewAlarmDialog (Gtk.Dialog):
             self.destroy ()
         else:
             pass
-
-    def on_d1_clicked(self, btn):
+            
+    def _on_hours_changed(self, btn):
+        self.check_save_button_status()
+        
+    def _on_minutes_changed(self, btn):
+        self.check_save_button_status()
+        
+    def check_save_button_status(self):
+        if self.hourselect.get_value_as_int() != 0 or self.minuteselect.get_value_as_int() != 0:          
+            if len(self.repeat_days) != 0:              
+                self.save.set_sensitive(True)
+            else:
+                self.save.set_sensitive(False)
+        else:
+            self.save.set_sensitive(False)
+    def on_d1_clicked(self, btn):        
         if btn.get_active() == True:
             self.repeat_days.append('SU')
         if btn.get_active() == False:
             self.repeat_days.remove('SU')
+        self.check_save_button_status()
                   
     def on_d2_clicked(self, btn):    
         if btn.get_active() == True:
             self.repeat_days.append('MO')
-        if btn.get_active() == False:
+        else:
             self.repeat_days.remove('MO')
+        self.check_save_button_status()
     
     def on_d3_clicked(self, btn):        
         if btn.get_active() == True:
             self.repeat_days.append('TU')
-        if btn.get_active() == False:
+        else:
             self.repeat_days.remove('TU')
+        self.check_save_button_status()
     
     def on_d4_clicked(self, btn):
         if btn.get_active() == True:
             self.repeat_days.append('WE')
-        if btn.get_active() == False:
+        else:
             self.repeat_days.remove('WE')
+        self.check_save_button_status()
     
     def on_d5_clicked(self, btn):        
         if btn.get_active() == True:
             self.repeat_days.append('TH')
-        if btn.get_active() == False:
+        else:
             self.repeat_days.remove('TH')
+        self.check_save_button_status()
     
     def on_d6_clicked(self, btn):        
         if btn.get_active() == True:
             self.repeat_days.append('FR')
-        if btn.get_active() == False:
+        else:
             self.repeat_days.remove('FR')
+        self.check_save_button_status()
     
     def on_d7_clicked(self, btn):        
         if btn.get_active() == True:
             self.repeat_days.append('SA')
-        if btn.get_active() == False:
+        else:
             self.repeat_days.remove('SA')
+        self.check_save_button_status()
 
 """
 if text.startswith("0"):



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