GTG

Merge lp:~mendymeng-1206/gtg/mendy into lp:~gtg/gtg/old-trunk

Proposed by Meng Meng
Status: Rejected
Rejected by: Izidor Matušov
Proposed branch: lp:~mendymeng-1206/gtg/mendy
Merge into: lp:~gtg/gtg/old-trunk
Diff against target: 369 lines (+92/-87)
10 files modified
GTG/__init__.py (+1/-0)
GTG/core/__init__.py (+1/-0)
GTG/gtk/browser/browser.py (+1/-1)
GTG/gtk/editor/editor.py (+40/-10)
GTG/gtk/manager.py (+2/-1)
GTG/gtk/preferences.glade (+22/-0)
GTG/gtk/preferences.py (+17/-2)
GTG/tools/dates.py (+7/-1)
gtg (+0/-72)
test/data/bryce/xdg/config/gtg/gtg.conf (+1/-0)
To merge this branch: bzr merge lp:~mendymeng-1206/gtg/mendy
Reviewer Review Type Date Requested Status
Izidor Matušov code review Needs Resubmitting
Luca Invernizzi Pending
Review via email: mp+80224@code.launchpad.net

Commit message

This commit fixed the due date can be chosen before start date bug. Partially finished the custom date format setting feature.

Description of the change

Date format preference implemented. But currently only AU date format supported.
More related work need to be done in the future.

Due date cannot be set before start date. otherwise it will be set to the same date as the start date and the background of due date textbox will turn to green color to inform user the change.

To post a comment you must log in.
Revision history for this message
Izidor Matušov (izidor) wrote :

I don't think we need date format preference in GTG. That information is already in the system as locale setting.

Adding preferences for all languages is really laborious work - somebody else has done it already as locales system. Please, rewrite your patch using the locale.

Few tips:
 - use %x to get dateformat as it is with locales
 - See this question if you have problems: http://stackoverflow.com/questions/3438120/python-date-formatted-with-x-locale-is-not-as-expected

Please resubmit the rewritten patch.

review: Needs Resubmitting (code review)

Unmerged revisions

1016. By Meng Meng

AU dateformat implemented

1015. By Meng Meng

try

1014. By Meng Meng

date format change not finished

1013. By Meng Meng

set red color to the text box if due date is before start date

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'GTG/__init__.py'
2--- GTG/__init__.py 2011-09-25 15:25:40 +0000
3+++ GTG/__init__.py 2011-10-24 14:14:27 +0000
4@@ -1,5 +1,6 @@
5 # -*- coding: utf-8 -*-
6 # -----------------------------------------------------------------------------
7+# -----------------------------------------------------------------------------
8 # Gettings Things Gnome! - a personal organizer for the GNOME desktop
9 # Copyright (c) 2008-2009 - Lionel Dricot & Bertrand Rousseau
10 #
11
12=== modified file 'GTG/core/__init__.py'
13--- GTG/core/__init__.py 2011-09-25 15:21:46 +0000
14+++ GTG/core/__init__.py 2011-10-24 14:14:27 +0000
15@@ -53,6 +53,7 @@
16 'browser': {
17 'bg_color_enable' : False,
18 "contents_preview_enable" : False,
19+ "AU_date_format_enable" : False,
20 'tag_pane' : False,
21 "sidebar_width": 120,
22 "closed_task_pane" : False,
23
24=== modified file 'GTG/gtk/browser/browser.py'
25--- GTG/gtk/browser/browser.py 2011-10-08 22:28:53 +0000
26+++ GTG/gtk/browser/browser.py 2011-10-24 14:14:27 +0000
27@@ -1001,7 +1001,7 @@
28 def on_edit_active_task(self, widget, row=None, col=None):
29 tid = self.get_selected_task()
30 if tid:
31- self.vmanager.open_task(tid)
32+ self.vmanager.open_task(tid,config_priv = self.config) #TODO: self.config
33
34 def on_edit_done_task(self, widget, row=None, col=None):
35 tid = self.get_selected_task('closed')
36
37=== modified file 'GTG/gtk/editor/editor.py'
38--- GTG/gtk/editor/editor.py 2010-09-15 05:02:01 +0000
39+++ GTG/gtk/editor/editor.py 2011-10-24 14:14:27 +0000
40@@ -48,6 +48,7 @@
41 requester,
42 vmanager,
43 task,
44+ globconfig,
45 taskconfig = None,
46 thisisnew = False,
47 clipboard = None) :
48@@ -60,6 +61,7 @@
49 self.req = requester
50 self.vmanager = vmanager
51 self.config = taskconfig
52+ self.globconfig = globconfig
53 self.time = None
54 self.clipboard = clipboard
55 self.builder = gtk.Builder()
56@@ -278,16 +280,25 @@
57
58 #refreshing the due date field
59 duedate = self.task.get_due_date()
60- prevdate = dates.strtodate(self.duedate_widget.get_text())
61- if duedate != prevdate or type(duedate) is not type(prevdate):
62+ #prevdate = dates.strtodate(self.duedate_widget.get_text())
63+ #the changes made below is not good , just show we can set different date format
64+ #if duedate != prevdate or type(duedate) is not type(prevdate):
65+ # zedate = str(duedate).replace("-", date_separator)
66+ # self.duedate_widget.set_text(zedate)
67+ if self.globconfig.get("AU_date_format_enable"):
68+ self.duedate_widget.set_text(duedate.to_py_date().strftime('%d/%h/%Y'))
69+ else:
70 zedate = str(duedate).replace("-", date_separator)
71 self.duedate_widget.set_text(zedate)
72 # refreshing the closed date field
73 closeddate = self.task.get_closed_date()
74- prevcldate = dates.strtodate(self.closeddate_widget.get_text())
75- if closeddate != prevcldate or type(closeddate) is not type(prevcldate):
76- zecldate = str(closeddate).replace("-", date_separator)
77- self.closeddate_widget.set_text(zecldate)
78+ #prevcldate = dates.strtodate(self.closeddate_widget.get_text())
79+ #if closeddate != prevcldate or type(closeddate) is not type(prevcldate):
80+ if self.globconfig.get("AU_date_format_enable"):
81+ self.closeddate_widget.set_text(closeddate.to_py_date().strftime('%d/%h/%Y'))
82+ else:
83+ zedate = str(closeddate).replace("-", date_separator)
84+ self.closeddate_widget.set_text(zedate)
85 #refreshing the day left label
86 #If the task is marked as done, we display the delay between the
87 #due date and the actual closing date. If the task isn't marked
88@@ -319,10 +330,14 @@
89 self.dayleft_label.set_markup("<span color='"+color+"'>"+txt+"</span>")
90
91 startdate = self.task.get_start_date()
92- prevdate = dates.strtodate(self.startdate_widget.get_text())
93- if startdate != prevdate or type(startdate) is not type(prevdate):
94+ #prevdate = dates.strtodate(self.startdate_widget.get_text())
95+ #if startdate != prevdate or type(startdate) is not type(prevdate):
96+ if self.globconfig.get("AU_date_format_enable"):
97+ self.startdate_widget.set_text(startdate.to_py_date().strftime('%d/%h/%Y'))
98+ else:
99 zedate = str(startdate).replace("-",date_separator)
100 self.startdate_widget.set_text(zedate)
101+
102 #Refreshing the tag list in the insert tag button
103 taglist = self.req.get_used_tags()
104 menu = gtk.Menu()
105@@ -345,13 +360,17 @@
106 self.light_save()
107
108 def date_changed(self,widget,data):
109+ """we need to do some thing here , as the date text format has been changed"""
110 text = widget.get_text()
111 validdate = False
112 if not text :
113 validdate = True
114 datetoset = dates.no_date
115 else :
116- datetoset = dates.strtodate(text)
117+ if self.globconfig.get("AU_date_format_enable"):
118+ datetoset = dates.strtodate(text, "AU")
119+ else :
120+ datetoset = dates.strtodate(text)
121 if datetoset :
122 validdate = True
123
124@@ -371,7 +390,18 @@
125 start_date = self.task.get_start_date()
126 due_date = self.task.get_due_date()
127 if start_date and (start_date > due_date):
128- self.task.set_due_date(self.task.get_start_date())
129+ self.task.set_due_date(self.task.get_start_date())
130+ # there may be problem here, as the view is different with model
131+ # so set the text.
132+ startdate = self.task.get_start_date()
133+ if self.globconfig.get("AU_date_format_enable"):
134+ self.duedate_widget.set_text(startdate.to_py_date().strftime('%d/%h/%Y'))
135+ else:
136+ zedate = str(startdate).replace("-",date_separator)
137+ self.duedate_widget.set_text(zedate)
138+ # in this case, set color to green to inform user that the due date is reseted to the same with start date
139+ self.duedate_widget.modify_text(gtk.STATE_NORMAL, gtk.gdk.color_parse("#000"))
140+ self.duedate_widget.modify_base(gtk.STATE_NORMAL, gtk.gdk.color_parse("#8F8"))
141 else :
142 #We should write in red in the entry if the date is not valid
143 widget.modify_text(gtk.STATE_NORMAL, gtk.gdk.color_parse("#F00"))
144
145=== modified file 'GTG/gtk/manager.py'
146--- GTG/gtk/manager.py 2011-08-16 16:20:15 +0000
147+++ GTG/gtk/manager.py 2011-10-24 14:14:27 +0000
148@@ -147,7 +147,7 @@
149 '''
150 return self.opened_task
151
152- def open_task(self, uid,thisisnew = False):
153+ def open_task(self, uid,thisisnew = False, config_priv = None):
154 """Open the task identified by 'uid'.
155
156 If a Task editor is already opened for a given task, we present it.
157@@ -163,6 +163,7 @@
158 requester = self.req, \
159 vmanager = self, \
160 task = t, \
161+ globconfig = config_priv, \
162 taskconfig = self.task_config, \
163 thisisnew = thisisnew,\
164 clipboard = self.clipboard)
165
166=== modified file 'GTG/gtk/preferences.glade'
167--- GTG/gtk/preferences.glade 2010-07-29 10:36:24 +0000
168+++ GTG/gtk/preferences.glade 2011-10-24 14:14:27 +0000
169@@ -113,6 +113,28 @@
170 <property name="position">0</property>
171 </packing>
172 </child>
173+
174+
175+
176+ <child>
177+ <object class="GtkCheckButton" id="pref_date_format">
178+ <property name="label" translatable="yes">Use Australia date format "dd/mm/yy".</property>
179+ <property name="visible">True</property>
180+ <property name="can_focus">True</property>
181+ <property name="receives_default">False</property>
182+ <property name="draw_indicator">True</property>
183+ <signal name="toggled" handler="on_pref_date_format_toggled"/>
184+ </object>
185+ <packing>
186+ <property name="expand">False</property>
187+ <property name="padding">3</property>
188+ <property name="position">0</property>
189+ </packing>
190+ </child>
191+
192+
193+
194+
195 <child>
196 <object class="GtkHBox" id="prefs-hbox1">
197 <property name="no_show_all">True</property>
198
199=== modified file 'GTG/gtk/preferences.py'
200--- GTG/gtk/preferences.py 2011-08-07 09:32:44 +0000
201+++ GTG/gtk/preferences.py 2011-10-24 14:14:27 +0000
202@@ -118,7 +118,8 @@
203 'plugin_depends': 'PluginDepends',
204 'plugin_config_dialog': 'PluginConfigDialog',
205 'pref_autostart': 'pref_autostart',
206- 'pref_show_preview': 'pref_show_preview'
207+ 'pref_show_preview': 'pref_show_preview',
208+ 'pref_date_format': 'pref_date_format'
209 }
210 for attr, widget in widgets.iteritems():
211 setattr(self, attr, self.builder.get_object(widget))
212@@ -176,6 +177,13 @@
213 else:
214 toset = 0
215 self.pref_show_preview.set_active(toset)
216+
217+ if self.config_priv.get("AU_date_format_enable"):
218+ toset = 1
219+ else:
220+ toset = 0
221+ self.pref_date_format.set_active(toset)
222+
223
224
225 def _init_plugin_tree(self):
226@@ -233,6 +241,8 @@
227 # preferences on the Tasks tab
228 'on_pref_show_preview_toggled':
229 self.toggle_preview,
230+ 'on_pref_date_format_toggled':
231+ self.toggle_date_format,
232 'on_pref_check_spelling_toggled':
233 self.toggle_spellcheck,
234 # buttons on the Plugins tab
235@@ -350,7 +360,12 @@
236 self.config_priv.set("contents_preview_enable",widget.get_active())
237 view = self.req.get_tasks_tree(refresh=False)
238 view.refresh_all()
239-
240+
241+ def toggle_date_format(self, widget):
242+ """use AU date format or not."""
243+ self.config_priv.set("AU_date_format_enable",widget.get_active())
244+ view = self.req.get_tasks_tree(refresh=False)
245+ view.refresh_all()
246
247 def toggle_spellcheck(self, widget):
248 """Toggle spell checking on or off."""
249
250=== modified file 'GTG/tools/dates.py'
251--- GTG/tools/dates.py 2011-09-25 12:57:54 +0000
252+++ GTG/tools/dates.py 2011-10-24 14:14:27 +0000
253@@ -20,6 +20,7 @@
254 from datetime import date, timedelta
255 import locale
256 import calendar
257+import time
258 from GTG import _, ngettext
259
260 #setting the locale of gtg to the system locale
261@@ -133,7 +134,7 @@
262 #function to convert a string of the form YYYY-MM-DD
263 #to a date
264 #If the date is not correct, the function returns None
265-def strtodate(stri) :
266+def strtodate(stri, dateformat="") :
267 if stri == _("now") or stri == "now":
268 return NOW
269 elif stri == _("soon") or stri == "soon":
270@@ -153,6 +154,11 @@
271 y = zedate[0]
272 m = zedate[1]
273 d = zedate[2]
274+ if dateformat == "AU": # Australia date format dd/mm/yy
275+ t = time.strptime(stri, '%d/%b/%Y')
276+ y = str(t.tm_year)
277+ m = str(t.tm_mon)
278+ d = str(t.tm_mday)
279 if y.isdigit() and m.isdigit() and d.isdigit() :
280 yy = int(y)
281 mm = int(m)
282
283=== removed file 'gtg'
284--- gtg 2010-09-08 09:50:32 +0000
285+++ gtg 1970-01-01 00:00:00 +0000
286@@ -1,72 +0,0 @@
287-#!/usr/bin/env python
288-# -*- coding:utf-8 -*-
289-
290-# -----------------------------------------------------------------------------
291-# Getting Things Gnome! - A personal organizer for the GNOME desktop
292-# Copyright (c) 2008,2009,2010 Lionel Dricot & Bertrand Rousseau
293-#
294-# This program is free software: you can redistribute it and/or modify it under
295-# the terms of the GNU General Public License as published by the Free Software
296-# Foundation, either version 3 of the License, or (at your option) any later
297-# version.
298-#
299-# This program is distributed in the hope that it will be useful, but WITHOUT
300-# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
301-# FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
302-# details.
303-#
304-# You should have received a copy of the GNU General Public License along with
305-# this program. If not, see <http://www.gnu.org/licenses/>.
306-# -----------------------------------------------------------------------------
307-
308-"""
309-Getting Things Gnome! - A personal organizer for the GNOME desktop
310-==================================================================
311-
312-:copyright: 2008,2009,2010 Lionel Dricot & Bertrand Rousseau
313-:license: GNU General Public License, version 3 or later
314-"""
315-
316-import sys
317-from optparse import OptionParser
318-
319-
320-def X_is_running():
321- from gtk.gdk import Screen
322- try:
323- if Screen().get_display():
324- return True
325- except RuntimeError:
326- pass
327- return False
328-
329-
330-try:
331- parser = OptionParser()
332- parser.add_option('-b', '--boot-test', action='store_true', dest='boot_test',
333- help="Exit immediately after completing boot-up actions", default=False)
334- parser.add_option('-c', '--no-crash-handler', action='store_true', dest='no_crash_handler',
335- help="Disable the automatic crash handler", default=False)
336- parser.add_option('-d', '--debug', action='store_true', dest='debug',
337- help="Enable debug output", default=False)
338- parser.add_option('-v', '--version', action='store_true', dest='version_and_exit',
339- help="Print GTG's version number", default=False)
340- (options, args) = parser.parse_args()
341-
342- if options.version_and_exit:
343- from GTG import info
344- print "gtg (Getting Things Gnome!) %s" %(info.VERSION)
345- print
346- print "For more information: %s" %(info.URL)
347- sys.exit(0)
348-
349- elif not X_is_running():
350- print "Could not open X display"
351- sys.exit(1)
352-
353- else:
354- import GTG.gtg
355- sys.exit(GTG.gtg.main(options, args))
356-
357-except KeyboardInterrupt:
358- sys.exit(1)
359
360=== modified file 'test/data/bryce/xdg/config/gtg/gtg.conf'
361--- test/data/bryce/xdg/config/gtg/gtg.conf 2010-06-16 07:54:55 +0000
362+++ test/data/bryce/xdg/config/gtg/gtg.conf 2011-10-24 14:14:27 +0000
363@@ -1,5 +1,6 @@
364 [browser]
365 contents_preview_enable = True
366+AU_date_format_enable = True
367 x_pos = 562
368 collapsed_tags = ,
369 tag_pane_width = 250

Subscribers

People subscribed via source and target branches

to status/vote changes: