You can subscribe to this list here.
2002 |
Jan
|
Feb
|
Mar
|
Apr
|
May
(10) |
Jun
(50) |
Jul
(27) |
Aug
(53) |
Sep
(75) |
Oct
(42) |
Nov
(43) |
Dec
(23) |
---|---|---|---|---|---|---|---|---|---|---|---|---|
2003 |
Jan
(7) |
Feb
(6) |
Mar
(24) |
Apr
(10) |
May
(12) |
Jun
(1) |
Jul
|
Aug
|
Sep
(7) |
Oct
(5) |
Nov
(7) |
Dec
(13) |
2004 |
Jan
(1) |
Feb
(2) |
Mar
(2) |
Apr
(2) |
May
(1) |
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
2005 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
(1) |
Sep
|
Oct
|
Nov
|
Dec
|
2006 |
Jan
(1) |
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
(3) |
Nov
(1) |
Dec
(3) |
2007 |
Jan
(1) |
Feb
|
Mar
|
Apr
(12) |
May
|
Jun
|
Jul
(2) |
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
2008 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
(1) |
Aug
(1) |
Sep
(7) |
Oct
(11) |
Nov
(20) |
Dec
(34) |
2009 |
Jan
(11) |
Feb
(13) |
Mar
(11) |
Apr
(21) |
May
(36) |
Jun
(22) |
Jul
(30) |
Aug
(9) |
Sep
(1) |
Oct
|
Nov
|
Dec
(9) |
2010 |
Jan
(9) |
Feb
(4) |
Mar
(4) |
Apr
(1) |
May
|
Jun
(2) |
Jul
(1) |
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
From: <cl...@us...> - 2003-01-25 00:14:28
|
Update of /cvsroot/todo-manager/todo-manager In directory sc8-pr-cvs1:/tmp/cvs-serv7835 Modified Files: ChangeLog.txt Log Message: The calendar is much faster now. At least I think it should be. Index: ChangeLog.txt =================================================================== RCS file: /cvsroot/todo-manager/todo-manager/ChangeLog.txt,v retrieving revision 1.34 retrieving revision 1.35 diff -u -d -r1.34 -r1.35 --- ChangeLog.txt 18 Dec 2002 22:15:28 -0000 1.34 +++ ChangeLog.txt 25 Jan 2003 00:14:24 -0000 1.35 @@ -7,6 +7,7 @@ * Task groups and filtering by groups - Tasks can be put into multiple groups by separating each group with a comma (,). + * Major speed improvements on the calendar control version 0.66.1 (11/19/2002): * Years that are out of range will no longer cause a crash |
From: <cl...@us...> - 2003-01-25 00:09:17
|
Update of /cvsroot/todo-manager/todo-manager In directory sc8-pr-cvs1:/tmp/cvs-serv3781 Modified Files: tdm_calendar.py Log Message: I rewrote the calendar control. It now uses a canvas instead of a bunch of buttons in a frame, and drawing is a lot faster. Also, I did all of this in Windows so if there are any bugs blame it on Microsoft, not on my crappy programming. Index: tdm_calendar.py =================================================================== RCS file: /cvsroot/todo-manager/todo-manager/tdm_calendar.py,v retrieving revision 1.13 retrieving revision 1.14 diff -u -d -r1.13 -r1.14 --- tdm_calendar.py 16 Jan 2003 05:26:35 -0000 1.13 +++ tdm_calendar.py 25 Jan 2003 00:09:14 -0000 1.14 @@ -14,7 +14,7 @@ import time class Calendar(Frame): - def __init__(self,master,command=None,**kw): + def __init__(self, master, command=None, **kw): Frame.__init__(self, master) # To preserve some things @@ -25,7 +25,7 @@ else: self.__bgcolor = None self.__seldate = None # The date that is currently selected - self.__LeftClickDateCommand=command + self.__LeftClickDateCommand = command # Create the year and month selection buttons frame = Frame(self, bd=0) @@ -42,65 +42,57 @@ ThinButton(frame, text='>', command=lambda s=self: s.IncTime(0, 1)).pack(side=LEFT) frame.grid(row=0, column=1, sticky=E) - self._dateframe = Frame(self, kw) + self._calcanvas = Canvas(self, kw, height=165, width=205) # Create the day header days = range(7) - c = 1 + c = 15 for t in days: # Get the name of the day x = time.strftime('%a', (0, 0, 0, 0, 0, 0, t, 0, 0)) + self._calcanvas.create_text(c, 10, text=x, fill='blue') + c = c + 30 - Label(self._dateframe,text=x,fg='blue',bg=self.__bgcolor).grid(row=0,column=c) - c = c + 1 + self._calcanvas.create_line(0, 20, 210, 20) self.SetCurrentDate() - self._dateframe.grid(row=1, column=0, columnspan=2, sticky=NSEW) + self._calcanvas.grid(row=1, column=0, columnspan=2, sticky=NSEW) def Draw(self): self._yearLabel['text'] = self.year self._monthLabel['text'] = time.strftime("%B", (self.year, self.month, self.day, 0, 0, 0, 0, 0, 0)) - # Delete all of the old buttons - children = self._dateframe.winfo_children() - for i in range(len(children)): - if i>7: - children[i].destroy() + # Remove all of the current days + self._calcanvas.delete('tmp') # monthrange returns first day of month and month length - DayCount,DaysInMonth=monthrange(self.year,self.month) + DayCount, DaysInMonth = monthrange(self.year, self.month) # So the calendar starts on the right day of the week if firstweekday() == 0: DayCount =- (DayCount) else: - DayCount =- (DayCount+1) + DayCount =- (DayCount + 1) - for j in range(1,7): # Row loop - for i in range(1,8): # Column loop - DayCount=DayCount+1 + for j in range(7): # Row loop + for i in range(7): # Column loop + DayCount = DayCount + 1 if DayCount > 0 and DayCount <= DaysInMonth: fg = 'black' # The default color - bd = 0 # The width of the border around the button if (self.year, self.month, DayCount) == self.__seldate: fg = 'darkred' # The current day in red - bd = 1 - - Button(self._dateframe,text=str(DayCount),bd=bd,width=1,height=1,relief=SOLID, - fg=fg,bg=self.__bgcolor, - command= lambda s=self, p=DayCount: s.SelDate(s.year, s.month, p)).grid( - row=j, column=i, sticky=NSEW) - - else: - # Required to make sure there are the right number of rows - Label(self._dateframe,text='',bd=0,width=1,height=1,relief=FLAT, - bg=self.__bgcolor).grid(row=j,column=i) + # Black border around the selected date + self._calcanvas.create_rectangle((i*30)+5, (j*25)+20, (i*30)+25, (j*25)+40, + fill='white', outline='black', tags='tmp') - i=i+1 + self._calcanvas.create_text((i*30)+15, (j*25)+30, text=str(DayCount), fill=fg, + tags=('tmp', 'day'+`DayCount`)) + self._calcanvas.tag_bind('day'+`DayCount`, '<Button-1>', + lambda e, s=self, p=DayCount: s.SelDate(s.year, s.month, p)) # Sets the date that should be selected def SelDate(self, year, month, day): |
From: <cl...@us...> - 2003-01-21 03:38:08
|
Update of /cvsroot/todo-manager/todo-manager In directory sc8-pr-cvs1:/tmp/cvs-serv3273 Modified Files: main.py Log Message: Another exception for locale errors. Index: main.py =================================================================== RCS file: /cvsroot/todo-manager/todo-manager/main.py,v retrieving revision 1.66 retrieving revision 1.67 diff -u -d -r1.66 -r1.67 --- main.py 14 Jan 2003 04:48:44 -0000 1.66 +++ main.py 21 Jan 2003 03:38:05 -0000 1.67 @@ -16,7 +16,7 @@ if not os.environ.has_key('LANG') and lang: os.environ['LANG'] = lang -except ValueError: +except (locale.Error, ValueError): pass from __init__ import * |
From: <cl...@us...> - 2003-01-16 05:26:38
|
Update of /cvsroot/todo-manager/todo-manager In directory sc8-pr-cvs1:/tmp/cvs-serv1609 Modified Files: tdm_calendar.py Log Message: I'm not dead yet Index: tdm_calendar.py =================================================================== RCS file: /cvsroot/todo-manager/todo-manager/tdm_calendar.py,v retrieving revision 1.12 retrieving revision 1.13 diff -u -d -r1.12 -r1.13 --- tdm_calendar.py 31 Oct 2002 15:28:20 -0000 1.12 +++ tdm_calendar.py 16 Jan 2003 05:26:35 -0000 1.13 @@ -13,23 +13,6 @@ from controls import ThinButton import time -""" -Create a calendar in a frame for a given month. - -Initialising - 1. Initialise by calling Calendar(year,month,command) - 2. The initial displayed month is defined by the mounth and date. - 3. The command will be run when the user selects a day. - -Operation - 1. Any day can be selected with the mouse and the user inputed function will run. - 2. The calendar date can be advanced a given time in months and years by calling - IncTime(year,month). - 3. The calendar date can be changed to any month with function SetDate(year, month, day). - 4. The current calendar date can be obtained with function GetDate(). - The integers year and month will be returned. -""" - class Calendar(Frame): def __init__(self,master,command=None,**kw): Frame.__init__(self, master) |
From: <cl...@us...> - 2003-01-14 04:48:47
|
Update of /cvsroot/todo-manager/todo-manager In directory sc8-pr-cvs1:/tmp/cvs-serv18905 Modified Files: main.py Log Message: I just got a report that locale settings may not work on some Solaris boxes. This might fix it. Index: main.py =================================================================== RCS file: /cvsroot/todo-manager/todo-manager/main.py,v retrieving revision 1.65 retrieving revision 1.66 diff -u -d -r1.65 -r1.66 --- main.py 18 Dec 2002 21:29:17 -0000 1.65 +++ main.py 14 Jan 2003 04:48:44 -0000 1.66 @@ -10,11 +10,14 @@ import os, sys # Set the locale to the user's setting -locale.setlocale(locale.LC_ALL, '') -lang = locale.getdefaultlocale()[0] +try: + locale.setlocale(locale.LC_ALL, '') + lang = locale.getdefaultlocale()[0] -if not os.environ.has_key('LANG') and lang: - os.environ['LANG'] = lang + if not os.environ.has_key('LANG') and lang: + os.environ['LANG'] = lang +except ValueError: + pass from __init__ import * from ConfigParser import ConfigParser, NoSectionError |
From: <cl...@us...> - 2003-01-02 02:42:40
|
Update of /cvsroot/todo-manager/todo-manager In directory sc8-pr-cvs1:/tmp/cvs-serv2680 Modified Files: interface.py Log Message: One more string to translate Index: interface.py =================================================================== RCS file: /cvsroot/todo-manager/todo-manager/interface.py,v retrieving revision 1.38 retrieving revision 1.39 diff -u -d -r1.38 -r1.39 --- interface.py 20 Dec 2002 22:08:05 -0000 1.38 +++ interface.py 2 Jan 2003 02:42:37 -0000 1.39 @@ -898,7 +898,7 @@ if self.__view_group_list.get(): self._groupList.delete(0, END) - self._groupList.insert(0, 'ALL') + self._groupList.insert(0, _('ALL')) for g in self.__groups: self._groupList.insert(END, g) |
From: <cl...@us...> - 2002-12-28 09:17:25
|
Update of /cvsroot/todo-manager/todo-manager In directory sc8-pr-cvs1:/tmp/cvs-serv26563 Modified Files: README.txt Log Message: New features that have been added Index: README.txt =================================================================== RCS file: /cvsroot/todo-manager/todo-manager/README.txt,v retrieving revision 1.8 retrieving revision 1.9 diff -u -d -r1.8 -r1.9 --- README.txt 25 Sep 2002 15:54:22 -0000 1.8 +++ README.txt 28 Dec 2002 09:17:22 -0000 1.9 @@ -7,6 +7,7 @@ FEATURES ======== * User selectable task sorting + * Task groups * Task filters * Due dates * Task notes @@ -17,6 +18,7 @@ * Independent version and platform loading of task lists * Unlimited number of tasks * Flexible plugin architecture + * Gettext internationalization support INTRODUCTION |
From: <cl...@us...> - 2002-12-20 22:08:08
|
Update of /cvsroot/todo-manager/todo-manager In directory sc8-pr-cvs1:/tmp/cvs-serv22589 Modified Files: interface.py Log Message: This is good enough for now Index: interface.py =================================================================== RCS file: /cvsroot/todo-manager/todo-manager/interface.py,v retrieving revision 1.37 retrieving revision 1.38 diff -u -d -r1.37 -r1.38 --- interface.py 20 Dec 2002 04:12:37 -0000 1.37 +++ interface.py 20 Dec 2002 22:08:05 -0000 1.38 @@ -94,6 +94,8 @@ variable=self.__view_calendar) view.add_checkbutton(label=_("Show Group List"), accelerator="Ctrl+G", variable=self.__view_group_list) + view.add_separator() + view.add_command(label=_("Refresh Task List"), command=self.OnSortingMethod) # Sorting menu self._sorting_menu = sorting = Menu(menu, tearoff=FALSE) |
From: <cl...@us...> - 2002-12-20 04:12:41
|
Update of /cvsroot/todo-manager/todo-manager In directory sc8-pr-cvs1:/tmp/cvs-serv25066 Modified Files: interface.py Log Message: The sorting/filter settings will be re-applied after every task add/modification This could cause some drawing slowdowns Index: interface.py =================================================================== RCS file: /cvsroot/todo-manager/todo-manager/interface.py,v retrieving revision 1.36 retrieving revision 1.37 diff -u -d -r1.36 -r1.37 --- interface.py 16 Dec 2002 22:24:29 -0000 1.36 +++ interface.py 20 Dec 2002 04:12:37 -0000 1.37 @@ -484,6 +484,7 @@ app.set_task_value(name, "Notes", self._notesText.get('1.0', END).rstrip(), ui=self) app.set_task_value(name, "DisableFinish", self.__disable_finish.get(), ui=self) tasklist.end_draw_cache() + self.OnSortingMethod() # The core formats the due date, this keeps the entry field up to date self._dueDate.delete(0, END) @@ -541,6 +542,7 @@ self._app.set_task_value(name, "Finished", not finished, ui=self) self._finished['text'] = _((N_("Finished"), N_("Not Finished"))[not finished]) + self.OnSortingMethod() def OnClearFields(self, event=None): self._nameEntry.delete(0, END) @@ -571,6 +573,7 @@ name = self._taskList.get_column_text(cursel, 1) task = self._app.set_task_value(name, "Priority", index, ui=self) self.__priority_dropdown.withdraw() + self.OnSortingMethod() def OnTaskLeftClick(self, index): app = self._app |
From: <cl...@us...> - 2002-12-18 22:15:32
|
Update of /cvsroot/todo-manager/todo-manager In directory sc8-pr-cvs1:/tmp/cvs-serv20519 Modified Files: ChangeLog.txt Log Message: Tasks good. Fire bad. Tasks on fire means 's' burnt. I put the 's' right where it should be. Index: ChangeLog.txt =================================================================== RCS file: /cvsroot/todo-manager/todo-manager/ChangeLog.txt,v retrieving revision 1.33 retrieving revision 1.34 diff -u -d -r1.33 -r1.34 --- ChangeLog.txt 18 Dec 2002 21:29:16 -0000 1.33 +++ ChangeLog.txt 18 Dec 2002 22:15:28 -0000 1.34 @@ -5,7 +5,7 @@ * File->Export will preserve sorting and filters on the exported task list * Added French translation (thanks Florent Manens) * Task groups and filtering by groups - - Task can be put into multiple groups by separating each group with a + - Tasks can be put into multiple groups by separating each group with a comma (,). version 0.66.1 (11/19/2002): |
From: <cl...@us...> - 2002-12-18 21:29:20
|
Update of /cvsroot/todo-manager/todo-manager In directory sc8-pr-cvs1:/tmp/cvs-serv2640 Modified Files: ChangeLog.txt main.py plugin.py Log Message: Tasks can now be put into multiple groups by separating each group with a comma Index: ChangeLog.txt =================================================================== RCS file: /cvsroot/todo-manager/todo-manager/ChangeLog.txt,v retrieving revision 1.32 retrieving revision 1.33 diff -u -d -r1.32 -r1.33 --- ChangeLog.txt 16 Dec 2002 22:26:09 -0000 1.32 +++ ChangeLog.txt 18 Dec 2002 21:29:16 -0000 1.33 @@ -5,6 +5,8 @@ * File->Export will preserve sorting and filters on the exported task list * Added French translation (thanks Florent Manens) * Task groups and filtering by groups + - Task can be put into multiple groups by separating each group with a + comma (,). version 0.66.1 (11/19/2002): * Years that are out of range will no longer cause a crash Index: main.py =================================================================== RCS file: /cvsroot/todo-manager/todo-manager/main.py,v retrieving revision 1.64 retrieving revision 1.65 diff -u -d -r1.64 -r1.65 --- main.py 17 Dec 2002 02:00:14 -0000 1.64 +++ main.py 18 Dec 2002 21:29:17 -0000 1.65 @@ -126,7 +126,7 @@ "FinishedDate": "", "DueDate": "", "Priority": 1, - "Group": "", + "Group": [], } return task @@ -193,8 +193,25 @@ self.interface_call(ui, "display_error", _("Invalid Format"), _("The due date "\ "is not in the correct format.\nThe format is %s") %self.fmttime(curtime())) return FALSE - elif key == "Group" and (value == "ALL" or value == "None"): - value = "" + elif key == "Group": + if value: + # Split multiple groups into a list + x = value.split(',') + + # Eliminate unwanted white space + # Tasks can't be in the group 'ALL', this is a global group + for i in range(len(x)): + x[i] = x[i].strip() + + # Remove invalid groups + if 'ALL' in x: x.remove('ALL') + if '' in x: x.remove('') + + x.sort() + value = x + + else: + value = [] t[key] = value @@ -231,6 +248,15 @@ if v: v = self.fmttime(v) else: v = '' + # Build group lists + if key == "Group": + x = '' + gsize = len(t["Group"]) + for i in range(gsize): + x = "%s%s" %(x, t["Group"][i]) + if i < gsize-1: x = x + ',' + else: break + v = x return v @@ -332,6 +358,15 @@ t["DueDate"] = storetime(t["DueDate"]) t["FinishedDate"] = storetime(t["FinishedDate"]) + # Convert the groups to a string separated by commas + x = '' + gsize = len(t["Group"]) + for i in range(gsize): + x = "%s%s" %(x, t["Group"][i]) + if i < gsize-1: x = x + ',' + else: break + t["Group"] = x + # Create the TaskFile tf = TaskFile(file) @@ -415,6 +450,19 @@ v = int(v) elif a in ("DueDate", "FinishedDate"): v = parse_time(v) + elif a == "Group": + v = unicode_to_utf8(v) + + if v: + x = v.split(',') + + for i in range(len(x)): + x[i] = x[i].strip() + + if '' in x: x.remove('') + + v = x + else: v = [] new_task[a] = unicode_to_utf8(v) @@ -760,7 +808,7 @@ if group and (group != 'ALL'): new_tasks = [] for t in tasks: - if t["Group"] == group: new_tasks.append(t) + if group in t["Group"]: new_tasks.append(t) tasks = new_tasks del new_tasks @@ -834,8 +882,9 @@ for t in self.__tasks: if t["Group"]: - if not t["Group"] in groups: - groups.append(t["Group"]) + for g in t["Group"]: + if not g in groups: + groups.append(g) # Sort the group list alphabetically groups.sort() Index: plugin.py =================================================================== RCS file: /cvsroot/todo-manager/todo-manager/plugin.py,v retrieving revision 1.6 retrieving revision 1.7 diff -u -d -r1.6 -r1.7 --- plugin.py 17 Dec 2002 05:01:37 -0000 1.6 +++ plugin.py 18 Dec 2002 21:29:17 -0000 1.7 @@ -131,5 +131,5 @@ "FinishedDate": "", "DueDate": "", "Priority": 1, - "Group": "", + "Group": [], } |
From: <cl...@us...> - 2002-12-17 05:01:41
|
Update of /cvsroot/todo-manager/todo-manager In directory sc8-pr-cvs1:/tmp/cvs-serv21458 Modified Files: plugin.py Log Message: This should be here. Index: plugin.py =================================================================== RCS file: /cvsroot/todo-manager/todo-manager/plugin.py,v retrieving revision 1.5 retrieving revision 1.6 diff -u -d -r1.5 -r1.6 --- plugin.py 7 Nov 2002 19:39:28 -0000 1.5 +++ plugin.py 17 Dec 2002 05:01:37 -0000 1.6 @@ -131,4 +131,5 @@ "FinishedDate": "", "DueDate": "", "Priority": 1, + "Group": "", } |
From: <cl...@us...> - 2002-12-17 02:00:22
|
Update of /cvsroot/todo-manager/todo-manager/plugins In directory sc8-pr-cvs1:/tmp/cvs-serv12896/plugins Modified Files: export_html.py export_text.py Log Message: Once again I changed some stuff relating to the plugins. * The core doesn't pass formatted time strings to saving functions anymore. Index: export_html.py =================================================================== RCS file: /cvsroot/todo-manager/todo-manager/plugins/export_html.py,v retrieving revision 1.5 retrieving revision 1.6 diff -u -d -r1.5 -r1.6 --- export_html.py 7 Nov 2002 19:44:14 -0000 1.5 +++ export_html.py 17 Dec 2002 02:00:17 -0000 1.6 @@ -29,20 +29,22 @@ # Get the current time t = time.time() t = time.localtime(t) - curdate = time.strftime("%m/%d/%y", t) - if task["DueDate"] == curdate: style = ("<B>", "</B>") - elif task["DueDate"] < curdate: style = ("<FONT COLOR=\"#9E0B0E\">", "</FONT>") + if task["DueDate"] == t: style = ("<B>", "</B>") + elif task["DueDate"] < t: style = ("<FONT COLOR=\"#9E0B0E\">", "</FONT>") # Convert newline characters in the notes to line breaks p = re.compile('(\r|\n)') notes = p.sub('<BR>', task['Notes']) + # The function used to format time structures + fmt = plugin.fmttime + file.write("<TR BGCOLOR=\"#DEDEDE\"><TD BGCOLOR=\"%s\" ALIGN=\"CENTER\">%d</TD><TD>"\ "%s %s%s</TD><TD ALIGN=\"CENTER\">%s</TD><TD ALIGN=\"RIGHT\">%s</TD>\n<TR>"\ "<TD></TD><TD COLSPAN=5><I>%s</I></TD></TR>\n" %(pcolors[task["Priority"]], task["Priority"], style[0], task["Name"], style[1], - task["DueDate"], task["FinishedDate"], notes)) + fmt(task["DueDate"]), fmt(task["FinishedDate"]), notes)) # Closing tags file.write("</TABLE></CENTER></BODY>\n</HTML>") Index: export_text.py =================================================================== RCS file: /cvsroot/todo-manager/todo-manager/plugins/export_text.py,v retrieving revision 1.5 retrieving revision 1.6 diff -u -d -r1.5 -r1.6 --- export_text.py 16 Dec 2002 07:07:34 -0000 1.5 +++ export_text.py 17 Dec 2002 02:00:17 -0000 1.6 @@ -23,8 +23,8 @@ for task in tasks: file.write(string.ljust(str(task["Priority"]), 3)) file.write(string.ljust(task["Name"], 50)) - file.write(string.ljust(task["DueDate"], 10)) - file.write(string.ljust(task["FinishedDate"], 18)) + file.write(string.ljust(plugin.fmttime(task["DueDate"]), 10)) + file.write(string.ljust(plugin.fmttime(task["FinishedDate"]), 18)) if task["Notes"]: file.write("\n note:%s" %task["Notes"]) file.write("\n\n") |
From: <cl...@us...> - 2002-12-17 02:00:20
|
Update of /cvsroot/todo-manager/todo-manager In directory sc8-pr-cvs1:/tmp/cvs-serv12896 Modified Files: main.py Log Message: Once again I changed some stuff relating to the plugins. * The core doesn't pass formatted time strings to saving functions anymore. Index: main.py =================================================================== RCS file: /cvsroot/todo-manager/todo-manager/main.py,v retrieving revision 1.63 retrieving revision 1.64 diff -u -d -r1.63 -r1.64 --- main.py 16 Dec 2002 19:33:29 -0000 1.63 +++ main.py 17 Dec 2002 02:00:14 -0000 1.64 @@ -99,6 +99,7 @@ if get_user_directory() != get_root_directory(): plgs.append(os.path.join(get_user_directory(), 'plugins')) + plugin.fmttime = self.fmttime # This gives the plugins access to fmttime plugin.load_all_plugins(plgs) if _load_file: @@ -310,21 +311,12 @@ _("The file can't be written. You may not be permitted to write to the drive.")) return FALSE - # The format function to use for output - fmt = self.fmttime - if not func: func = self.__save_file - fmt = storetime self.__current_file = filename self.__file_modified = FALSE self.interface_call(ALL, "set_current_filename", os.path.split(filename)[1]) - # Format the due date and the finished date - for t in tasks: - t["DueDate"] = fmt(t["DueDate"]) - t["FinishedDate"] = fmt(t["FinishedDate"]) - # Execute the function func(tasks, file) @@ -334,6 +326,11 @@ def __save_file(self, tasks, file): """Save the current task list to a file.""" + + # Format the due date and the finished date + for t in tasks: + t["DueDate"] = storetime(t["DueDate"]) + t["FinishedDate"] = storetime(t["FinishedDate"]) # Create the TaskFile tf = TaskFile(file) |
From: <cl...@us...> - 2002-12-16 23:02:00
|
Update of /cvsroot/todo-manager/todo-manager In directory sc8-pr-cvs1:/tmp/cvs-serv26656 Modified Files: TODO.txt Log Message: Another item checked off this list Index: TODO.txt =================================================================== RCS file: /cvsroot/todo-manager/todo-manager/TODO.txt,v retrieving revision 1.14 retrieving revision 1.15 diff -u -d -r1.14 -r1.15 --- TODO.txt 14 Nov 2002 06:54:51 -0000 1.14 +++ TODO.txt 16 Dec 2002 23:01:56 -0000 1.15 @@ -7,7 +7,6 @@ * Connect to a central server and update the local list * Select which plugins to load * Recurring tasks (daily, weekly, monthly, yearly) - * Task groups Interface: * Better way to select task colors in the options dialog. |
From: <cl...@us...> - 2002-12-16 22:26:13
|
Update of /cvsroot/todo-manager/todo-manager In directory sc8-pr-cvs1:/tmp/cvs-serv13678 Modified Files: ChangeLog.txt Log Message: Task groups. Index: ChangeLog.txt =================================================================== RCS file: /cvsroot/todo-manager/todo-manager/ChangeLog.txt,v retrieving revision 1.31 retrieving revision 1.32 diff -u -d -r1.31 -r1.32 --- ChangeLog.txt 16 Dec 2002 02:26:15 -0000 1.31 +++ ChangeLog.txt 16 Dec 2002 22:26:09 -0000 1.32 @@ -4,6 +4,7 @@ * New data entry layout * File->Export will preserve sorting and filters on the exported task list * Added French translation (thanks Florent Manens) + * Task groups and filtering by groups version 0.66.1 (11/19/2002): * Years that are out of range will no longer cause a crash |
From: <cl...@us...> - 2002-12-16 22:24:40
|
Update of /cvsroot/todo-manager/todo-manager In directory sc8-pr-cvs1:/tmp/cvs-serv12884 Modified Files: interface.py optionsdialog.py Log Message: Task group support. This may have a few bugs, tell me if you find any. Index: interface.py =================================================================== RCS file: /cvsroot/todo-manager/todo-manager/interface.py,v retrieving revision 1.35 retrieving revision 1.36 diff -u -d -r1.35 -r1.36 --- interface.py 14 Dec 2002 06:01:37 -0000 1.35 +++ interface.py 16 Dec 2002 22:24:29 -0000 1.36 @@ -36,10 +36,12 @@ self.__modified_name = FALSE self.__curdir = os.getcwd() self.__task_names = [] + self.__groups = [] self.__sort_count = 0 self.__sort_list = [None, "alphabetical", "priority"] self.__filter_count = 0 self.__filter_list = [None, "show_unfinished"] + self.__view_group_list = IntVar() master.title(appname) @@ -90,6 +92,8 @@ view = Menu(menu, tearoff=FALSE) view.add_checkbutton(label=_("Show Calendar"), accelerator="Ctrl+D", variable=self.__view_calendar) + view.add_checkbutton(label=_("Show Group List"), accelerator="Ctrl+G", + variable=self.__view_group_list) # Sorting menu self._sorting_menu = sorting = Menu(menu, tearoff=FALSE) @@ -129,10 +133,15 @@ frame = Frame(master, bd=0) Label(frame, text=_("Items To Do:"), anchor=W).grid(row=0, column=1, sticky=NW) - # Calendar stuff - self._calframe = Frame(frame, bd=0) - self._calendar = None - self._calframe.grid(row=1, column=0, sticky=NW) + # Calendar and group list stuff + self._extrasframe = Frame(frame, bd=0) + self._calendar = Label(self._extrasframe, bd=0, width=0) + self._calendar.grid() + self._calFilter = None + self._groupList = Label(self._extrasframe, bd=0, width=0) + self._groupList.grid() + self._groupScroll = None + self._extrasframe.grid(row=1, column=0, sticky=NW) # Tasklist self._taskList = tl = ObjectListbox(frame, bd=0, background='white', relief=FLAT, @@ -222,6 +231,11 @@ s.__view_calendar.set(not s.__view_calendar.get())) master.bind('<Control-D>', lambda e, s=self: s.__view_calendar.set(not s.__view_calendar.get())) + master.bind('<Control-g>', lambda e, s=self: + s.__view_group_list.set(not s.__view_group_list.get())) + master.bind('<Control-G>', lambda e, s=self: + s.__view_group_list.set(not s.__view_group_list.get())) + master.bind('<F1>', self.OnHelp) self._nameEntry.bind('<Return>', self.OnAdd) self._nameEntry.bind('<Tab>', lambda e, s=self: s.phantom_fields(0)) @@ -241,6 +255,7 @@ self.__disable_finish.trace('w', self.OnDisableFinish) self.__view_calendar.trace('w', self.show_calendar) self.__calendar_filter.trace('w', self.OnCalendarFilter) + self.__view_group_list.trace('w', self.show_group_list) self.__sorting_method.trace('w', self.OnSortingMethod) self.__filter_method.trace('w', self.OnSortingMethod) @@ -272,24 +287,52 @@ self._taskList.update() # So the controls are fully drawn + def show_group_list(self, *args): + self._groupList.destroy() + if self._groupScroll: + self._groupScroll.destroy() + + if self.__view_group_list.get(): + self._groupList = Listbox(self._extrasframe, bd=2, relief=SUNKEN) + self._groupScroll = Scrollbar(self._extrasframe, command=self._groupList.yview) + self._groupList.config(yscrollcommand=self._groupScroll.set) + self._groupList.grid(row=0, column=1, rowspan=2, sticky=NS) + self._groupScroll.grid(row=0, column=2, rowspan=2, sticky=NS) + + self._groupList.bind('<ButtonRelease-1>', lambda e, s=self: s.OnSortingMethod()) + + self.update_groups() + + else: + self._groupList = Label(self._extrasframe, bd=0, width=0) + self._groupList.grid() + self._groupScroll = Label(self._extrasframe, bd=0, width=0) + self._groupScroll.grid() + self.OnSortingMethod() + def show_calendar(self, *args): - # Delete all existing items in the frame - for c in self._calframe.winfo_children(): c.destroy() + # Delete the existing calendar object + self._calendar.destroy() + if self._calFilter: + self._calFilter.destroy() if self.__view_calendar.get(): - if not self._calframe.winfo_children(): - self._calendar = Calendar(self._calframe, bd=2, relief=SUNKEN, bg='white', - command=self.OnCalendarSelectDate) - self._calendar.pack(side=TOP) + self._calendar = Calendar(self._extrasframe, bd=2, relief=SUNKEN, bg='white', + command=self.OnCalendarSelectDate) + self._calendar.grid(row=0, sticky=W) - # Calendar filter checkbutton - Checkbutton(self._calframe, text=_("Only show tasks due on\nthe selected date."), - justify=LEFT, variable=self.__calendar_filter).pack(side=LEFT) + # Calendar filter checkbutton + self._calFilter = Checkbutton(self._extrasframe, + text=_("Only show tasks due on\nthe selected date."), justify=LEFT, + variable=self.__calendar_filter) + self._calFilter.grid(row=1, sticky=W) else: - # A blank label to force self._calframe to shrink down after the + # A blank label to force self._extrasframe to shrink down after the # calendar has been removed - Label(self._calframe, bd=0, width=0).pack(expand=FALSE) - self._calendar = None + self._calendar = Label(self._extrasframe, bd=0, width=0) + self._calendar.grid(row=0) + self._calFilter = Label(self._extrasframe, bd=0, width=0) + self._calFilter.grid(row=1) # If the calendar filter is active, then redraw the tasks if self.__calendar_filter.get(): @@ -347,6 +390,7 @@ dlg.set_option("showfinished", app.get_setting(CONF_SECTION, "showfinished", TRUE)) dlg.set_option("showfinishedtime", app.get_setting(CONF_SECTION, "showfinishedtime", TRUE)) dlg.set_option("showcalendar", app.get_setting(CONF_SECTION, "showcalendar", FALSE)) + dlg.set_option("showgroups", app.get_setting(CONF_SECTION, "showgroups", TRUE)) dlg.set_option("windowxoffset", app.get_setting(CONF_SECTION, "windowxoffset", 0)) dlg.set_option("windowyoffset", app.get_setting(CONF_SECTION, "windowyoffset", 0)) @@ -382,6 +426,7 @@ app.save_setting(CONF_SECTION, "showfinishedtime", dlg.get_option("showfinishedtime", TRUE)) app.save_setting(CONF_SECTION, "showcalendar", dlg.get_option("showcalendar", FALSE)) + app.save_setting(CONF_SECTION, "showgroups", dlg.get_option("showgroups", TRUE)) app.save_setting(CONF_SECTION, "itemforeground", dlg.get_option("itemforeground")) app.save_setting(CONF_SECTION, "itembackground", dlg.get_option("itembackground")) @@ -443,6 +488,8 @@ # The core formats the due date, this keeps the entry field up to date self._dueDate.delete(0, END) self._dueDate.insert(0, app.get_task_value(name, "DueDate")) + self._groupEntry.delete(0, END) + self._groupEntry.insert(0, app.get_task_value(name, "Group")) self._nameEntry.focus_set() self.__modified_name = FALSE @@ -461,7 +508,7 @@ if self._nameEntry.get() and not event.widget.get(): # Get the current date and time # If the calendar is visible, get the date from it. - if self.__view_calendar.get() and self._calendar: + if self.__view_calendar.get(): y, m, d = self._calendar.GetSelDate() t = (y, m, d) else: @@ -558,6 +605,13 @@ sorting_method = self.__sorting_method.get() filter_method = self.__filter_method.get() + # Get the group that is currently active + g = None + if self.__view_group_list.get(): + i = self._groupList.curselection() + if len(i) > 0: + g = self._groupList.get(int(i[0])) + # The sorting and filter settings must be in the range of the available values # If they aren't, set them to 0 if sorting_method < len(self.__sort_list): @@ -572,7 +626,7 @@ self.__filter_method.set(0) f = 0 - self._app.set_ui_sorting_filter(self, s, f) + self._app.set_ui_sorting_filter(self, s, f, g) def OnExit(self, event=None): self.save_config() @@ -695,6 +749,9 @@ elif command == "clear_list_items": self.__task_names = [] self._taskList.delete_item(ALL) + elif command == "update_list_groups": + self.__groups = args[0] + self.update_groups() # Plugins elif command == "add_plugin": @@ -793,7 +850,9 @@ # See if the calendar filter is on calfilter = self.__calendar_filter.get() - if self._calendar: + viewcalendar = self.__view_calendar.get() + + if viewcalendar: caldate = self._calendar.GetSelDate() # The list shouldn't update until the entire list is added @@ -804,7 +863,7 @@ i = 0 for name in self.__task_names: - if calfilter and self._calendar: + if calfilter and viewcalendar: duedate = app.get_task_value(name, "DueDate") fmt = app.get_setting("Core", "timeformat", "%Y-%m-%d") duedate = tdmcalls.strptime(fmt, duedate) @@ -830,6 +889,15 @@ # End the draw caching so the list can update tasklist.end_draw_cache() + def update_groups(self): + if self.__view_group_list.get(): + self._groupList.delete(0, END) + + self._groupList.insert(0, 'ALL') + + for g in self.__groups: + self._groupList.insert(END, g) + def get_listitem_index(self, name): tasklist = self._taskList for c in range(tasklist.count()): @@ -861,8 +929,10 @@ self._master.geometry("%dx%d" %(width, height)) if app.get_setting(CONF_SECTION, "showcalendar", FALSE): - self.__view_calendar.set(app.get_setting(CONF_SECTION, "showcalendar", FALSE)) - self.show_calendar() + self.__view_calendar.set(TRUE) + + if app.get_setting(CONF_SECTION, "showgroups", TRUE): + self.__view_group_list.set(TRUE) # Load the sorting and filter settings sf = str(app.get_setting(CONF_SECTION, "sortandfilter", '')) Index: optionsdialog.py =================================================================== RCS file: /cvsroot/todo-manager/todo-manager/optionsdialog.py,v retrieving revision 1.7 retrieving revision 1.8 diff -u -d -r1.7 -r1.8 --- optionsdialog.py 15 Dec 2002 20:47:16 -0000 1.7 +++ optionsdialog.py 16 Dec 2002 22:24:33 -0000 1.8 @@ -249,13 +249,16 @@ def load(self): self.load_file = IntVar() self.show_calendar = IntVar() + self.show_groups = IntVar() self.load_file.set(get_option("startupfile", 0)) self.show_calendar.set(get_option("showcalendar", FALSE)) + self.show_groups.set(get_option("showgroups", TRUE)) def close(self): set_option("startupfile", self.load_file.get()) set_option("showcalendar", self.show_calendar.get()) + set_option("showgroups", self.show_groups.get()) return TRUE @@ -273,11 +276,13 @@ self._spacer(self) - Label(self, text=_("Calendar"), font=section_font).grid(row=3, sticky=W) + Label(self, text=_("Display"), font=section_font).grid(row=3, sticky=W) frame = Frame(self) Checkbutton(frame, text=_("Show calendar on startup"), variable=self.show_calendar).grid( row=0, sticky=W) + Checkbutton(frame, text=_("Show groups on startup"), variable=self.show_groups).grid(row=1, + sticky=W) frame.grid(row=4, ipadx=15, sticky=W) #------------------------------------------------------------------------------- |
From: <cl...@us...> - 2002-12-16 19:33:34
|
Update of /cvsroot/todo-manager/todo-manager In directory sc8-pr-cvs1:/tmp/cvs-serv10152 Modified Files: main.py Log Message: The last bits of code for group support Index: main.py =================================================================== RCS file: /cvsroot/todo-manager/todo-manager/main.py,v retrieving revision 1.62 retrieving revision 1.63 diff -u -d -r1.62 -r1.63 --- main.py 8 Dec 2002 09:08:21 -0000 1.62 +++ main.py 16 Dec 2002 19:33:29 -0000 1.63 @@ -251,6 +251,7 @@ if t["Name"] == name: self.__tasks.remove(t) self.interface_call(ALL, "remove_list_item", name) + self.interface_call(ALL, "update_list_groups", self.__get_task_groups()) self.__file_modified = TRUE @@ -747,7 +748,7 @@ """ # Built-in sorting and filter functions - def set_ui_sorting_filter(self, ui, sorting=None, filter=None): + def set_ui_sorting_filter(self, ui, sorting=None, filter=None, group=None): # Get the sorting and filter plugins sort_plgs = [] filter_plgs = [] @@ -757,6 +758,15 @@ # Create a duplicate task list to work with tasks = self.__dup_task_list() + + # If a group was specified get all tasks in that group + if group and (group != 'ALL'): + new_tasks = [] + for t in tasks: + if t["Group"] == group: new_tasks.append(t) + + tasks = new_tasks + del new_tasks # Run the filters first so there will be less to sort # Filters |
From: <cl...@us...> - 2002-12-16 07:07:37
|
Update of /cvsroot/todo-manager/todo-manager/plugins In directory sc8-pr-cvs1:/tmp/cvs-serv11624/plugins Modified Files: export_text.py Log Message: This should not be here. Index: export_text.py =================================================================== RCS file: /cvsroot/todo-manager/todo-manager/plugins/export_text.py,v retrieving revision 1.4 retrieving revision 1.5 diff -u -d -r1.4 -r1.5 --- export_text.py 7 Nov 2002 19:44:14 -0000 1.4 +++ export_text.py 16 Dec 2002 07:07:34 -0000 1.5 @@ -10,7 +10,6 @@ def save_text(tasks, file): """Save a task list to a plain text file with simple formating""" - import string # The headers and what not file.write("TODO File\n\n") |
From: <cl...@us...> - 2002-12-16 02:26:18
|
Update of /cvsroot/todo-manager/todo-manager In directory sc8-pr-cvs1:/tmp/cvs-serv4049 Modified Files: ChangeLog.txt AUTHORS.txt Log Message: Added French translation (thanks Florent Manens) Index: ChangeLog.txt =================================================================== RCS file: /cvsroot/todo-manager/todo-manager/ChangeLog.txt,v retrieving revision 1.30 retrieving revision 1.31 diff -u -d -r1.30 -r1.31 --- ChangeLog.txt 26 Nov 2002 23:03:04 -0000 1.30 +++ ChangeLog.txt 16 Dec 2002 02:26:15 -0000 1.31 @@ -3,6 +3,7 @@ latest: * New data entry layout * File->Export will preserve sorting and filters on the exported task list + * Added French translation (thanks Florent Manens) version 0.66.1 (11/19/2002): * Years that are out of range will no longer cause a crash Index: AUTHORS.txt =================================================================== RCS file: /cvsroot/todo-manager/todo-manager/AUTHORS.txt,v retrieving revision 1.9 retrieving revision 1.10 diff -u -d -r1.9 -r1.10 --- AUTHORS.txt 9 Nov 2002 06:24:04 -0000 1.9 +++ AUTHORS.txt 16 Dec 2002 02:26:16 -0000 1.10 @@ -30,3 +30,6 @@ Christian Seidl <se...@gm...> * Created German translation (2002-11-08) + +Florent Manens <ma...@ef...> + * Created French translation (2002-12-15) |
From: <cl...@us...> - 2002-12-16 02:25:27
|
Update of /cvsroot/todo-manager/todo-manager/po/tk_interface In directory sc8-pr-cvs1:/tmp/cvs-serv3810/tk_interface Added Files: fr.po Log Message: Added French translation (thanks Florent Manens) --- NEW FILE: fr.po --- # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR ORGANIZATION # FIRST AUTHOR <EMAIL@ADDRESS>, YEAR. # msgid "" msgstr "" "Project-Id-Version: ToDo Manager 0.66\n" "POT-Creation-Date: Mon Dec 16 00:49:17 2002\n" "PO-Revision-Date: Mon Dec 16 01:10:17 2002\n" "Last-Translator: Florent Manens <ma...@ef...>\n" "Language-Team: none\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=CHARSET\n" "Content-Transfer-Encoding: ENCODING\n" "Generated-By: pygettext.py 1.4\n" #: controls.py:62 msgid "OK" msgstr "Ok" #: controls.py:64 msgid "Cancel" msgstr "Annuler" #: interface.py:50 msgid "The Tk Option file could not be found." msgstr "Le fichier d'options Tk n'a pas été trouvé" #: interface.py:72 msgid "New" msgstr "Nouveau" #: interface.py:73 msgid "Open" msgstr "Ouvrir" #: interface.py:74 msgid "Save" msgstr "Enregistrer" #: interface.py:75 msgid "Save As" msgstr "Enregistrer sous" #: interface.py:77 msgid "Reload Default" msgstr "Options par défaut" #: interface.py:81 msgid "Import" msgstr "Importer" #: interface.py:82 msgid "Export" msgstr "Exporter" #: interface.py:85 interface.py:334 msgid "Options" msgstr "Options" #: interface.py:87 msgid "Exit" msgstr "Quitter" #: interface.py:91 msgid "Show Calendar" msgstr "Afficher le calendrier" #: interface.py:96 interface.py:107 optionsdialog.py:271 msgid "None" msgstr "Aucun" #: interface.py:97 msgid "Alphabetical" msgstr "Alphabetique" #: interface.py:98 msgid "Priority" msgstr "Priorité" #: interface.py:108 msgid "Show Unfinished" msgstr "Afficher les tâches non terminées" #: interface.py:117 interface.py:126 msgid "Help" msgstr "Aide" #: interface.py:119 msgid "About..." msgstr "A propos..." #: interface.py:122 msgid "File" msgstr "Fichier" #: interface.py:123 msgid "View" msgstr "Affichage" #: interface.py:124 msgid "Sorting" msgstr "Tri" #: interface.py:125 msgid "Filters" msgstr "Filtres" #: interface.py:130 msgid "Items To Do:" msgstr "Choses à faire" #: interface.py:145 msgid "Task Name" msgstr "Nom de la tâche" #: interface.py:146 msgid "Due Date" msgstr "Date de fin" #: interface.py:148 interface.py:184 interface.py:484 interface.py:496 #: interface.py:506 interface.py:547 msgid "Finished" msgstr "Terminée" #: interface.py:150 msgid "Finished Time" msgstr "Date de fin" #: interface.py:166 msgid "Task Name:" msgstr "Nom de la tâche :" #: interface.py:169 msgid "Task Group:" msgstr "Groupe de la tâche :" #: interface.py:175 msgid "Due Date:" msgstr "Date de fin :" #: interface.py:187 msgid "Disable Finish" msgstr "Pas de fin" #: interface.py:192 msgid "Notes:" msgstr "Notes :" #: interface.py:197 msgid "Clear Fields" msgstr "Effacer les champs" #: interface.py:199 interface.py:505 interface.py:910 msgid "Add" msgstr "Ajouter" #: interface.py:201 msgid "Remove" msgstr "Enlever" #: interface.py:286 msgid "" "Only show tasks due on\n" "the selected date." msgstr "" "Afficher seulement les tâches\n" "de la date courrante." #: interface.py:424 msgid "About %s" msgstr "A propos %s" #: interface.py:496 interface.py:547 msgid "Not Finished" msgstr "Non terminé" #: interface.py:907 msgid "Apply" msgstr "Appliquer" #: interface.py:948 msgid "Close" msgstr "Fermer" #: optionsdialog.py:169 msgid "General" msgstr "Général" #: optionsdialog.py:200 msgid "Window Settings" msgstr "Paramètres de la fenêtre" #: optionsdialog.py:203 msgid "Save window position" msgstr "Enregistrer la position de la fenêtre" #: optionsdialog.py:205 msgid "Save window size" msgstr "Enregistrer la taille de la fenêtre" #: optionsdialog.py:211 msgid "Sorting and Filter Settings" msgstr "Paramètres de tri de de filtres" #: optionsdialog.py:215 msgid "Save sorting and filter modes" msgstr "Enregistrer le mode de tri et de filtre" #: optionsdialog.py:221 msgid "Web Browser Settings" msgstr "Paramètres du navigateur Web" #: optionsdialog.py:225 msgid "Use default browser" msgstr "Utiliser le navigateur par défaut" #: optionsdialog.py:227 msgid "Enter manual comand" msgstr "Entrer une commande manuelle" #: optionsdialog.py:230 msgid "Command format: command \"%s\"" msgstr "Forat de la commande : commande \"%s\"" #: optionsdialog.py:247 msgid "Startup" msgstr "Démarrage" #: optionsdialog.py:263 msgid "File Loaded On Startup" msgstr "Fichier chargé au démarrage" #: optionsdialog.py:267 msgid "Default File" msgstr "Fichier par défaut" #: optionsdialog.py:269 msgid "The file that was loaded last" msgstr "Le dernier fichier chargé" #: optionsdialog.py:276 msgid "Calendar" msgstr "Calendrier" #: optionsdialog.py:279 msgid "Show calendar on startup" msgstr "Afficher le calendrier au démarrage" #: optionsdialog.py:285 msgid "Task List" msgstr "Liste des tâches" #: optionsdialog.py:329 msgid "Task List Columns" msgstr "Colonnes de la liste des tâches" #: optionsdialog.py:333 msgid "Show Priority" msgstr "Affichage des prioritées" #: optionsdialog.py:335 msgid "Show Due Date" msgstr "Afficher la date de fin théorique" #: optionsdialog.py:337 msgid "Show Finished" msgstr "Afficher les tâches terminées" #: optionsdialog.py:339 msgid "Show Finished Time" msgstr "Afficher la date de fin effective" #: optionsdialog.py:345 msgid "Task Colors" msgstr "Couleurs d'une tâche" #: optionsdialog.py:350 msgid "Due Item" msgstr "" #: optionsdialog.py:350 msgid "Item" msgstr "Elément" #: optionsdialog.py:350 msgid "Over Due Item" msgstr "Date limite dépassée" #: optionsdialog.py:358 msgid "" "Select an item to the left to\n" "change its color settings." msgstr "" "Selectionner un élément a gauche\n" "pour changer ses couleurs" #: optionsdialog.py:382 msgid "Foreground" msgstr "Avant-plan" #: optionsdialog.py:383 msgid "Selected foreground" msgstr "Avant plan sélectionné" #: optionsdialog.py:385 msgid "Background" msgstr "Arriére-plan" #: optionsdialog.py:386 msgid "Selected background" msgstr "Arriere-plan selectionné" #: optionsdialog.py:400 msgid "Plugins" msgstr "" #: optionsdialog.py:414 msgid "Loading Options" msgstr "Options de chargements" #: optionsdialog.py:417 msgid "Load all plugins" msgstr "Charger tous les plugins" #: optionsdialog.py:419 msgid "Do not load plugins" msgstr "Ne par charger les plugins" #: optionsdialog.py:423 msgid "Plugin Information" msgstr "Information sur les plugins" #: optionsdialog.py:469 msgid "Window Offsets" msgstr "Emplacement de la fenêtre" #: optionsdialog.py:489 msgid "Invalid Value" msgstr "Valeur invalide" #: optionsdialog.py:490 msgid "" "The offset values are currently invalid.\n" "Only numerical values are permitted." msgstr "" "Les valeurs de décalages sont incorrectes.\n" "Seulement les valeurs numeriques sont acceptées." #: optionsdialog.py:500 msgid "If you notice that the ToDo Manager window is not returning to the same position that it was in when you last exited, then you need to adjust the offset values for your window manager. Clicking the Configure button will attempt to get the correct values." msgstr "Si vous remarquez que ToDo Manager ne retrouve pas son ancienne position lors de sa réouvertire, vous devez ajuster le décalage pour votre getionnaire de fenêtre. Le boutton Configure essaye de mettre les bonnes valeurs" #: optionsdialog.py:509 msgid "Horizontal Offset" msgstr "Décalage horizontal" #: optionsdialog.py:512 msgid "Vertical Offset" msgstr "Décalage vertical" #: optionsdialog.py:513 msgid "Configure" msgstr "Configure" #: optionsdialog.py:534 msgid "Advanced" msgstr "Avancé" #: optionsdialog.py:547 msgid "Date and Time Format" msgstr "Format de date et heure" #: optionsdialog.py:550 msgid "Format:" msgstr "Format :" |
From: <cl...@us...> - 2002-12-16 02:25:27
|
Update of /cvsroot/todo-manager/todo-manager/po/core In directory sc8-pr-cvs1:/tmp/cvs-serv3810/core Added Files: fr.po Log Message: Added French translation (thanks Florent Manens) --- NEW FILE: fr.po --- # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR ORGANIZATION # FIRST AUTHOR <EMAIL@ADDRESS>, YEAR. # msgid "" msgstr "" "Project-Id-Version: ToDo Manager 0.66\n" "POT-Creation-Date: Mon Dec 16 00:49:00 2002\n" "PO-Revision-Date: Mon Dec 16 00:52:00 2002\n" "Last-Translator: Florent Manens <ma...@ef...>\n" "Language-Team: none \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=CHARSET\n" "Content-Transfer-Encoding: ENCODING\n" "Generated-By: pygettext.py 1.4\n" #: main.py:192 msgid "" "The due date is not in the correct format.\n" "The format is %s" msgstr "" "La date de rendu n'est pas dans le bon format.\n" "Le format correct est %s" #: main.py:192 main.py:383 msgid "Invalid Format" msgstr "Format invalide" #: main.py:276 main.py:532 main.py:612 msgid "Untitled" msgstr "SansNom" #: main.py:295 main.py:353 msgid "ToDo Manager File" msgstr "Fichier ToDo Manager" #: main.py:308 main.py:365 msgid "File Error" msgstr "Erreur fichier" #: main.py:309 msgid "The file can't be written. You may not be permitted to write to the drive." msgstr "Le fichier ne peut être écrit. Vous n'avez peut être pas le droit d'écrire sur le disque" #: main.py:366 msgid "The file %s does not exist." msgstr "Le fichier %s n'existe pas" #: main.py:384 msgid "The file %s is in an invalid format or is not readable by this plugin." msgstr "Le format du fichier %s n'est pas valide ou ne peut pas être lu par ce plugin" #: main.py:591 msgid "Error" msgstr "Erreur" #: main.py:592 msgid "" "The Web Browser command is not in the right format.\n" "It should be in the format: command \"%s\".\n" "Please correct this error." msgstr "" "La commande pour le navigateur Web n'est pas dans le bon format.\n" "Elle devrait être de cette forme : commande\"%s\".\n" "Corrigez cette erreur SVP." #: main.py:599 msgid "Browser Error" msgstr "Erreur de navigateur" #: main.py:600 msgid "A runnable web browser could not be found." msgstr "Aucun navigateur utilisable trouvé." #: main.py:614 msgid "Current File" msgstr "Fichier courant" #: main.py:615 msgid "Do you want to save file %s?" msgstr "Voulez vous enregistrer le fichier %s ?" #: main.py:660 msgid "A Task Is Due" msgstr "Une tâche est à échéance " #: main.py:661 msgid "The task \"%s\" is due." msgstr "La tâche \"%s\" est à échéance" #: main.py:810 msgid "Plugin Error" msgstr "Erreur de plugin" #: main.py:811 msgid "" "The plugin: '%s' did not execute correctly.\n" "It is recommened that you contact the creator of this plugin and make sure that they are aware of this problem.name" msgstr "" "Le plugin : '%s' ne s'execute pas correctement.\n" "Il est recommendé de contacter l'auteur du plugin et de l'informer de ce problème." #: main.py:923 msgid "" "ToDo Manager\n" "usage: python todo-manager.py [options] [filename]\n" "OPTIONS:\n" " -N\t\t\t:Startup with a new blank file.\n" " -I\t\t\t:Don't load the configuration file.\n" " --help, -h\t\t:Display this text and exit.\n" " --version, -v\t\t:Display the version number and exit.\n" msgstr "" "ToDo Manager\n" "utilisation : python todo-manager.py [options] [fichier]\n" "OPTIONS:\n" " -N\t\t\t: Démarre avec un nouveau fichier.\n" " -I\t\t\t: Ne charge pas le fichier de configuration.\n" " --help, -h\t\t: Affiche ce texte et sort.\n" " --version, -v\t\t: Affiche le numéro de version et sort.\n" #: main.py:959 msgid "%s does not exist." msgstr "%s n'existe pas." |
From: <cl...@us...> - 2002-12-15 20:47:19
|
Update of /cvsroot/todo-manager/todo-manager In directory sc8-pr-cvs1:/tmp/cvs-serv3817 Modified Files: optionsdialog.py Log Message: Some window managers don't like windows that resize themselves after they are initially created. This fixes that. Index: optionsdialog.py =================================================================== RCS file: /cvsroot/todo-manager/todo-manager/optionsdialog.py,v retrieving revision 1.6 retrieving revision 1.7 diff -u -d -r1.6 -r1.7 --- optionsdialog.py 2 Dec 2002 16:58:55 -0000 1.6 +++ optionsdialog.py 15 Dec 2002 20:47:16 -0000 1.7 @@ -71,7 +71,7 @@ def body(self, master): # Set the default size of the dialog - #self.geometry('465x460') + self.geometry('470x460') optionlist = self._optionList = Listbox(master, selectmode=SINGLE, width=15) optionlist.grid(row=0, sticky='nsw') |
From: <cl...@us...> - 2002-12-15 20:43:26
|
Update of /cvsroot/todo-manager/todo-manager In directory sc8-pr-cvs1:/tmp/cvs-serv1687 Modified Files: objectlistbox.py Log Message: * Finally support has been added for middle, right, and double click commands. * The 'set_item_*click' commands now check that 'command' is callable. Index: objectlistbox.py =================================================================== RCS file: /cvsroot/todo-manager/todo-manager/objectlistbox.py,v retrieving revision 1.6 retrieving revision 1.7 diff -u -d -r1.6 -r1.7 --- objectlistbox.py 16 Oct 2002 05:10:15 -0000 1.6 +++ objectlistbox.py 15 Dec 2002 20:43:22 -0000 1.7 @@ -48,6 +48,7 @@ self.__item_leftclick_command = None self.__item_leftdrag_command = None + self.__item_leftdoubleclick_command = None self.__item_middleclick_command = None self.__item_rightclick_command = None @@ -87,6 +88,26 @@ self.draw() self.__dragable = TRUE + def __OnItemLeftDoubleClick(self, index): + self.__cursel = index + + if self.__item_leftdoubleclick_command: + self.__item_leftdoubleclick_command(index) + + self.draw() + + def __OnItemMiddleClick(self, index): + if self.__item_middleclick_command: + self.__item_middleclick_command(index) + + self.draw() + + def __OnItemRightClick(self, index): + if self.__item_rightclick_command: + self.__item_rightclick_command(index) + + self.draw() + def __OnItemLeftMove(self, event): if self.__dragable: canvas = self._canvas @@ -260,16 +281,34 @@ return len(self.__objects) def set_item_leftclick(self, command): - self.__item_leftclick_command = command + if callable(command): + self.__item_leftclick_command = command + else: + raise Exception, "command must be a callable function." + + def set_item_doubleclick(self, command): + if callable(command): + self.__item_leftdoubleclick_command = command + else: + raise Exception, "command must be a callable function." def set_item_leftdrag(self, command): - self.__item_leftdrag_command = command + if callable(command): + self.__item_leftdrag_command = command + else: + raise Exception, "command must be a callable function." def set_item_middleclick(self, command): - self.__item_middleclick_command = command + if callable(command): + self.__item_middleclick_command = command + else: + raise Exception, "command must be a callable function." def set_item_rightclick(self, command): - self.__item_rightclick_command = command + if callable(command): + self.__item_rightclick_command = command + else: + raise Exception, "command must be a callable function." def start_draw_cache(self): """Keep the list from updating automatically. @@ -349,6 +388,10 @@ # Tag bindings canvas.tag_bind(tag, '<Button-1>', lambda e, s=self, i=index: s.__OnItemLeftClick(i)) + canvas.tag_bind(tag, '<Double-Button-1>', lambda e, s=self, i=index: + s.__OnItemDoubleLeftClick(i)) + canvas.tag_bind(tag, '<Button-2>', lambda e, s=self, i=index: s.__OnItemMiddleClick(i)) + canvas.tag_bind(tag, '<Button-3>', lambda e, s=self, i=index: s.__OnItemRightClick(i)) index = index + 1 |
From: <cl...@us...> - 2002-12-14 06:01:40
|
Update of /cvsroot/todo-manager/todo-manager In directory sc8-pr-cvs1:/tmp/cvs-serv27887 Modified Files: interface.py Log Message: The "Finished" button is back. Index: interface.py =================================================================== RCS file: /cvsroot/todo-manager/todo-manager/interface.py,v retrieving revision 1.34 retrieving revision 1.35 diff -u -d -r1.34 -r1.35 --- interface.py 2 Dec 2002 16:58:54 -0000 1.34 +++ interface.py 14 Dec 2002 06:01:37 -0000 1.35 @@ -180,12 +180,15 @@ # self._taskOccurance.grid(row=0, column=3, sticky=W) frame2.grid(row=1, sticky=W) - self._disableFinish = Checkbutton(frame, text=_("Disable Finish"), - variable=self.__disable_finish) - self._disableFinish.grid(row=2, sticky=W) + frame2 = Frame(frame, bd=0) self._finished = ThinButton(frame2, text=_("Finished"), width=17, state=DISABLED, command=self.OnFinished) - #self._finished.grid(row=2, column=2, columnspan=2, sticky=EW) + self._finished.grid(row=0, sticky=W) + self._disableFinish = Checkbutton(frame2, text=_("Disable Finish"), + variable=self.__disable_finish) + self._disableFinish.grid(row=0, column=1, sticky=W) + frame2.grid(row=2, sticky=W) + Label(frame, text=_("Notes:")).grid(row=3, sticky=W) self._notesText = Text(frame, wrap=WORD, width=55, height=5) self._notesText.grid(row=4, sticky=EW) |