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-05-06 02:48:16
|
Update of /cvsroot/todo-manager/todo-manager/i18n In directory sc8-pr-cvs1:/tmp/cvs-serv6260 Added Files: updatepo.py Log Message: This new script will update translations with new strings found in the module.pot file. I put this together rather quickly without any reference material so it could potentially screw a few things up. I know that it currently preserve translations marked as fuzzy. This should be resolved in a few days. For info on how it works, run python updatepo.py --help --- NEW FILE: updatepo.py --- #!/usr/bin/env python # # updatepo.py # Update translations based on the newest POT file # # Author: Brian Bernas import os, sys #Global variables sel_module = [] sel_trans = [] help_text = """updatepo.py: Update po files with new translation strings Usage: python updatepo.py [module names] [translation names] module names:\t\tThe names of every module that translations should be \t\t\tupdated for translation names:\tNames of the translation files that should be updated ex:\t\tTo update a translation for the core: \t\t\tpython updatepo.py core LL.po -h, --help:\tDisplay this text and exit """ def update_translation(po, potdata): print "Updating translation file: %s" %po pofile = open(po, 'r') podata = pofile.read() pofile.close() text = '' # Copy the initial header i = podata.find('msgid') text = text + podata[:i] # Copy the msgid's. This is where it can get scary i = potdata.find('msgid') msgid = None while i < len(potdata): if msgid: x = podata.find(msgid) if x != -1: xi = x+len(msgid) z = podata.find('\n#:', xi) text = text + podata[xi: z] else: text = text + "msgstr \"\"\n" msgid = None else: start = potdata.find('msgid', i) if start == -1: break end = potdata.find('msgstr', start) msgid = potdata[start: end] text = text + potdata[i:end] i = potdata.find("\n#:", end) # Set the POT creation date fstr = "\"POT-Creation-Date:" start = potdata.find(fstr) if start != -1: end = potdata.find("\n\"", start) date = potdata[start:end] start = text.find(fstr) if start != -1: end = text.find("\n\"", start) olddate = text[start:end] text = text.replace(olddate, date, 1) tmpfile = open(po, 'w') tmpfile.write(text) tmpfile.close() def update_module(module): po_path = os.path.join('po', module) trans = os.listdir(po_path) pot_file = os.path.join(po_path, "%s.pot" %module) if not os.path.isfile(pot_file): print "%s.pot doesn't exist. Moving on..." %module return potfile = open(pot_file, 'r') potdata = potfile.read() potfile.close() for t in trans: if os.path.splitext(t)[1] == '.po': file = os.path.join(po_path, t) if sel_trans and (not t in sel_trans): continue update_translation(file, potdata) def parse_args(args): global sel_module global sel_trans print args for a in args: if a == '-h' or a == '--help': print help_text return 1 elif a[-3:] == '.po': sel_trans.append(a) else: sel_module.append(a) return 0 def main(): # Parse the command arguments if parse_args(sys.argv[1:]): return # Enter the main directory os.chdir(os.pardir) # All of the files and directories in the 'po' directory list = os.listdir('po') for l in list: if (os.path.isdir(os.path.join('po', '%s') %l)) and (l != "CVS"): if sel_module and (not l in sel_module): continue print "Updating translation '%s'." %l update_module(l) print # Execute the main function main() |
From: <cl...@us...> - 2003-05-04 15:44:59
|
Update of /cvsroot/todo-manager/todo-manager In directory sc8-pr-cvs1:/tmp/cvs-serv5560 Modified Files: main.py Log Message: Backing out that change I made on Friday. That "unneaded" code is really neaded. Imagine that. Index: main.py =================================================================== RCS file: /cvsroot/todo-manager/todo-manager/main.py,v retrieving revision 1.79 retrieving revision 1.80 diff -u -d -r1.79 -r1.80 --- main.py 2 May 2003 04:36:38 -0000 1.79 +++ main.py 4 May 2003 15:38:09 -0000 1.80 @@ -406,7 +406,9 @@ file.close() # Write the file - self.__ext_save_file(filename=self.__tmpfile) + file = open(self.__tmpfile, 'wb') + self.__save_file(self.__dup_task_list(), file) + file.close() def __clear_tmpfile(self): if self.__tmpfile: @@ -481,7 +483,9 @@ file.close() # Write to the original - self.__ext_save_file(filename=origfile) + file = open(origfile, 'wb') + self.__save_file(self.__dup_task_list(), file) + file.close() self.__current_file = origfile |
From: <cl...@us...> - 2003-05-04 15:17:22
|
Update of /cvsroot/todo-manager/todo-manager In directory sc8-pr-cvs1:/tmp/cvs-serv27610 Modified Files: AUTHORS.txt Log Message: I almost forgot about this file. Index: AUTHORS.txt =================================================================== RCS file: /cvsroot/todo-manager/todo-manager/AUTHORS.txt,v retrieving revision 1.10 retrieving revision 1.11 diff -u -d -r1.10 -r1.11 --- AUTHORS.txt 16 Dec 2002 02:26:16 -0000 1.10 +++ AUTHORS.txt 4 May 2003 15:17:18 -0000 1.11 @@ -33,3 +33,7 @@ Florent Manens <ma...@ef...> * Created French translation (2002-12-15) + +Dennis Benzinger <Den...@gm...> + * Updated the German translation and converted the charset on all + translations to UTF-8. (2003-05-04) |
From: <cl...@us...> - 2003-05-04 15:16:12
|
Update of /cvsroot/todo-manager/todo-manager/po/core In directory sc8-pr-cvs1:/tmp/cvs-serv23918/po/core Modified Files: de.po fr.po nl.po Log Message: Dennis Benzinger updated the German translation and did some UTF-8 charset conversions. Index: de.po =================================================================== RCS file: /cvsroot/todo-manager/todo-manager/po/core/de.po,v retrieving revision 1.1 retrieving revision 1.2 diff -u -d -r1.1 -r1.2 --- de.po 9 Nov 2002 06:24:05 -0000 1.1 +++ de.po 4 May 2003 15:11:19 -0000 1.2 @@ -4,14 +4,13 @@ # msgid "" msgstr "" -"Project-Id-Version: ToDo Manager 0.66\n" +"Project-Id-Version: ToDo Manager 0.70.2\n" "POT-Creation-Date: Fri Nov 8 19:53:54 2002\n" -"PO-Revision-Date: 2002-11-08 21:34+0100\n" -"Last-Translator: Christian Seidl <se...@gm...>\n" -"Language-Team: German <de...@li...>\n" +"PO-Revision-Date: 2003-05-04 15:41:00+0100\n" +"Last-Translator: Dennis Benzinger <Den...@gm...>\n" "MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=CHARSET\n" -"Content-Transfer-Encoding: ENCODING\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" "Generated-By: pygettext.py 1.4\n" @@ -21,11 +20,11 @@ "The format is %s" msgstr "" "Der Endtermin ist nicht im richtigen Format.\n" -"Gültiges Format: %s" +"Gültiges Format: %s" #: main.py:191 main.py:370 msgid "Invalid Format" -msgstr "Ungültiges Format" +msgstr "Ungültiges Format" #: main.py:270 main.py:519 main.py:598 msgid "Untitled" @@ -41,7 +40,7 @@ #: main.py:301 msgid "The file can't be written. You may not be permitted to write to the drive." -msgstr "Die Datei konnte nicht gespeichert werden. Sie haben evtl. nicht die erforderlichen Berechtigungen für das Laufwerk." +msgstr "Die Datei konnte nicht gespeichert werden. Sie haben evtl. nicht die erforderlichen Berechtigungen für das Laufwerk." #: main.py:353 msgid "The file %s does not exist." @@ -49,7 +48,7 @@ #: main.py:371 msgid "The file %s is in an invalid format or is not readable by this plugin." -msgstr "Die Datei %s hat ein ungültiges Format oder ist für das Plug-In nicht lesbar." +msgstr "Die Datei %s hat ein ungültiges Format oder ist für das Plug-In nicht lesbar." #: main.py:577 msgid "Error" @@ -61,8 +60,8 @@ "It should be in the format: command \"%s\".\n" "Please correct this error." msgstr "" -"Der Befehl für den Web Browser ist nicht im richtigen Format.\n" -"Gültiges Format: befehl \"%s\".\n" +"Der Befehl für den Web Browser ist nicht im richtigen Format.\n" +"Gültiges Format: befehl \"%s\".\n" "Bitte korrigieren Sie den Fehler." #: main.py:585 @@ -83,11 +82,11 @@ #: main.py:646 msgid "A Task Is Due" -msgstr "Eine Aufgabe ist fällig" +msgstr "Eine Aufgabe ist fällig" #: main.py:647 msgid "The task \"%s\" is due." -msgstr "Die Aufgabe \"%s\" ist fällig." +msgstr "Die Aufgabe \"%s\" ist fällig." #: main.py:767 msgid "Plugin Error" @@ -98,8 +97,8 @@ "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 "" -"Das Plug-In '%s' wurde nicht korrekt ausgeführt\n" -"Es wird empfohlen den Author des Plug-Ins über das Problem in Kenntnis zu setzen." +"Das Plug-In '%s' wurde nicht korrekt ausgeführt\n" +"Es wird empfohlen den Author des Plug-Ins über das Problem in Kenntnis zu setzen." #: main.py:866 msgid "" Index: fr.po =================================================================== RCS file: /cvsroot/todo-manager/todo-manager/po/core/fr.po,v retrieving revision 1.1 retrieving revision 1.2 diff -u -d -r1.1 -r1.2 --- fr.po 16 Dec 2002 02:25:24 -0000 1.1 +++ fr.po 4 May 2003 15:11:19 -0000 1.2 @@ -10,8 +10,8 @@ "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" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" "Generated-By: pygettext.py 1.4\n" @@ -41,7 +41,7 @@ #: 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" +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." @@ -49,7 +49,7 @@ #: 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" +msgstr "Le format du fichier %s n'est pas valide ou ne peut pas être lu par ce plugin" #: main.py:591 msgid "Error" @@ -62,7 +62,7 @@ "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" +"Elle devrait être de cette forme : commande\"%s\".\n" "Corrigez cette erreur SVP." #: main.py:599 @@ -71,7 +71,7 @@ #: main.py:600 msgid "A runnable web browser could not be found." -msgstr "Aucun navigateur utilisable trouvé." +msgstr "Aucun navigateur utilisable trouvé." #: main.py:614 msgid "Current File" @@ -83,11 +83,11 @@ #: main.py:660 msgid "A Task Is Due" -msgstr "Une tâche est à échéance " +msgstr "Une tâche est à échéance " #: main.py:661 msgid "The task \"%s\" is due." -msgstr "La tâche \"%s\" est à échéance" +msgstr "La tâche \"%s\" est à échéance" #: main.py:810 msgid "Plugin Error" @@ -99,7 +99,7 @@ "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." +"Il est recommendé de contacter l'auteur du plugin et de l'informer de ce problème." #: main.py:923 msgid "" @@ -114,10 +114,10 @@ "ToDo Manager\n" "utilisation : python todo-manager.py [options] [fichier]\n" "OPTIONS:\n" -" -N\t\t\t: Démarre avec un nouveau fichier.\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" +" --version, -v\t\t: Affiche le numéro de version et sort.\n" #: main.py:959 msgid "%s does not exist." Index: nl.po =================================================================== RCS file: /cvsroot/todo-manager/todo-manager/po/core/nl.po,v retrieving revision 1.1 retrieving revision 1.2 diff -u -d -r1.1 -r1.2 --- nl.po 10 Oct 2002 04:14:27 -0000 1.1 +++ nl.po 4 May 2003 15:11:19 -0000 1.2 @@ -10,8 +10,8 @@ "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Language-Team: LANGUAGE <LL...@li...>\n" "MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=CHARSET\n" -"Content-Transfer-Encoding: ENCODING\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" "Generated-By: pygettext.py 1.4\n" |
From: <cl...@us...> - 2003-05-04 15:16:11
|
Update of /cvsroot/todo-manager/todo-manager In directory sc8-pr-cvs1:/tmp/cvs-serv23918 Modified Files: ChangeLog.txt Log Message: Dennis Benzinger updated the German translation and did some UTF-8 charset conversions. Index: ChangeLog.txt =================================================================== RCS file: /cvsroot/todo-manager/todo-manager/ChangeLog.txt,v retrieving revision 1.41 retrieving revision 1.42 diff -u -d -r1.41 -r1.42 --- ChangeLog.txt 27 Apr 2003 00:32:46 -0000 1.41 +++ ChangeLog.txt 4 May 2003 15:11:18 -0000 1.42 @@ -6,6 +6,8 @@ - The user will be prompted if they want to restore the original file from the backup copy * New command-line option that dissables plugin loading (-P) + * Updated German translation and changed all translation charsets to UTF-8 + (thanks, Dennis Benzinger) Version 0.70.2 (03/16/2003): * Groups with multilingual characters no longer cause an exception |
From: <cl...@us...> - 2003-05-04 15:13:06
|
Update of /cvsroot/todo-manager/todo-manager/po/tk_interface In directory sc8-pr-cvs1:/tmp/cvs-serv23918/po/tk_interface Modified Files: de.po fr.po nl.po Log Message: Dennis Benzinger updated the German translation and did some UTF-8 charset conversions. Index: de.po =================================================================== RCS file: /cvsroot/todo-manager/todo-manager/po/tk_interface/de.po,v retrieving revision 1.1 retrieving revision 1.2 diff -u -d -r1.1 -r1.2 --- de.po 9 Nov 2002 06:24:05 -0000 1.1 +++ de.po 4 May 2003 15:11:19 -0000 1.2 @@ -4,14 +4,13 @@ # msgid "" msgstr "" -"Project-Id-Version: ToDo Manager 0.66\n" +"Project-Id-Version: ToDo Manager 0.70.2\n" "POT-Creation-Date: Fri Nov 8 19:54:00 2002\n" -"PO-Revision-Date: 2002-11-08 22:31+0100\n" -"Last-Translator: Christian Seidl <se...@gm...>\n" -"Language-Team: German <de...@li...>\n" +"PO-Revision-Date: 2003-05-04 15:41:00+0100\n" +"Last-Translator: Dennis Benzinger <Den...@gm...>\n" "MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=CHARSET\n" -"Content-Transfer-Encoding: ENCODING\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" "Generated-By: pygettext.py 1.4\n" @@ -33,7 +32,7 @@ #: interface.py:73 msgid "Open" -msgstr "Öffnen" +msgstr "Ãffnen" #: interface.py:74 msgid "Save" @@ -67,6 +66,14 @@ msgid "Show Calendar" msgstr "Kalender anzeigen" +#: interface.py:105 +msgid "Show Group List" +msgstr "Gruppenliste anzeigen" + +#: interface.py:108 +msgid "Refresh Task List" +msgstr "Aufgabenliste aktualisieren" + #: interface.py:96 interface.py:107 optionsdialog.py:271 msgid "None" msgstr "Ohne" @@ -77,7 +84,7 @@ #: interface.py:98 msgid "Priority" -msgstr "Priorität" +msgstr "Priorität" #: interface.py:108 msgid "Show Unfinished" @@ -89,7 +96,7 @@ #: interface.py:119 msgid "About..." -msgstr "Über..." +msgstr "Ãber..." #: interface.py:122 msgid "File" @@ -109,7 +116,7 @@ #: interface.py:130 msgid "Items To Do:" -msgstr "ToDo Einträge:" +msgstr "ToDo Einträge:" #: interface.py:145 msgid "Task Name" @@ -119,6 +126,10 @@ msgid "Due Date" msgstr "Endtermin" +#: interface.py:196 +msgid "Due Date:" +msgstr "Endtermin:" + #: interface.py:148 interface.py:180 interface.py:462 interface.py:474 #: interface.py:483 interface.py:522 msgid "Finished" @@ -134,11 +145,11 @@ #: interface.py:168 interface.py:482 interface.py:872 msgid "Add" -msgstr "Hinzufügen" +msgstr "Hinzufügen" #: interface.py:170 msgid "Remove" -msgstr "Löschen" +msgstr "Löschen" #: interface.py:176 msgid "Disable Finish" @@ -150,7 +161,7 @@ #: interface.py:186 msgid "Clear Fields" -msgstr "Felder löschen" +msgstr "Felder löschen" #: interface.py:267 msgid "" @@ -158,11 +169,11 @@ "the selected date." msgstr "" "Nur Aufgaben anzeigen, die\n" -"am ausgewählten Tag fällig sind" +"am ausgewählten Tag fällig sind" #: interface.py:404 msgid "About %s" -msgstr "Über %s" +msgstr "Ãber %s" #: interface.py:474 interface.py:522 msgid "Not Finished" @@ -174,7 +185,7 @@ #: interface.py:909 msgid "Close" -msgstr "Schließen" +msgstr "SchlieÃen" #: optionsdialog.py:169 msgid "General" @@ -190,7 +201,7 @@ #: optionsdialog.py:205 msgid "Save window size" -msgstr "Größe speichern" +msgstr "GröÃe speichern" #: optionsdialog.py:211 msgid "Sorting and Filter Settings" @@ -230,7 +241,7 @@ #: optionsdialog.py:269 msgid "The file that was loaded last" -msgstr "Die zuletzt geöffnete Datei" +msgstr "Die zuletzt geöffnete Datei" #: optionsdialog.py:276 msgid "Calendar" @@ -240,6 +251,10 @@ msgid "Show calendar on startup" msgstr "Kalender nach dem Start anzeigen" +#: optionsdialog.py:284 +msgid "Show groups on startup" +msgstr "Gruppen nach dem Start anzeigen" + #: optionsdialog.py:285 msgid "Task List" msgstr "Aufgabenliste" @@ -250,7 +265,7 @@ #: optionsdialog.py:333 msgid "Show Priority" -msgstr "Priorität anzeigen" +msgstr "Priorität anzeigen" #: optionsdialog.py:335 msgid "Show Due Date" @@ -270,7 +285,7 @@ #: optionsdialog.py:350 msgid "Due Item" -msgstr "Fällig" +msgstr "Fällig" #: optionsdialog.py:350 msgid "Item" @@ -278,7 +293,7 @@ #: optionsdialog.py:350 msgid "Over Due Item" -msgstr "Überfällig" +msgstr "Ãberfällig" #: optionsdialog.py:358 msgid "" @@ -286,7 +301,7 @@ "change its color settings." msgstr "" "Eintrag auf der linken Seite aus-\n" -"wählen, Farbeinstellungen verändern." +"wählen, Farbeinstellungen verändern." #: optionsdialog.py:382 msgid "Foreground" @@ -322,23 +337,23 @@ #: optionsdialog.py:424 msgid "Window Offsets" -msgstr "Fensterabstände" +msgstr "Fensterabstände" #: optionsdialog.py:444 msgid "Invalid Value" -msgstr "Ungültiger Wert" +msgstr "Ungültiger Wert" #: optionsdialog.py:445 msgid "" "The offset values are currently invalid.\n" "Only numerical values are permitted." msgstr "" -"Die Abstandswerte sind ungültig.\n" +"Die Abstandswerte sind ungültig.\n" "Es sind nur numerische Werte erlaubt." #: optionsdialog.py:455 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 "Falls Sie feststellen, dass sich das ToDo Manager-Fenster nicht an der Stelle öffnet, an der Sie es zuletzt geschlossen haben, müssen Sie die Abstandswerte für Ihren Window Manager anpassen. Die Schaltfläche 'Ermitteln' ermittelt die richtigen Werte. " +msgstr "Falls Sie feststellen, dass sich das ToDo Manager-Fenster nicht an der Stelle öffnet, an der Sie es zuletzt geschlossen haben, müssen Sie die Abstandswerte für Ihren Window Manager anpassen. Die Schaltfläche 'Ermitteln' ermittelt die richtigen Werte. " #: optionsdialog.py:464 msgid "Horizontal Offset" @@ -364,3 +379,10 @@ msgid "Format:" msgstr "Format:" +#: optionsdialog.py:568 +msgid "File Options" +msgstr "Datei Optionen" + +#: optionsdialog.py:570 +msgid "Save backup files (for crash recovery)" +msgstr "Backup Dateien erstellen\n(zur Wiederherstellung bei Abstürzen)" Index: fr.po =================================================================== RCS file: /cvsroot/todo-manager/todo-manager/po/tk_interface/fr.po,v retrieving revision 1.1 retrieving revision 1.2 diff -u -d -r1.1 -r1.2 --- fr.po 16 Dec 2002 02:25:24 -0000 1.1 +++ fr.po 4 May 2003 15:11:19 -0000 1.2 @@ -10,8 +10,8 @@ "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" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" "Generated-By: pygettext.py 1.4\n" @@ -25,7 +25,7 @@ #: interface.py:50 msgid "The Tk Option file could not be found." -msgstr "Le fichier d'options Tk n'a pas été trouvé" +msgstr "Le fichier d'options Tk n'a pas été trouvé" #: interface.py:72 msgid "New" @@ -45,7 +45,7 @@ #: interface.py:77 msgid "Reload Default" -msgstr "Options par défaut" +msgstr "Options par défaut" #: interface.py:81 msgid "Import" @@ -77,11 +77,11 @@ #: interface.py:98 msgid "Priority" -msgstr "Priorité" +msgstr "Priorité" #: interface.py:108 msgid "Show Unfinished" -msgstr "Afficher les tâches non terminées" +msgstr "Afficher les tâches non terminées" #: interface.py:117 interface.py:126 msgid "Help" @@ -109,11 +109,11 @@ #: interface.py:130 msgid "Items To Do:" -msgstr "Choses à faire" +msgstr "Choses à faire" #: interface.py:145 msgid "Task Name" -msgstr "Nom de la tâche" +msgstr "Nom de la tâche" #: interface.py:146 msgid "Due Date" @@ -122,7 +122,7 @@ #: interface.py:148 interface.py:184 interface.py:484 interface.py:496 #: interface.py:506 interface.py:547 msgid "Finished" -msgstr "Terminée" +msgstr "Terminée" #: interface.py:150 msgid "Finished Time" @@ -130,11 +130,11 @@ #: interface.py:166 msgid "Task Name:" -msgstr "Nom de la tâche :" +msgstr "Nom de la tâche :" #: interface.py:169 msgid "Task Group:" -msgstr "Groupe de la tâche :" +msgstr "Groupe de la tâche :" #: interface.py:175 msgid "Due Date:" @@ -165,7 +165,7 @@ "Only show tasks due on\n" "the selected date." msgstr "" -"Afficher seulement les tâches\n" +"Afficher seulement les tâches\n" "de la date courrante." #: interface.py:424 @@ -174,7 +174,7 @@ #: interface.py:496 interface.py:547 msgid "Not Finished" -msgstr "Non terminé" +msgstr "Non terminé" #: interface.py:907 msgid "Apply" @@ -186,23 +186,23 @@ #: optionsdialog.py:169 msgid "General" -msgstr "Général" +msgstr "Général" #: optionsdialog.py:200 msgid "Window Settings" -msgstr "Paramètres de la fenêtre" +msgstr "Paramètres de la fenêtre" #: optionsdialog.py:203 msgid "Save window position" -msgstr "Enregistrer la position de la fenêtre" +msgstr "Enregistrer la position de la fenêtre" #: optionsdialog.py:205 msgid "Save window size" -msgstr "Enregistrer la taille de la fenêtre" +msgstr "Enregistrer la taille de la fenêtre" #: optionsdialog.py:211 msgid "Sorting and Filter Settings" -msgstr "Paramètres de tri de de filtres" +msgstr "Paramètres de tri de de filtres" #: optionsdialog.py:215 msgid "Save sorting and filter modes" @@ -210,11 +210,11 @@ #: optionsdialog.py:221 msgid "Web Browser Settings" -msgstr "Paramètres du navigateur Web" +msgstr "Paramètres du navigateur Web" #: optionsdialog.py:225 msgid "Use default browser" -msgstr "Utiliser le navigateur par défaut" +msgstr "Utiliser le navigateur par défaut" #: optionsdialog.py:227 msgid "Enter manual comand" @@ -226,19 +226,19 @@ #: optionsdialog.py:247 msgid "Startup" -msgstr "Démarrage" +msgstr "Démarrage" #: optionsdialog.py:263 msgid "File Loaded On Startup" -msgstr "Fichier chargé au démarrage" +msgstr "Fichier chargé au démarrage" #: optionsdialog.py:267 msgid "Default File" -msgstr "Fichier par défaut" +msgstr "Fichier par défaut" #: optionsdialog.py:269 msgid "The file that was loaded last" -msgstr "Le dernier fichier chargé" +msgstr "Le dernier fichier chargé" #: optionsdialog.py:276 msgid "Calendar" @@ -246,27 +246,27 @@ #: optionsdialog.py:279 msgid "Show calendar on startup" -msgstr "Afficher le calendrier au démarrage" +msgstr "Afficher le calendrier au démarrage" #: optionsdialog.py:285 msgid "Task List" -msgstr "Liste des tâches" +msgstr "Liste des tâches" #: optionsdialog.py:329 msgid "Task List Columns" -msgstr "Colonnes de la liste des tâches" +msgstr "Colonnes de la liste des tâches" #: optionsdialog.py:333 msgid "Show Priority" -msgstr "Affichage des prioritées" +msgstr "Affichage des prioritées" #: optionsdialog.py:335 msgid "Show Due Date" -msgstr "Afficher la date de fin théorique" +msgstr "Afficher la date de fin théorique" #: optionsdialog.py:337 msgid "Show Finished" -msgstr "Afficher les tâches terminées" +msgstr "Afficher les tâches terminées" #: optionsdialog.py:339 msgid "Show Finished Time" @@ -274,7 +274,7 @@ #: optionsdialog.py:345 msgid "Task Colors" -msgstr "Couleurs d'une tâche" +msgstr "Couleurs d'une tâche" #: optionsdialog.py:350 msgid "Due Item" @@ -282,18 +282,18 @@ #: optionsdialog.py:350 msgid "Item" -msgstr "Elément" +msgstr "Elément" #: optionsdialog.py:350 msgid "Over Due Item" -msgstr "Date limite dépassée" +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" +"Selectionner un élément a gauche\n" "pour changer ses couleurs" #: optionsdialog.py:382 @@ -302,15 +302,15 @@ #: optionsdialog.py:383 msgid "Selected foreground" -msgstr "Avant plan sélectionné" +msgstr "Avant plan sélectionné" #: optionsdialog.py:385 msgid "Background" -msgstr "Arriére-plan" +msgstr "Arriére-plan" #: optionsdialog.py:386 msgid "Selected background" -msgstr "Arriere-plan selectionné" +msgstr "Arriere-plan selectionné" #: optionsdialog.py:400 msgid "Plugins" @@ -334,7 +334,7 @@ #: optionsdialog.py:469 msgid "Window Offsets" -msgstr "Emplacement de la fenêtre" +msgstr "Emplacement de la fenêtre" #: optionsdialog.py:489 msgid "Invalid Value" @@ -345,20 +345,20 @@ "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." +"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" +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" +msgstr "Décalage horizontal" #: optionsdialog.py:512 msgid "Vertical Offset" -msgstr "Décalage vertical" +msgstr "Décalage vertical" #: optionsdialog.py:513 msgid "Configure" @@ -366,7 +366,7 @@ #: optionsdialog.py:534 msgid "Advanced" -msgstr "Avancé" +msgstr "Avancé" #: optionsdialog.py:547 msgid "Date and Time Format" Index: nl.po =================================================================== RCS file: /cvsroot/todo-manager/todo-manager/po/tk_interface/nl.po,v retrieving revision 1.1 retrieving revision 1.2 diff -u -d -r1.1 -r1.2 --- nl.po 10 Oct 2002 04:14:27 -0000 1.1 +++ nl.po 4 May 2003 15:11:19 -0000 1.2 @@ -10,8 +10,8 @@ "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Language-Team: LANGUAGE <LL...@li...>\n" "MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=CHARSET\n" -"Content-Transfer-Encoding: ENCODING\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" "Generated-By: pygettext.py 1.4\n" |
From: <cl...@us...> - 2003-05-04 15:09:52
|
Update of /cvsroot/todo-manager/todo-manager In directory sc8-pr-cvs1:/tmp/cvs-serv23206 Modified Files: optionsdialog.py Log Message: Dennis Benzinger included this with his big translation update patch, so I'm committing it. Index: optionsdialog.py =================================================================== RCS file: /cvsroot/todo-manager/todo-manager/optionsdialog.py,v retrieving revision 1.10 retrieving revision 1.11 diff -u -d -r1.10 -r1.11 --- optionsdialog.py 26 Apr 2003 22:20:24 -0000 1.10 +++ optionsdialog.py 4 May 2003 15:09:48 -0000 1.11 @@ -567,6 +567,6 @@ Label(self, text=_("File Options"), font=section_font).grid(row=3, sticky=W) frame = Frame(self) - Checkbutton(frame, text=_("Save backup files (for crash recovery)"), + Checkbutton(frame, text=_("Save backup files (for crash recovery)"), justify=LEFT, variable=self.savebackup).grid(row=0, column=0, sticky=W) frame.grid(row=4, ipadx=15, sticky=W) |
From: <cl...@us...> - 2003-05-02 04:36:42
|
Update of /cvsroot/todo-manager/todo-manager In directory sc8-pr-cvs1:/tmp/cvs-serv3189 Modified Files: main.py Log Message: Removed some unneaded file opening code. Index: main.py =================================================================== RCS file: /cvsroot/todo-manager/todo-manager/main.py,v retrieving revision 1.78 retrieving revision 1.79 diff -u -d -r1.78 -r1.79 --- main.py 27 Apr 2003 03:44:39 -0000 1.78 +++ main.py 2 May 2003 04:36:38 -0000 1.79 @@ -406,9 +406,7 @@ file.close() # Write the file - file = open(self.__tmpfile, 'w') - self.__save_file(self.__dup_task_list(), file) - file.close() + self.__ext_save_file(filename=self.__tmpfile) def __clear_tmpfile(self): if self.__tmpfile: @@ -483,9 +481,7 @@ file.close() # Write to the original - file = open(origfile, 'w') - self.__save_file(self.__dup_task_list(), file) - file.close() + self.__ext_save_file(filename=origfile) self.__current_file = origfile |
From: <cl...@us...> - 2003-05-02 03:56:35
|
Update of /cvsroot/todo-manager/todo-manager In directory sc8-pr-cvs1:/tmp/cvs-serv24165 Modified Files: plugin.py Log Message: If a plugin can't be loaded, the traceback and exception will be printed. This should help with debugging instead of just saying that it can't be loaded. Index: plugin.py =================================================================== RCS file: /cvsroot/todo-manager/todo-manager/plugin.py,v retrieving revision 1.8 retrieving revision 1.9 diff -u -d -r1.8 -r1.9 --- plugin.py 26 Apr 2003 22:08:13 -0000 1.8 +++ plugin.py 2 May 2003 03:56:32 -0000 1.9 @@ -7,7 +7,7 @@ # Architecture for loading plugins into ToDo Manager from __init__ import * -import os, imp +import os, imp, traceback import tdmcalls _ = get_translation('core') @@ -41,6 +41,7 @@ try: mod = imp.load_source(os.path.splitext(file)[0], file) except: + traceback.print_exc() print _("Unable to load plugin from file: %s" %file) return None |
From: <cl...@us...> - 2003-04-27 03:44:44
|
Update of /cvsroot/todo-manager/todo-manager In directory sc8-pr-cvs1:/tmp/cvs-serv9601 Modified Files: interface.py main.py Log Message: I've moved around the config loading/saving code. Now the config for the interface is loaded after the interface is fully initialized. All final modifications to the settings are now stored at the core's request. Index: interface.py =================================================================== RCS file: /cvsroot/todo-manager/todo-manager/interface.py,v retrieving revision 1.46 retrieving revision 1.47 diff -u -d -r1.46 -r1.47 --- interface.py 6 Apr 2003 20:03:38 -0000 1.46 +++ interface.py 27 Apr 2003 03:44:39 -0000 1.47 @@ -295,7 +295,6 @@ i = i + 1 - self.load_config() self._taskList.update() # So the controls are fully drawn @@ -650,8 +649,6 @@ def OnExit(self, event=None): # Tell the core that the interface is no longer in use if self._app.unbind_interface(self): - self.save_config() - # Destroy the main window self._master.quit() @@ -809,6 +806,9 @@ self.remove_plugin_menu_entry(menu, name) + elif command == "save_settings": + self.save_config() + def remove_plugin_menu_entry(self, menu, name): # The menu must be a plugin menu if not menu in (self._import_menu, self._export_menu, self._sorting_menu, @@ -967,8 +967,6 @@ # Change this back to an integer so everything else works peachy app.save_setting(CONF_SECTION, "sortandfilter", TRUE) - else: - app.save_setting(CONF_SECTION, "sortandfilter", FALSE) def save_config(self): app = self._app @@ -1009,6 +1007,8 @@ def post_init(self): """Actions that are executed after initialization""" + + self.load_config() self.OnSortingMethod() #------------------------------------------------------------------------------- Index: main.py =================================================================== RCS file: /cvsroot/todo-manager/todo-manager/main.py,v retrieving revision 1.77 retrieving revision 1.78 diff -u -d -r1.77 -r1.78 --- main.py 26 Apr 2003 22:19:08 -0000 1.77 +++ main.py 27 Apr 2003 03:44:39 -0000 1.78 @@ -724,6 +724,7 @@ # If cancel was selected then stop if self.ask_save_curfile(interface) == -1: return FALSE + self.interface_call(interface, "save_settings") self.interface_call(interface, "clear_list_items") self.interface_call(interface, "update_list_groups", []) self.__interfaces.remove(interface) |
From: <cl...@us...> - 2003-04-27 01:15:27
|
Update of /cvsroot/todo-manager/todo-manager/docs In directory sc8-pr-cvs1:/tmp/cvs-serv28700 Modified Files: introduction.html Log Message: It should be here too. Index: introduction.html =================================================================== RCS file: /cvsroot/todo-manager/todo-manager/docs/introduction.html,v retrieving revision 1.3 retrieving revision 1.4 diff -u -d -r1.3 -r1.4 --- introduction.html 3 Oct 2002 15:48:20 -0000 1.3 +++ introduction.html 27 Apr 2003 01:15:24 -0000 1.4 @@ -209,6 +209,7 @@ <li>--version, -v : display the version number and exit</li> <li>-N : start with a new file instead of loading default.tmf</li> <li>-I : disable configure information.</li> + <li>-P : Do not load any plugins.</li> <li>ToDo Manager file (*.tmf) : load the file (i.e. "python todo-manager.py my_tasks.tmf")</li> </ul> <p align="right"><a href="#top">top ^</a></p> |
From: <cl...@us...> - 2003-04-27 00:32:53
|
Update of /cvsroot/todo-manager/todo-manager In directory sc8-pr-cvs1:/tmp/cvs-serv2560 Modified Files: ChangeLog.txt Log Message: I forgot to tell eveyone that I added a new command-line switch to disable plugin loading. So yeah, it's -P just so you know. Index: ChangeLog.txt =================================================================== RCS file: /cvsroot/todo-manager/todo-manager/ChangeLog.txt,v retrieving revision 1.40 retrieving revision 1.41 diff -u -d -r1.40 -r1.41 --- ChangeLog.txt 24 Mar 2003 02:39:12 -0000 1.40 +++ ChangeLog.txt 27 Apr 2003 00:32:46 -0000 1.41 @@ -5,6 +5,7 @@ user's (.)todo-manager directory for crash recovery - The user will be prompted if they want to restore the original file from the backup copy + * New command-line option that dissables plugin loading (-P) Version 0.70.2 (03/16/2003): * Groups with multilingual characters no longer cause an exception |
From: <cl...@us...> - 2003-04-26 22:20:29
|
Update of /cvsroot/todo-manager/todo-manager In directory sc8-pr-cvs1:/tmp/cvs-serv1094 Modified Files: optionsdialog.py Log Message: If the list was blank, an error occured when the listbox was clicked Index: optionsdialog.py =================================================================== RCS file: /cvsroot/todo-manager/todo-manager/optionsdialog.py,v retrieving revision 1.9 retrieving revision 1.10 diff -u -d -r1.9 -r1.10 --- optionsdialog.py 11 Mar 2003 03:41:40 -0000 1.9 +++ optionsdialog.py 26 Apr 2003 22:20:24 -0000 1.10 @@ -450,7 +450,12 @@ plglist.insert(END, p['name']) def __OnSelectPlugin(self, event): - i = int(event.widget.curselection()[0]) + cs = event.widget.curselection() + if not cs: + # If there is no selection, then just stop + return + + i = int(cs[0]) p = self.plugins[i] # Set the state to normal so text can be added |
From: <cl...@us...> - 2003-04-26 22:19:16
|
Update of /cvsroot/todo-manager/todo-manager In directory sc8-pr-cvs1:/tmp/cvs-serv675 Modified Files: main.py Log Message: There was a small bug here when the user opted to not load plugins Index: main.py =================================================================== RCS file: /cvsroot/todo-manager/todo-manager/main.py,v retrieving revision 1.76 retrieving revision 1.77 diff -u -d -r1.76 -r1.77 --- main.py 26 Apr 2003 22:08:13 -0000 1.76 +++ main.py 26 Apr 2003 22:19:08 -0000 1.77 @@ -858,9 +858,10 @@ def get_plugin_info(self): """Return information on all available plugins""" + new_plgs = [] # Holds the cleaned plugins + if self.get_setting("Core", "loadplugins", TRUE) and _load_plugins: plgs = plugin._loaded_plugins - new_plgs = [] for p in plgs: a = p.copy() |
From: <cl...@us...> - 2003-04-26 22:08:17
|
Update of /cvsroot/todo-manager/todo-manager In directory sc8-pr-cvs1:/tmp/cvs-serv28631 Modified Files: TODO.txt main.py plugin.py Log Message: TODO.txt: Removed 'Select which plugins to load' because it just became impractical main.py: Consolodation of plugin funtions and interface notification plugin.py: No more crashing when loading a plugin that is written poorly or has a syntax error. Added i18n support so debug prints can be multilingual po/core/POTFILES.in: Added plugin.py Index: TODO.txt =================================================================== RCS file: /cvsroot/todo-manager/todo-manager/TODO.txt,v retrieving revision 1.16 retrieving revision 1.17 diff -u -d -r1.16 -r1.17 --- TODO.txt 8 Mar 2003 07:28:57 -0000 1.16 +++ TODO.txt 26 Apr 2003 22:08:13 -0000 1.17 @@ -3,7 +3,6 @@ Version 1.0: ------------ Core: - * Select which plugins to load * Recurring tasks (daily, weekly, monthly, yearly) Interface: Index: main.py =================================================================== RCS file: /cvsroot/todo-manager/todo-manager/main.py,v retrieving revision 1.75 retrieving revision 1.76 diff -u -d -r1.75 -r1.76 --- main.py 26 Apr 2003 20:19:58 -0000 1.75 +++ main.py 26 Apr 2003 22:08:13 -0000 1.76 @@ -49,6 +49,7 @@ _new_file = FALSE _load_file = None _load_config = TRUE +_load_plugins = TRUE help_file = os.path.join(get_root_directory(), 'docs', 'index.html') @@ -94,7 +95,7 @@ if _load_config: self.__load_config() - if self.get_setting("Core", "loadplugins", TRUE): + if self.get_setting("Core", "loadplugins", TRUE) and _load_plugins: # Get the plugins in the root directory plgs = [os.path.join(get_root_directory(), 'plugins')] @@ -704,17 +705,10 @@ self.interface_call(interface, "update_list_groups", self.__get_task_groups()) # Plugins that are loaded - if self.get_setting("Core", "loadplugins", TRUE): - for p in plugin._loaded_plugins: - a = p.copy() - del a['function'] - - # If it's a sorting or filter plugin don't pass the plugin value - # The interface should call 'set_ui_sorting_filter' instead - if (a['type'] == "task_sorting") or (a['type'] == "task_filter"): - del a['value'] + plgs = self.get_plugin_info() - self.interface_call(interface, "add_plugin", a) + for p in plgs: + self.interface_call(interface, "add_plugin", p) # The interface was bound successfully return TRUE @@ -864,18 +858,20 @@ def get_plugin_info(self): """Return information on all available plugins""" - # Get the plugins in the root directory - paths = [os.path.join(get_root_directory(), 'plugins')] + if self.get_setting("Core", "loadplugins", TRUE) and _load_plugins: + plgs = plugin._loaded_plugins + new_plgs = [] - # Get plugins from the user's directory - if get_user_directory() != get_root_directory(): - paths.append(os.path.join(get_user_directory(), 'plugins')) + for p in plgs: + a = p.copy() + del a['function'] - new_plgs = plugin.get_all_plugins(paths) + # If it's a sorting or filter plugin don't pass the plugin value + # The interface should call 'set_ui_sorting_filter' instead + if (a['type'] == "task_sorting") or (a['type'] == "task_filter"): + del a['value'] - # Remove function references - for p in new_plgs: - del p['function'] + new_plgs.append(a) return new_plgs @@ -1106,6 +1102,7 @@ OPTIONS: -N\t\t\t:Startup with a new blank file. -I\t\t\t:Don't load the configuration file. + -P\t\t\t:Don't load plugins. --help, -h\t\t:Display this text and exit. --version, -v\t\t:Display the version number and exit. """) @@ -1113,7 +1110,7 @@ # The wheels on the bus go round and round def parse_args(args): # Parsing the command arguments - global _load_file, _load_config, _new_file + global _load_file, _load_config, _load_plugins, _new_file for arg in args: if arg == "--help": @@ -1131,8 +1128,9 @@ elif a == "v": print "%s - %s" %(appname, version) return FALSE - elif a == "N": _new_file = not _new_file - elif a == "I": _load_config = not _load_config + elif a == 'N': _new_file = not _new_file + elif a == 'I': _load_config = not _load_config + elif a == 'P': _load_plugins = not _load_plugins elif os.path.isfile(arg): arg = os.path.join(os.getcwd(), arg) _load_file = arg Index: plugin.py =================================================================== RCS file: /cvsroot/todo-manager/todo-manager/plugin.py,v retrieving revision 1.7 retrieving revision 1.8 diff -u -d -r1.7 -r1.8 --- plugin.py 18 Dec 2002 21:29:17 -0000 1.7 +++ plugin.py 26 Apr 2003 22:08:13 -0000 1.8 @@ -6,9 +6,12 @@ # # Architecture for loading plugins into ToDo Manager +from __init__ import * import os, imp import tdmcalls +_ = get_translation('core') + plugin_module = None # This holds all of the plugins that are loaded @@ -35,7 +38,11 @@ # Plugin functions def get_plugin_from_file(file): - mod = imp.load_source(os.path.splitext(file)[0], file) + try: + mod = imp.load_source(os.path.splitext(file)[0], file) + except: + print _("Unable to load plugin from file: %s" %file) + return None # If the plugin_module is set, then tell the new plugin if plugin_module: |
From: <cl...@us...> - 2003-04-26 22:08:17
|
Update of /cvsroot/todo-manager/todo-manager/po/core In directory sc8-pr-cvs1:/tmp/cvs-serv28631/po/core Modified Files: POTFILES.in Log Message: TODO.txt: Removed 'Select which plugins to load' because it just became impractical main.py: Consolodation of plugin funtions and interface notification plugin.py: No more crashing when loading a plugin that is written poorly or has a syntax error. Added i18n support so debug prints can be multilingual po/core/POTFILES.in: Added plugin.py Index: POTFILES.in =================================================================== RCS file: /cvsroot/todo-manager/todo-manager/po/core/POTFILES.in,v retrieving revision 1.1 retrieving revision 1.2 diff -u -d -r1.1 -r1.2 --- POTFILES.in 12 Aug 2002 18:40:54 -0000 1.1 +++ POTFILES.in 26 Apr 2003 22:08:14 -0000 1.2 @@ -1 +1,2 @@ main.py +plugin.py |
From: <cl...@us...> - 2003-04-26 20:20:07
|
Update of /cvsroot/todo-manager/todo-manager In directory sc8-pr-cvs1:/tmp/cvs-serv22270 Modified Files: main.py Log Message: Eugene Rimsky suggested that file.write(..., 'w') be changed to 'wb'. It doesn't seem to hurt anything and supposedly it helps with endline chars on various OSes. So here it is, a one character addition. Index: main.py =================================================================== RCS file: /cvsroot/todo-manager/todo-manager/main.py,v retrieving revision 1.74 retrieving revision 1.75 diff -u -d -r1.74 -r1.75 --- main.py 6 Apr 2003 19:30:59 -0000 1.74 +++ main.py 26 Apr 2003 20:19:58 -0000 1.75 @@ -347,7 +347,7 @@ filename = "%s%s" %(filename, ext[1:]) try: - file = open(filename, 'w') + file = open(filename, 'wb') except IOError: self.interface_call(ui, "display_error", _("File Error"), _("The file can't be written. You may not be permitted to write to the drive.")) |
From: <cl...@us...> - 2003-04-06 20:03:41
|
Update of /cvsroot/todo-manager/todo-manager In directory sc8-pr-cvs1:/tmp/cvs-serv5677 Modified Files: interface.py Log Message: It shouldn't assume that setting a task as `Finished` means that the change will always be successful. Index: interface.py =================================================================== RCS file: /cvsroot/todo-manager/todo-manager/interface.py,v retrieving revision 1.45 retrieving revision 1.46 diff -u -d -r1.45 -r1.46 --- interface.py 24 Mar 2003 02:10:05 -0000 1.45 +++ interface.py 6 Apr 2003 20:03:38 -0000 1.46 @@ -556,7 +556,9 @@ finished = self._app.get_task_value(name, "Finished") self._app.set_task_value(name, "Finished", not finished, ui=self) - self._finished['text'] = _((N_("Finished"), N_("Not Finished"))[not finished]) + + ret = self._app.get_task_value(name, "Finished") + self._finished['text'] = _((N_("Finished"), N_("Not Finished"))[ret]) self.OnSortingMethod() def OnClearFields(self, event=None): |
From: <cl...@us...> - 2003-04-06 19:31:03
|
Update of /cvsroot/todo-manager/todo-manager In directory sc8-pr-cvs1:/tmp/cvs-serv22097 Modified Files: main.py Log Message: Some basic code restructuring like moving interface calls to the end of functions instead of just sticking them into the middle of functions. There is also a bug fix for a minor flaw in set_task_value where the `Finished` flag could be set while `Disable Finish` was active. Index: main.py =================================================================== RCS file: /cvsroot/todo-manager/todo-manager/main.py,v retrieving revision 1.73 retrieving revision 1.74 diff -u -d -r1.73 -r1.74 --- main.py 24 Mar 2003 02:39:13 -0000 1.73 +++ main.py 6 Apr 2003 19:30:59 -0000 1.74 @@ -151,25 +151,25 @@ self.__tasks.append(task) - # Tell the interfaces that there is a new item - self.interface_call(ALL, "insert_list_item", name) - self.__save_tmpfile() self.__file_modified = TRUE + # Tell the interfaces that there is a new item + self.interface_call(ALL, "insert_list_item", name) + return TRUE + # The interfaces should call this. They should never has plain access to the tasks. def set_task_value(self, name, key, value, ui=None): """Set a value of a task. The first argument is the task name, second is the setting key, and the last one is the value that the key is set to.""" name = unicode_to_utf8(name) - value = unicode_to_utf8(value) + value = unicode_to_utf8(value) timefmt = self.get_setting("Core", "timeformat", '') - # The interfaces should call this. They should never has plain access to the tasks. found = FALSE for t in self.__tasks: if t["Name"] == name: @@ -179,20 +179,23 @@ # Error checking if the task doesn't exist if not found: return FALSE - if t.has_key(key): + if t.has_key(key) and value != None: if key == "Priority": value = int(value) if value < 1: value = 1 elif value > 5: value = 5 - elif key == "Finished" and not t["DisableFinish"]: - value = int(value) - ft = ("", curtime())[value] - t["FinishedDate"] = ft - elif key == "DisableFinish" and value: + elif key == "Finished": + if not t["DisableFinish"]: + value = int(value) + ft = ("", curtime())[value] + t["FinishedDate"] = ft + else: value = FALSE + elif key == "DisableFinish": value = int(value) - t["DueDate"] = "" - t["Finished"] = FALSE - t["FinishedDate"] = "" + if value == TRUE: + t["DueDate"] = "" + t["Finished"] = FALSE + t["FinishedDate"] = "" elif key == "DueDate" and value: # Check the format of the due date that the user has entered value = check_time_values(strptime(timefmt, value)) @@ -202,24 +205,20 @@ "is not in the correct format.\nThe format is %s") %self.fmttime(curtime())) return FALSE 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() + # Split multiple groups into a list + x = value.split(',') - # Remove invalid groups - if 'ALL' in x: x.remove('ALL') - if '' in x: x.remove('') + # 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() - x.sort() - value = x + # Remove invalid groups + if 'ALL' in x: x.remove('ALL') + if '' in x: x.remove('') - else: - value = [] + x.sort() + value = x t[key] = value @@ -287,13 +286,15 @@ for t in self.__tasks: 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.__save_tmpfile() self.__file_modified = TRUE + self.interface_call(ALL, "remove_list_item", name) + self.interface_call(ALL, "update_list_groups", self.__get_task_groups()) + + return TRUE return FALSE @@ -837,6 +838,9 @@ found = TRUE break + # If the plugin wasn't found then just return + if not found: return + if kw.has_key("tasks"): # Get the tasks that the user wants to use new_tasks = [] @@ -846,9 +850,6 @@ new_tasks.append(t) else: new_tasks = self.__dup_task_list() - - # If the plugin wasn't found then just return - if not found: return if p['type'] == 'file_import': self.__ext_load_file(func=p['function'], desc=p['name'], ext=p['format'], ui=ui) |
From: <cl...@us...> - 2003-03-24 02:39:19
|
Update of /cvsroot/todo-manager/todo-manager In directory sc8-pr-cvs1:/tmp/cvs-serv16881 Modified Files: ChangeLog.txt main.py Log Message: The user will now be told when there is a backup file that can be used to restore changes to a file that was open when the app crashed. A dialog box will also be displayed when the original file is newer than the backup. Index: ChangeLog.txt =================================================================== RCS file: /cvsroot/todo-manager/todo-manager/ChangeLog.txt,v retrieving revision 1.39 retrieving revision 1.40 diff -u -d -r1.39 -r1.40 --- ChangeLog.txt 16 Mar 2003 19:58:20 -0000 1.39 +++ ChangeLog.txt 24 Mar 2003 02:39:12 -0000 1.40 @@ -3,6 +3,8 @@ latest: * Added an option that saves a backup of the current task list in the user's (.)todo-manager directory for crash recovery + - The user will be prompted if they want to restore the original file + from the backup copy Version 0.70.2 (03/16/2003): * Groups with multilingual characters no longer cause an exception Index: main.py =================================================================== RCS file: /cvsroot/todo-manager/todo-manager/main.py,v retrieving revision 1.72 retrieving revision 1.73 diff -u -d -r1.72 -r1.73 --- main.py 11 Mar 2003 03:41:40 -0000 1.72 +++ main.py 24 Mar 2003 02:39:13 -0000 1.73 @@ -120,6 +120,9 @@ self.__current_file = self.__default_file = os.path.join(userdir, 'default.tmf') self.__file_modified = TRUE + # Keep track if a temp file was found + self.__found_tmpfile = self.__locate_tmpfile() + def __create_new_task(self, name=""): task = { "Name": name, @@ -390,8 +393,15 @@ if self.get_setting("Core", "savebackup", FALSE): if not self.__tmpfile: # Generate a temp filename - tmp = "tmp%d.tmf" %int(time.time()) - self.__tmpfile = os.path.join(get_user_directory(), tmp) + dat = os.path.join(get_user_directory(), "tmp%d" %int(time.time())) + self.__tmpfile = "%s.tmf" %dat + + # Write the data file. This stores extra info about the backup + file = open(dat, 'w') + # Write the filename + curfile = ("None\n", "%s\n" %self.__current_file)[self.__current_file != None] + file.write(curfile) + file.close() # Write the file file = open(self.__tmpfile, 'w') @@ -403,8 +413,80 @@ if os.path.isfile(self.__tmpfile): # Remove the file os.remove(self.__tmpfile) + # Remove the data file + os.remove(os.path.splitext(self.__tmpfile)[0]) self.__tmpfile = None + def __locate_tmpfile(self): + # The list that is returned after the scan + # Name of file, Name of backup, recently modified + retlist = [] + + # Get a list of all files in the directory + l = os.listdir(get_user_directory()) + + # This should ask the user if they want to restore all tmp files found + for f in l: + # Find the temp data file + if f[:3] == 'tmp' and not os.path.splitext(f)[1]: + # Get the name of the file + tmpfile = os.path.join(get_user_directory(), f) + file = open(tmpfile, 'r') + # Read the source filename from this file + origfile = file.read().strip() + file.close() + + # Make sure the files still exists + tmpfile = tmpfile + '.tmf' # add the extension + if os.path.isfile(origfile) and os.path.isfile(tmpfile): + # Compare modification times + # If the original has been modified then don't prompt for a restore + ofm = os.path.getmtime(origfile) + bfm = os.path.getmtime(tmpfile) + + # Add the items to the list + retlist.append([origfile, tmpfile, bfm > ofm]) + + return retlist + + def __prompt_tmpfile(self, ui): + for f in self.__found_tmpfile: + i = 0 + if f[2]: + i = self.interface_call(ui, "ask_yes_no", _("Restore Backup File"), + _("A backup of the file %s was found. Would you like to recover all "\ + "changes for this file?") %f[0]) + + # If the user responded "yes" then restore the file + if i: self.__restore_tmpfile(f[1], f[0]) + + else: + i = not self.interface_call(ui, "ask_yes_no", _("Backup File Warning"), + _("A backup file for %s was found at %s but cannot be restored because "\ + "the original file has been modified since the backup file was created. "\ + "would you like to preserve the backup file anyway?") %(f[0], f[1])) + + # Delete the tmp files + if i: + os.remove(os.path.splitext(f[1])[0]) + os.remove(f[1]) + + # Set this back to a blank list so it isn't given to other ui's + self.__found_tmpfile = [] + + def __restore_tmpfile(self, tmpfile, origfile): + # Read the backup + file = open(tmpfile, 'r') + self.__load_file(file) + file.close() + + # Write to the original + file = open(origfile, 'w') + self.__save_file(self.__dup_task_list(), file) + file.close() + + self.__current_file = origfile + def do_file_open(self, filename=None, ui=None): self.__ext_load_file(filename=filename, ui=ui) @@ -601,6 +683,9 @@ if not interface in self.__interfaces: self.__interfaces.append(interface) + + # If a temp file was found then tell the first interface + self.__prompt_tmpfile(interface) # Tell the interface a few things it should know |
From: <cl...@us...> - 2003-03-24 02:10:12
|
Update of /cvsroot/todo-manager/todo-manager In directory sc8-pr-cvs1:/tmp/cvs-serv7831 Modified Files: interface.py Log Message: Support for a new call: ask_yes_no for simple questions about stuff Index: interface.py =================================================================== RCS file: /cvsroot/todo-manager/todo-manager/interface.py,v retrieving revision 1.44 retrieving revision 1.45 diff -u -d -r1.44 -r1.45 --- interface.py 20 Mar 2003 00:23:43 -0000 1.44 +++ interface.py 24 Mar 2003 02:10:05 -0000 1.45 @@ -699,6 +699,9 @@ return askopenfilename(filetypes=[(args[0], args[1])], initialdir=self.__curdir) elif command == "file_saveas_prompt": return asksaveasfilename(filetypes=[(args[0], args[1])], initialdir=self.__curdir) + elif command == "ask_yes_no": + m = tkMessageBox.askquestion(args[0], args[1]) + return {'yes': 1, 'no': 0}[m] elif command == "ask_yes_no_cancel": m = tkMessageBox.Message(title=args[0], message=args[1], icon=tkMessageBox.QUESTION, type=tkMessageBox.YESNOCANCEL, master=self._master) |
From: <cl...@us...> - 2003-03-20 00:23:47
|
Update of /cvsroot/todo-manager/todo-manager In directory sc8-pr-cvs1:/tmp/cvs-serv8688 Modified Files: interface.py Log Message: Somebody reported that creating a new file, adding a task, exiting the app, clicking cancel at the "save file" prompt and then opening the options dialog and closing it caused an error. This was because the interface was saving all of it's options out and was expecting to exit. This small change fixes it by moving the call to save the options until after the interface is closed. Index: interface.py =================================================================== RCS file: /cvsroot/todo-manager/todo-manager/interface.py,v retrieving revision 1.43 retrieving revision 1.44 diff -u -d -r1.43 -r1.44 --- interface.py 14 Mar 2003 23:50:38 -0000 1.43 +++ interface.py 20 Mar 2003 00:23:43 -0000 1.44 @@ -646,9 +646,11 @@ self._app.set_ui_sorting_filter(self, s, f, self.__current_group) def OnExit(self, event=None): - self.save_config() - + # Tell the core that the interface is no longer in use if self._app.unbind_interface(self): + self.save_config() + + # Destroy the main window self._master.quit() def draw_priority_box(self, canvas, row, column, x, y, tag): |
From: <cl...@us...> - 2003-03-16 19:58:23
|
Update of /cvsroot/todo-manager/todo-manager In directory sc8-pr-cvs1:/tmp/cvs-serv21849 Modified Files: ChangeLog.txt Log Message: Version 0.70.2 Index: ChangeLog.txt =================================================================== RCS file: /cvsroot/todo-manager/todo-manager/ChangeLog.txt,v retrieving revision 1.38 retrieving revision 1.39 diff -u -d -r1.38 -r1.39 --- ChangeLog.txt 11 Mar 2003 03:41:40 -0000 1.38 +++ ChangeLog.txt 16 Mar 2003 19:58:20 -0000 1.39 @@ -4,6 +4,11 @@ * Added an option that saves a backup of the current task list in the user's (.)todo-manager directory for crash recovery +Version 0.70.2 (03/16/2003): + * Groups with multilingual characters no longer cause an exception + * Modifying the task list with group filtering on will no longer cause all + tasks to be shown + Version 0.70.1 (03/08/2003): * Task group listings are now correct after opening a file |
From: <cl...@us...> - 2003-03-16 18:46:43
|
Update of /cvsroot/todo-manager/todo-manager In directory sc8-pr-cvs1:/tmp/cvs-serv24695 Modified Files: Tag: branch-0_70 ChangeLog.txt Log Message: Tonight, we launch Index: ChangeLog.txt =================================================================== RCS file: /cvsroot/todo-manager/todo-manager/ChangeLog.txt,v retrieving revision 1.35.2.6 retrieving revision 1.35.2.7 diff -u -d -r1.35.2.6 -r1.35.2.7 --- ChangeLog.txt 14 Mar 2003 17:57:45 -0000 1.35.2.6 +++ ChangeLog.txt 16 Mar 2003 18:46:36 -0000 1.35.2.7 @@ -1,6 +1,6 @@ ToDo Manager Change Log -Version 0.70.2: +Version 0.70.2 (03/16/2003): * Groups with multilingual characters no longer cause an exception * Modifying the task list with group filtering on will no longer cause all tasks to be shown |
From: Eric H. - M. <eho...@da...> - 2003-03-16 06:13:58
|
I am interested in a having a method for entering time spent on tasks. This data entry would be mostly done off line and perhaps aggregated with data from a Palm Pilots (but perhaps not). In other words I am interested in creating import/export plugins for this data. I have considered a number of the time tracking applications on source forge, but none of them has exactly what I am looking for and if I was to alter anything I want it to be both cross platform and in Python :}. It seems to me that To-Do manager is very close to what I need with the exception that I want to record sessions working on tasks rather than to-do items themselves. Even the categories are similar, in my case I want the categories to be fixed (by me) and more extensive than what comes TO-DO Manager but the concept is almost identical. Although I have done a fair amount of python programming, I have done no GUI programming. My first thought was to take To-Do Manager and then hack it into what I wanted. On looking at the python I realize that it is much more complex (in good ways e.g. internationalization, plug in architecture) than what I had thought of dealing with. I also tumbled to the realized as I looked through the code and played with the application that each to-do items turn into a number of work session each of which has times, miles and expenses (data of interest to me) and so even though I do not want to deal with the complexity of that connection now, I am thinking that adding the time on tasks in a way that would allow them to be joined at some later time would be a benefit. As I contemplate the feasibility of doing this, I am wondering if you would have any suggestions on how to cleanly add these features to TO-DO Manager. I notice: self.__interfaces = [] # Multiple interface bindings, I've gone mad Is this where you would start or would you suggest adding a "view work sessions" option on the view menu and then alter self.update_list(). I guess it is clear to you that the purpose of __interfaces is not clear to me. Would you think that another file for this new data would be optimal or would you suggest creating another set of tags [work_session], [end_work_session] and leaving all the data in one place. Would the project be interested in having these kind of features in the CVS tree? Sincerely Eric Howland |