{"push_id":600611126,"size":119,"distinct_size":5,"ref":"refs/heads/attachments","head":"38e73a648c71b0a58c77bf1e9e39b20bd649d335","before":"e35a616392a14387795bde665554c2f8c6cb4056","commits":[{"sha":"e609bf34a8bb6b146e3391a6485f6d7663a46f87","author":{"email":"8c1ac705856a2681ab3c77ca05252d28d06158a7@users.noreply.github.com","name":"cmpilato"},"message":"Initial import of work done so far.","distinct":false,"url":"https://api.github.com/repos/cmpilato/thotkeeper/commits/e609bf34a8bb6b146e3391a6485f6d7663a46f87"},{"sha":"a053a6653268df82af19e219532d7f1b1dba4736","author":{"email":"8c1ac705856a2681ab3c77ca05252d28d06158a7@users.noreply.github.com","name":"cmpilato"},"message":"* lib/tk_resources.xrc\n  Add a minimum size for the calendar widget.","distinct":false,"url":"https://api.github.com/repos/cmpilato/thotkeeper/commits/a053a6653268df82af19e219532d7f1b1dba4736"},{"sha":"ff64f763b69fa9ae0a91045def9d608a1ec325e1","author":{"email":"8c1ac705856a2681ab3c77ca05252d28d06158a7@users.noreply.github.com","name":"cmpilato"},"message":"Remove test-data.xml.","distinct":false,"url":"https://api.github.com/repos/cmpilato/thotkeeper/commits/ff64f763b69fa9ae0a91045def9d608a1ec325e1"},{"sha":"8ca36655222cb8d8cf904dcfe77d0cadeab2b6f5","author":{"email":"8c1ac705856a2681ab3c77ca05252d28d06158a7@users.noreply.github.com","name":"cmpilato"},"message":"Update copyright notices.","distinct":false,"url":"https://api.github.com/repos/cmpilato/thotkeeper/commits/8ca36655222cb8d8cf904dcfe77d0cadeab2b6f5"},{"sha":"b61227586fcb139b8e76f459768b98a5b2697513","author":{"email":"8c1ac705856a2681ab3c77ca05252d28d06158a7@users.noreply.github.com","name":"cmpilato"},"message":"Add some rudimentary entry printing support.\n\n* lib/tk_resources.xrc\n  Add two new File menu options:  \"Print Preview\" and \"Print...\"\n\n* lib/tk_main.py\n  (ThotKeeperEntryPrinter): New class.\n  (ThotKeeper.OnInit): Squirrel away the IDs of the new menu options.\n    Instantiate a new ThotKeeperEntryPrinter() object.  Hook menu\n    selection actions for the new menu options to handler functions.\n  (ThotKeeper._TogglePrintMenus, ThotKeeper._GetCurrentEntryPieces,\n    ThotKeeper._FilePreviewMenu, ThotKeeper._FilePrintMenu): New\n    functions.\n  (ThotKeeper._SetEntryFormDate): Call _TogglePrintMenus(), and tweak\n    the way entry presence is detected.\n  (ThotKeeper._SetModified): Call _TogglePrintMenus().\n  (ThotKeeper._GetEntryFormBits): New function, abstract from...\n  (ThotKeeper._SaveEntriesToPath): ...here, which nows calls\n    _GetEntryFormBits().","distinct":false,"url":"https://api.github.com/repos/cmpilato/thotkeeper/commits/b61227586fcb139b8e76f459768b98a5b2697513"},{"sha":"3106baf642753db292be5086d192d28c5e34cb51","author":{"email":"8c1ac705856a2681ab3c77ca05252d28d06158a7@users.noreply.github.com","name":"cmpilato"},"message":"* lib/tk_main.py \n  (ThotKeeperEntryPrinter._HTMLize): Tweak the byline HTML formatting.","distinct":false,"url":"https://api.github.com/repos/cmpilato/thotkeeper/commits/3106baf642753db292be5086d192d28c5e34cb51"},{"sha":"89a0f2243cd08eb696a4d83b95b925b88dc36ba4","author":{"email":"8c1ac705856a2681ab3c77ca05252d28d06158a7@users.noreply.github.com","name":"cmpilato"},"message":"Relicense under the Simplified BSD License.","distinct":false,"url":"https://api.github.com/repos/cmpilato/thotkeeper/commits/89a0f2243cd08eb696a4d83b95b925b88dc36ba4"},{"sha":"3008e712e711ab824e8c3f3d871bad21e423f78a","author":{"email":"8c1ac705856a2681ab3c77ca05252d28d06158a7@users.noreply.github.com","name":"cmpilato"},"message":"Add data format versioning and version support verification.\n\n* lib/tk_data.py\n  (TK_DATA_VERSION): New.\n  (TKDataVersionException): New.\n  (TKDataParser.unparse_data): Write a version number to output files.\n  (TKDataParser.start_diary): New.  Looks for a 'version' XML\n    attribute, and uses it to verify the data is a supported version.\n\n* lib/tk_main.py\n  (ThotKeeper._SaveData): New wrapper for parser.unparse_data().\n  (ThotKeeper._SaveEntriesToPath, ThotKeeper._TreeDeleteMenu): Use\n    the _SaveData() wrapper instead of calling parser.unparse_data().\n  (ThotKeeper._SetDataFile): Use the _SaveData() wrapper instead of\n    calling parser.unparse_data().  Update call to parser.parse_data(), \n    trapping data format exceptions and showing a user alert if they occur.","distinct":false,"url":"https://api.github.com/repos/cmpilato/thotkeeper/commits/3008e712e711ab824e8c3f3d871bad21e423f78a"},{"sha":"51126092bff92be41397a28476cb03f71ea5c1e9","author":{"email":"8c1ac705856a2681ab3c77ca05252d28d06158a7@users.noreply.github.com","name":"cmpilato"},"message":"* tools/make-release\n  New release-making script.","distinct":false,"url":"https://api.github.com/repos/cmpilato/thotkeeper/commits/51126092bff92be41397a28476cb03f71ea5c1e9"},{"sha":"1029cd963523e7441c55d48be4a4bb86771009ac","author":{"email":"8c1ac705856a2681ab3c77ca05252d28d06158a7@users.noreply.github.com","name":"cmpilato"},"message":"* lib/tk_main.py\n  Update header stuffs to point to the website, not my personal info.\n  (__version__): New.\n  (ThotKeeper._HelpAboutMenu): Point to the website, update the\n    copyright info, and include the version number.\n\n* thotkeeper\n* lib/tk_data.py,\n  Update header stuffs to point to the website, not my personal info.","distinct":false,"url":"https://api.github.com/repos/cmpilato/thotkeeper/commits/1029cd963523e7441c55d48be4a4bb86771009ac"},{"sha":"d64d91765364da6c108da46547e7a08200f83a1d","author":{"email":"8c1ac705856a2681ab3c77ca05252d28d06158a7@users.noreply.github.com","name":"cmpilato"},"message":"* tools/make-release\n  Point to the website instead of my personal info.","distinct":false,"url":"https://api.github.com/repos/cmpilato/thotkeeper/commits/d64d91765364da6c108da46547e7a08200f83a1d"},{"sha":"33f2c14006c4a924f7940814843c47433783e4f4","author":{"email":"8c1ac705856a2681ab3c77ca05252d28d06158a7@users.noreply.github.com","name":"cmpilato"},"message":"* tools/make-release\n  (make_archive): Always remove the created export target directory.","distinct":false,"url":"https://api.github.com/repos/cmpilato/thotkeeper/commits/33f2c14006c4a924f7940814843c47433783e4f4"},{"sha":"7d82e787eb16d6b5a964e503149ada7e731eae53","author":{"email":"8c1ac705856a2681ab3c77ca05252d28d06158a7@users.noreply.github.com","name":"cmpilato"},"message":"Make a first pass at a simple INSTALL file.","distinct":false,"url":"https://api.github.com/repos/cmpilato/thotkeeper/commits/7d82e787eb16d6b5a964e503149ada7e731eae53"},{"sha":"185d455902205461bc6d249f56e69b51f786652e","author":{"email":"8c1ac705856a2681ab3c77ca05252d28d06158a7@users.noreply.github.com","name":"cmpilato"},"message":"Bump __version__ to 0.2-dev.","distinct":false,"url":"https://api.github.com/repos/cmpilato/thotkeeper/commits/185d455902205461bc6d249f56e69b51f786652e"},{"sha":"f4dc0d69a6bd2e6e9fd249650350efd5c136d0c9","author":{"email":"8c1ac705856a2681ab3c77ca05252d28d06158a7@users.noreply.github.com","name":"cmpilato"},"message":"* lib/tk_data.py\n  (TKDataParser): Tweak docstring to indicate data formats, versions,\n    and the ThotKeeper releases in which they appeared.","distinct":false,"url":"https://api.github.com/repos/cmpilato/thotkeeper/commits/f4dc0d69a6bd2e6e9fd249650350efd5c136d0c9"},{"sha":"75baeb36443dcefa09e6fe4a1ede549f62fffa45","author":{"email":"8c1ac705856a2681ab3c77ca05252d28d06158a7@users.noreply.github.com","name":"cmpilato"},"message":"* lib/tk_data.py\n  (TKEntries.enumerate_entries): New.\n  (TKDataParser.unparse_data): Use TKEntries.enumerate_entries() now.","distinct":false,"url":"https://api.github.com/repos/cmpilato/thotkeeper/commits/75baeb36443dcefa09e6fe4a1ede549f62fffa45"},{"sha":"3f8f11214ed4d69303238a2f247f8f358de40dad","author":{"email":"8c1ac705856a2681ab3c77ca05252d28d06158a7@users.noreply.github.com","name":"cmpilato"},"message":"Add support for multiple entries on a given day.\n\nPatch by: Davo Smith <davo -at- davosmith.co.uk>\n          (Tweaked by me.)\n\n   * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n   *                                                                   *\n   *  WARNING: This change modifies the ThotKeeper data format, which  *\n   *  is likely to change again before the next ThotKeeper release.    *\n   *  If you are currently using ThotKeeper's trunk code on live       *\n   *  data, stop doing so, please consider using a release archive or  *\n   *  release tag instead.                                             *\n   *                                                                   *\n   * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n\n* lib/tk_resources.xrc\n  Expand the default calendar widget size a bit, and add a row to the\n  entry form contains Next and Previous buttons.\n\n* lib/tk_main.py\n  (ThotKeeperEventTree.GetDateStack): Add 'entry_id' parameter, used\n    to locate an intra-day entry.\n  (ThotKeeperEventTree.EntryChangedListener): Add 'id' parameter, and\n    use it in updated calls to GetDateStack() and when building tree item\n    data.\n  (ThotKeeperEventCal.EntryChangedListener): Add 'id' parameter (unused).\n  (ThotKeeper.OnInit): Stash the ids of the new next and prev\n    buttons.  Update call to wxTreeItemData.  Register events for the\n    next and prev button clicks.\n  (ThotKeeper._SetDataFile, ThotKeeper._SaveEntriesToPath,\n   ThotKeeper._TreeDeleteMenu): Support multiple entries per day.\n  (ThotKeeper._SetEntryFormDate): Add optional 'id' parameter, and use\n    it to populate the entry form with the right bits.  Callers updated.\n  (ThotKeeper._NextButtonActivated, ThotKeeper._PrevButtonActivated): New.\n  (ThotKeeper._GetEntryFormBits): Now also return the entry id.\n\n* lib/tk_data.py\n  (TK_DATA_VERSION): Bump to version 1.\n  (TKEntry.__init__): Add optional 'id' parameter.\n  (TKEntry.get_id): New.\n  (TKEntries.enumerate_entries): Support multiple entries per day.\n  (TKEntries.set_entry): Add 'id' parameter, used to build and store\n    the TKEntry item.\n  (TKEntries.remove_entry, TKEntries.get_entry): Add 'id' parameter.\n  (TKEntries.get_ids, TKEntries.get_first_id, TKEntries.get_last_id,\n   TKEntries.get_id_pos, TKEntries.get_next_id, TKEntries.get_prev_id): New.\n  (TKDataParser): Update docstring to describe new format version 1.\n  (TKDataParser.unparse_data): Write the new \"id=\" attribute, too.\n  (TKDataParser.start_entry): Expect new \"id=\" attribute.\n  (TKDataParser.end_entry): Update call to entries.set_entry().","distinct":false,"url":"https://api.github.com/repos/cmpilato/thotkeeper/commits/3f8f11214ed4d69303238a2f247f8f358de40dad"},{"sha":"6e34ca222f93dfb8ff4ba0a1450f9d59902e7388","author":{"email":"bff7308fd79bc165d81fa1a497179e152b4141c1@2bc38cc3-a848-0410-a3bc-75f314f9639c","name":"smith.davo"},"message":"Use None for non-existant entry ids, fix 'Next entry' issue & key\nsorting.\n\nNow uses 'None' as the id for a new entry, until it is saved (at which\npoint a proper id is generated). Also uses 'None' when asking for\nFirst/Last id for a day with no entries. The next button is not\nenabled until you have saved an entry for a particular day. The ids\nfor each day are now sorted before being returned (dictionary keys are\nnot guarenteed to be sorted by default).\n\n* lib/tk_main.py\n(_SetEntryFormDate): Changed default id to -1 (this is replaced by the\nfirst id for that date). Now expects None where first/last/current id\ndoes not exist in the data file. Fixed 'Next entry' button to only be\nenabled when there is at least one entry already.\n\n* lib/tk_main.py\n(_NextButtonActivated): renamed newid to nextid for clarity.\n\n* lib/tk_main.py\n(_PrevButtonActivated): renamed newid to previd for clarity.\n\n* lib/tk_main.py\n(_SaveEntriesToPath): now generates an id for an entry if it does not\nalready have one. Enables the 'Next entry' button.\n\n* lib/tk_main.py\n(_FileRevertMenu): does not convert 'id' to an int as that does not\nwork when id is None.\n\n* lib/tk_data.py\n(get_first_id, get_last_id): Sort the entry keys. Return None if no entries.\n\n* lib/tk_data.py\n(get_id_pos, get_prev_id): Sort the entry keys.\n\n* lib/tk_data.py\n(get_next_id): Sort the entry keys. Return None if no more entries.","distinct":false,"url":"https://api.github.com/repos/cmpilato/thotkeeper/commits/6e34ca222f93dfb8ff4ba0a1450f9d59902e7388"},{"sha":"40d471eb0e42fcc09c241433546157223b971964","author":{"email":"bff7308fd79bc165d81fa1a497179e152b4141c1@2bc38cc3-a848-0410-a3bc-75f314f9639c","name":"smith.davo"},"message":"Add tags to entry data structure and to file format.\n\nEach entry now has a member called 'tags' which is a list of the tags\nattached to it. The data file now has an optional <tags> entry which\nconsists of one or more <tag> entries which contain the text of the\ntag. The data file version number is now 2.\n\nlib/tk_data.py: TK_DATA_VERSION is now 2\n\nlib/tk_data.py\n(__init__): Added tags to each entry (defaults to [])\n\nlib/tk_data.py\n(get_tags): New subroutine to return the tags for that entry\n\nlib/tk_data.py\n(set_entry): Now takes a tags parameter (default []) which it passes\non when creating the entry.\n\nlib/tk_data.py\n(_write_entry): Writes out each of the tags into the data file.\n\nlib/tk_data.py\n(end_entry): Creates the entry with any loaded tags.\n\nlib/tk_data.py\n(start_tags, start_tag, end_tag): New subroutines parse the tags from\nthe data file","distinct":false,"url":"https://api.github.com/repos/cmpilato/thotkeeper/commits/40d471eb0e42fcc09c241433546157223b971964"},{"sha":"c402bb6c3b36486aaae561f30edb168d4b2f1ffd","author":{"email":"bff7308fd79bc165d81fa1a497179e152b4141c1@2bc38cc3-a848-0410-a3bc-75f314f9639c","name":"smith.davo"},"message":"Reverted data file version back to 1.","distinct":false,"url":"https://api.github.com/repos/cmpilato/thotkeeper/commits/c402bb6c3b36486aaae561f30edb168d4b2f1ffd"}]}