[hamster-applet] Restrict actions when activity is in progress. Fixes bug 583584



commit 231e005435d893a0e7696a864cf07e7c4c562de8
Author: Andreas Köhler <andi5 py gmx net>
Date:   Sun May 24 02:10:27 2009 +0100

    Restrict actions when activity is in progress. Fixes bug 583584
---
 data/edit_activity.ui    |    2 +-
 hamster/edit_activity.py |   32 ++++++++++++++++++++++++--------
 2 files changed, 25 insertions(+), 9 deletions(-)

diff --git a/data/edit_activity.ui b/data/edit_activity.ui
index 654989c..24bc99d 100644
--- a/data/edit_activity.ui
+++ b/data/edit_activity.ui
@@ -107,7 +107,7 @@
                   </packing>
                 </child>
                 <child>
-                  <object class="GtkLabel" id="label3">
+                  <object class="GtkLabel" id="end_label">
                     <property name="visible">True</property>
                     <property name="label" translatable="yes">to</property>
                   </object>
diff --git a/hamster/edit_activity.py b/hamster/edit_activity.py
index 0558636..04311dd 100644
--- a/hamster/edit_activity.py
+++ b/hamster/edit_activity.py
@@ -56,7 +56,8 @@ class Dayline(graphics.Area):
         self.move_type = ""
         self.on_time_changed = None #override this with your func to get notified when user changes date
         self.on_more_data = None #supplement with more data func that accepts single date
-        
+        self.in_progress = False
+
         self.range_start = None
         self.in_motion = False
         self.days = []
@@ -70,7 +71,10 @@ class Dayline(graphics.Area):
 
         if event.state & gtk.gdk.BUTTON1_MASK:
             self.call_parent_time_changed()
-    
+
+    def set_in_progress(self, in_progress):
+        self.in_progress = in_progress
+
     def call_parent_time_changed(self):
         #now calculate back from pixels into minutes
         start_time = self.get_value_at_pos(x = self.highlight_start)
@@ -130,14 +134,20 @@ class Dayline(graphics.Area):
         #print x, self.highlight_start, self.highlight_end
         if self.highlight_start != None:
             start_drag = 10 > (self.highlight_start - x) > -1
+
             end_drag = 10 > (x - self.highlight_end) > -1
 
             if start_drag and end_drag:
                 start_drag = abs(x - self.highlight_start) < abs(x - self.highlight_end)
 
             in_between = self.highlight_start <= x <= self.highlight_end
-                
-            
+            scale = True
+
+            if self.in_progress:
+                end_drag = False
+                in_between = False
+                scale = False
+
             if mouse_down and not self.drag_start:
                 self.drag_start = x
                 if start_drag:
@@ -147,7 +157,7 @@ class Dayline(graphics.Area):
                 elif in_between:
                     self.move_type = "move"
                     self.drag_start = x - self.highlight_start
-                else:
+                elif scale:
                     self.move_type = "scale_drag"
                     self.drag_start_time = self.range_start.value
 
@@ -334,8 +344,10 @@ class CustomFactController:
             buf.set_text(fact["description"] or "")
             self.get_widget('description').set_buffer(buf)
 
-            if not end_date and fact["start_time"].date() == dt.date.today():
-                end_date = dt.datetime.now()
+            if not end_date:
+                self.get_widget("in_progress").set_active(True)
+                if (dt.datetime.now() - start_date).days == 0:
+                    end_date = dt.datetime.now()
 
             self.get_widget("save_button").set_label("gtk-save")
             self.window.set_title(_("Update activity"))
@@ -562,8 +574,12 @@ class CustomFactController:
         return False
         
     def on_in_progress_toggled(self, check):
-        self.end_time.set_sensitive(not check.get_active())
+        sensitive = not check.get_active()
+        self.end_time.set_sensitive(sensitive)
+        self.get_widget("end_label").set_sensitive(sensitive)
+        self.get_widget("end_date_label").set_sensitive(sensitive)
         self.validate_fields()
+        self.dayline.set_in_progress(not sensitive)
 
     def on_cancel_clicked(self, button):
         self.close_window()



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