TODO:
 - port foundation libraries to libboost when possible

 + cvs add src/TagMenu.{h,cc}

 - Show tag cardinality in tag menu

 - Setup ItemList as a drag target for TAGCOLL data, to activate inter-panel
	copy/moves with drag-and-dropping

 - Make the columns sortable
    - Names sort alphabetically
	 - Tagsets sort first by cardinality, then lexicographically

 - Render the items in the Selected list in bold
 - Gray the items in the Unavailable list

 - For TreeViews, use the TreeView drag&drop system instead of the generic
	widget one

 - Add columns to the TagSelector.  Will probably need a
	TagCollection::getTagStats function to compute them all in a single run, so
	that the computation is more efficient

 - Write a component to display a smart hierarchy (exploting on-demand
	generation)
	 - Use it to display the smart hierarchy generated with the currently
		selected items

--- 2004-04-19
 + TagSelector: make drag&drop work again
 + ItemList: add "merge" and "intersect" to context menu
 + ItemList: add "copy" and "move" to context menu
 + If invoked with a file on commandline, the title bar still displays "Debtags
   database"

--- 2004-04-18
 + On items, make the right button work on multiple selections
 + On items' right-click menu, make the "Add..." button work

--- 2004-04-17
 + On items, add "Add.." to right click menu
 + Redesign TagSelector
	 + Create a function to create menus with facets and tags like:
	   Facet1 -> { tag1, tag2, tag3... }
	   Facet2 -> { tag1, tag2, tag3... }
	   Facet3 -> { tag1, tag2, tag3... }
    + TagSelector:
	   Selected [Add->]
	   [Del] Tech [Add->]
	   [Del]  HTML
	   [Del]  JavaScript
	   [Del] Web [Add->]
	   [Del]  Browser
    . Avaliable and Unavailable have no sense anymore (they're in the various Add menus)

 * Done in version 0.3

--- 2003-05-27
 + Support editing item tagsets when double-clicking on an item (mostly to remove a tag)
	 + Could be implemented better with a popup menu when right-clicking on a
		tag name
		 = Easily solved if there is a way to understand which word was clicked (gave up)
		 + Else, a popup with:
		   Remove tag
			----------
			tag1
			tag2
			tag3
		 = The combo renderer in gtkmm2.0 examples could help a lot here (not at all)
 + Add "Select this tag set" and "Select this tag set in the other panel"
	options to an item's popup menus
 + Implement adding a non-existing tag to an item
	 = Add a text entry field below the toolbar, that gets filled with the
		currently selected tagset.  Changing the field changes the tagset (asking
		for confirmation when adding a non-existing tag)
		(no: too much risk of typing errors for the separating commas)
	 + Use a combobox and an Add button instead
 + It might be useful to add "unavailable" tags to the selection, so that for
	example that tagset could be used as a target for a copy or move operation
 + Add a "delete unselected tags" option to the Edit menu
 + Add a popup menu to the tags, with "Remove from all" and "Add to all"
	options

 * Done in version 0.2

--- 2003-05-24
 + Try a more terse tag display in the item list, by not displaying the tags
	that are present in the Selected list
--- 2003-05-23
 + Move TagSelector + ItemList into a TagPanel
 + Implement two panel browsing.  No concept of active panel, yet: until I lean
	how to know if a panel is active, the left panel will always be the active
	one
 + Setup TagSelector as a copy-only drag source for TAG and text/plain data
 + Setup ItemList as a copy/move drag source for TAGCOLL and text/plain data
 + Setup ItemList as a drag target for TAG data
 + Implement copy operation between panels
 + Implement move operation between panels
 + ListItems does not show items with the exact tagset as the selection
	 + Select "3d" tag, then intersect two items so that only "3d" remains in the
		intersection: the two items disappear from the list
 + Implement multiple browsing windows for the same collection (multiple
	views), and permit to drag an item from an itemlist to the other, in an
	mc-like way of interaction (copy (merge tags) and move (change tags)
	operations could be supported)
 + The default way of interaction could even be with two panels one active
	and the other not, and functions to copy and move from the active panel
	to the other, like mc
 + Add a Quit item to the File menu
 + Add separators to the menu
 + Implement the Save function
 + Update the title bar with the current file name and the "changed" status
 + Do not send a document changed event, nor update the undo list, if
   applyChanges produces a reverse change that is equal to the change applied
 + Merge and Intersect should be enabled only if the selection has two or more
	items
 + Copy to other and Move to other should be enabled only if the selection has
	one or more items
 + Support the concept of switchable active and passive panels,  la Midnight
	Commander, as soon as I can understand how to know if a panel is active
 + ItemLists are now sorted by name
 + The two TagPanels are now laid out in an HPaned
--- 2003-05-22
 + TagcollDocument: add exporting to a TagcollConsumer
 + Add signals to TagcollDocument to notify changes
 + Move the TagCollection and HandleMaker into a Document class
 + Make the list column resizable and the list selection allow multiple
   selection
 + TagSelector should emit a changed signal when the list of selected tags
   changes
 + Write a list widget to view the items whose tagset contains the currently
	selected tagset
	 + Display items in two columns: item name and item tagset
 + Implement merge and intersection of tags for the selected items
 + Implement multilevel undo
 + Implement the save function
 + Implement the load function
 + Implement the load debtags function
--- 2003-05-21
 + Initial version with TagSelector

 vim:set ts=3 sw=3:
