bjoern@90: 2011-05-30 Björn Ricks bjoern@90: bjoern@90: * getan.py: Handle KeyboardInterrupt and shutdown getan bjoern@90: carefully afterwards bjoern@90: bjoern@89: 2011-05-30 Björn Ricks bjoern@89: bjoern@89: * getan/states.py: Save the current project when switching to Running state. bjoern@89: Now it's possible to move up and down through the project list or even to bjoern@89: the entry list while a project is running. This behaviour also changed the bjoern@89: current project. Therefore it's necessary to keep the project while changing bjoern@89: to other states. bjoern@89: bjoern@88: 2011-05-30 Björn Ricks bjoern@88: bjoern@88: * getan/states.py: Move 'up' and 'down' keypress handling to bjoern@88: general ProjectState class to make them available in all project bjoern@88: states. bjoern@88: bjoern@87: 2011-05-30 Björn Ricks bjoern@87: bjoern@87: * getan/states.py: Use footer of EntryList to display bjoern@87: the editable description of an entry and not the general bjoern@87: footer to be able to edit the desciption while running a bjoern@87: project. bjoern@87: bjoern@86: 2011-05-30 Björn Ricks bjoern@86: bjoern@86: * getan/view.py (ListWidget): Add new node_in_focus bjoern@86: method to get the current node in list bjoern@86: bjoern@85: 2011-05-25 Björn Ricks bjoern@85: bjoern@85: Fix for #1569 bjoern@85: bjoern@85: * getan/states.py: Don't crash if subtracted time is greater then the bjoern@85: current recorded time bjoern@85: bjoern@84: 2011-05-25 Björn Ricks bjoern@84: bjoern@84: Be able to edit the description of a recorded entry bjoern@84: bjoern@84: * getan/states.py: Add a new EditEntryState that reads the current bjoern@84: description of an entry, displays it in the footer and saves the text of bjoern@84: the footer in the database afterwards bjoern@84: Switch from DefaultEntryListState to EditEntryState when 'e' is pressed bjoern@84: bjoern@83: 2011-05-25 Björn Ricks bjoern@83: bjoern@83: * getan/states.py: Only switch to the entry list if the current selected bjoern@83: project has entries bjoern@83: bjoern@82: 2011-05-25 Björn Ricks bjoern@82: bjoern@82: Only update the focus of a List if it has some rows. bjoern@82: This fixes a chash while switching to an empty entry list bjoern@82: bjoern@82: * getan/view.py: Check if the current list view has some rows before bjoern@82: setting the new focus bjoern@82: bjoern@81: 2011-05-25 Björn Ricks bjoern@81: bjoern@81: Be able to update the entry descriptions bjoern@81: bjoern@81: * getan.py: Add update_entry method in GetanController that forwards an bjoern@81: entry to the backend bjoern@81: * getan/backend.py: Add update_entry method in backend class that updates bjoern@81: the description of an entry in the database bjoern@81: bjoern@80: 2011-05-25 Björn Ricks bjoern@80: bjoern@80: Make getan logging configureable to be able to different getan instances bjoern@80: at the same time bjoern@80: bjoern@80: * getan/config.py: Pass filename and loglevel parameters to bjoern@80: initialize and setup_logging functions. Both parameters are used to bjoern@80: setup up the basic config of the logger bjoern@80: * getan.py: Add an OptionParser to be able to switch the log file and bjoern@80: debug verbosity on the command line bjoern@80: bjoern@78: 2011-05-25 Björn Ricks bjoern@78: bjoern@78: Minor changes in views bjoern@78: bjoern@79: * getan/view.py: Improve codepath for updating view in ListWidget, bjoern@79: use set_footer_text in ProjectList instead of creating a new Text Widget bjoern@79: directly, clip project text in project list bjoern@78: bjoern@77: 2011-05-25 Björn Ricks bjoern@77: bjoern@77: Fix for #1571 bjoern@77: bjoern@77: * getan/view.py: Add scrolling in entry list to be able to select bjoern@79: and modify all entries. (Modified patch from Ingo) bjoern@77: teichmann@43: 2010-12-15 Sascha L. Teichmann teichmann@43: teichmann@43: Fix for #1638 teichmann@43: teichmann@43: * getan/view.py: use preferred encoding in uwid teichmann@43: * getan/states.py: Fixed another no-project bug. teichmann@43: teichmann@41: 2010-12-15 Sascha L. Teichmann teichmann@41: teichmann@41: Make getan runnable if there is no project in database. teichmann@41: teichmann@41: * getan.py, getan/states.py, getan/view.py: Various checks teichmann@41: to ensure you really have a project. teichmann@41: teichmann@40: 2010-12-15 Sascha L. Teichmann teichmann@40: teichmann@40: * getan/backend.py: Create database file if it does teichmann@40: not exist. teichmann@40: teichmann@39: 2010-12-15 Sascha L. Teichmann teichmann@39: teichmann@39: Some minor fixes teichmann@39: teichmann@39: * getan/config.py: Proper use of global logger. teichmann@39: * getan/resources.py: Removed needless import teichmann@39: * getan/states.py: Fixed state errors teichmann@39: teichmann@37: 2010-12-15 Sascha L. Teichmann teichmann@37: teichmann@38: Fix for #1624 teichmann@37: teichmann@37: * getan/states.py, getan/utils.py: used a safe int conversion. teichmann@37: ingo_weinzierl@36: 2010-10-02 Ingo Weinzierl ingo_weinzierl@36: ingo_weinzierl@36: * getan/config.py: Setup the language. ingo_weinzierl@36: ingo_weinzierl@36: * getan/resources.py: New module that should serve functions for working ingo_weinzierl@36: with resources. Currently, there is just a single function to get a ingo_weinzierl@36: translated text based on gettext. ingo_weinzierl@36: ingo_weinzierl@36: * getan/states.py, ingo_weinzierl@36: getan/view.py: Replaced hard coded texts with gettext calls. ingo_weinzierl@36: ingo_weinzierl@36: * po/Makefile, ingo_weinzierl@36: po/README, ingo_weinzierl@36: po/de.po: Makefile, description and german translation for gettext. ingo_weinzierl@36: ingo_weinzierl@36: NOTE: It is necessary to call 'make mo' in the po directory to enable the ingo_weinzierl@36: german language. ingo_weinzierl@36: ingo_weinzierl@34: 2010-09-02 Ingo Weinzierl ingo_weinzierl@34: ingo_weinzierl@34: ISSUE1575 ingo_weinzierl@34: ingo_weinzierl@34: * getan/view.py: Verify that time values are not null before adding them to ingo_weinzierl@34: total time. Avoids getan crashing while switching the time mode. ingo_weinzierl@34: ingo@33: 2010-08-31 Ingo Weinzierl ingo@33: ingo@33: * getan.py, getan/backend.py: Made getan Python-2.4 compatible. ingo@33: ingo@32: 2010-08-31 Ingo Weinzierl ingo@32: ingo@32: * contrib/wochenbericht: Added a parameter 'year' that makes possible to ingo@32: filter out the week of a specific year only. ingo@32: ingo@31: 2010-08-31 Ingo Weinzierl ingo@31: ingo@31: ISSUE1566 ingo@31: ingo@31: * getan.py: Bugfix: removed 'with' statement, replaced by try/finally. ingo@31: ingo_weinzierl@30: 2010-08-30 Ingo Weinzierl ingo_weinzierl@30: ingo_weinzierl@30: * getan.py: Added __enter__ and __exit__ methods. The exit method is used to ingo_weinzierl@30: stop still running projects - even if getan crashes. Therefor it was ingo_weinzierl@30: necessary to change the method signature of stop_project() in ingo_weinzierl@30: GetanController. The description for the running project is given into the ingo_weinzierl@30: method as parameter. If no desc parameter is specified, '-no description-' ingo_weinzierl@30: is used as description. This is the case if there are still running ingo_weinzierl@30: projects when we reach __exit__(). ingo_weinzierl@30: ingo_weinzierl@30: * getan/states.py: Added a description when calling stop_project() of ingo_weinzierl@30: GetanController. ingo_weinzierl@30: ingo@28: 2010-08-30 Ingo Weinzierl ingo@28: ingo@28: * getan/view.py: Bugfix: Unified parameter names in ProjectList - some ingo@28: changes in rev25 did not fit to the current parameter names (head, foot). ingo@28: ingo@27: 2010-08-30 Ingo Weinzierl ingo@27: ingo@27: * getan/states.py, ingo@27: getan/view.py: Bugfix: fixed wrong parameter name while accessing the raw ingo@27: project of a project node. ingo@27: ingo_weinzierl@26: 2010-08-29 Ingo Weinzierl ingo_weinzierl@26: ingo_weinzierl@26: * getan.py: Catch a window resize event before calling keypress() of the ingo_weinzierl@26: states and trigger an update of the view - the view is resizable now! ingo_weinzierl@26: ingo_weinzierl@25: 2010-08-29 Ingo Weinzierl ingo_weinzierl@25: ingo_weinzierl@25: * getan/states.py: Enter MoveEntryState and DeleteEntryState only if there ingo_weinzierl@25: are selected entries. ingo_weinzierl@25: ingo_weinzierl@25: * getan/view.py: Updating the footer text of a ListWidget will update the ingo_weinzierl@25: attribute 'footer' in the ListWidget and call ListWidget._update_view(). ingo_weinzierl@25: ingo_weinzierl@25: * getan.py: Bugfix: changed the attribute name (entry -> item) when ingo_weinzierl@25: accessing the EntryList's entries. ingo_weinzierl@25: ingo_weinzierl@24: 2010-08-29 Ingo Weinzierl ingo_weinzierl@24: ingo_weinzierl@24: * getan/view.py: Bugfix: switching the time mode in ProjectList will also ingo_weinzierl@24: update the displayed total time in the footer of ProjectList. ingo_weinzierl@24: ingo_weinzierl@23: 2010-08-28 Ingo Weinzierl ingo_weinzierl@23: ingo_weinzierl@23: This commit introduces a new implementation of 'getan's user interface based ingo_weinzierl@23: on urwid ( >= 0.9.9.1). ingo_weinzierl@23: ingo_weinzierl@23: * getan.py: The 'getan' controller that is also used to start the ingo_weinzierl@23: application. ingo_weinzierl@23: ingo_weinzierl@23: * classic/getan: Moved the 'old' getan to this folder - there is a new ingo_weinzierl@23: implementation based on python urwid library. ingo_weinzierl@23: ingo_weinzierl@23: * getan/__init__.py, ingo_weinzierl@23: getan/backend.py, ingo_weinzierl@23: getan/config.py, ingo_weinzierl@23: getan/project.py, ingo_weinzierl@23: getan/states.py, ingo_weinzierl@23: getan/utils.py, ingo_weinzierl@23: getan/view.py: Model, backend, view and config modules used by getan. ingo_weinzierl@23: ingo_weinzierl@23: * README: Added urwid >= 0.9.9.1 as further dependendy of getan and a hint ingo_weinzierl@23: of the classic version of 'getan' based on curses. ingo_weinzierl@23: ingo_weinzierl@23: * TODO: Idea of implementing a 'Help-Widget' to display all available keys. ingo_weinzierl@23: ingo_weinzierl@23: * INTRODUCTION: An overview about possible keys in the user interface. ingo_weinzierl@23: thomas@22: 2009-08-18 Thomas Arendsen Hein thomas@22: thomas@22: * contrib/zeiterfassung: left justify user sign in zeiterfassung thomas@22: thomas@22: * getan: human_seconds: Use timespec instead of seconds and document it. thomas@22: thomas@22: * getan: allow adding/subtracting times while a project is running thomas@22: thomas@22: * getan: rename substract to subtract (substract might be correct, too, thomas@22: but outdated) thomas@22: thomas@22: * getan: Allow + and - (RPN) to change time for the thomas@22: current project thomas@22: thomas@22: * getan: Handle empty input when adding/subtracting time of the running thomas@22: project thomas@22: teichmann@15: 2008-09-09 Sascha L. Teichmann teichmann@15: teichmann@15: * contrib/zeitsort: New. Sorts a zeiterfassung.txt file by teichmann@15: the dates in the lines. Useful to merge larger chunks teichmann@15: by simply append them and sort the result afterwards. teichmann@15: teichmann@14: 2008-08-12 Sascha L. Teichmann teichmann@14: teichmann@14: * getan: When assiging a name to an anonym task remove and teichmann@14: re-insert it into the project tree to make it selectable. teichmann@14: teichmann@13: 2008-08-12 Sascha L. Teichmann teichmann@13: teichmann@13: * contrib/zeiterfassung: Applied Stephan Holl's week-option.patch which teichmann@13: adds the possibility to give an optional week of year. teichmann@13: teichmann@12: 2008-08-11 Sascha L. Teichmann teichmann@12: teichmann@12: * getan: !!! Work in progress !!! Project Trees teichmann@12: The classic worklog only has one key to address a project. teichmann@12: This is major short comming. The getan database allows teichmann@12: to store projects keys with more than one character. teichmann@12: This feature will be exploited to build trees of projects. teichmann@12: teichmann@12: Lets say you have two main tasks foo and bar with two sub teichmann@12: tasks each you can name them f1, f2 and b1, b2. getan teichmann@12: stores these four tasks in a tree with top level f and b teichmann@12: and tow second level branches 1 and 2. To choose a task you teichmann@12: have to press f or b followed by 1 or 2. teichmann@12: teichmann@12: At the moment only selection works. teichmann@12: teichmann@12: TODO and next steps: teichmann@12: - Remove all old linear data structures. teichmann@12: - adjust rendering to only show active branches. teichmann@12: - sort anonymous task after naming into project tree. teichmann@12: teichmann@11: 2008-08-04 Sascha L. Teichmann teichmann@11: teichmann@11: * contrib/zeiterfassung: Applied a variation of Stephan Holl's teichmann@11: zeiterfassung.non-utf8-chars-in-db.patch to force the encoding teichmann@11: given by --encoding=. teichmann@11: teichmann@10: 2008-08-03 Sascha L. Teichmann teichmann@10: teichmann@10: * contrib/zeiterfassung: Added parameter -e | --encoding=. teichmann@10: This enables e.g. the output as latin1 with --encoding=latin1. teichmann@10: teichmann@9: 2008-08-03 Sascha L. Teichmann teichmann@9: teichmann@9: * contrib/zeiterfassung: Applied and completed Stephan Holl's teichmann@9: zeiterfassung.bessere-lesbarkeit.patch, fixed small issue with teichmann@9: --project= parameter. teichmann@9: teichmann@8: 2008-08-01 Sascha L. Teichmann teichmann@8: teichmann@8: * contrib/zeiterfassung: New. generates lines for zeiterfassung.txt. teichmann@8: usage: ./contrib/zeiterfassung teichmann@8: with teichmann@8: [--user=|-u ] : Name of user, default: $USER teichmann@8: [--database=|-d ]: getan database, default: time.db teichmann@8: [--project|-p] : Key of output project, default: all teichmann@8: [--list|-l] : list all projects teichmann@8: [--help|-h] : This text teichmann@8: teichmann@7: 2008-07-31 Sascha L. Teichmann teichmann@7: teichmann@7: * getan: Feature wish 8: F1 is like -1, F2 is like -2 teichmann@7: to F10 is like -0. teichmann@7: teichmann@6: 2008-07-31 Sascha L. Teichmann teichmann@6: teichmann@6: * getan: Feature wish 4: in +/- time defaults to minutes. teichmann@6: Strings like '1d:4h:3m', or '2m:4s' and so on are valid teichmann@6: times now. Feature wish 10: When adding time to project teichmann@6: is now possible to enter an optional description. teichmann@6: teichmann@5: 2008-07-31 Sascha L. Teichmann teichmann@5: teichmann@5: * contrib/wochenbericht: Applied patch from Stephan Holl to show teichmann@5: usage on '-h' of '--help'. Added check for existence of db file. teichmann@5: teichmann@4: 2008-07-31 Sascha L. Teichmann teichmann@4: teichmann@4: * contrib/wochenbericht: New. Little script to summarize the teichmann@4: entries for a given week number of year. teichmann@4: teichmann@3: 2008-07-30 Sascha L. Teichmann teichmann@3: teichmann@3: * getan: Added total sum of all projects. teichmann@3: teichmann@3: * README: Added hint to tac your old worklog config file to keep teichmann@3: reversed order. teichmann@3: teichmann@2: 2008-07-30 Sascha L. Teichmann teichmann@2: teichmann@2: * getan: Added +/- time to tasks. If in pause mode press + or - teichmann@2: to add or subtract time from a task in form of . teichmann@2: key is the effected task seconds is the among of time. seconds teichmann@2: can be postfixed by 's' for seconds, 'm' for minutes, 'h' for teichmann@2: hours and 'd' for days. teichmann@2: teichmann@1: 2008-07-29 Sascha L. Teichmann teichmann@1: teichmann@1: * getan: To exit getan you now can use double BACKSPACE, too. teichmann@1: teichmann@1: * README: Fixed typo, added hint to Sascha Wilde's projects converter. teichmann@1: teichmann@1: * contrib/convert-projects: Added Sascha Wilde's converter to import existing teichmann@1: worklog configuration files. teichmann@1: teichmann@0: 2008-07-28 Sascha L. Teichmann teichmann@0: teichmann@0: * ChangeLog, LICENSE, README, TODO, getan, schema.sql: Initial import