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: Patching R \(Comp\) <051...@gl...> - 2006-10-09 11:20:48
|
Is Todo Manager still being developed? I have written an XML plugin plus partial functionality that can be updated and synchronised via a web interface. This was mainly to facilitate when working with a team that may be spread across different locations.=20 I don't know whether to fork this off into another project? Or whether to update the existing project (of which I can't get hold of the developers). I would be happy to maintain this application as it is. Does anyone know how to get hold of the developers? |
From: amores p. <lif...@ho...> - 2006-01-05 19:02:44
|
I just posted a fix on the sourceforge patch list for todo-manager, to fix the date parsing bug that causes it to crash as soon as any task is finished. (My guess is that old versions of python did not check the strftime parameters thoroughly enough to catch this bug -- as an explanation of how this software ever worked at all.) Cordially, Perry |
From: <cl...@us...> - 2003-11-22 14:17:35
|
Update of /cvsroot/todo-manager/todo-manager In directory sc8-pr-cvs1:/tmp/cvs-serv25844 Modified Files: ChangeLog.txt Log Message: Changes for 0.75.1 Index: ChangeLog.txt =================================================================== RCS file: /cvsroot/todo-manager/todo-manager/ChangeLog.txt,v retrieving revision 1.46 retrieving revision 1.47 diff -u -d -r1.46 -r1.47 --- ChangeLog.txt 30 Sep 2003 10:48:11 -0000 1.46 +++ ChangeLog.txt 22 Nov 2003 14:16:51 -0000 1.47 @@ -1,5 +1,10 @@ ToDo Manager Change Log +Version 0.75.1(11/16/2003): + * Fixes a bug that would causes export plugins to crash + * Fixes a bug that would cause the task list to get corrupted after an + export plugin crashed + Version 0.75 (09/30/2003): * Added an option that saves a backup of the current task list in the user's (.)todo-manager directory for crash recovery |
From: <cl...@us...> - 2003-11-16 18:30:54
|
Update of /cvsroot/todo-manager/todo-manager/i18n In directory sc8-pr-cvs1:/tmp/cvs-serv6550/i18n Modified Files: Tag: branch-0_75 msgfmt.py pygettext.py Log Message: Updated scripts Index: msgfmt.py =================================================================== RCS file: /cvsroot/todo-manager/todo-manager/i18n/msgfmt.py,v retrieving revision 1.1 retrieving revision 1.1.10.1 diff -u -d -r1.1 -r1.1.10.1 --- msgfmt.py 12 Aug 2002 18:34:39 -0000 1.1 +++ msgfmt.py 16 Nov 2003 18:30:13 -0000 1.1.10.1 @@ -1,5 +1,5 @@ #! /usr/bin/env python - +# -*- coding: iso-8859-1 -*- # Written by Martin v. Löwis <lo...@in...> """Generate binary message catalog from textual translation description. @@ -36,6 +36,7 @@ MESSAGES = {} + def usage(code, msg=''): print >> sys.stderr, __doc__ if msg: @@ -43,6 +44,7 @@ sys.exit(code) + def add(id, str, fuzzy): "Add a non-fuzzy translation to the dictionary." global MESSAGES @@ -50,6 +52,7 @@ MESSAGES[id] = str + def generate(): "Return the generated output." global MESSAGES @@ -79,8 +82,8 @@ koffsets += [l1, o1+keystart] voffsets += [l2, o2+valuestart] offsets = koffsets + voffsets - output = struct.pack("iiiiiii", - 0x950412de, # Magic + output = struct.pack("Iiiiiii", + 0x950412deL, # Magic 0, # Version len(keys), # # of entries 7*4, # start of key index @@ -92,6 +95,7 @@ return output + def make(filename, outfile): ID = 1 STR = 2 @@ -167,6 +171,7 @@ print >> sys.stderr, msg + def main(): try: opts, args = getopt.getopt(sys.argv[1:], 'hVo:', Index: pygettext.py =================================================================== RCS file: /cvsroot/todo-manager/todo-manager/i18n/pygettext.py,v retrieving revision 1.1 retrieving revision 1.1.10.1 diff -u -d -r1.1 -r1.1.10.1 --- pygettext.py 12 Aug 2002 18:34:39 -0000 1.1 +++ pygettext.py 16 Nov 2003 18:30:14 -0000 1.1.10.1 @@ -1,31 +1,49 @@ #! /usr/bin/env python +# -*- coding: iso-8859-1 -*- # Originally written by Barry Warsaw <ba...@zo...> # -# Minimally patched to make it even more xgettext compatible +# Minimally patched to make it even more xgettext compatible # by Peter Funk <pf...@ar...> +# +# 2002-11-22 Jürgen Hermann <jh...@we...> +# Added checks that _() only contains string literals, and +# command line args are resolved to module lists, i.e. you +# can now pass a filename, a module or package name, or a +# directory (including globbing chars, important for Win32). +# Made docstring fit in 80 chars wide displays using pydoc. +# -"""pygettext -- Python equivalent of xgettext(1) +# for selftesting +try: + import fintl + _ = fintl.gettext +except ImportError: + _ = lambda s: s + +__doc__ = _("""pygettext -- Python equivalent of xgettext(1) Many systems (Solaris, Linux, Gnu) provide extensive tools that ease the -internationalization of C programs. Most of these tools are independent of -the programming language and can be used from within Python programs. Martin -von Loewis' work[1] helps considerably in this regard. +internationalization of C programs. Most of these tools are independent of +the programming language and can be used from within Python programs. +Martin von Loewis' work[1] helps considerably in this regard. There's one problem though; xgettext is the program that scans source code -looking for message strings, but it groks only C (or C++). Python introduces -a few wrinkles, such as dual quoting characters, triple quoted strings, and -raw strings. xgettext understands none of this. +looking for message strings, but it groks only C (or C++). Python +introduces a few wrinkles, such as dual quoting characters, triple quoted +strings, and raw strings. xgettext understands none of this. -Enter pygettext, which uses Python's standard tokenize module to scan Python -source code, generating .pot files identical to what GNU xgettext[2] generates -for C and C++ code. From there, the standard GNU tools can be used. +Enter pygettext, which uses Python's standard tokenize module to scan +Python source code, generating .pot files identical to what GNU xgettext[2] +generates for C and C++ code. From there, the standard GNU tools can be +used. -A word about marking Python strings as candidates for translation. GNU -xgettext recognizes the following keywords: gettext, dgettext, dcgettext, and -gettext_noop. But those can be a lot of text to include all over your code. -C and C++ have a trick: they use the C preprocessor. Most internationalized C -source includes a #define for gettext() to _() so that what has to be written -in the source is much less. Thus these are both translatable strings: +A word about marking Python strings as candidates for translation. GNU +xgettext recognizes the following keywords: gettext, dgettext, dcgettext, +and gettext_noop. But those can be a lot of text to include all over your +code. C and C++ have a trick: they use the C preprocessor. Most +internationalized C source includes a #define for gettext() to _() so that +what has to be written in the source is much less. Thus these are both +translatable strings: gettext("Translatable String") _("Translatable String") @@ -37,11 +55,11 @@ [1] http://www.python.org/workshops/1997-10/proceedings/loewis.html [2] http://www.gnu.org/software/gettext/gettext.html -NOTE: pygettext attempts to be option and feature compatible with GNU xgettext -where ever possible. However some options are still missing or are not fully -implemented. Also, xgettext's use of command line switches with option -arguments is broken, and in these cases, pygettext just defines additional -switches. +NOTE: pygettext attempts to be option and feature compatible with GNU +xgettext where ever possible. However some options are still missing or are +not fully implemented. Also, xgettext's use of command line switches with +option arguments is broken, and in these cases, pygettext just defines +additional switches. Usage: pygettext [options] inputfile ... @@ -61,9 +79,9 @@ -D --docstrings - Extract module, class, method, and function docstrings. These do not - need to be wrapped in _() markers, and in fact cannot be for Python to - consider them docstrings. (See also the -X option). + Extract module, class, method, and function docstrings. These do + not need to be wrapped in _() markers, and in fact cannot be for + Python to consider them docstrings. (See also the -X option). -h --help @@ -135,23 +153,19 @@ conjunction with the -D option above. If `inputfile' is -, standard input is read. -""" +""") import os +import imp import sys +import glob import time import getopt +import token import tokenize import operator -# for selftesting -try: - import fintl - _ = fintl.gettext -except ImportError: - def _(s): return s - -__version__ = '1.4' +__version__ = '1.5' default_keywords = ['_'] DEFAULTKEYWORDS = ', '.join(default_keywords) @@ -159,6 +173,7 @@ EMPTYSTRING = '' + # The normal pot-file header. msgmerge and Emacs's po-mode work better if it's # there. pot_header = _('''\ @@ -180,13 +195,15 @@ ''') + def usage(code, msg=''): - print >> sys.stderr, _(__doc__) % globals() + print >> sys.stderr, __doc__ % globals() if msg: print >> sys.stderr, msg sys.exit(code) + escapes = [] def make_escapes(pass_iso8859): @@ -239,7 +256,100 @@ s = '""\n"' + lineterm.join(lines) + '"' return s + +def containsAny(str, set): + """Check whether 'str' contains ANY of the chars in 'set'""" + return 1 in [c in str for c in set] + + +def _visit_pyfiles(list, dirname, names): + """Helper for getFilesForName().""" + # get extension for python source files + if not globals().has_key('_py_ext'): + global _py_ext + _py_ext = [triple[0] for triple in imp.get_suffixes() + if triple[2] == imp.PY_SOURCE][0] + + # don't recurse into CVS directories + if 'CVS' in names: + names.remove('CVS') + + # add all *.py files to list + list.extend( + [os.path.join(dirname, file) for file in names + if os.path.splitext(file)[1] == _py_ext] + ) + + +def _get_modpkg_path(dotted_name, pathlist=None): + """Get the filesystem path for a module or a package. + + Return the file system path to a file for a module, and to a directory for + a package. Return None if the name is not found, or is a builtin or + extension module. + """ + # split off top-most name + parts = dotted_name.split('.', 1) + + if len(parts) > 1: + # we have a dotted path, import top-level package + try: + file, pathname, description = imp.find_module(parts[0], pathlist) + if file: file.close() + except ImportError: + return None + + # check if it's indeed a package + if description[2] == imp.PKG_DIRECTORY: + # recursively handle the remaining name parts + pathname = _get_modpkg_path(parts[1], [pathname]) + else: + pathname = None + else: + # plain name + try: + file, pathname, description = imp.find_module( + dotted_name, pathlist) + if file: + file.close() + if description[2] not in [imp.PY_SOURCE, imp.PKG_DIRECTORY]: + pathname = None + except ImportError: + pathname = None + + return pathname + + +def getFilesForName(name): + """Get a list of module files for a filename, a module or package name, + or a directory. + """ + if not os.path.exists(name): + # check for glob chars + if containsAny(name, "*?[]"): + files = glob.glob(name) + list = [] + for file in files: + list.extend(getFilesForName(file)) + return list + + # try to find module or package + name = _get_modpkg_path(name) + if not name: + return [] + + if os.path.isdir(name): + # find all python files in directory + list = [] + os.path.walk(name, _visit_pyfiles, list) + return list + elif os.path.exists(name): + # a single file + return [name] + + return [] + class TokenEater: def __init__(self, options): self.__options = options @@ -302,7 +412,7 @@ def __openseen(self, ttype, tstring, lineno): if ttype == tokenize.OP and tstring == ')': # We've seen the last of the translatable strings. Record the - # line number of the first line of the strings and update the list + # line number of the first line of the strings and update the list # of messages seen. Reset state for the next batch. If there # were no strings inside _(), then just ignore this entry. if self.__data: @@ -310,7 +420,17 @@ self.__state = self.__waiting elif ttype == tokenize.STRING: self.__data.append(safe_eval(tstring)) - # TBD: should we warn if we seen anything else? + elif ttype not in [tokenize.COMMENT, token.INDENT, token.DEDENT, + token.NEWLINE, tokenize.NL]: + # warn if we see anything else than STRING or whitespace + print >> sys.stderr, _( + '*** %(file)s:%(lineno)s: Seen unexpected token "%(token)s"' + ) % { + 'token': tstring, + 'file': self.__curfile, + 'lineno': self.__lineno + } + self.__state = self.__waiting def __addentry(self, msg, lineno=None, isdocstring=0): if lineno is None: @@ -381,6 +501,7 @@ print >> fp, 'msgstr ""\n' + def main(): global default_keywords try: @@ -490,6 +611,15 @@ else: options.toexclude = [] + # resolve args to module lists + expanded = [] + for arg in args: + if arg == '-': + expanded.append(arg) + else: + expanded.extend(getFilesForName(arg)) + args = expanded + # slurp through all the files eater = TokenEater(options) for filename in args: @@ -529,7 +659,11 @@ if closep: fp.close() + if __name__ == '__main__': main() # some more test strings _(u'a unicode string') + # this one creates a warning + _('*** Seen unexpected token "%(token)s"') % {'token': 'test'} + _('more' 'than' 'one' 'string') |
From: <cl...@us...> - 2003-11-16 18:30:30
|
Update of /cvsroot/todo-manager/todo-manager In directory sc8-pr-cvs1:/tmp/cvs-serv6481 Modified Files: Tag: branch-0_75 __init__.py Log Message: Version 0.75.1 Index: __init__.py =================================================================== RCS file: /cvsroot/todo-manager/todo-manager/__init__.py,v retrieving revision 1.6.10.1 retrieving revision 1.6.10.2 diff -u -d -r1.6.10.1 -r1.6.10.2 --- __init__.py 30 Sep 2003 22:50:30 -0000 1.6.10.1 +++ __init__.py 16 Nov 2003 18:29:47 -0000 1.6.10.2 @@ -5,7 +5,7 @@ # Author: Brian Bernas appname = "ToDo Manager" -version = "0.75" +version = "0.75.1" # Internationalization stuff # The people want translations and this is what they get |
From: <cl...@us...> - 2003-11-16 18:26:00
|
Update of /cvsroot/todo-manager/todo-manager In directory sc8-pr-cvs1:/tmp/cvs-serv5693 Modified Files: Tag: branch-0_75 ChangeLog.txt Log Message: Release Today Index: ChangeLog.txt =================================================================== RCS file: /cvsroot/todo-manager/todo-manager/ChangeLog.txt,v retrieving revision 1.46.2.1 retrieving revision 1.46.2.2 diff -u -d -r1.46.2.1 -r1.46.2.2 --- ChangeLog.txt 10 Nov 2003 23:11:20 -0000 1.46.2.1 +++ ChangeLog.txt 16 Nov 2003 18:25:08 -0000 1.46.2.2 @@ -1,6 +1,6 @@ ToDo Manager Change Log -Version 0.75.1: +Version 0.75.1(11/16/2003): * Fixes a bug that would causes export plugins to crash * Fixes a bug that would cause the task list to get corrupted after an export plugin crashed |
From: <cl...@us...> - 2003-11-10 23:11:24
|
Update of /cvsroot/todo-manager/todo-manager In directory sc8-pr-cvs1:/tmp/cvs-serv11307 Modified Files: Tag: branch-0_75 ChangeLog.txt main.py Log Message: Several fixes. Next release in a day or two. Index: ChangeLog.txt =================================================================== RCS file: /cvsroot/todo-manager/todo-manager/ChangeLog.txt,v retrieving revision 1.46 retrieving revision 1.46.2.1 diff -u -d -r1.46 -r1.46.2.1 --- ChangeLog.txt 30 Sep 2003 10:48:11 -0000 1.46 +++ ChangeLog.txt 10 Nov 2003 23:11:20 -0000 1.46.2.1 @@ -1,5 +1,10 @@ ToDo Manager Change Log +Version 0.75.1: + * Fixes a bug that would causes export plugins to crash + * Fixes a bug that would cause the task list to get corrupted after an + export plugin crashed + Version 0.75 (09/30/2003): * Added an option that saves a backup of the current task list in the user's (.)todo-manager directory for crash recovery Index: main.py =================================================================== RCS file: /cvsroot/todo-manager/todo-manager/main.py,v retrieving revision 1.84 retrieving revision 1.84.2.1 diff -u -d -r1.84 -r1.84.2.1 --- main.py 25 Sep 2003 20:35:47 -0000 1.84 +++ main.py 10 Nov 2003 23:11:20 -0000 1.84.2.1 @@ -843,7 +843,7 @@ for n in kw["tasks"]: for t in self.__tasks: if t["Name"] == n: - new_tasks.append(t) + new_tasks.append(t.copy()) else: new_tasks = self.__dup_task_list() @@ -851,6 +851,16 @@ self.__ext_load_file(func=p['function'], desc=p['name'], ext=p['format'], ui=ui) elif p['type'] == 'file_export': + # Convert the time structures into strings + for i in range(len(new_tasks)): + dd = new_tasks[i]["DueDate"] + fd = new_tasks[i]["FinishedDate"] + + if dd != '': + new_tasks[i]["DueDate"] = self.fmttime(dd) + if fd != '': + new_tasks[i]["FinishedDate"] = self.fmttime(fd) + self.__ext_save_file(func=p['function'], desc=p['name'], ext=p['format'], tasks=new_tasks, ui=ui) @@ -885,8 +895,7 @@ new_list = [] for task in list: - dup = task.copy() - new_list.append(dup) + new_list.append(task.copy()) return new_list |
From: <cl...@us...> - 2003-11-10 23:11:24
|
Update of /cvsroot/todo-manager/todo-manager/plugins In directory sc8-pr-cvs1:/tmp/cvs-serv11307/plugins Modified Files: Tag: branch-0_75 export_html.py export_text.py Log Message: Several fixes. Next release in a day or two. Index: export_html.py =================================================================== RCS file: /cvsroot/todo-manager/todo-manager/plugins/export_html.py,v retrieving revision 1.7 retrieving revision 1.7.2.1 diff -u -d -r1.7 -r1.7.2.1 --- export_html.py 25 Sep 2003 19:11:53 -0000 1.7 +++ export_html.py 10 Nov 2003 23:11:21 -0000 1.7.2.1 @@ -6,16 +6,13 @@ # # Export a task list to an HTML file -import time, re -import tdmcalls - # HTML format def save_html(tasks, file): """Save a task list to an HTML file with most of the formating present from the interface""" # Headers - file.write("<HTML>\n<HEAD>\n</HEAD>\n") - file.write("<BODY BGCOLOR=\"#FFFFFF\" TEXT=\"#000000\">\n") + file.write("<HTML>\n<HEAD>\n<META HTTP-EQUIV=\"Content-Type\" CONTENT=\"text/html; charset=UTF-8\">") + file.write("\n</HEAD>\n<BODY BGCOLOR=\"#FFFFFF\" TEXT=\"#000000\">\n") file.write("<CENTER><TABLE CELLSPACING=1 CELLPADDING=1 BORDER=0 WIDTH=650>\n") file.write("<TR BGCOLOR=\"#118CFF\"><TD WIDTH=10></TD><TD><U>Task Name</U></TD>"\ "<TD ALIGN=\"CENTER\" WIDTH=70><U>Due Date</U></TD><TD ALIGN=\"RIGHT\" WIDTH=130>"\ @@ -25,27 +22,15 @@ # Writing each node for task in tasks: - style = ("", "") - if task["DueDate"] and not task["Finished"]: - # Get the current time - t = time.time() - t = time.localtime(t) - - 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 = tdmcalls.fmttime + notes = task['Notes'].replace('\n', '<BR>') 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>"\ + " %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], - fmt(task["DueDate"]), fmt(task["FinishedDate"]), notes)) + %(pcolors[task["Priority"]], task["Priority"], task["Name"], + task["DueDate"], task["FinishedDate"], notes)) # Closing tags file.write("</TABLE></CENTER></BODY>\n</HTML>") @@ -53,7 +38,7 @@ def init(plugin): plugin['type'] = "file_export" plugin['name'] = "HTML File" - plugin['version'] = "0.4" + plugin['version'] = "0.5" plugin['function'] = save_html plugin['format'] = "*.html" plugin['description'] = """Export the task list to an HTML file.""" Index: export_text.py =================================================================== RCS file: /cvsroot/todo-manager/todo-manager/plugins/export_text.py,v retrieving revision 1.7 retrieving revision 1.7.2.1 diff -u -d -r1.7 -r1.7.2.1 --- export_text.py 25 Sep 2003 19:11:53 -0000 1.7 +++ export_text.py 10 Nov 2003 23:11:21 -0000 1.7.2.1 @@ -7,7 +7,6 @@ # Export a task list to a text file import string -import tdmcalls def save_text(tasks, file): """Save a task list to a plain text file with simple formating""" @@ -15,8 +14,8 @@ # The headers and what not file.write("TODO File\n\n") file.write(string.ljust("P", 3)) - file.write(string.ljust("Task Name", 50)) - file.write(string.ljust("Due Date", 10)) + file.write(string.ljust("Task Name", 40)) + file.write(string.ljust("Due Date", 12)) file.write(string.ljust("Finished Time", 18)) file.write('\n'+('-'*80)+'\n') @@ -24,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(tdmcalls.fmttime(task["DueDate"]), 10)) - file.write(string.ljust(tdmcalls.fmttime(task["FinishedDate"]), 18)) + file.write(string.ljust(task["DueDate"], 10)) + file.write(string.ljust(task["FinishedDate"], 18)) if task["Notes"]: file.write("\n note:%s" %task["Notes"]) file.write("\n\n") @@ -33,7 +32,7 @@ def init(plugin): plugin['type'] = "file_export" plugin['name'] = "Text File" - plugin['version'] = "0.2" + plugin['version'] = "0.3" plugin['function'] = save_text plugin['format'] = "*.txt" plugin['description'] = """Export the task list to a plain text file.""" |
From: <cl...@us...> - 2003-11-10 22:51:43
|
Update of /cvsroot/todo-manager/todo-manager In directory sc8-pr-cvs1:/tmp/cvs-serv7117 Modified Files: Tag: branch-0_75 tdmcalls.py Log Message: Merging a time coversion fix from the main branch Index: tdmcalls.py =================================================================== RCS file: /cvsroot/todo-manager/todo-manager/tdmcalls.py,v retrieving revision 1.23 retrieving revision 1.23.4.1 diff -u -d -r1.23 -r1.23.4.1 --- tdmcalls.py 13 Nov 2002 04:51:39 -0000 1.23 +++ tdmcalls.py 10 Nov 2003 22:51:39 -0000 1.23.4.1 @@ -162,9 +162,9 @@ def storetime(t): """Convert a tuple to the internal time storage format (YYYY-MM-DD hh:mm:ss)""" - if not t: return '' - x = check_time_values(t) + + if not x: return '' return time.strftime("%Y-%m-%d %H:%M:%S", x) |
From: <cl...@us...> - 2003-10-25 22:20:12
|
Update of /cvsroot/todo-manager/todo-manager/plugins In directory sc8-pr-cvs1:/tmp/cvs-serv15027/plugins Modified Files: export_html.py export_text.py Log Message: main.py: * Many clean-ups with plugin execution. * Duplicate task lists that are to passed to plugins are created correctly. * Date formats for export plugins are applied to all dates before being passed on. export_html.py, export_text.py: * Updated to work with the changes that were made to main.py * Cleaned up some code that wasn't working too well. This update was prompted by an email I recieved from Tom Churm that stated that HTML export no longer worked. Index: export_html.py =================================================================== RCS file: /cvsroot/todo-manager/todo-manager/plugins/export_html.py,v retrieving revision 1.7 retrieving revision 1.8 diff -u -d -r1.7 -r1.8 --- export_html.py 25 Sep 2003 19:11:53 -0000 1.7 +++ export_html.py 24 Oct 2003 00:13:17 -0000 1.8 @@ -6,9 +6,6 @@ # # Export a task list to an HTML file -import time, re -import tdmcalls - # HTML format def save_html(tasks, file): """Save a task list to an HTML file with most of the formating present from the interface""" @@ -25,27 +22,15 @@ # Writing each node for task in tasks: - style = ("", "") - if task["DueDate"] and not task["Finished"]: - # Get the current time - t = time.time() - t = time.localtime(t) - - 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 = tdmcalls.fmttime + notes = task['Notes'].replace('\n', '<BR>') 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>"\ + " %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], - fmt(task["DueDate"]), fmt(task["FinishedDate"]), notes)) + %(pcolors[task["Priority"]], task["Priority"], task["Name"], + task["DueDate"], task["FinishedDate"], notes)) # Closing tags file.write("</TABLE></CENTER></BODY>\n</HTML>") @@ -53,7 +38,7 @@ def init(plugin): plugin['type'] = "file_export" plugin['name'] = "HTML File" - plugin['version'] = "0.4" + plugin['version'] = "0.5" plugin['function'] = save_html plugin['format'] = "*.html" plugin['description'] = """Export the task list to an HTML file.""" Index: export_text.py =================================================================== RCS file: /cvsroot/todo-manager/todo-manager/plugins/export_text.py,v retrieving revision 1.7 retrieving revision 1.8 diff -u -d -r1.7 -r1.8 --- export_text.py 25 Sep 2003 19:11:53 -0000 1.7 +++ export_text.py 24 Oct 2003 00:13:17 -0000 1.8 @@ -7,7 +7,6 @@ # Export a task list to a text file import string -import tdmcalls def save_text(tasks, file): """Save a task list to a plain text file with simple formating""" @@ -15,8 +14,8 @@ # The headers and what not file.write("TODO File\n\n") file.write(string.ljust("P", 3)) - file.write(string.ljust("Task Name", 50)) - file.write(string.ljust("Due Date", 10)) + file.write(string.ljust("Task Name", 40)) + file.write(string.ljust("Due Date", 12)) file.write(string.ljust("Finished Time", 18)) file.write('\n'+('-'*80)+'\n') @@ -24,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(tdmcalls.fmttime(task["DueDate"]), 10)) - file.write(string.ljust(tdmcalls.fmttime(task["FinishedDate"]), 18)) + file.write(string.ljust(task["DueDate"], 10)) + file.write(string.ljust(task["FinishedDate"], 18)) if task["Notes"]: file.write("\n note:%s" %task["Notes"]) file.write("\n\n") @@ -33,7 +32,7 @@ def init(plugin): plugin['type'] = "file_export" plugin['name'] = "Text File" - plugin['version'] = "0.2" + plugin['version'] = "0.3" plugin['function'] = save_text plugin['format'] = "*.txt" plugin['description'] = """Export the task list to a plain text file.""" |
From: <cl...@us...> - 2003-10-24 10:59:02
|
Update of /cvsroot/todo-manager/todo-manager/plugins In directory sc8-pr-cvs1:/tmp/cvs-serv17377/plugins Modified Files: export_html.py Log Message: Tom Churm also suggested that I add a meta tag to html export so some browsers will correctly display uncommon characters like umlauts. Index: export_html.py =================================================================== RCS file: /cvsroot/todo-manager/todo-manager/plugins/export_html.py,v retrieving revision 1.8 retrieving revision 1.9 diff -u -d -r1.8 -r1.9 --- export_html.py 24 Oct 2003 00:13:17 -0000 1.8 +++ export_html.py 24 Oct 2003 00:27:52 -0000 1.9 @@ -11,8 +11,8 @@ """Save a task list to an HTML file with most of the formating present from the interface""" # Headers - file.write("<HTML>\n<HEAD>\n</HEAD>\n") - file.write("<BODY BGCOLOR=\"#FFFFFF\" TEXT=\"#000000\">\n") + file.write("<HTML>\n<HEAD>\n<META HTTP-EQUIV=\"Content-Type\" CONTENT=\"text/html; charset=UTF-8\">") + file.write("\n</HEAD>\n<BODY BGCOLOR=\"#FFFFFF\" TEXT=\"#000000\">\n") file.write("<CENTER><TABLE CELLSPACING=1 CELLPADDING=1 BORDER=0 WIDTH=650>\n") file.write("<TR BGCOLOR=\"#118CFF\"><TD WIDTH=10></TD><TD><U>Task Name</U></TD>"\ "<TD ALIGN=\"CENTER\" WIDTH=70><U>Due Date</U></TD><TD ALIGN=\"RIGHT\" WIDTH=130>"\ |
From: <cl...@us...> - 2003-10-24 02:36:02
|
Update of /cvsroot/todo-manager/todo-manager In directory sc8-pr-cvs1:/tmp/cvs-serv12430 Modified Files: tdmcalls.py Log Message: This should eliminate any weird time coversion errors, that in turn can caused currupted task files. Index: tdmcalls.py =================================================================== RCS file: /cvsroot/todo-manager/todo-manager/tdmcalls.py,v retrieving revision 1.23 retrieving revision 1.24 diff -u -d -r1.23 -r1.24 --- tdmcalls.py 13 Nov 2002 04:51:39 -0000 1.23 +++ tdmcalls.py 23 Oct 2003 23:54:03 -0000 1.24 @@ -162,9 +162,9 @@ def storetime(t): """Convert a tuple to the internal time storage format (YYYY-MM-DD hh:mm:ss)""" - if not t: return '' - x = check_time_values(t) + + if not x: return '' return time.strftime("%Y-%m-%d %H:%M:%S", x) |
From: <cl...@us...> - 2003-10-24 01:12:20
|
Update of /cvsroot/todo-manager/todo-manager In directory sc8-pr-cvs1:/tmp/cvs-serv15027 Modified Files: main.py Log Message: main.py: * Many clean-ups with plugin execution. * Duplicate task lists that are to passed to plugins are created correctly. * Date formats for export plugins are applied to all dates before being passed on. export_html.py, export_text.py: * Updated to work with the changes that were made to main.py * Cleaned up some code that wasn't working too well. This update was prompted by an email I recieved from Tom Churm that stated that HTML export no longer worked. Index: main.py =================================================================== RCS file: /cvsroot/todo-manager/todo-manager/main.py,v retrieving revision 1.84 retrieving revision 1.85 diff -u -d -r1.84 -r1.85 --- main.py 25 Sep 2003 20:35:47 -0000 1.84 +++ main.py 24 Oct 2003 00:13:17 -0000 1.85 @@ -843,7 +843,7 @@ for n in kw["tasks"]: for t in self.__tasks: if t["Name"] == n: - new_tasks.append(t) + new_tasks.append(t.copy()) else: new_tasks = self.__dup_task_list() @@ -851,6 +851,16 @@ self.__ext_load_file(func=p['function'], desc=p['name'], ext=p['format'], ui=ui) elif p['type'] == 'file_export': + # Convert the time structures into strings + for i in range(len(new_tasks)): + dd = new_tasks[i]["DueDate"] + fd = new_tasks[i]["FinishedDate"] + + if dd != '': + new_tasks[i]["DueDate"] = self.fmttime(dd) + if fd != '': + new_tasks[i]["FinishedDate"] = self.fmttime(fd) + self.__ext_save_file(func=p['function'], desc=p['name'], ext=p['format'], tasks=new_tasks, ui=ui) @@ -885,8 +895,7 @@ new_list = [] for task in list: - dup = task.copy() - new_list.append(dup) + new_list.append(task.copy()) return new_list |
From: <cl...@us...> - 2003-10-19 15:08:34
|
Update of /cvsroot/todo-manager/todo-manager/i18n In directory sc8-pr-cvs1:/tmp/cvs-serv19933 Modified Files: msgfmt.py pygettext.py Log Message: Updated msgfmt.py and pygettext.py from the Python source tree. This should improve translation checking and compiling and eliminate most of the errors that python2.3 would display. Index: msgfmt.py =================================================================== RCS file: /cvsroot/todo-manager/todo-manager/i18n/msgfmt.py,v retrieving revision 1.1 retrieving revision 1.2 diff -u -d -r1.1 -r1.2 --- msgfmt.py 12 Aug 2002 18:34:39 -0000 1.1 +++ msgfmt.py 19 Oct 2003 14:08:09 -0000 1.2 @@ -1,5 +1,5 @@ #! /usr/bin/env python - +# -*- coding: iso-8859-1 -*- # Written by Martin v. Löwis <lo...@in...> """Generate binary message catalog from textual translation description. @@ -36,6 +36,7 @@ MESSAGES = {} + def usage(code, msg=''): print >> sys.stderr, __doc__ if msg: @@ -43,6 +44,7 @@ sys.exit(code) + def add(id, str, fuzzy): "Add a non-fuzzy translation to the dictionary." global MESSAGES @@ -50,6 +52,7 @@ MESSAGES[id] = str + def generate(): "Return the generated output." global MESSAGES @@ -79,8 +82,8 @@ koffsets += [l1, o1+keystart] voffsets += [l2, o2+valuestart] offsets = koffsets + voffsets - output = struct.pack("iiiiiii", - 0x950412de, # Magic + output = struct.pack("Iiiiiii", + 0x950412deL, # Magic 0, # Version len(keys), # # of entries 7*4, # start of key index @@ -92,6 +95,7 @@ return output + def make(filename, outfile): ID = 1 STR = 2 @@ -167,6 +171,7 @@ print >> sys.stderr, msg + def main(): try: opts, args = getopt.getopt(sys.argv[1:], 'hVo:', Index: pygettext.py =================================================================== RCS file: /cvsroot/todo-manager/todo-manager/i18n/pygettext.py,v retrieving revision 1.1 retrieving revision 1.2 diff -u -d -r1.1 -r1.2 --- pygettext.py 12 Aug 2002 18:34:39 -0000 1.1 +++ pygettext.py 19 Oct 2003 14:08:09 -0000 1.2 @@ -1,31 +1,49 @@ #! /usr/bin/env python +# -*- coding: iso-8859-1 -*- # Originally written by Barry Warsaw <ba...@zo...> # -# Minimally patched to make it even more xgettext compatible +# Minimally patched to make it even more xgettext compatible # by Peter Funk <pf...@ar...> +# +# 2002-11-22 Jürgen Hermann <jh...@we...> +# Added checks that _() only contains string literals, and +# command line args are resolved to module lists, i.e. you +# can now pass a filename, a module or package name, or a +# directory (including globbing chars, important for Win32). +# Made docstring fit in 80 chars wide displays using pydoc. +# -"""pygettext -- Python equivalent of xgettext(1) +# for selftesting +try: + import fintl + _ = fintl.gettext +except ImportError: + _ = lambda s: s + +__doc__ = _("""pygettext -- Python equivalent of xgettext(1) Many systems (Solaris, Linux, Gnu) provide extensive tools that ease the -internationalization of C programs. Most of these tools are independent of -the programming language and can be used from within Python programs. Martin -von Loewis' work[1] helps considerably in this regard. +internationalization of C programs. Most of these tools are independent of +the programming language and can be used from within Python programs. +Martin von Loewis' work[1] helps considerably in this regard. There's one problem though; xgettext is the program that scans source code -looking for message strings, but it groks only C (or C++). Python introduces -a few wrinkles, such as dual quoting characters, triple quoted strings, and -raw strings. xgettext understands none of this. +looking for message strings, but it groks only C (or C++). Python +introduces a few wrinkles, such as dual quoting characters, triple quoted +strings, and raw strings. xgettext understands none of this. -Enter pygettext, which uses Python's standard tokenize module to scan Python -source code, generating .pot files identical to what GNU xgettext[2] generates -for C and C++ code. From there, the standard GNU tools can be used. +Enter pygettext, which uses Python's standard tokenize module to scan +Python source code, generating .pot files identical to what GNU xgettext[2] +generates for C and C++ code. From there, the standard GNU tools can be +used. -A word about marking Python strings as candidates for translation. GNU -xgettext recognizes the following keywords: gettext, dgettext, dcgettext, and -gettext_noop. But those can be a lot of text to include all over your code. -C and C++ have a trick: they use the C preprocessor. Most internationalized C -source includes a #define for gettext() to _() so that what has to be written -in the source is much less. Thus these are both translatable strings: +A word about marking Python strings as candidates for translation. GNU +xgettext recognizes the following keywords: gettext, dgettext, dcgettext, +and gettext_noop. But those can be a lot of text to include all over your +code. C and C++ have a trick: they use the C preprocessor. Most +internationalized C source includes a #define for gettext() to _() so that +what has to be written in the source is much less. Thus these are both +translatable strings: gettext("Translatable String") _("Translatable String") @@ -37,11 +55,11 @@ [1] http://www.python.org/workshops/1997-10/proceedings/loewis.html [2] http://www.gnu.org/software/gettext/gettext.html -NOTE: pygettext attempts to be option and feature compatible with GNU xgettext -where ever possible. However some options are still missing or are not fully -implemented. Also, xgettext's use of command line switches with option -arguments is broken, and in these cases, pygettext just defines additional -switches. +NOTE: pygettext attempts to be option and feature compatible with GNU +xgettext where ever possible. However some options are still missing or are +not fully implemented. Also, xgettext's use of command line switches with +option arguments is broken, and in these cases, pygettext just defines +additional switches. Usage: pygettext [options] inputfile ... @@ -61,9 +79,9 @@ -D --docstrings - Extract module, class, method, and function docstrings. These do not - need to be wrapped in _() markers, and in fact cannot be for Python to - consider them docstrings. (See also the -X option). + Extract module, class, method, and function docstrings. These do + not need to be wrapped in _() markers, and in fact cannot be for + Python to consider them docstrings. (See also the -X option). -h --help @@ -135,23 +153,19 @@ conjunction with the -D option above. If `inputfile' is -, standard input is read. -""" +""") import os +import imp import sys +import glob import time import getopt +import token import tokenize import operator -# for selftesting -try: - import fintl - _ = fintl.gettext -except ImportError: - def _(s): return s - -__version__ = '1.4' +__version__ = '1.5' default_keywords = ['_'] DEFAULTKEYWORDS = ', '.join(default_keywords) @@ -159,6 +173,7 @@ EMPTYSTRING = '' + # The normal pot-file header. msgmerge and Emacs's po-mode work better if it's # there. pot_header = _('''\ @@ -180,13 +195,15 @@ ''') + def usage(code, msg=''): - print >> sys.stderr, _(__doc__) % globals() + print >> sys.stderr, __doc__ % globals() if msg: print >> sys.stderr, msg sys.exit(code) + escapes = [] def make_escapes(pass_iso8859): @@ -239,7 +256,100 @@ s = '""\n"' + lineterm.join(lines) + '"' return s + +def containsAny(str, set): + """Check whether 'str' contains ANY of the chars in 'set'""" + return 1 in [c in str for c in set] + + +def _visit_pyfiles(list, dirname, names): + """Helper for getFilesForName().""" + # get extension for python source files + if not globals().has_key('_py_ext'): + global _py_ext + _py_ext = [triple[0] for triple in imp.get_suffixes() + if triple[2] == imp.PY_SOURCE][0] + + # don't recurse into CVS directories + if 'CVS' in names: + names.remove('CVS') + + # add all *.py files to list + list.extend( + [os.path.join(dirname, file) for file in names + if os.path.splitext(file)[1] == _py_ext] + ) + + +def _get_modpkg_path(dotted_name, pathlist=None): + """Get the filesystem path for a module or a package. + + Return the file system path to a file for a module, and to a directory for + a package. Return None if the name is not found, or is a builtin or + extension module. + """ + # split off top-most name + parts = dotted_name.split('.', 1) + + if len(parts) > 1: + # we have a dotted path, import top-level package + try: + file, pathname, description = imp.find_module(parts[0], pathlist) + if file: file.close() + except ImportError: + return None + + # check if it's indeed a package + if description[2] == imp.PKG_DIRECTORY: + # recursively handle the remaining name parts + pathname = _get_modpkg_path(parts[1], [pathname]) + else: + pathname = None + else: + # plain name + try: + file, pathname, description = imp.find_module( + dotted_name, pathlist) + if file: + file.close() + if description[2] not in [imp.PY_SOURCE, imp.PKG_DIRECTORY]: + pathname = None + except ImportError: + pathname = None + + return pathname + + +def getFilesForName(name): + """Get a list of module files for a filename, a module or package name, + or a directory. + """ + if not os.path.exists(name): + # check for glob chars + if containsAny(name, "*?[]"): + files = glob.glob(name) + list = [] + for file in files: + list.extend(getFilesForName(file)) + return list + + # try to find module or package + name = _get_modpkg_path(name) + if not name: + return [] + + if os.path.isdir(name): + # find all python files in directory + list = [] + os.path.walk(name, _visit_pyfiles, list) + return list + elif os.path.exists(name): + # a single file + return [name] + + return [] + class TokenEater: def __init__(self, options): self.__options = options @@ -302,7 +412,7 @@ def __openseen(self, ttype, tstring, lineno): if ttype == tokenize.OP and tstring == ')': # We've seen the last of the translatable strings. Record the - # line number of the first line of the strings and update the list + # line number of the first line of the strings and update the list # of messages seen. Reset state for the next batch. If there # were no strings inside _(), then just ignore this entry. if self.__data: @@ -310,7 +420,17 @@ self.__state = self.__waiting elif ttype == tokenize.STRING: self.__data.append(safe_eval(tstring)) - # TBD: should we warn if we seen anything else? + elif ttype not in [tokenize.COMMENT, token.INDENT, token.DEDENT, + token.NEWLINE, tokenize.NL]: + # warn if we see anything else than STRING or whitespace + print >> sys.stderr, _( + '*** %(file)s:%(lineno)s: Seen unexpected token "%(token)s"' + ) % { + 'token': tstring, + 'file': self.__curfile, + 'lineno': self.__lineno + } + self.__state = self.__waiting def __addentry(self, msg, lineno=None, isdocstring=0): if lineno is None: @@ -381,6 +501,7 @@ print >> fp, 'msgstr ""\n' + def main(): global default_keywords try: @@ -490,6 +611,15 @@ else: options.toexclude = [] + # resolve args to module lists + expanded = [] + for arg in args: + if arg == '-': + expanded.append(arg) + else: + expanded.extend(getFilesForName(arg)) + args = expanded + # slurp through all the files eater = TokenEater(options) for filename in args: @@ -529,7 +659,11 @@ if closep: fp.close() + if __name__ == '__main__': main() # some more test strings _(u'a unicode string') + # this one creates a warning + _('*** Seen unexpected token "%(token)s"') % {'token': 'test'} + _('more' 'than' 'one' 'string') |
From: <cl...@us...> - 2003-09-30 22:50:34
|
Update of /cvsroot/todo-manager/todo-manager In directory sc8-pr-cvs1:/tmp/cvs-serv19833 Modified Files: Tag: branch-0_75 __init__.py Log Message: 0.75 Index: __init__.py =================================================================== RCS file: /cvsroot/todo-manager/todo-manager/__init__.py,v retrieving revision 1.6 retrieving revision 1.6.10.1 diff -u -d -r1.6 -r1.6.10.1 --- __init__.py 12 Aug 2002 19:00:33 -0000 1.6 +++ __init__.py 30 Sep 2003 22:50:30 -0000 1.6.10.1 @@ -5,7 +5,7 @@ # Author: Brian Bernas appname = "ToDo Manager" -version = "CVS" +version = "0.75" # Internationalization stuff # The people want translations and this is what they get |
From: <cl...@us...> - 2003-09-30 10:48:16
|
Update of /cvsroot/todo-manager/todo-manager In directory sc8-pr-cvs1:/tmp/cvs-serv25887 Modified Files: ChangeLog.txt Log Message: 0.75 today. Index: ChangeLog.txt =================================================================== RCS file: /cvsroot/todo-manager/todo-manager/ChangeLog.txt,v retrieving revision 1.45 retrieving revision 1.46 diff -u -d -r1.45 -r1.46 --- ChangeLog.txt 26 Sep 2003 01:20:14 -0000 1.45 +++ ChangeLog.txt 30 Sep 2003 10:48:11 -0000 1.46 @@ -1,6 +1,6 @@ ToDo Manager Change Log -latest: +Version 0.75 (09/30/2003): * 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: <cl...@us...> - 2003-09-28 00:06:29
|
Update of /cvsroot/todo-manager/todo-manager In directory sc8-pr-cvs1:/tmp/cvs-serv14113 Modified Files: interface.py Log Message: A few small changes to get the interface to look a little better when it is resized. Index: interface.py =================================================================== RCS file: /cvsroot/todo-manager/todo-manager/interface.py,v retrieving revision 1.48 retrieving revision 1.49 diff -u -d -r1.48 -r1.49 --- interface.py 21 Jun 2003 15:09:43 -0000 1.48 +++ interface.py 27 Sep 2003 20:17:01 -0000 1.49 @@ -153,7 +153,10 @@ self._groupList = Label(self._extrasframe, bd=0, width=0) self._groupList.grid() self._groupScroll = None - self._extrasframe.grid(row=1, column=0, sticky=NW) + + self._extrasframe.grid_rowconfigure(0, weight=1) + self._extrasframe.grid_rowconfigure(1, weight=1) + self._extrasframe.grid(row=1, column=0, sticky=NS) # Tasklist self._taskList = tl = ObjectListbox(frame, bd=0, background='white', relief=FLAT, @@ -337,13 +340,13 @@ if self.__view_calendar.get(): self._calendar = Calendar(self._extrasframe, bd=2, relief=SUNKEN, bg='white', command=self.OnCalendarSelectDate) - self._calendar.grid(row=0, sticky=W) + self._calendar.grid(row=0, sticky=NW) # 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) + self._calFilter.grid(row=1, sticky=NW) else: # A blank label to force self._extrasframe to shrink down after the # calendar has been removed |
From: <cl...@us...> - 2003-09-26 01:20:19
|
Update of /cvsroot/todo-manager/todo-manager In directory sc8-pr-cvs1:/tmp/cvs-serv13752 Modified Files: ChangeLog.txt tdm_calendar.py Log Message: The current date on the calendar will be highlighted in a delightful shade of blue. Oooo, doesn't that sound lovely? Index: ChangeLog.txt =================================================================== RCS file: /cvsroot/todo-manager/todo-manager/ChangeLog.txt,v retrieving revision 1.44 retrieving revision 1.45 diff -u -d -r1.44 -r1.45 --- ChangeLog.txt 21 Jun 2003 15:09:43 -0000 1.44 +++ ChangeLog.txt 26 Sep 2003 01:20:14 -0000 1.45 @@ -11,6 +11,7 @@ * Added a script that will update any translation with new translations strings that have been added (i18n/updatepo.py) * Added a scrollbar to the Note textbox + * The current date on the calendar is highlighted in blue Version 0.70.2 (03/16/2003): * Groups with multilingual characters no longer cause an exception Index: tdm_calendar.py =================================================================== RCS file: /cvsroot/todo-manager/todo-manager/tdm_calendar.py,v retrieving revision 1.16 retrieving revision 1.17 diff -u -d -r1.16 -r1.17 --- tdm_calendar.py 14 Mar 2003 23:42:48 -0000 1.16 +++ tdm_calendar.py 26 Sep 2003 01:20:14 -0000 1.17 @@ -90,9 +90,12 @@ if (self.year, self.month, DayCount) in self.__important_dates: # All important dates in blue + fg = 'darkgreen' + + if (self.year, self.month, DayCount) == (self.year, self.month, self.day): fg = 'blue' - elif (self.year, self.month, DayCount) == self.__seldate: + if (self.year, self.month, DayCount) == self.__seldate: fg = 'darkred' # The current day in red # Black border around the selected date self._calcanvas.create_rectangle((i*30)+5, (j*25)+20, (i*30)+25, (j*25)+40, |
From: <cl...@us...> - 2003-09-25 20:35:51
|
Update of /cvsroot/todo-manager/todo-manager In directory sc8-pr-cvs1:/tmp/cvs-serv19301 Modified Files: main.py Log Message: While testing some of my experimental plugins with the new code I noticed that some of them wouldn't load the file and I'll I would get is a message box telling me that something was wrong with the file format. What was I thinking when I came up with that one??? A traceback will now be output to the terminal in the case of such an error. Ahhh, it's good to get back to the old stuff. Index: main.py =================================================================== RCS file: /cvsroot/todo-manager/todo-manager/main.py,v retrieving revision 1.83 retrieving revision 1.84 diff -u -d -r1.83 -r1.84 --- main.py 25 Sep 2003 19:11:53 -0000 1.83 +++ main.py 25 Sep 2003 20:35:47 -0000 1.84 @@ -24,7 +24,7 @@ from tdmcalls import * import plugin -import thread +import thread, traceback # Add the main source directory to the path for import operations sys.path.append(get_root_directory()) @@ -527,6 +527,8 @@ self.__tasks = tasks success = TRUE except: + # Print a traceback + traceback.print_exc() self.interface_call(ui, "display_error", _("Invalid Format"), _("The file %s is in an invalid format or "\ "is not readable by this plugin.") %filename) |
From: <cl...@us...> - 2003-09-25 19:12:02
|
Update of /cvsroot/todo-manager/todo-manager In directory sc8-pr-cvs1:/tmp/cvs-serv31461 Modified Files: main.py plugin.py Log Message: Yeh! the first commit in a looong while. I have improved the plugin loading system in the following ways: * The root 'todo-manager' directory is added to the import path so plugins can now access every native module in the package. * plugins no long have to be passed a reference to the plugin module. Index: main.py =================================================================== RCS file: /cvsroot/todo-manager/todo-manager/main.py,v retrieving revision 1.82 retrieving revision 1.83 diff -u -d -r1.82 -r1.83 --- main.py 14 May 2003 02:13:52 -0000 1.82 +++ main.py 25 Sep 2003 19:11:53 -0000 1.83 @@ -24,11 +24,10 @@ from tdmcalls import * import plugin -# So the plugin module has a refrence of itself to pass onto plugins -plugin.plugin_module = plugin - import thread +# Add the main source directory to the path for import operations +sys.path.append(get_root_directory()) # gettext setup _ = get_translation('core') Index: plugin.py =================================================================== RCS file: /cvsroot/todo-manager/todo-manager/plugin.py,v retrieving revision 1.9 retrieving revision 1.10 diff -u -d -r1.9 -r1.10 --- plugin.py 2 May 2003 03:56:32 -0000 1.9 +++ plugin.py 25 Sep 2003 19:11:53 -0000 1.10 @@ -45,10 +45,6 @@ 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: - mod.plugin = plugin_module - p = plugin.copy() try: @@ -83,8 +79,6 @@ # This function is called to load all of the plugins from the plugins directory def load_all_plugins(path): # If plugin_module equals None then don't load any plugins - if not plugin_module: return - plugins = get_all_plugins(path) if plugins: |
From: <cl...@us...> - 2003-09-25 19:12:01
|
Update of /cvsroot/todo-manager/todo-manager/plugins In directory sc8-pr-cvs1:/tmp/cvs-serv31461/plugins Modified Files: export_html.py export_text.py import_old.py Log Message: Yeh! the first commit in a looong while. I have improved the plugin loading system in the following ways: * The root 'todo-manager' directory is added to the import path so plugins can now access every native module in the package. * plugins no long have to be passed a reference to the plugin module. Index: export_html.py =================================================================== RCS file: /cvsroot/todo-manager/todo-manager/plugins/export_html.py,v retrieving revision 1.6 retrieving revision 1.7 diff -u -d -r1.6 -r1.7 --- export_html.py 17 Dec 2002 02:00:17 -0000 1.6 +++ export_html.py 25 Sep 2003 19:11:53 -0000 1.7 @@ -7,6 +7,7 @@ # Export a task list to an HTML file import time, re +import tdmcalls # HTML format def save_html(tasks, file): @@ -38,7 +39,7 @@ notes = p.sub('<BR>', task['Notes']) # The function used to format time structures - fmt = plugin.fmttime + fmt = tdmcalls.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>"\ Index: export_text.py =================================================================== RCS file: /cvsroot/todo-manager/todo-manager/plugins/export_text.py,v retrieving revision 1.6 retrieving revision 1.7 diff -u -d -r1.6 -r1.7 --- export_text.py 17 Dec 2002 02:00:17 -0000 1.6 +++ export_text.py 25 Sep 2003 19:11:53 -0000 1.7 @@ -7,6 +7,7 @@ # Export a task list to a text file import string +import tdmcalls def save_text(tasks, file): """Save a task list to a plain text file with simple formating""" @@ -23,8 +24,8 @@ for task in tasks: file.write(string.ljust(str(task["Priority"]), 3)) file.write(string.ljust(task["Name"], 50)) - file.write(string.ljust(plugin.fmttime(task["DueDate"]), 10)) - file.write(string.ljust(plugin.fmttime(task["FinishedDate"]), 18)) + file.write(string.ljust(tdmcalls.fmttime(task["DueDate"]), 10)) + file.write(string.ljust(tdmcalls.fmttime(task["FinishedDate"]), 18)) if task["Notes"]: file.write("\n note:%s" %task["Notes"]) file.write("\n\n") Index: import_old.py =================================================================== RCS file: /cvsroot/todo-manager/todo-manager/plugins/import_old.py,v retrieving revision 1.5 retrieving revision 1.6 diff -u -d -r1.5 -r1.6 --- import_old.py 13 Nov 2002 17:24:20 -0000 1.5 +++ import_old.py 25 Sep 2003 19:11:53 -0000 1.6 @@ -7,6 +7,8 @@ # Import old ToDo Manager files (versions 0.20 - 0.25) import pickle +import plugin +import tdmcalls def load_old(file): """Loads ToDo Manager files from earlier versions""" @@ -26,7 +28,7 @@ depend on the plugin to handle this either. """ if (key == "DueDate") or (key == "FinishedDate"): - value = plugin.tdmcalls.strptime("%m/%d/%y %I:%M %p", value) + value = tdmcalls.strptime("%m/%d/%y %I:%M %p", value) t[key] = value |
From: <cl...@us...> - 2003-06-21 15:09:46
|
Update of /cvsroot/todo-manager/todo-manager In directory sc8-pr-cvs1:/tmp/cvs-serv20458 Modified Files: ChangeLog.txt interface.py Log Message: Added a scrollbar to the Notes textbox Index: ChangeLog.txt =================================================================== RCS file: /cvsroot/todo-manager/todo-manager/ChangeLog.txt,v retrieving revision 1.43 retrieving revision 1.44 diff -u -d -r1.43 -r1.44 --- ChangeLog.txt 6 May 2003 02:49:30 -0000 1.43 +++ ChangeLog.txt 21 Jun 2003 15:09:43 -0000 1.44 @@ -10,6 +10,7 @@ (thanks, Dennis Benzinger) * Added a script that will update any translation with new translations strings that have been added (i18n/updatepo.py) + * Added a scrollbar to the Note textbox Version 0.70.2 (03/16/2003): * Groups with multilingual characters no longer cause an exception Index: interface.py =================================================================== RCS file: /cvsroot/todo-manager/todo-manager/interface.py,v retrieving revision 1.47 retrieving revision 1.48 diff -u -d -r1.47 -r1.48 --- interface.py 27 Apr 2003 03:44:39 -0000 1.47 +++ interface.py 21 Jun 2003 15:09:43 -0000 1.48 @@ -211,8 +211,14 @@ 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) + frame2 = Frame(frame, bd=0) + self._notesText = Text(frame2, wrap=WORD, width=55, height=5) + scroll = Scrollbar(frame2, command=self._notesText.yview) + self._notesText.config(yscrollcommand=scroll.set) + self._notesText.grid(row=0, sticky=EW) + scroll.grid(row=0, column=1, sticky=NS) + frame2.grid_columnconfigure(0, weight=1) + frame2.grid(row=4, sticky=EW) frame2 = Frame(frame, bd=0) ThinButton(frame2, text=_("Clear Fields"), command=self.OnClearFields).grid( |
From: <cl...@us...> - 2003-05-14 02:13:55
|
Update of /cvsroot/todo-manager/todo-manager In directory sc8-pr-cvs1:/tmp/cvs-serv14884 Modified Files: main.py Log Message: Erik Inge Bolsø reported that task values with "=" in them are loaded as a blank task. This should fix this. Index: main.py =================================================================== RCS file: /cvsroot/todo-manager/todo-manager/main.py,v retrieving revision 1.81 retrieving revision 1.82 diff -u -d -r1.81 -r1.82 --- main.py 14 May 2003 01:55:04 -0000 1.81 +++ main.py 14 May 2003 02:13:52 -0000 1.82 @@ -1061,7 +1061,7 @@ elif store: # Parse the string value try: - key, value = line.split("=") + key, value = line.split("=", 1) except ValueError: continue # Change "special" characters to plain ones |
From: <cl...@us...> - 2003-05-14 01:55:08
|
Update of /cvsroot/todo-manager/todo-manager In directory sc8-pr-cvs1:/tmp/cvs-serv7333 Modified Files: main.py Log Message: Jon Lockley is having a weird error with getdefaultlocale. This should resolve it. Index: main.py =================================================================== RCS file: /cvsroot/todo-manager/todo-manager/main.py,v retrieving revision 1.80 retrieving revision 1.81 diff -u -d -r1.80 -r1.81 --- main.py 4 May 2003 15:38:09 -0000 1.80 +++ main.py 14 May 2003 01:55:04 -0000 1.81 @@ -16,7 +16,7 @@ if not os.environ.has_key('LANG') and lang: os.environ['LANG'] = lang -except (locale.Error, ValueError): +except (locale.Error, AttributeError, ValueError): pass from __init__ import * |
From: <cl...@us...> - 2003-05-06 02:49:34
|
Update of /cvsroot/todo-manager/todo-manager In directory sc8-pr-cvs1:/tmp/cvs-serv8133 Modified Files: ChangeLog.txt Log Message: Behold, the power of change. Index: ChangeLog.txt =================================================================== RCS file: /cvsroot/todo-manager/todo-manager/ChangeLog.txt,v retrieving revision 1.42 retrieving revision 1.43 diff -u -d -r1.42 -r1.43 --- ChangeLog.txt 4 May 2003 15:11:18 -0000 1.42 +++ ChangeLog.txt 6 May 2003 02:49:30 -0000 1.43 @@ -8,6 +8,8 @@ * New command-line option that dissables plugin loading (-P) * Updated German translation and changed all translation charsets to UTF-8 (thanks, Dennis Benzinger) + * Added a script that will update any translation with new translations + strings that have been added (i18n/updatepo.py) Version 0.70.2 (03/16/2003): * Groups with multilingual characters no longer cause an exception |