* doc: add REUSE comment headers
* doc: add REUSE comment headers for mkDocs overrides
The original license text was moved to the LICENSES directory
and the MIT license identifier was used since only encoding differences
to the MIT license were present.
Further, the existing copyright notice was moved to SPDX-FileCopyrightText
and one for the TagStudio Contributors was added since the files are not
entirely the same as the originals in the mkdocs-material project.
* doc: add license information files for the translations
* doc: add licence file for oxanium font
As stated on [Google Fonts](https://fonts.google.com/specimen/Oxanium/license), this font is licensed under OFL-1.1.
* doc: re-license flow_layout.py to GPL-3.0-only
This is possible because the Qt example this is based on can be licensed
under BSD-3-Clause which is GPL-3.0 compatible.
* doc: add REUSE comment header for singleton.py
Comparing our implementation with the one it is based on, they really
don't have much more in common than the general idea of the
implementation, which afaik can't be copyrighted.
* doc: Add REUSE comment header for blender_renderer.py
We can plainly license this under GPL-3.0 according to https://www.blender.org/about/license/
* doc: add REUSE comment headers to vendored files
* doc: add REUSE comment header for rounded_pixmap_style.py
Source of name for copyright notice:
Answer by eyllanesc: https://stackoverflow.com/users/6622587/eyllanesc
Profile links to Github: https://github.com/eyllanesc
Stackoverflow licensing: https://stackoverflow.com/help/licensing
* doc: add REUSE comment headers
* doc: add license information file for icon_mono.svg
* doc: add REUSE comment header for files in .github
* doc: add REUSE.toml to give license information for various files without spamming .license files
* fix: use type parameter instead of subclass
* doc: add entries for remaining files in REUSE.toml
According to info from github comment by CyanVoxel: https://github.com/TagStudioDev/TagStudio/pull/1361#issuecomment-4423632570
* ci: add REUSE check workflow
Src: 'https://reuse.software/dev/#github-actions'
* doc: add missing license
* doc: fix license for material-design-icons
* license: change license to MIT for two files only changes by Computerdores and CyanVoxel
* doc: remove unnecessary .license files
* doc: fix incorrect license entries
* doc: add missing license doc
* feat: add test for failing GitHub API call.
* fix: don't raise exceptions in get_most_recent_release_version.
* style: apply ruff.
* That not should not have been there.
* feat: add `.ts_ignore` pattern ignoring system
* fix: add wcmatch dependency
* search: add ".TemporaryItems" to GLOBAL_IGNORE
* add `desktop.ini` and `.localized` to global ignore
* add ".fhdx" and ".ts" filetypes
* chore: remove logging statement
* chore: format with ruff
* feat: use ripgrep for scanning if available
* docs: add ignore.md
* search: remove ts_ignore filtering on queries
* feat: detect if files are added but ignored
* fix: render edges on all unlinked thumbs
* perf: don't search for cached unlinked thumbs
* fix(ui): ensure newlines in file stats
* fix: use ignore_to_glob for wcmatch
* fix(tests): remove inconsistent test
The test hinged on the timing of refresh_dir()'s yield's rather than actual values
* ui: change ignored icon and color
* refactor: basic split
* fix: renaming and usage test didn't work for the tests
* fix: tests
* refactor: restructuring
* refactor: further separation and lots of related changes
* refactor: remove last reference to a widget from controller
* refactor: address todo
* fix: failing tests and mypy compaint
* refactor: move control logic to controller
* refactor: more readable button style
* fix: set_selection was called with invalid argument
* fix: incorrect qt enum accesses
* refactor: clean up main_window.py and reenable ruff checks for it
* refactor: completely reorganise main_window.py
* refactor: factor out regions into separate methods
* refactor: move preview_panel to MainWindow
* refactor: move file menu construction to MainMenuBar
* refactor: move edit menu construction to MainMenuBar
* refactor: move view menu construction to MainMenuBar
* refactor: move tools menu construction to MainMenuBar
* refactor: move macros menu construction to MainMenuBar
* refactor: move help menu construction to MainMenuBar
* refactor: move ui construction code out of QtDriver and into MainWindow
* fix: remove unnecessary imports
* fix: tests were failing
* feat: add tab widget
* refactor: move languages dict to translations.py
* refactor: move build of Settings Modal to SettingsPanel class
* feat: hide title label
* feat: global settings class
* fix: initialise settings
* fix: properly store grid files changes
* fix: placeholder text for library settings
* feat: add ui elements for remaining global settings
* feat: add page size setting
* fix: version mismatch between pydantic and typing_extensions
* fix: update test_driver.py
* fix(test_file_path_options): replace patch with change of settings
* feat: setting for dark mode
* fix: only show restart_label when necessary
* fix: change modal from "done" type to "Save/Cancel" type
* feat: add test for GlobalSettings
* docs: mark roadmap item as completed
* fix(test_filepath_setting): Mock the app field of QtDriver
* Update src/tagstudio/main.py
Co-authored-by: Travis Abendshien <46939827+CyanVoxel@users.noreply.github.com>
* fix: address review suggestions
* fix: page size setting
* feat: change dark mode option to theme dropdown
* fix: test was expecting wrong behaviour
* fix: test was testing for correct behaviour, fix behaviour instead
* fix: test fr fr
* fix: tests fr fr fr
* fix: tests fr fr fr fr
* fix: update test
* fix: tests fr fr fr fr fr
* fix: select all was selecting hidden entries
* fix: create more thumbitems as necessary
Fixes: #200Fixes: #365Fixes: #512Fixes: #800
fix(pyproject): resolve mix-up of mypy and pytest
chore(ci): remove legacy scripts
chore: format with new mypy rules; fix translation test
wip(ci/mypy): remove config flag
fix(pyinstaller): use correct dict access
fix(resources): usage in ts_qt.py
feat(nix/package): validate tests with pytest hook
fix(nix/package): remove old dependency patch
feat(nix): support Darwin
fix(nix/package): move check deps to checkInputs
fix(nix/shell): typo
fix(nix/shell): correctly wrap Python with Qt args
fix(pyproject): specify mypy-extensions
feat(nix/package): provide pillow-jxl-plugin
nix(nix/package): split into multiple files, allow overriding of JXL and vtf2img
fix(nix/shell): provide FFmpeg on runtime
feat(flake): output pillow-jxl-plugin and vtf2img
fix(nix/package): load pipewire
feat(nix/package): run tests on pillow-jxl-plugin
fix: remove extra noqa comment
docs: update installation docs
docs: shrink table size on docs site
nit(nix/package): pipewire not needed in buildInputs
docs: update commands, environment, setup
fix: use consistent possessives
chore: format with prettier, add ignore flags
fix(pyinstaller): consume from pyproject
Revert "fix(pyinstaller): consume from pyproject"
This reverts commit 398cd4e5630a3e83d22d15286d7ac59b4c07c5d6.
refactor: use icon from resource manager
Also fixes incorrect path currently used in ts_qt.py.
nix(pyinstaller): replace use of sys.platform with platform.system
docs: add build section
Co-authored-by: Travis Abendshien <46939827+CyanVoxel@users.noreply.github.com>
* feat: port v9.4 thumbnail + related feats to v9.5
Ports the following thumbnail and related PRs from the `Alpha-v9.4` branch to `main` (v9.5+):
- (#273) Blender thumbnail support
- (#307) Add font thumbnail preview support
- (#331) refactor: move type constants to new media classes
- (#390) feat(ui): expanded thumbnail and preview features
- (#370) ui: "open in explorer" action follows os name
- (#373) feat(ui): preview support for source engine files
- (#274) Refactor video_player.py (Fix#270)
- (#430) feat(ui): show file creation/modified dates + restyle path label
- (#471) fix(ui): use default audio icon if ffmpeg is absent
- (#472) fix(ui): use birthtime for creation time on mac & win
Co-Authored-By: Ethnogeny <111099761+050011-code@users.noreply.github.com>
Co-Authored-By: Theasacraft <91694323+Thesacraft@users.noreply.github.com>
Co-Authored-By: SupKittyMeow <77246128+supkittymeow@users.noreply.github.com>
Co-Authored-By: EJ Stinson <93455158+favroitegamers@users.noreply.github.com>
Co-Authored-By: Sean Krueger <71362472+seakrueger@users.noreply.github.com>
* remove vscode exceptions from `.gitignore`
* delete .vscode directory
* style: format for `ruff check`
* fix(tests): update `test_update_widgets_not_selected` test
* remove Send2Trash dependency
* refactor: use dataclass for MediaCateogry
* refactor: use enums for UI colors
* docs: add file docstring for silent_Popen
* refactor: replace logger with structlog
* use early return inside `ResourceManager.get()`
* add `is_ext_in_category()` method to `MediaCategory`
Add method to check if an extension is a member of a given MediaCategory.
* style: fix docstring style, missing type hints, rename `afm`
* fix: use structlog vars in logging
* refactor: move platform-dependent strings to PlatformStrings
* refactor: move `parents[2]` path to variable
* fix: undo logger regressions
---------
Co-authored-by: Ethnogeny <111099761+050011-code@users.noreply.github.com>
Co-authored-by: Theasacraft <91694323+Thesacraft@users.noreply.github.com>
Co-authored-by: SupKittyMeow <77246128+supkittymeow@users.noreply.github.com>
Co-authored-by: EJ Stinson <93455158+favroitegamers@users.noreply.github.com>
Co-authored-by: Sean Krueger <71362472+seakrueger@users.noreply.github.com>
* use sqlite + sqlalchemy as a database backend
* change entries getter
* page filterstate.page_size persistent
* add test for entry.id filter
* fix closing library
* fix tag search, adding field
* add field position
* add fields reordering
* use folder
* take field position into consideration
* fix adding tag
* fix test
* try to catch the correct exception, moron
* dont expunge subtags
* DRY models
* rename LibraryField, add is_default property
* remove field.position unique constraint