Rewriting tagging
TODO/Tests:
- Add tag in brush presets docker
- Remove tag in brush presets docker
- Rename tag in brush presets docker
- Update tag to the filtered out resources
- Add resource to tag ibpd
- Add resource to a new tag ibpd
- Remove resource from tag ibpd
- Filtering by tag in combobox
- Filtering by names in the filter below
- Filtering by tags in the filter below
- Make sure "All" tag behaves correctly
- Make sure we cannot remove or rename All tag
- Make sure that rename/add new signals are with QString, unless we provide a way to change/write other fields as well
- Remove all TODO: RESOURCES: from code (when they are all solved, of course)
- Remove all old code in KisTaggingManager and friends
- Make tag chooser widget use layour changed signals to reset the index, remove all old code that reseted the index manually
- Make KisResourceItemChooserContextMenu use TagModel and clean up the code
- Fix tag Completer
- Make sure KisDitherWidget work
- KisGradientChooser
- KisPatternChooser
- KisPresetChooser
- KisWorkspaceChooser
- KisPaletteListWidget
- KisGamutMasksChooser
- tasksetsdocker
- Palettize
- KisBrushChooser
- check what's up with gamutmasks_dock.h
- KisTagModel::allTags() should be refatored out, every time I need all tags, I need to reiterate over the model
- Change UI in tags adding/removing from whatever it is now to a one list with checkboxes
- Find a way to mark some tags as inactive (@rempt)
- KisTagModel::renameTag() (@rempt)
- KisResourceModel::tagsForResource() (@rempt)
Notes:
Note: "writing to the database" means: "using appropriate functions implemented by Boud to write stuff to database".
Note2: this is all quite rough, but it will get smoother when I learn what all of this actually means :P
- (not my task) tags are initialized properly in all appropriate storages
- (not my task) KisBundleStorage needs to read tags from .desktop files, too (and don't remove reading from manifest!)
- tags are then written to database during the creation of the database
- tags are written to database during loading brand new resource storages (like bundles)
- tags changes are written to database when the user does something with them
- tags/resources relationships changes are written to database when the user tags or untags resources
- KisTagChooserWidget needs to use KisTagModel
- KisTagToolButton needs to use KisTag
- right-click tagging menu in the resource chooser implementation needs to use KisTagModel
- KisResourceTaggingManager might have a problem with recursive signals (I got rid of most signals and make TagChooser and ContextMenu use models directly)
- make a map of interconnectivity between: KisTagChooserWidget, KisTagFilterWidget, KisTagToolButton, "right-click menu" (above), KisResourceTaggingManager, KisResourceChooser, TaggingManager
- remove old code responsible for tagging: loading the tag files, keeping a list of tags and tag-resource relations, keeping that updated, saving it out to disk, and presenting that data to the tagging widgets