11 Aug 2011
 * Add special "retain selection on single click" selection behaviour of
   card sets to filter value lists.

02 Aug 2011
 * Add support for select-all in card set lists
 * Make Analyze plugin more robust against missing keywords in the database

28 Jul 2011
 * Cleanup config listeners created by the menu

27 Jul 2011
 * Make Analyze plugin fail more gracefully in the presence of a incomplete
   database
 * Warn user if database appears incomplete

23 Jul 2011
 * Further debian/ubuntu packaging improvements

20 Jul 2011
 * Add helper script for building Debian packages
 * Add copyright to debian packaging
 * importing SutekhInfo directly in setup.py to simplify build dependencies
   for building debian packages.

01 Jul 2011
 * Disable Unity's shifting of menubars to the appmenu since it eats the pane
   menus

30 Jun 2011
 * Various minor markup fixes to the docs
 * Update version number in manual

26 Jun 2011
 * Add support for including and installing the appropriate MS C runtime
   library package to the NSIS installer.

23 Jun 2011
 * Use drag_*_set methods rather than the enable_model_drag_* ones. Needed for
   dragging in the filter dialog to work on windows with recent gtk versions.
   See https://bugzilla.gnome.org/show_bug.cgi?id=641924. Fix highlight
   juggling to work with these changes.
 * Add gio to py2exe's list of required modules - needed for pygtk 2.16.
 * Tweak Wine build script to use Python 2.6.

22 Jun 2011
 * Add has_children utility helper to card sets.
 * Add checkbuttons for storyline and demo decks. Improve logic around
   overwriting existing card sets.
 * Document starter deck download checkboxes. Add note about the extra cardlist
   file.

19 Jun 2011
 * Add configobj to rpm deps.
 * Fix bug with querying config too early in rulebook plugin.
 * Ensure we properly write the stub config file, so our config fiddling does
   the right thing.
 * Tweak IO error handling to work with ElementTree 1.3.
 * Bump required SQLObject version to 0.16 for Fedora 15.
 * Tweak signal handler signature to work with SQLObject 0.15.
 * Handle truncated card list better.
 * Bump minimum gtk version to 2.16, since we require some later features now.

17 Jun 2011
 * Make rulebook plugin use config key for rulebook path. Tweak test setup code
   to stub in rulebook path.

16 Jun 2011
 * Re-write rulebook plugin to download a rulebook data pack from the Sutekh
   Wiki or local Zip file.

14 Jun 2011
 * Add Title as keyword

11 Jun 2011
 * Rework ZipFileWrapper so writing zip files of partial selections is easier

06 Jun 2011
 * Workaround 'Anarchs and Alastors' promo-entry oddness
 * Workaround AaA change in card images plugin

03 Jun 2011
 * Start of DataPack utility routines
 * Move StarterDeckInfo to new DataPack functions

01 Jun 2011
  * Renable CSV import plugin. Tweak import_cs to support this

26 May 2011
 * Tweak test_writeELDBInventory test to make errors more discoverable
 * Fix missing text cases for 'Smite' and 'Hide the Heart'
 * Add more test data
 * Remove obselete WW html parser

23 May 2011
 * Add missing config file validation - fixes values not being converted
   properly issues

21 May 2011
 * Add support for storyline expansions to Card Images plugin
 * Fix "An X.." name handling in Card Images plugin

20 May 2011
 * Fix cardimage download url

19 May 2011
 * Add sect stats to analyse plugin

17 May 2011
 * Document filter dialog keyboard shortcuts

16 May 2011
 * Add focus switching keyboard shortcut's to filter editor

12 May 2011
 * Fix bitbucket url

06 May 2011
 * Nicer error handling for errors when updating card lists

05 May 2011
 * Fix WW card count plugin to correctly handled some corner cases around
   filters including the 'None' expansion
 * Strip markup from entries read from the gtk.TreeStore in the filter, so
   they match the contents of the box model

04 May 2011
 * Fix bug with keyboard pasting in list filters

04 Apr 2011
 * Change rulings parser to use rulings from the v:ekn site

28 Mar 2011
 * Prevent test suite prompting to download icons

27 Mar 2011
 * Change to using icons from v:ekn site

16 Mar 2011
 * Change over to using the text card list parser
 * Fix ARDB export to match changes due to using text data
 * Update docs and help to refect change to use text parser
 * Fix FELDB homepage reference

18 Mar 2011
 * Add parser for the text file version of the card list
 * Add test data for text card list parser

16 Mar 2011
 * Sort CardSetManagementModel so tests pass with postgresql 8.4

15 Mar 2011
 * Expose CardNameFilter in sutekh module

04 Mar 2011
 * Add non-unique keyword
 * Fix 'blood cursed' checks

03 Mar 2011
 * Add mortal keyword to Imbued

23 Feb 2011
 * Add cleanup calls to gui card lookup, to remove stale profile listeners

22 Feb 2011
 * Fix bug in ARDBTextParser that could cause the description to be lost

18 Feb 2011
 * Fix bug in ARDBTextParser when dealing with names and authors containing ':'
 * Improve handling on incorrectly encoding card set names

17 Feb 2011
 * Make card set importing a bit more robust against encoding issues with
   the file
 * Add warning dialogs for encoding issues
 * Fix bug when dealing with empty fields introduced by the encoding changes

15 Feb 2011
 * Handle another Crypt line variant in ARDBTextParser

14 Feb 2011
 * Fix ARDBTextParser to deal with card sets missing the description section
 * Fix bug in ARDBTextParser when encountering files with mixed spaces and tabs

10 Feb 2011
 * Fix bug that caused a converted rc file not to be written properly
 * Fix a bug with extra columns in the card set view when no card sets are
   shown

09 Feb 2011
 * Fix bug with profile menus not updating properly for all open copies of a
   card set

08 Feb 2011
 * Avoid unnecessary database changed signals when editing card set properties
 * Tweak display of the card set independence plugin when no expansions are shown
 * Beahve sensibly if only testing a single card set for independence.

07 Feb 2011
 * Sort 'No Card' entries first in GuiCarLookup
 * Bold 'No Card' entires, to be more visible
 * Fix cursor behaviour when the card lookup dialog is sorted.
 * Tweak ARDBTextParser to be a bit more liberal
 * Fix bug with ARDBTextParser missing advanced vampires

05 Feb 2011
 * Fix issue with double quotes in crypt cards when uploading to the Secret
   Library
 * Show inherited profile settings as a tooltip in the profile editor
 * Make GuiCardLookup a bit more robust against non-unicode input

03 Feb 2011
 * Fix FilterParser to deal allow escaping quotes.
 * Add a helper function to display detail dialogs for and log exceptions
 * Convert to using the helper function in several place

01 Feb 2011
 * Display card sets in zip file in correct hierarchy.
 * Add check that config file is writeable during start up and warn the user
 * Add support for ignoring card expansion when testing card set independence
 * Add advanced as a keyword
 * Add a error dialog with details hidden in an expander.
 * Use details dialog for uncaught exceptions and errors writing the config
   file on exit.

31 Jan 2011
 * Support for forcing replace or automatic renames when importing card sets
   from a zip file
 * Add select all / unselect all buttons to zip file import dialog
 * Fix name escaping bug in zip file import dialog
 * Fix bug with renamed parents when importing from zip file

26 Jan 2011
  * Fix handling of author or Description is None when sorting on extra columns
  * Fix exception in Analyze deck plugin when the crypt size is 0

24 Jan 2011
  * Add hide/show illegal cards button to gui card lookup
  * Make best guess filter only look at legal cards

10 Jan 2011
  * Escape card set name properly in snapshot dialog
  * Fix some escaping issues in filter dialog
  * Escape card set name in plugins

30 Dec 2010
  * Fix corner case which led to missed crypt keywords

24 Dec 2010
  * Protect against ini-file and database being out of sync in fix_profile_map

21 Dec 2010
  * Finish test case for the filter model panes

18 Dec 2010
 * Fix bug with the parent count colour not being updated properly when
   editing

17 Dec 2010
 * Add CachedFilter, to improve speed of complex card set loads a bit

14 Dec 2010
 * Update cardset id -> profile map on major database changes
 * delete profile references when deleting a card set
 * Fix bug around deleting in-use profiles that also refer to card set ids
   that no longer exist.
 * Add 'snapshot cardset' plugin.

13 Dec 2010
 * Fix bug with reading parents and children from a zip file.
 * Add support for WW demo decks
   * Demo Rarity
   * Support for demo decks as seperate section in starter deck plugin
 * Report pane and card set names to the user when deleting in-use profiles.

09 Dec 2010
 * Add cleanup hook for the plugins
 * Fix bug with not properly using carefully constructed config in tests.
 * Fix a couple of resource cleanup bugs.

07 Dec 2010
 * Properly save and restore per-pane profiles settings.
 * Some test suite speed improvements
 * Keep scroll position when dragging card sets around in the card set list
   pane

06 Dec 2010
 * Fix bug in filter editor when dragging items out of the filter
 * Remove menu items made redundant by local profile support

04 Dec 2010
 * Import legacy config files from 0.6
 * Add basic 'Profile in use' detection when deleting profiles
 * Keyboard shortcut for pasting values/filters in filter dialog
 * Local profile support
 * avoid pyprotocols for speed in card set and card list models

02 Dec 2010
 * Reorder things in card set list model test to make more use of the cache

30 Nov 2010
 * Don't reload entire filter model on minor changes

29 Nov 2010
 * Hook up keyboard shortcuts to delete, disable and negate buttons

27 Nov 2010
 * Fix saving card sets to use the card set name

26 Nov 2010
 * Add "involves" method to filters, to save some work
 * Move physical_filter checks into Filters
 * Replace some references to "Physical Card Set" with "Card Set" in the UI

19 Nov 2010
 * More caching in card set list model
 * Restore card set list scroll position after opening a card set

18 Nov 2010
 * Limit direct access to the various mode variables in the card set model
 * Add complex cache test case & fix bug it uncovered

16 Nov 2010
 * Longer lived filter caching

15 Nov 2010
 * Use unicode normalisation when talking to Secret Library
 * Reorganise db signal handling - move code to CardSetListModel
 * Add some db signal tests

11 Nov 2010
 * More caching work
 * Ensure listeners are called before sorting list, for listeners that
   use cached information

10 Nov 2010
 * Fix restore_from_config to work with the closed frames.
 * Fix some other issues around the minimised frames being skipped as well

08 Nov 2010
 * Make changing to editable views slightly faster

05 Nov 2010
 * Subdivide card set list model tests a bit

03 Nov 2010
 * Remove check_editable in favour of explicitly specifying when
   card sets should be opened editable.

01 Nov 2010
 * Use bitbucket as source for extra_cards
 * Minor speed tweaks to card set list model
 * Add some tests with illegal cards shown and hidden

30 Oct 2010
 * Show OOT masters & trifles in Anaylze plugin

29 Oct 2010
 * Update README
 * Disable qlobject cache (?cache=False) by default.
 * Bump sqlobject requirement to include 0.14

28 Oct 2010
 * Fix WW card list to work with queued_reload
 * Minor speed savings, but removing some unneeded work
 * Batch child card query for speed

27 Oct 2010
 * Tweak HTML output when author isn't set
 * card count listener speedups

26 Oct 2010
 * Add tests for unset author case
 * Hide sqlobject differences in CardSetWrapper
 * Ensure we always include an author attribute in output, for compatability
   with older versions
 * Fix caching bugs

25 Oct 2010
 * Fix exception handling so we still work with sqlobject 0.9
 * Protect against author returning None with later sqlobject versions

24 Oct 2010
 * Cache some lookups, to improve card set list model speed
 * Fix queued_reloads to run.
 * Fix reloading card set twice on profile changes
 * Prepopulate abstract card to physical card mapping
 * Seperate out adaptor cache creation
 * Fix test breakage caused by changes

20 Oct 2010
 * Add discipline with level grouping

19 Oct 2010
 * Reorder card text in CardTextView. Card Text is now above rulings and
   expansion info

18 Oct 2010
 * Change discipline order in print-card cli option
 * Make sutekh fail a bit more robustly in the face of unicode input

17 Oct 2010
 * Sort disciplines in card text view to match the order printed on crypt cards

3 Oct 2010
 * Add WW Card Count plugin and docs

29 Sep 2010
 * Sort expansions when presenting list to select replacement from

25 Sep 2010
 * Avoid repeatedly reloading card sets on startup

24 Sep 2010
 * Consider expansions by default when comparing card sets

23 Sep 2010
 * Add test for the card set model config change handling

20 Sep 2010
 * WW Analysis plugins (Expansion Stats, Clan discipline stats) now only
   include illegal cards if the card list does

16 Sep 2010
 * Better visual hints when dragging filters and filter elements

15 Sep 2010
 * Improve dragging code
   - Most panes, except card text pane, can be dragged more easily
   - Document card text special case
 * Remove the no longer needed custom search dialog

08 Sep 2010
 * Add listeners so the menus are updated when the profile changes
 * Update docs to match current profile status better

02 Sep 2010
 * Add support for deleting profiles to profile management dialog

30 Aug 2010
 * Unbreak 0 card count case in the card count filter

29 Aug 2010
 * Show correct (copy action) symbol on drags
 * Fix drag_delete signature

20 Aug 2010
 * Add basic profile management dialog

19 Aug 2010
 * Show current profile when starting profile editor

18 Aug 2010
 * Fix bug in card set view column when reloading the database.
 * Tweak logging to display exceptions earlier, to handle cases involving
   the progress bar better.
 * Add support for both single & double quotes to filter parser (for
   commandline usage), with tests

17 Aug 2010
 * Add various options to the command line tool
   - support for running filters
   - print card set (using ARDB text format)
   - list the card sets
 * Unify zip dialog handling in plugins

16 Aug 2010
 * Fix download url for images from FELDB site

12 Aug 2010
 * Update docs
 * Tweak textile2html script to use tidylib if available
 * Add extra column icon mode to the profiles

11 Aug 2010
 * Allow dragging filter values onto any suitable filter

10 Aug 2010
 * Sort column options in the profile editor

05 Aug 2010
 * Pad various values in the filter editor so that sort better
 * Finish support for dragging values between filters of the same type

04 Aug 2010
 * Use custom drag icons to give more visual feedback when dragging objects

03 Aug 2010
 * Start implementing dragging filter values around
 * Use treeview methods for more visual feedback when dragging

02 Aug 2010
 * better fix of the empty filter group deletion / moving issue
 * Pylint driven cleanups

01 Aug 2010
 * Fix bug that led to filter groups disappering in the filter editor
 * Fix bug that made it impossible to delete some empty filter groups
 * Some pylint cleanups

31 Jul 2010
 * Remove some dead code
 * Pylint cleanups

27 Jul 2010
 * Start profile docs section
 * Remove some dead code
 * Remove 'card set extra columns' from menus (only changeable via profiles now)

22 Jul 2010
 * Unify the profile editors
 * Unify some of the profile menu handling code

21 Jul 2010
 * Fix bug that caused unnessecary appending of pane numbers to names
 * Fix bug wit left default profile entry in the menu incorrectly
   unselected when loading the profiles

20 Jul 2010
 * Add a profile type parameter to simplify profile code

18 Jul 2010
 * Add python-rsvg dependancy note

17 Jul 2010
 * Add shortcut for Equalize pane sizes
 * Change Pane menu accelerator to 'P'

16 Jul 2010
 * Simplify code for handling the 'hide illegal cards' option
 * Disable 'hide illegal cards' to improve test speed where appropriate

15 Jul 2010
 * Tweak filter for 'hide illegal cards' option to perfrom better with sqlite
 * Add some 'not for legal play' cards to the test data.

10 Jul 2010
 * Add Preference to show or hide illegal cards

08 Jul 2010
 * Add support for profiles for the card set list view
 * Hook up extra columns to the profiles

05 Jul 2010
 * Add profile support for the WW cardlist
 * Tweak starter deck display. Sort starters by expansion, then name

29 Jun 2010
 * Add GroupPairGrouping

24 Jun 2010
 * Display percentage in progress bar
 * Add support for reading extra cards from a file. Can be used for adding
   missing information or cards not in the WW cardlist (such as the storyline
   cards).
 * Change Analyze plugin to search for new "not for legal play" keyword,
   instead of banned text.

21 Jun 2010
 * Tweak display of mixed back info in Analyze plugin
 * Work-around some gtk+ versions clearing the author text field before we
   read it.

17 Jun 2010
 * Fix bug with dragging filters with no input widget out of the filter.

08 Jun 2010
 * Update help text for filter dialog.

04 Jun 2010
 * Optimise this_set_only + parent count case for small (deck-sized) card
   lists

03 Jun 2010
 * Add more tests to the FilterBox code
 * Fix pyprotocols interface check to work with newer pylint

01 Jun 2010
 * Avoid double load when restoring the grouping to a card set.

30 May 2010
 * Fix some fallout from the FilterBox changes

26 May 2010
 * Don't display special cases in library overview of AnalyzeDeck
 * Fix FilterBox code to work with empty filters.

25 May 2010
 * Split FilterBox code out of FilterEditor into seperate file
   - Add some basic FilterBox tests as well

21 May 2010
 * We drag values into the filter now.

05 May 2010
 * Reorganise the menu structure.
   - Combine all download operations under File->Data Downloads
   - Move backup to file
   - Create Analyze menu for analysis routines
   - Rename plugins menu to Other.
   - Hide, rather than diabling, the Other menu if it's empty

02 May 2010
 * Fix sutekh-cli --reload to work again
   - Use zip files, so we reload card sets in the correct order
 * Add watcher as a keyword

29 Apr 2010
 * Fix filter editor's display of card set filters (broken by description
   change)

28 Apr 2010
 * Rename CardFunction filters to be clearer
 * Add check_cs_size option for plugins - used by Analyze, CardDrawProbablities
   and OpeningHandSim plugins to query user when called on large card sets
   (like "My Collection")
 * Tweak CardDrawProbablities plugin to handle selections with 0 card counts
   better
 * Use filter descriptions everywhere in filter editor for consistency
 * Fix bug in setting first option in a profile
 * Filters that don't require input should not be treated as disabled by the
   filter editor

27 Apr 2010
 * Fix bug in dealing with gtk.Adjustments which could cause a crash when
   dragging fitlers into the filter editor.

25 Apr 2010
 * Ignore filter components with unset values.
 * Add a popup context menu for deleting/disabling filter components
 * Make default profile name not editable
 * Sort preference entries sensibly
 * Add partial support of extra columns to the profile editor
 * Initial work on local profile support
 * Tweak some filter names / disply issues

24 Apr 2010
 * Add support for saving filters with values
 * Add config file listener to plugins
 * Add groupings to profile preferences

22 Apr 2010
 * Avoid calling load twice for each card set on startup
 * Update old 'Blackhand' expansion name during upgrades

21 Apr 2010
 * Tweak Card Images plugin to prefer showing existing images more often

20 Apr 2010
 * Fix database upgrade code to also work with newer sqlobject versions

19 Apr 2010
 * Add menu options for choosing a profile
 * Mostly working profile editor

18 Apr 2010
 * Change filter dialog to a two-pane only layout

13 Apr 2010
 * Fix bug in parsing 'X from Y' filters
 * Initial profile editor dialog

10 Apr 2010
 * Add imbued FAQ to the Rulebook plugin

24 Mar 2010
 * Compress zipfile entries when creating zip files.

18 Mar 2010
 * Preserve any existing card set hierachy when importing the starter decks

11 Mar 2010
 * Add check button to toggle in use status to the Create/Edit card set
   properties dialog.

09 Mar 2010
 * Add the new tree-model based filter dialog.
 * Add plugin to determine some expansion & rarity stats.

08 Mar 2010
 * Change Card count filter to take multiple card sets as well as multiple
   counts.
 * Fix some bugs in the Card Set independence plugin.
 * Commit some of the less invasive changes required by the filter dialog
   rewrite.

26 Feb 2010
 * Update TODO
 * Remove the non-py2exe nsis installers, as being no longer needed, and
   creating slightly broken installers

23 Feb 2010
 * Addition of NSIS installer script for py2exe build.

21 Feb 2010
 * Major rework of configuration file format and handling.

17 Feb 2010
 * Make WhiteWolfParser more robust against duplicated entries in the
   cardlist.

16 Feb 2010
 * Add support for HttB
 * Change default download location to better url

13 Feb 2010
 * Rework SutekhCli so sutekh.start() works as expected
 * MultiPaneWindow makes much less use of pane names.
   - Do more by querying the pane properties.
   - Pane's now have unique ids, which are pane properties
   - Same is true for menu dictionary keys

09 Feb 2010
 * Add 'archetype' as a keyword
 * Rename the scripts. rename SutekhGui to sutekh, SutekhCli to sutekh-cli

08 Feb 2010
 * Change to using setuptools entry_points rather than scripts in setup.py -
   this is easier for packaging tools to deal with
 * Remove Lasombra sales plugin (since the Lasombra no longer sells singles).
 * Remove xlrd dependancy (no longer needed)

01 Feb 2010
 * Rework card images plugin to use  modified FileOrUrlWidget for UI
   consistency.

28 Jan 2010
 * Add investment keyword

27 Jan 2010
 * Add filter to the starter deck file selection widget

26 Jan 2010
 * Combine duplicate code in FileOrUrlWidget
 * Convert Starter Deck plugin to use FileOrUrlWidget

21 Jan 2010
 * Try to preserve cursor position in reload_keep_expanded.

20 Jan 2010
 * Remove Lasombra order export plugin, since the Lasombra no longer accepts
   orders for singles.
 * Add some more keyword special cases.

13 Jan 2010
 * Add special case list to handle Ghoul Retainer, High Top & Gypsies

31 Dec 2009
 * Add GuessFileParser, which attempts to guess the correct file format when
   importing a card set.

30 Dec 2009
 * Make more use of the logging module to record errors. Log uncaught
   exceptions, and allow a log file to be specified.
 * Sort menu items created by plugins in the 'Plugins' and 'Card Set Export'
   menus.
 * Rework database caching during test runs - depends on nosetests to do
   the right thing.

05 Dec 2009
 * Make io modules raise IOError rather than RuntimeError, as matching intent
   better

23 Nov 2009
 * Change card set independance plugin to also use the card set lists widget

18 Nov 2009
 * Fix 'hunting ground' keyword regexp
 * Add 'trophy' as a keyword

17 Nov 2009
 * Improve database lookup caching for the case when showing all cards while
   also filtering the card set.
 * Make race condition around midnight in io tests harder to hit.

15 Nov 2009
 * Add explicit style hint to toolbar, to override system setting.

05 Nov 2009
 * Add caching of SQLite databases during tests.

04 Nov 2009
 * Use slightly smaller gtk.ICON_SIZE_MENU for the add/remove icons.
   - Adjust pressed animation to use smaller offsets as a result

02 Nov 2009
 * Be explicit about sorting items in ARDB export. Avoids differences
   between python 2.6 and python 2.5 output (this may partly be a 32bit vs
   64bit issue, but it's still a bug).

27 Oct 2009
 * Send list of physical cards to listeners
 * Tweak show logic so toolbar plugins can start hidden
 * Add a total cost of card set option to the Lasombra plugin

26 Oct 2009
 * Add export to the Lasombra's order template

23 Oct 2009
 * Add support for reading multiple selections from CardSetsListView
 * Change CardSetCompare plugin to use CardSetsListView
 * Allow multiple sets to be excluded.
 * Update model when marking a set as excluded
   - remove no longer needed reloads

22 Oct 2009
 * Add holder for excluded card sets to CardSetManagementModel
 * Factor out CardSetListsView from CardSetManagementView.
 * Change CreateCardSetDialog to use CardSetListsView

21 Oct 2009
 * Ensure we don't call set_busy_cursor when we no longer have a window
 * Create FilteredView base class to unify filtering + search for the various
   TreeViews
 * Rework CardSetManagementView to inherit from FilteredView. Remove
   duplicated code from CardSetManagementController
 * Shuffled a lot of utility functions out of CardSetManagementController
   into GuiCardSetFunctions

20 Oct 2009
 * Don't show all card sets unless editable in 'show card sets' and
   'show card sets + expansions' - more consistent with behaviour elsewhere.

19 Oct 2009
 * Extract Starter deck zipfile name from UserDocumentation page, rather than
   hardcoding it. Does assume that the 1st zipfile listed on the page is the
   right one.
 * Include titles in ARDB Text export
 * Rework ARDB Text export so it's closer to ARDB's output

18 Oct 2009
 * Tweak ma signal handling to work around changes between gtk 2.16 and 2.18

16 Oct 2009
 * Rename Blackhand to Black Hand for beter consistency with the rest of the
   world

15 Oct 2009
 * Split large tests in test_CardSetListModel.py
   - Also reduce number of cards a bit to speed things up, since the extra
     cards don't add anything.

14 Oct 2009
 * Fix bug where the parent count for the group would not be updated correctly
   when removing a card from the group

13 Oct 2009
 * Rework test_CardSetListModel to compress several loops - significantly
   faster

06 Oct 2009
 * Add test for the 'X, The' preference

03 Oct 2009
 * Fix CardListModel and CardSetCardListModel tests

02 Oct 2009
 * Remove historical 'pcs_' prefix from zip file entries.

01 Oct 2009
 * Enable sorting as "X, The" based on user preference
 * Document "X, The" preference
 * Ensure we handle 'A ' and 'An ' the same (future proofing)

25 Sep 2009
 * Do required iter juggling when editing with a physical filter in place
   so entries don't get unexpectedly collapsed

17 Sep 2009
 * Add expansion & font options to the print plugin

16 Sep 2009
 * Add more keywords (equipment & master keywords)

08 Sep 2009
 * Query database for max group in ClanDisciplineStats plugin
 * Update maximum limit on SQLObject, since 0.11 has been released

25 Aug 2009
 * Don't hard-code numerical limits in Filters for group, life, etc., but
   read them from the database.

21 Aug 2009
 * Don't use grouped_card_iter in printing so we don't inherit the "show all
   cards", etc. settings.

20 Aug 2009
 * Tweak logic for physical card assigned to the model when the filter
   restricts this.

19 Aug 2009
 * Tweak CardListModelListener API to work better with the changes to
   the handling of phyiscal filters
 * Fix CountCardSetCards plugin to work with modified API
 * Add more tests for CardListModelListener behaviour
 * Add plugin to show which starter cards can be found in

18 Aug 2009
 * Move set_card_text listener to CardTextView, as being more logical, and
   allowing plugins to be simplified
 * Combine multiple definitions of escape function in plugins into a common
   method, as being a generally useful thing for plugins to access.
 * Tweak CardTextBuffer so each label has an associated mark, so we can
   easily move to points in the buffer.

17 Aug 2009
 * Add check_card_visible listener
   - Allows plugins to filter displayed card list
   - Add additional checks for when a filter restricting cards on physical card
     properties (expansions or counts) is used - removes a number of odd
     corner cases
 * Add some notes about editing with filters active to Manual
 * Add support for hiding zero counts to Lasombra plugin

15 Aug 2009
 * Add more test data to cover the keywords

14 Aug 2009
 * Add some tests to ensure MultiXFilter and XFilter behave the same
 * Rework test_FilterParser to avoid maintaining a duplicated set of
   expected results.

13 Aug 2009
 * Fix CostFilter to handle 0 costs the same as MultiCostFilter

12 Aug 2009
 * Use sort_equal_iter in some plugins, rather than repeating code.
 * Add import_cs helper function - combine common code in plugins
 * Refactor import code in main menu to use import_cs helper
 * Rework CSVParser to use the IOBase interface
 * Add simple test case for CSVParser
 * Change CSVImport plugin to use import_cs helper

11 Aug 2009
 * Expose text buffer & view via properties (mainly for plugins that add text)

07 Aug 2009
 * Add support for a number of keywords.

05 Aug 2009
 * Hide the parent count column by default if the parent card set is empty
   (useful when using the parent set as a card set holder)

31 Jul 2009
 * Unify the various crypt/library tests scattered in the code

30 Jul 2009
 * Change secret library import to use unified rename dialog and logic.

29 Jul 2009
 * Redo reload_keep_expanded to be robust against various path changes.
 * Use reload_keep_expanded when applying/unapplying a filter,
   as being more predictable.

20 Jul 2009
 * Change zip import plugin to use unified rename dialog and logic.

19 Jul 2009
 * Add a rename dialog and start working on unifying the handling renames 
   when importing a card set.

02 Jul 2009
 * Add py2exe build system, including:
   - support for loading plugins from zipimported modules
   - a test console script for launching into py2exe environments

01 Jul 2009
 * Fix ARDB Text Export (broken by changes ArdbInfo)
   - add test case for ARDB Text export
 * Unify several export plugins into CardSetExport.py

30 Jun 2009
 * Remove compatability code for old parsers from CardSetImport plugin
 * Tweak remaining writers to use IOBase interface
   - update test suite & import plugins

29 Jun 2009
 * Drop id attribute from XML files
 * Change ELDBInventryParser to the IOBase interface
 * Change ELDBHTMLParser to the IOBase interface
 * Change ARDBTextParser to the IOBase interface

26 Jun 2009
 * Update dependencies used in Windows build:
   - Python 2.5.4
   - setuptools to 0.6c9
   - SQLObject 0.10.6
   - FormEncode 1.2.2

25 Jun 2009
 * Extend several io tests to cover more cases
 * Convert ARDB XML export to IOBase interface
 * Convert ARDB HTML export to IOBase interface
   - Also fixes the HTML grouping bug (r1967 on the stable branch)
 * Convert Lackey export to IOBase interface

24 Jun 2009
 * Wording fix on clan stats for analyze card set
 * Add test case for escaping vampire names
 * Fix escaping of vampire names in ARDB XML export
 * Fix bug in ARDB text export

22 Jun 2009
 * Convert JOL, Lackey CCG & ELDB Deck Parsers to the new interface.
 * Create base class for tests using the main window. Unifies setup/teardown
   code.

20 Jun 2009
 * Rework the io tests to remove some duplicated code.

19 Jun 2009
 * Convert ARDB XML Parser's to the new IOBase interface. Combine some common
   code.
 * Add compatiblity check to CardSetImporter so it can work with both old and
   new interfaces.

15 Jun 2009
 * Change PhysicalCardSetWriter to use the new IOBase interface.

12 Jun 2009
 * Pull card count colour completely out of the model. Minor tweaks to the
   gtk model insert loop (10% faster on large models).

11 Jun 2009
 * Fix bug in reloading card sets due to Model changes
 * Twiddle enabling/disbaling sorting in WW list to speed by reloads

10 Jun 2009
 * Refactor the Sutekh XML Parsers to the new IOBase interface.
   - pull a lot of common code into BaseSutekhXMLParser
 * Push transaction management into CardSetHolder, rather than adding
   it everywhere the Parsers are used. Fix fallout of this.

08 Jun 2009
 * Add PhysicalCard and AbstractCard to the model. Avoids bouncing through
   the adapator in several places
   - Ensure all access to the card name go through the abstractcard, so the
     result is not tied to the model entry

04 Jun 2009
 * Add Abbrevation entry of Ebony Kingdom
 * Add new common abbrevation for Aye and Orun

01 Jun 2009
 * Change PhysicalCardSet XML file to use an element for the deck description.
   This preserves formatting, unlike XML attributes.

25 May 2009
 * Add VTES Rules reference to rulebook plugin.
 * Ensure proper cleanup in the new gui tests. Fixes some interactions with
   nose and the gui tests which caused running the complete test suite to fail.

17 May 2009
 * Properly set date & time in zip file
 * Display TheLasombra inventory import errors more neatly.
 * Handle duplicate card entries in TheLasombra inventory correctly.

14 May 2009
 * Start working on more gui test cases to improve code coverage

05 May 2009
 * Make rulebook plugin less aggressive when stripping <img> tags.
 * Add some basic tests for mixed card backs in the Analyze Deck plugin.

04 May 2009
 * Close a couple more potential connection leaks
 * Ensure caches are properly flushed on backup restores & importing new
   cardlists. Prevents a couple of bugs.

29 Apr 2009
 * Make SutekhGui.py fail more gracefully when run without a windowing system

21 Apr 2009
 * Fix cost grouping
 * Cache IPhysicalCard(<tuple>) lookups

19 Apr 2009
 * Add canonicalName to Artist table (a belated 0.8.x database change).
 * Add artist, keyword and crypt group groupings.
 * Warn if "burn option" keyword isn't found by CardTextViewer instead
   of exiting.

14 Apr 2009
 * Functionally complete Secret Library import / export plugin.

13 Apr 2009
 * Rework card set entry limits in the gui to match database again
 * Reformat comment part of card set properties dialog to use a scrolled
   window - better for long/complex formatted descriptions.
 * Listen on card changes in the card set management extra column plugins.
 * Fix table version for PhysicalCardSet in plugins

10 Apr 2009
 * Add sutkeh.io.IOBase which describes card set parser and writer
   interfaces.
 * Add sutekh.core.CardSetHolder.CardSetWrapper that provides a
   read-only CardSetHolder compatible view of an existing card set.
 * Sutekh 0.8 database changes:
   - Add Artist and Keyword tables.
   - Remove restrictions on string column lengths, except alternate
     ids which now all have a maximum length of MAX_ID_LENGTH
     (currently 512)
   - Remove burnoption field from AbstractCard and replace it with
     the "burn option" keyword.
   - The AbstractCard life field now refers to retainer and ally
     life as well as imbued crypt card life.
 * Basic support for upgrading from 0.6 to 0.8.
 * Add ArtistFilter, MultiArtistFilter, KeywordFilter
   and MultiKeywordFilter.
 * Move SLDeckParser and SLInventoryParser to IOBase.CardSetParser
   interface.

09 Apr 2009
 * Tweak the way sorting is enabled to speed up the tests.
 * Split CardSetListView test a bit so it's somewhat clearer
 * Use IAbstractCard in card lookups, so they benefit from csv_to_canonical
 * Make csv_to_canonical less case sensitive (for card lookups)

05 Apr 2009
 * Explicitly close transactions connections on commit when reading. Avoids
   the "too many connections" errors on postgres.

03 Apr 2009
 * Copy mscvr71.dll from the windows python installation - fixes 
   sutekh installation on windows XP.

01 Apr 2009
 * Add an Extra Columns plugin for the CardSetManagement pane. 
   Shows children card set counts, card counts & some card set
   attributes.

31 Mar 2009
 * Allow plugins to register on the CardSetManagement pane

25 Mar 2009
 * Add tooltips to butons in GuiCardListView

24 Mar 2009
 * Remove markup from tab popup menu in card set compare plugin
 * Unify the repeated handling of "..., The" names into common functions
 * Bump pygtk requirement to 2.12
 
22 Mar 2009
 * Ensure zip file entries are created with sensible unix permissions

19 Mar 2009
 * Teach IAbstractCard about "..., The" names
 * Fix lasombra plugin to handle the occasional "..., The" name correctly

17 Mar 2009
 * Add the VTES FAQ from thelasombra.com to the rulebook plugin

13 Mar 2009
 * Fix sorting in CardSetCompare plugin. Add totals for each group to the
   display

11 Mar 2009
 * Add some notes about the total library size to the Analyze plugin
 * Add supoort for the V:EKN Tournament rules to the rulebook plugin

10 Mar 2009
 * Fix creating card sets from filters & card set compares
 * Compare card set plugin uses same grouping as the card set used as the
   card set the plugin is called from.

09 Mar 2009
 * Fix bug preventing commandline importing of backups from working

07 Mar 2009
 * Always sort by name when the columns values are equal
 * Always sort the various models (card sets, card lists, card set list)
 * Always pretty print the xml, even when sending it to the zip file
 * Sort XML file entries by card name + expansion, to make things more
   predictable - simplifies the test cases a bit as well

24 Feb 2009
 * Ensure Lasombra plugin and extra columns plugin use different sort column
   ids when both are enabled.

23 Feb 2009
 * Fix renaming of card sets to work with multiple copies
 * Ensure deleting renamed card sets works properly
 * Change the card list sets in use filter to take a card set parameter.
   Fixes incorret behaviour when multiple card sets have in use children.
   Document that both in use and the "in card set" filter just match on card
   name and expansion.

21 Feb 2009
 * Allow opening multiple copies of a card set. Usefule for seperate
   crypt/library views, etc.

13 Feb 2009
 * Remove more redundant pylint disable-msgs

12 Feb 2009
 * Replace the string + markup fiddling with card set numbers with seperate
   model columns for number and colour. Simplifies & speeds up numerical
   sorting.
 * Factor out some common code from the different HTML Parsers.

11 Feb 2009
 * Add plugin for displaying the pricelist from thelasombra.com
 * Adjust sample pylint rcfile based on discussion on the mailling list
 * Massive pyline cleanp commit - remove numerous no longer relevant
   disable-msg's, change constant naming conventions, etc.
 * Remove some redundant inheritences from object

03 Feb 2009
 * Fix incorrect date in changelog (2009 is still != 2008)
 * Remove forced_cancel logic from FilterDialog & MultiSelectCombo, since it
   has been broken for a while, and there's no compelling reason to fix it.
 * Add a note on cost filter corner cases to the manual.
 * Fix some typos in the Manual and tutorial.
 * Fix some minor errors in filter help text

02 Feb 2009
 * Fix MultiCostFilter to do the right thing with costs of 0
 * Fix typo in pylint comments in Filters.py
 * Hook on button_release in wondows for the multi-select widget, so 
   it behaves similairly to Unix

19 Jan 2009
 * Fix incorrect dates in CHANGELOG (2009 != 2008)
 * Shorten layout of the Count Card Set Cards plugin

15 Jan 2009
 * Add some tests for the best_guess_filter
 * Add tests to cover the XmlFileHandling wrapper used by the GUI
 * Pylint cleanups + comment typo fixes
 * Tweak JOL Parser to be less sensitive to use a regexp - less sensitive
   to white space variations and so forth.
 * Add option to create card sets from the card set compare plugin

14 Jan 2009
 * Sort expansions when adding in Card sets + expansions mode, for consistency
 * Use view.load in grouping plugin so we get busy cusor & gtk view tricks to
   speed up model loads
 * Use TreeStore.prepend rather than TreeStore.append for the card - speeds
   up loading large models.
 * Add test case for DatabaseVersion code
 * Extend FilterParser test to cover some parts of the AST

13 Jan 2009
 * Fix numerical sorting on card count + parent count cols to use numerical,
   not string sort order
 * Disable sorting while reloading card sets.
 * Tweak CellRendererIcons to accept None as meaning no icon - allows
   speeding up large loads slightly.
 * Change how numerical sorting is enabled so the tests aren't made horribly
   slow.

12 Jan 2009
 * Fix bug which caused editable card sets to be reloaded several times when
   the pane layout changed.
 * Avoid some unnessecary queries into the CardListModel - speeds up complex
   loads.

08 Jan 2009
 * Tweak extra columns so 'Any' group shows up properly

07 Jan 2009
 * Add support for linking to the secret library in  the exported HTML files
 * Make the HTML link destination configurable 
 * Add Edit->Search menu option to popup the search dialog
 * Add Search button the the card lookup menu
 * Add some more documentation on how the search dialog behaves

17 Dec 2008
 * Cache more results from the database in CardSetListModel - improve the
   perfromance of the slower paths somewhat.

15 Dec 2008
 * Cache some database results in CardSetListModel - slightly faster

12 Dec 2008
 * Minor rework of CardSetListModel to improve performance
 * Fix stupid bugs in ELDB, JOL and Lackey exporters
 * Fix promo conversion in ARDB export
 * Fix handling of card names for ARDB
 * Fix handling of Advanced attribute for ARDB import
 * Add more cards to test data to better cover io tests
 * Extend io tests to use extra cards

11 Dec 2008
 * Save window info on 'delete-event', not 'destroy', so we get the right
   window size
 * Avoid some unnessecary code paths when adding a card - speeds up adding
   a card set when children card sets are open, and the added card doesn't
   affect them

10 Dec 2008
 * Extend CachedCardSetHolder to also cache expansion name mappings
 * Use CachedCardSetHolder for reading from a zip file
 * Add test case to CachedCardSetHolder

09 Dec 2008
 * Move best_guess_filter to sutekh.core, as it's not gui specific
 * Fix IExpansion no longer throwing KeyError (due to unknown expansion
   handling changes) in CardLookup
 * Add test case for CardSetHolder & the default CardLookup

04 Dec 2008
 * Handle unknown rarities more gracefully
 * Display the pango properties used when run with --verbose
 * Handle the addition of Blood Shadowed Court to the cardlist

03 Dec 2008
 * Add a parser for decks writen by Lackey CCG's VTES plugin

02 Dec 2008
 * First stab at JOL import/export - needs teting against the actual JOL
   servers
 * Add export to Lackey CCG's VTES plugin
 * Fix minor bug in FELDB export ", An", not "An .."

29 Nov 2008
 * Fix minor bug that allowed dropping of non-card-sets onto card sets in
   the card set list.
 * Fix bug in handling of drive separator on Windows that prevented the
   rulebook plugin from opening its files.

27 Nov 2008
 * Fixes to HTMLTextView (improved list intending and fixed whitespace stripping bug).
 * Clean up of SutekhInfo (updated contributors, added download URL, classifiers and
   platform information).

26 Nov 2008
 * Added entity and charref handling to HTMLTextView.
 * Major documentation grammar and style reworking.
 * Explicit disconnection of listeners when card sets are deleted.
 * Minor bugfix to error handling in OpeningDrawSimulator plugin.

25 Nov 2008
 * Add an explicit disconnect from the database signal. This avoids a 
   couple of cases where removing card sets can leave stale listener.

24 Nov 2008
 * Remove clustering plugin dependence on external clustering libraries.
 * Clean up clustering plugin GUI layouts and add documentation.

19 Nov 2008
 * Change GuiCardLookup so the default filter for the "Specify Filter"
   button is on the Card Name.
 * Fix some corner case bugs with GuiCardLookup & Filters
 * Add Keepers of Tradition to the list of recognised expansions

18 Nov 2008
 * Add additional consistency check to card set import plugin. Hopefully
   helps avoid broken imports due to the wrong format being specified.

16 Nov 2008
 * Add a plugin to allow importing Sutekh XML files from a zip file

15 Nov 2008
 * Add rulebook plugin - use webbrowser to display a copy of the rulebook
 * Improvements to the HTMLTextView widget
 * Tweak Abbrevations handling - should mak it easier to import the WW cardlist
   after new expansions have been released
 * Misc documentation bits

14 Nov 2008
 * Fix editable color setting to work with changes needed for icons display
 * Misc documentation bits

13 Nov 2008
 * Add a cost grouping
 * Add an extra column for card costs
 * Enable icons for the top level groupings

11 Nov 2008
 * Add groupings for Sect and Title.
 * Add extra columns for Sect, Title and card text.
 * Don't make replace pane menu option active unless a pane is selected

10 Nov 2008
 * Change Groupings to include Imbued:
   - Change ClanGrouping to include Creeds
   - Change DisciplineGrouping to include Virtues
 * Change Extra Columns to include Imbued:
   - Change Clan column to Clans & Creeds
   - Change Discipline to Disciplines & Virtues
   - Change Capacity to Capacity & Life (Imbued)

08 Nov 2008
 * Retrieve version info from SutekhInfo when building Windows installer.

06 Nov 2008
 * Rework display of the card set independenct plugin.
   - split the different card sets into seperate tabs
   - display the total of cards used in each card set
 * Don't enable the "delete selection" when the card set isn't editable

04 Nov 2008
 * Add workaround for the button-press-event wierdness on windows -
   clicking outside the search dialog now works more-or-less as expected
   there.

30 Oct 2008
 * Rework search dialog placement to better match gtk+'s native placement

25 Oct 2008
 * Treat unparseable CSV count columns as one but warn the user.
 * Tweak BestGuessFilter in GUI card lookup to produce hopefully
   better results and to use AbstractCard to speed up initial search.

21 Oct 2008
 * Add release type and number to SutekhInfo.VERSION tuple (to match
   sys.version_info). Construct more descriptive VERSION_STR from
   new tuple.

20 Oct 2008
 * Branched off 0.6.x release branch, trunk now 0.7.

13 Oct 2008
 * Add simple test case for the CardSetManagementModel

09 Oct 2008
 * Set focus to a neighbouring pane when removing a pane
 * Setup tab to navigate between panes

06 Oct 2008
 * Replace the use of ord with gtk.gdk.keyval_from_name, which appears to be
   the correct thing to do.
 * Hook up numpad keys to the editing keybaord shortcuts

05 Oct 2008
 * Correct menus to match saved state

04 Oct 2008
 * Save open card set pane state (Cards shown, extra levels, etc.) on exit
 * Partially restore state on load (menu needs to be fixed)
 * Improve intial setup - offer to download icons & images
 * Add CellRendererIcons to display icons and text in the TreeView.
 * Support CellRendererIcons in ExtraCardColumns plugin

23 Sep 2008
 * Add Parent card set filter for card set list
 * Tweak filter help and tutorial text

22 Sep 2008
 * Add key-board editing shortcuts - '-' & '+' to inc/dec numbers and 1-9
   for quickly setting the number
 * Rework card set menus a bit - move export plugins to own submenu

18 Sep 2008
 * Add importer for ARDB xml inventory files
 * Add CSV Export plugin
 * Fix DeckFromFilter plugin

17 Sep 2008
 * Add importer for ELDB inventory files
 * Add importer for ARDB xml deck files

16 Sep 2008
 * Add importer for ELDB (*.eld) decks

05 Sep 2008
 * Add shortcuts for Specifying the Filter (Ctrl-S), Toggling the filter
   (Ctrl-T), and closing a frame (Ctrl-W, as for galeon/epiphancy tabs)
 * Tweak menu heirachy to unify some code
 * Cleanup TODO list a bit

04 Sep 2008
 * Move card set loop breaking into CardSetUtilities and out of gui code

03 Sep 2008
 * Add special case to handle the Blood Brothers clan icon
 * Add simple test for ARDB inventory export

01 Sep 2008
 * Add simple test cases for ELDB HTML Parser + ARDB deck XML export
 * Add expand all + collapse all options to card set list
 * Fix crash caused by keeping a reference to the HTML Dialog after it had
   been destroyed.

31 Aug 2008
 * Add plugin for exporting decks to FELDB
 * Add encoding header to the exported HTML file
 * Split HTML Plugin into io +gui segments. Add test for the HTML output
 * Add test cases for the CardSetUtilities functions

30 Aug 2008
 * Use our own search dialog to avoid an interactive search bug on Windows
 * Upgade windows installer to use python 2.5.2 to avoid a bug in 
   codecs.EncodedFile
 * Fixes to setup.py + the windows installers

28 Aug 2008
 * Hook up ARDB XML Inventory export in the GUI

27 Aug 2008
 * Use set_fixed_height_mode to avoid odd gtk TreeView jumping when updating
   the rows
 * Rework CachedRelatedJoin + DatabaseVersion to reduce the number of queries
   at startup (improves speed for sqlite)
 * Expose IconManager to plugins
 * Add 'P' to Abbrevations so the Precon shortname is 'P' and not 'PB"

26 Aug 2008
 * Add some optimisations to the TreeView's, based on the gtk docs
 * Add timeout, so + & - buttons pop back
 * Remove references to Physical Card Set in filter descriptions + help

25 Aug 2008
 * Extend ARDBTextParser to support variant format used for the Anarch's 
   Preconstructed Decks

23 Aug 2008
 * Add support for Multi-Type grouping, which groups card belonging to 
   multiple types seperately
 * Add first stab add exporting to ARDB's inventory XML format
 * Honour current grouping when printing the card set

21 Aug 2008
 * Add <set> attribute to ARDB XML file. Allows decks to be properly imported
   into recent ARDB versions

19 Aug 2008
 * Reorganise code a bit
   - Move DBSignals to core
   - Split some code off SutekhUtility into core.CardSetUtilities
 * Fill in filtering tests for CardSetListModel
 * First stab at export to FELDB

18 Aug 2008
 * Fold card set annotations into the edit card set properties option
 * Add edit card set properties to the card set list view
 * Prevent card images plugin resizing images when pane is not shown

16 Aug 2008
 * Various improvements to the HTML view widget
   - Fix numbering fo nested lists
   - Support the <strong> attribute
   - Use gtk's word wrap mode for paragraphs
   - Replace the use of resource_stream in HTMLTextView with a generic loader
     function
 * Convert existing HTML documentation to textile format
 * Add textile2html.py script for creating the HTML documentation

08 August 2008
 * Fix set expansion plugin to work with changed database signals

06 August 2008
 * Consolidate the handling of AddedSignal + RemovedSignal. Simplifies code
   somewhat
 * Rework test case for CardSetListModel to use the database signals

05 August 2008
 * Change database signals so we always call alter_carD_count after the
   database has been updated.

01 August 2008
 * Minor cleanups

31 July 2008
 * Work on restructuring CardSetListModel

27 July 2008
 * Improve speed of the 'show card sets' mode in the GUI

26 July 2008
 * Address some speed issues with the CardSetListModel
 * Rework code of CardSetListModel a bit
 * Remove several redundant checks from the CardSetListModel test case

22 July 2008
 * Add support for specifying which database to test against using the
   SUTEKH_TEST_DB environment variable
 * Fix some join ordering issues with postgres and mysql

21 July 2008
 * Rework card set independence plugin to check independance in the parent
   card set

17 July 2008
 * Expose the card set count filter in the GUI

14 July 2008
 * Add script for making windows builds
 * Modify NSIS script to make locations more configurable

07 - 13 Jul 2008
 * Implement the missing editing modes
 * ensure test_CardSetListModel.py covers all cases of interest

06 July 2008
 * Extend test data and WW parser tests

05 July 2008
 * Expand ZipFile tests
 * More work on editing the CardSet's

01 July 2008
 * Add test data for Reflex and Flight
 * Add some tests for zip file handling

28 June 2008
 * Fill in CardListModel tests
 * Move PhysicalCardSet IO tests to io/ directory
 * Move other PhysicalCardSet tests to core/

24 June 2008
 * Expand on the stubs for testing the CardListModel and CardSetListModel

23 June 2008
 * Replace exisitng physical card count filter with a card set card count
   filter, as, with the changed database, the physical card count filter is
   no longer useful.

20 June 2008
 * Add stubs for testing CardListModel and CardSetListModel

18 June 2008
 * Add a CardSetModelRow object for holding data about the contents of a model
   row. Replaces the current dict of dict's.
 * Show all child card sets when a card set is editable
 * Also show everything in the 'expansion + card sets' and 'card sets + expansions'
   modes
 * Refactor cache management in the CardSetListModel

17 June 2008
 * Move card list model updates to the database signal handlers, to ensure
   correct behaviour.

16 June 2008
 * Add SpecificPhysCardIdFilter + tests on the Specific card filters

15 June 2008
 * pylint cleanups
 * Make dragging from the Physical Card list when only 1 expansion is shown
   (via an Expansion filter) work as expected.

14 June 2008
 * Plugin cleanups Re-enable Clan Discipline Stats plugin.
 * Add more tests to test_Filters
 * Extend test data to include titles + imbued
 * Fix bug in analyze deck's HF analysis. Add percentages to HF, for deck
   construction
 * Fix dicsipline sorting in Analyze plugin

13 June 2008
 * Add support for Blood Shadowed Court. Since this is not in the published
   data, clone the information from Cam Ed.
 * Ensure that importing a card set from file doesn't break parent-child
   relationships unless loops are introduced
 * Add cache invalidation support to CachedRelatedJoin, so BSC fiddling works
   as expected

12 June 2008
 * Unify card set deletion code. Ensure that children of a deleted card set
   are reparented before the card set is removed.
 * Don't repeatedly determine the editable colour hint
 * Rework drag-n-drop code to work better with the new card display modes

11 June 2008
 * Fix some issues with restoring from backup changing the card set ids
 * Remove card sets that were not in a restored backup
 * Add queued_reload methods so that changing the card set relationships can
   trigger reloads across all affected views

10 June 2008
 * Start reworking the signal handling

09 June 2008
 * Add Banned tab to Analyze Deck Plugin
 * Fix bug with GuiCardLookup treating valid card + expansions combinations
   as invalid if any combination listed for the card is invalid

08 June 2008
 * Fix bugs breaking importing from ELDB html files
 * Partially fix drag-n-drop between card sets - will break when in modes
   other than "show expansions"
 * Fix bug when removing cards from a card set via the gui
 * Fix cancel buttons in backup dialog
 * Don't try and preserve card set ids across WW imports + database upgrades,
   as this breaks postgresql's sequence numbering

07 June 2008
 * Add plugin to allow setting all selected cards to a single expansion
 * Ensure we re-create parents before children when updating WW card lists
   or upgrading the database.

05 June 2008
 * Add support for Twilight Rebellion. Handle 'Any' group via same mechanism
   as 'cost=X' cases.

04 June 2008
 * Extend the parent card count to cover more options
 * Change cardlistmodel to use str's for card count - allows setting markup
   in the model

03 June 2008
 * Add support for multiple 'zero count' options
 * Add parent card counts to the appropriate column

02 June 2008
 * Re-organise tests to match sutekh's main layout
 * Add the various 'show cards in child card sets' options to the card set 
   list view
 
01 June 2008
 * Fix some issues with database upgrade database copying
 * Add a test case for the database copy
 * Fix cache handling bug in the card set holder

29 May 2008
 * Fold EditableCardListView into CardSetListView

28 May 2008
 * Add support for passing warnings from CardSetHolder back to the user

22 May 2008
 * Remove obselete support for abstract card sets and the physical card list
   from the CSV importer
 * Allow drag-n-drop reparenting of card sets

19 May 2008
 * Re-enable editing
 * Add a filter for filtering on Abstract Card ID
 * Refactor card set manager gui code to a more MVC-style framework
 * Add loop detection + loop breaking to the card set management pane

16 May 2008
 * Remove obselete PhysicalCardSetController. Fold everything into
   CardSetController

15 May 2008
 * Re-enable expansions on the card set view
 * Move edit handling from EditableListMenu to CardSetMenu
 * Move del + paste code out of CardListModel to CardSetListModel

14 May 2008
 * Move code handling editing from CardListModel to CardSetListModel
 * Ensure we truncate when creating '(ACS) + old name' card sets on upgrade.
 * Drop no longer relevant tables, so they don't cause later problems
 * Mark open card sets with blue text

13 May 2008
 * Fix bug with detecting the priscus title

09 May 2008
 * Simplify pane drag-n-drop code
 * Fix bug with changing to text entry filters

07 May 2008
 * Remove AbstractCardView.
 * Numerous fixes and tweaks to GuiCardLookup.
 * Move 'show zero count card' menu option from PCL to Card Set views.

01 May 2008
 * Combine CreateCardSetDailog + PropDialog
 * Add parent property to CreateCardSetDialog
 * Move drag-n-drop code to CardSetManagementView, for consistency
 * Change SutekhFileWidget to use 'show', rather than mapped

30 April 2008
 * Fix PhysicalCardSet filter to join on the card id, not the card set id.
 * PhysicalCard list is no longer editable, and doesn't show numbers any more
 * Re-enable the ExtraColumns plugin on the PCL
 * Fix zip file handling so backups of the new database structure can be
   restored
 * Rework IdentifyXMLFile, so old + new backups can work properly
 * Add parent support to PhysicalCardSetWriter + Parser
 * Rename 'Physical Card Set List' to 'Card Set List'
 * Make DatabaseUpgrade work on version 0.4 databases again

29 April 2008
 * Database redesign day
   Move from PhysicalCard List as he card collection to card collection is
   a physical card set with subsets model.
   - Removed AbstractCardSet's entirely
   - Added parent field on Physical Card Sets
   - Create 1 PhysicalCard for each valid AbstractCard + Expansion combination
     (Includes Expansion=None for all cards)
 * Database upgrade extended
 * Various obselete files remove (AbstractCardSetWriter, PhysicalCardWriter)
 * Reworked file IO to handle new database schema
 * Tests reworked to new database schema
 * Change the card set list to a treeview, which can show parent->child
   relationships
 * clean out ACS and PCL code from the zip file handler
 * Clean ou ACS references in the plugins
 * Change PhysicalCardSet Models to use the mapping table, so distinct() on
   the select works properly, since the PhysicalCard id's are no longer unique.
   Same reasoning as previous such hack on AbstractCardSets.
 * Created sutekh-last-of-the-abstract-card-sets-april-2008 tag for tree state
   before database rework


27 April 2008
 * Fix counting bug in Analyze Card Set
 * Add filter for zip files to the backup restore dialog

25 April 2008
 * Add support for showing icons in the Card Text Window
 * Various code cleanups
 * Fix bug in PhysicalCardSet from AbstractCardSet when adding cards to the
   PhysicalCard List

24 April 2008
 * Fix WW import losing the clan shortname
 * Refactor menu classes - simplifies accelerator addition and eliminates
   repeated code
 * Add keep_above hint to the load dialog
 * Fix bug in display icons for empty physical card lists
 * Cleanup drag-n-drop code a bit
 * Rework FilterDialog. There is now only 1 FilterEditor in the dialog, and
   and filters are now explicitly load/saved & deleted from the config file.

23 April 2008
 * Address some issues with the editable hint. Check the style more carefully,
   so right thing happens with complex styles like the windows default. Enforce
   Change on the CellRenderText for the numbers. 
 * Improvements to the windows installer - use latest pygtk + gtk versions.
 * Add Sutekh icon to the windows installer and the created shortcut
 * MultiPaneWindow.__init__ split into __init__ and setup, so main window can
   be passed into the WwDialog for creating the initial database.

22 April 2008
 * Move importers to the main window
 * Normalise unicode card names when searching - avoids having to type
   unicode characters when searching. When using a non-ascii search string,
   we don't normalise.
 * Extend HTMLTextView to support <a href="#key> syntax and <em>

21 April 2008
 * Tweaked editable style hint
 * Changed WW cardlist fetching to use the smaller split lists 
   (the cardlist_[A-Z,_] files)
 * Always import flight as FLI
 * Don't show non-existant combinations in the discipline with level filter
 * Show a suitable mesage rather than nothing when the card list view is
   empty - distinguish between empty and no cards found from a filter.
 * Reformat the card text view

20 April 2008
 * CSV Import plugin added

17 April 2008
 * Move some common code to PaneMenu
 * Unfiy ExportDialog + ImportDialog into SutekhFileWidget
 * Add support for enabling & disabling menu mnemonics per pane
 * Preserve editable status when resoring and importing new WW cardlists
 * Redo GUI CardLookup plagin to use a treeview.
 * Suggest a default filename when exporting a card set

16 April 2008
 * Refactor menu code so all panes  share a common base code
 * Replace the view keypress handler with proper accelerator group handling

13 April 2008
 * Maintain a common directory across all the file chooser widgets
 * More pylint driven cleanups
 * Refactor WriteArdb* classes to have a common ancestor

12 April 2008
 * Further conversion work on the function syntax
 * Other cleanups

11 April 2008
 * Fix AnalyzeCardList's happy family analysis

10 April 2008
 * Refactor AnalyzeCardList Plugin
 * pylint driven cleanups

09 April 2008
 * Refactor CardSetExportToHTML plugin
 * Escape markup in the CardSetPrint plugin
 * pylint cleanups

08 April 2008
 * Changed the way plugin menu items work.  Plugins can now register multiple
   items on several different menus. Fix CardImagesplugin to do so

06 April 2008
 * Add HTMLTextView to display help texts

03 April 2008
 * Rework the card draw probablities plugin' layout
 
02 April 2008
 * Change card images plugin to scale image to pane size by default
 * Rename CardDrawSimulator to CardDrawPropbablities

29 March 2008
 * Various Changes based on user feedback. Added several TODO items.

28 March 2008:
 * Add crypt to opening hand simulator

24 March 2008:
 * Change CardDrawSimulator to show multivariate hypergeometric probablities
   when multiple cards are selected
 * Hook up 'del' to delete all cards in current selection from a card list

23 March 2008:
 * Add more cases to CardFunctionFilter

22 March 2008:
 * Initial version of a CSV file reader

21 March 2008:
 * Opening hand simulation plugin
 * Add a filter on CardFunction
 * Clean up several pylint warnings

20 March 2008:
 * Add support for ARDB's images with expansions

16 March 2008:
 * Simple card draw probablities plugin

13 Mar 2008:
 * Various improvements to the AnalyzeCardList plugin
 * Provide wrapper around SQLObject's IN(..) to handle IN(a, []) case
   safely in Filters
 * Add SetsInUse filter for the PhysicalCardSet list
 * Add comments to clarify PhysicalCardFilter, AbstractCardSetFilter and
   PhysicalCardSetFilter

12 Mar 2008
 * Fix MultiPhysicalCardCountFilter to work with sqlite
 * Improve filter box item type detection

11 Mar 2008
 * Add test cases for PhysicalCards
 * Rework DatabaseUpgrade to hopefully be more robust. Improve the error 
   reporting
 * Complain about missing values in the filter dialog
 * Various improvements to FilterDialog

09 Mar 2008
 * Various improvements to the FilterDialog.
 * Use button to close MultiSelectComboBox

07 Mar 2008
 * Rework EditPhysicalCardSetMapping dialog so ordering is more stable

05 Mar 2008:
 * Ensure the mapping between physical card sets and physical cards is
   restored correctly across backups and importing new WW cardlists
 * Initial commit of new filter editor.

28 Feb 2008:
 * Add encoding lines to all *.py files
 * Misc cleanups of file header comments
 * Save "Display zero count" status in PCL in config file

26 Feb 2008:
 * Add plugin for displaying card images, using the image database
   from ARDB
 * Add hooks so plugins can register a frame on the main window

25 Feb 2008
 * Tweak filter parser so "X NOT IN $foor" is legal syntax

19 Feb 2008
 * Fix keyboard navigation behaviour in the TreeView. Workaround 
   http://bugzilla.gnome.org/show_bug.cgi?id=483730 where needed

18 Feb 2008:
 * Allow gtk to sort on the extra columns added via the plugin

07 Feb 2008:
 * Add sutkeh.io.WwFile convenience module for reading data from
   WW website cardlists and rulings (including directly from the
   website using urllib2.urlopen).
 * Convert readWhiteWolfList and readRulings to use WwFile
   and add loading of cardlist and rulings for the WW site to the
   gui.
 * Tweak Editing filters so already selected values are retained 
   when feasible

06 Feb 2008:
 * Display progress bar for import new cardlists, upgrading DB and
   saving and restoring backups

05 Feb 2008:
 * Searching will now expand trees to find matches

27 Jan 2008:
 * Add additional caching to CardSetController - avoids some additional 
   database hits, especially when reload events are triggered
 * remove some no longer needed encode lines from ZipFileHandler.
 * fix encoding of internal filenames in ZipFileHandler.

25 Jan 2008:
 * Improve usage of cached card info in CardSetcontroller - speeds up 
   adding + deleting cards by avoiding some extra database lookups
 * Replace CardSetExportHTML.py with a version that uses ElementTree
   to generate the HTML. removes the dependancy on libxslt, at the cost
   of complexity in the plugin.

22 Jan 2008
 * Change {Abstract,Physical}CardSet{Write,Parser}, PhysicalCard{Writer,Parser},
   and WriteArdbXML to use ElementTree.

15 Jan 2008
 * Change annotations to be a fully-fleged element in the XML files. This 
   will allow formatting to be preserved.

14 Dec 2007:
 * Tage Sutekh 0.5.0 release
 * Add NSIS script for generating a Windows installer.

12 Dec 2007
 * Add filter for inuse card sets. Finishes up work on the inuse flag.
 * Add plugin to set the expansion for single expansion cards.
 * Fix bug in displaying multiple rarities from the same expansion properly.

early Dec 2007
 * Add support for inuse flag to gui and XML files
 * Add set_name calls so everything is in the Sutekh namespace for gtkrc files
 * Add support for dealing with themes in a way that isn't completely broken
   (although it is rather fragile, and at best semi-sane).
 * Allow plugins to register themselves on the main window's menu
 * Various bugfixes 

24 Nov 2007
 * Refactor card text parsing for WhitewolfParser
 * Interpret reflex attribute as a cardtype

22 Nov 2007
 * Bump database version
    - Add shortname to Rarity
    - Add burn option column to AbstractCard
    - Add inuse column to the PhysicalCardSet
 * Add parsing burn option form cardlist
 * Rework DatabaseUpgrade 
    - Combine repetive code
    - Upgrade to current changes
    - remove support for version pre 0.4.x
 * Add plugin for showing discipline spread across clans

21 Nov 2007
 * Add CachedCardSetHolder, so user isn't repeatedly prompted for 
   AbstractCard name lookups on WW cardlist changes

16 Nov 2007
 * Direct printing plugin
 * Rework GuiCardLookup to incude appropriate views in the dialog

15 Nov 2007
 * Allow panes to be split vertically or horizontally
 * Save pane configuration and postions properly
 * Replace ACSFromELDBHTML Plugin with more generic parser plugin
 * Add parser for ARDB Text format

14 Nov 2007
 * Add PhysicalCardCount Filter
 * Add Menu option to display all AbstractCards in the Physical Card List

13 Nov 2007
 * Remaining plugins fixed
 * Change pane semenatics to - split pane to create a new blank pane,
   and replace panes with other panes
 * Allow panes to be dragged to reorder them
 * Make text in FilterDialog help selectable

12 Nov 2007
 * Improve parsing of titles and sects for WW cardlist
 * Fix several plugins to work with redone gui work

11 Nov 2007
 * Merge in sutekh-gui-rework-september-2007 branch
   - almost all GUI classes reworked.
   - Replace multiple windows with single window with panes
   - Allow filtering on card set lists
   - Allow expansion information in physical cards to be edited
   - Add dialog so the mapping between physical cards and physical card sets can
     be carefllu controlled.
   - Card List and card sets not editable by default. Editing is enabled by
     a menu option
   - some dialogs replaced with gtk.MessageDialog calls

10 Nov 2007
 * Move card attribute abbreviation lists in sutekh.core.Abbreviations.
 * Modified adaptors to not create database objects if they don't exist.
 * Add API for constructing SutekhObjects.
 * Add basic testing framework, including tests for WhiteWolf card list and rulings parsers and filtering.

27 Oct 2007
 * Add NOT filter.

16 Oct 2007
 * Fix plugins which relied on ACSes .getCardIterator(...) returning a list
   of AbstractCards.

13 Oct 2007
 * Tweak support for joins for AbstractCardSet

11 Oct 2007
 * Add CachedRelatedJoins for additional speed increase
 * Tweaks to some of the filters to accomodate different databases

10 Oct 2007
 * Add explicit joins to filtering - significantly improves speed of 
   filtering queries

05 Oct 2007
 * Fix some issues identified in testing the stable-branch before Sutekh 
   0.4.2's release

03 Oct 2007
 * Add support for the Lords of the Night expansion
 * Makr the GuiCardLookup dialog more informative

24 Sep 2007
 * Finish 1st draft of physical_lookup - doesn't support expansion issues yet
 * Change Restore from Backup to use CardSetHolder

19 Sep 2007
 * Importing the Physical Card List and Card Sets now uses CardSetHolder
 * Importing new WW lists also uses CardSetHolder
 * Add physical_lookup method to CardLookup, so the user can be queried
   when cards in a physical card set can't be found in the Physical Card List

25 Aug 2007
 * Make User-specified Filters in the FilterDialog Editable

24 Aug 2007
 * Add CardSetHolder for manipulating card sets which aren't in the
   database yet.
 * Add CardLookup for translating card names into abstract cards.
 * Move ELDBHTMLParser and plugin over to CardSetHolder and CardLookup.

18 Aug 2007
 * Improve formatting of card text listing in HTML exports and
   make the information included a bit more complete.
 * Ensure imbued are semi-sensibly handled by the HTML export
 * Rework Analyze Card Set dialog code's structure. Add many more blanks
   to be filled in
 * Add initial stab at Happy Families analysis to Card Set
 * Prevent creation of parsetab.py and parser.put
 * Use prefrences directory for sutekhrc
 * Further pre-release cleanups

16 Aug 2007
 * Add File->Preferences to Main Menu. Makes saving window positions on exit
   optional
 * Various cleanups and bugfixes in preparation for the 1st release

15 Aug 2007
 * Refactor FilterParser somewhat. Push info to the Filter Objects
   rather than maintaining it in FilterParser 

14 Aug 2007
 * Add titles to the ARDB xml export (and thus HTML exports)

08 Aug 2007
 * Fix stupid Card Set loading bug caused by config file stuff
 * Add support for saving window positions to the config file

29 July 2007
 * Merge in Enhanced Filter branch (sutekh-enhanced-filter-july-2007)
   - Replaces the Filter Dialog with one that selects from multiple different
     Filters
   - Provide simple Grammar to specify additional filters
   - Add config file to save user filters
   - Add additional filters on Sect, Expasion with Rarity and Discipline with Level

02 Jul 2007
 * Bugfix consequences of the merge

01 Jul 2007
 * Merge in Database Upgrade Branch (sutekh-db-upgrade-march-2007)
   - Add Sect, Vote to AbstractCard
   - Normalise AbstractCard name to lowercase, to help prevent minor case issues 
     causing havoc (Keep It Simple and friends)
   - Add shortname, fullname fields to Disciplines, Expansions, etc
   - Add expansion to PhysicalCard (No GUI support as yet)
   - Improve Database upgrade code
   - Add version info to xml exported files
   - Add annotations to Card Sets

20 May 2007
 * Add basic card set management window

15 May 2007
 * Tweak selection behaviour - should make accidently unselects when dragging
   and dropping harder

06 May 2007
 * Add simple About dialog.
 * Add COPYING to sutekh package data.
 * Use pkg_resources to read in XSL files and COPYING.
 * Move SutekhInfo from setup.py into sutekh.SutekhInfo.

05 May 2007
 * Add Crypt/Library grouping and null grouping.
 * Clean up card set creation dialog.
 * Adding card counting to the physical card list.
 * Remove redundant call to .load(..) for card sets.

02 May 2007
 * Allow plugins to place widgets in a box underneath the window menu 
   for toolbar'ish applications
 * Add card counting plugin to CardSets using this

08 Apr 2007
 * Continue removing import * statements

31 Mar 2007
 * Add an option to backup database to the "read new cardlist" dialog

30 Mar 2007
 * Add a plugin to support zipfile backups and restores of the database

15 Mar 2007
 * Setuptools setup.py file created.
 * Made all imports absolute.

11 Mar 2007
 * Plugin for displaying additional columns in a card view.
 * Add grid lines to card list view. They could do with some styling.

26 Feb 2007
 * Basic support for adding card text to HTML file

25 Feb 2007
 * Make card text search case insensitive on all databases by using func.LOWER everywhere
 * Allow CardListView to be sorted by number or name

22 Feb 2007
 * Add some more filters
 * Allowed plugins to register on the main AbstractCard View

20 Feb 2007
 * Reorganise plugins to remove duplications between AbstractCardSets and PhysicalCardSets
 * create plugin to compare two Card Sets.
 
19 Feb 2007
 * Fix crash due to not deleting invalid dictionary entries for groups in the
   CardListView

17 Feb 2007
 * Add support for dumping everything to zipfile & restoring from it

15 Feb 2007
 * Seperate out cardtext window from Main card list

08 Feb 2007
 * GUI support for updating the WW card list

28 Jan 2007
 * Add a filter on the card name - NM
 
21 Jan 2007
 * Fix a few bugs in the conversion between PhysicalCardSets and 
   AbstractCardSets to deal with the changed CardSet structure - NM
 * Fix buglet in the DeleteCard Dialog - NM 

20 Dec 2006
 * Database can be upgraded to handle changes to the database structure both
   via SutekhCli and the GUI - NM
 * Add Comment and Author fields to card sets - NM
 * Card Sets can be renamed from within the GUI - NM
 * Misc bug fixes (mainly of things I broke while doing the above) - NM

19 Nov 2006
 * Export to Anarachs Revolt Deck Builder XML Format. Allows us to leverage
   their XSLT files - NM

04 Nov 2006
 * Support for exporting cards to xML from the GUI - NM
 * Finsh PhysicalCardSet to AbstractCardSet and reverse plugins - NM

22 October 2006
 * Replace deck handling with PhysicalCardSets and AbstractCardSets - NM

between April and November
 Many, many changes
 * Add version information to the database
 * Grouping support in display
 * handle both phyicalcardsets and abstractcardsets
 * added indexes to the database
 * plugin support
 * clustering plugin
 * create card set from filter plugin
 * Support for imbued from the white wolf cardlist
 * Support third ed
 * Tweaked database structure 
   to support mysql (with correct sqlobject version) and postgresql

23 April 2006:
* Fill in file headers, listing copyrights, based on svn log history - NM
* Add COPYRIGHT file, generally try and dot t's and cross i's on the
  licensing stuff - NM

19 April 2006
* Add COPYING file - convential GPL 2 license, as discussed on the mailing
  list - NM

19 April 2006
* Moving development to SVN.

26 Feb 2006
* Rework Filter Dialog Considerably - add support for retaining state an
  filtering on card Type - NM 
* Change Analyze Deck dialog to have tabbed dialog - NM

06 Feb 2006:
* Initial support for multiple selections - NM

04 Feb 2006:
* Add basic support for filtering in the gui - NM
* Add support for reading and writing XML decks - NM

27 Jan 2006:
* Tweak Card parser - now works properly for me for wget'd cardlist - NM
* Support lookahead in CardViews - NM

22 Jan 2006:
* Fill out deck support - currently the code is limited to 3 deck windows
  open at a time. - NM
* Basic anaylsis deck started. - NM

21 Jan 2006:
* Tweak -db message for sqlite to give form of URI - NM
* Rework menu structure - split deck options into seperate window, 
  provisional work for deck handling and multiple windows - NM
* Change PopupMenu to use gtk.Action items - will allow things to 
  be greyed out if need be (incCard in deck view for instance) - NM
* Split MainWindow into two seperate windows. Move CardText view to
  AbstractCardWindow - NM
* Add dialogs which will be used in deck handling stuff (not enabled) - NM

05 Jan 2006:
* Split GUI classes out into their own sub-package.

28 Dec 2005:
* Added classes for writing out and parsing in list of PhysicalCards
  as XML.

28 Dec 2005:
* Applied patch from Neil Muller which implements incrementing,
  decrementing and deleting entries from the Physical Card view.

24 Nov 2005:
* Strings now stored as UTF8 which clears up a bunch of
  character encoding issues.
