Rewriting tagging
TODO/Tests:
- [x] Add tag in brush presets docker
- [x] Remove tag in brush presets docker
- [x] Rename tag in brush presets docker
- [x] Update tag to the filtered out resources
- [x] Add resource to tag ibpd
- [x] Add resource to a new tag ibpd
- [x] Remove resource from tag ibpd
- [x] Filtering by tag in combobox
- [x] Filtering by names in the filter below
- [ ] Filtering by tags in the filter below
- [x] Make sure "All" tag behaves correctly
- [x] 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)
- [x] KisTagModel::renameTag() (@rempt)
- [x] 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
- [x] (not my task) tags are initialized properly in all appropriate storages
- [x] (not my task) KisBundleStorage needs to read tags from .desktop files, too (and don't remove reading from manifest!)
- [x] tags are then written to database during the creation of the database
- [x] tags are written to database during loading brand new resource storages (like bundles)
- [x] tags changes are written to database when the user does something with them
- [x] tags/resources relationships changes are written to database when the user tags or untags resources
- [x] KisTagChooserWidget needs to use KisTagModel
- [x] KisTagToolButton needs to use KisTag
- [x] right-click tagging menu in the resource chooser implementation needs to use KisTagModel
- [ ] KisResourceTaggingManager might have a problem with recursive signals
- [x] 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