[hamster-applet] on parsing failure revert to previous valid time
- From: Toms Baugis <tbaugis src gnome org>
- To: svn-commits-list gnome org
- Cc:
- Subject: [hamster-applet] on parsing failure revert to previous valid time
- Date: Tue, 11 Aug 2009 10:38:57 +0000 (UTC)
commit 93123240324bf52a6bc1acc15cc544ee7416330e
Author: Toms Bauģis <toms baugis gmail com>
Date: Tue Aug 11 13:38:47 2009 +0300
on parsing failure revert to previous valid time
hamster/widgets.py | 53 ++++++++++++++++++++++++++++++++++++++++++---------
1 files changed, 43 insertions(+), 10 deletions(-)
---
diff --git a/hamster/widgets.py b/hamster/widgets.py
index ec738a0..af3611a 100644
--- a/hamster/widgets.py
+++ b/hamster/widgets.py
@@ -17,7 +17,7 @@
# You should have received a copy of the GNU General Public License
# along with Project Hamster. If not, see <http://www.gnu.org/licenses/>.
-from stuff import format_duration, figure_time
+from stuff import format_duration
import gtk
import datetime as dt
import calendar
@@ -35,6 +35,7 @@ class DateInput(gtk.Entry):
gtk.Entry.__init__(self)
self.set_width_chars(12) #12 is enough for 12-oct-2009, which is verbose
+ self.date = date
if date:
self.set_date(date)
@@ -61,17 +62,20 @@ class DateInput(gtk.Entry):
def set_date(self, date):
"""sets date to specified, using default format"""
- self.set_text(self._format_date(date))
+ self.date = date
+ self.set_text(self._format_date(self.date))
def get_date(self):
"""sets date to specified, using default format"""
- return self._figure_date(self.get_text())
+ self.date = self._figure_date(self.get_text())
+ self.set_text(self._format_date(self.date))
+ return self.date
def _figure_date(self, date_str):
try:
return dt.datetime.strptime(date_str, "%x")
except:
- return None
+ return self.date
def _format_date(self, date):
if not date:
@@ -101,9 +105,8 @@ class DateInput(gtk.Entry):
cal_date = calendar.get_date()
- date = dt.date(cal_date[0], cal_date[1] + 1, cal_date[2])
-
- self.set_text(self._format_date(date))
+ self.date = dt.date(cal_date[0], cal_date[1] + 1, cal_date[2])
+ self.set_text(self._format_date(self.date))
self.popup.hide()
if self.news:
@@ -182,6 +185,7 @@ class TimeInput(gtk.Entry):
self.news = False
self.set_width_chars(7) #7 is like 11:24pm
+ self.time = time
if time:
self.set_time(time)
@@ -219,14 +223,41 @@ class TimeInput(gtk.Entry):
self.start_time = start_time
def set_time(self, time):
+ self.time = time
self.set_text(self._format_time(time))
def _on_text_changed(self, widget):
self.news = True
+ def figure_time(self, str_time):
+ if not str_time:
+ return self.time
+
+ # strip everything non-numeric and consider hours to be first number
+ # and minutes - second number
+ numbers = re.split("\D", str_time)
+ numbers = filter(lambda x: x!="", numbers)
+
+ hours, minutes = None, None
+
+ if len(numbers) == 1 and len(numbers[0]) == 4:
+ hours, minutes = int(numbers[0][:2]), int(numbers[0][2:])
+ else:
+ if len(numbers) >= 1:
+ hours = int(numbers[0])
+ if len(numbers) >= 2:
+ minutes = int(numbers[1])
+
+ if (hours is None or minutes is None) or hours > 24 or minutes > 60:
+ return self.time #no can do
+
+ return dt.datetime.now().replace(hour = hours, minute = minutes,
+ second = 0, microsecond = 0)
+
+
def _select_time(self, time_text):
#convert forth and back so we have text formated as we want
- time = figure_time(time_text)
+ time = self.figure_time(time_text)
time_text = self._format_time(time)
self.set_text(time_text)
@@ -237,7 +268,9 @@ class TimeInput(gtk.Entry):
self.news = False
def get_time(self):
- return figure_time(self.get_text())
+ self.time = self.figure_time(self.get_text())
+ self.set_text(self._format_time(self.time))
+ return self.time
def _format_time(self, time):
if time is None:
@@ -258,7 +291,7 @@ class TimeInput(gtk.Entry):
def show_popup(self):
- focus_time = figure_time(self.get_text())
+ focus_time = self.figure_time(self.get_text())
hours = gtk.ListStore(gobject.TYPE_STRING)
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]