hamster-applet r423 - trunk/hamster



Author: tbaugis
Date: Thu Aug 21 09:23:12 2008
New Revision: 423
URL: http://svn.gnome.org/viewvc/hamster-applet?rev=423&view=rev

Log:
be aware of locale's first_weekday setting to start week either on monday or sunday.
fixes bug 548102

Modified:
   trunk/hamster/stats.py

Modified: trunk/hamster/stats.py
==============================================================================
--- trunk/hamster/stats.py	(original)
+++ trunk/hamster/stats.py	Thu Aug 21 09:23:12 2008
@@ -89,8 +89,17 @@
         place.add(eventBox)
         
         self.view_date = dt.date.today()
+        
+        # look if we need to start on sunday or monday, don't work with other
+        # (strange cases) locale first_weekday 1 is sunday
+        self.week_start_sunday = self.locale_first_weekday() == 1
+            
         self.start_date = self.view_date - dt.timedelta(self.view_date.weekday()) #set to monday
-        self.end_date = self.start_date + dt.timedelta(6) #set to monday
+
+        if self.week_start_sunday:
+            self.start_date = self.start_date - dt.timedelta(1)
+        
+        self.end_date = self.start_date + dt.timedelta(6)
 
         
         self.day_view = self.get_widget("day")
@@ -114,6 +123,22 @@
         self.fact_tree.grab_focus()
         self.do_graph()
 
+    def locale_first_weekday(self):
+        """figure if week starts on monday or sunday"""
+        import os
+        first_weekday = 2 #by default settle on monday
+
+        try:
+            process = os.popen("locale first_weekday")
+            first_weekday = int(process.read().strip("\n"))
+            process.close()
+            print '*' * 20, first_weekday
+        except:
+            print "WARNING - Failed to get first weekday from locale"
+            pass
+            
+        return first_weekday
+        
     def parent_painter(self, column, cell, model, iter):
         cell_text = model.get_value(iter, 1)
         if model.iter_parent(iter) == None:
@@ -309,12 +334,14 @@
         
         elif self.week_view.get_active():
             self.start_date = self.view_date - dt.timedelta(self.view_date.weekday()) #set to monday
+            if self.week_start_sunday:
+                self.start_date = self.start_date - dt.timedelta(1)
             self.end_date = self.start_date + dt.timedelta(6)
         
         elif self.month_view.get_active():
             self.start_date = self.view_date - dt.timedelta(self.view_date.day - 1) #set to beginning of month
             first_weekday, days_in_month = calendar.monthrange(self.view_date.year, self.view_date.month)
-            self.end_date = self.start_date + dt.timedelta(days_in_month - 1) #set to monday
+            self.end_date = self.start_date + dt.timedelta(days_in_month - 1)
         
         self.do_graph()
         
@@ -325,6 +352,9 @@
 
     def on_week_toggled(self, button):
         self.start_date = self.view_date - dt.timedelta(self.view_date.weekday()) #set to monday
+        if self.week_start_sunday:
+            self.start_date = self.start_date - dt.timedelta(1)
+
         self.end_date = self.start_date + dt.timedelta(6)
         self.do_graph()
 
@@ -332,7 +362,7 @@
     def on_month_toggled(self, button):
         self.start_date = self.view_date - dt.timedelta(self.view_date.day - 1) #set to beginning of month
         first_weekday, days_in_month = calendar.monthrange(self.view_date.year, self.view_date.month)
-        self.end_date = self.start_date + dt.timedelta(days_in_month - 1) #set to monday
+        self.end_date = self.start_date + dt.timedelta(days_in_month - 1)
 
         self.do_graph()
         



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