LinkGenerator now handles if the called DomainLinkGenerator children throw request's connection errors in scrape_tags() and informs the user via popup and cancels the scraping.
When creating a new tag (create_tag()) the new implications were passing a dict when a name (string) was expected. Replaced the call with the ID version saving one tag lookup.
Fixed a few bugs/crashes that were caused by code still expecting tag name lists being returned by the DB API instead of the new dictionaries.
I should really automate tests or do something to catch these better in the future ...
Changed several DB methods to return dictionaries with description and similar tag data instead which allows the importer to also create the tooltip texts which gives more detailed info about a tag in EVERY tag frame without needing to query for each tag specifically.
Minor tweaks and refactors. A half-baked collection support and several UI tweaks.
Just committing these are they are "old" changes and the current state turns out to be pretty stable.
Added the first draft of the browser window and implemented switching between it and the importer window via menu action.
Also renamed window.py to importer_window and abstracted some features into a superclass from which the browser window can also inherit. This allows an equal interface for them.
Also fixed a bug in the db_adapter.py where an old column name was used for a query.
Added a QTextEdit for art descriptions.
Also added the ability to save and load them from the database. Changing of the description field also triggers a unsaved changes prompt.
Implemented the last remaining tag in the TagSelectDialog to be automatically selected when confirming the dialog.
Improved logging of DB connection and selected tags
Fixed a bug where imported tags were not considered if they were implied by any other tag in the whole database.
Also made the image author link clickable and open the URL with QDesktopServices
Made the predicted url in TagImportDialog clickable and open the url in a browser with QDesktopServices.
Also fixed the source url in window.py to use QDesktopServices
Upgraded dependencies and noticed a breaking change in pyqt5 (QMainWindow.move() requires integer parameters). Fixed it and introduced minimal versions in requirements.txt
Fixed a bug where editing the alias or implication of a tag caused a crash.
Also changed titles that were left unedited from the file name to stay empty inside the database and not be filled with the filename