* feat: send deleted files to system trash
This refactors the file deletion code to send files to the system trash instead of performing a hard deletion. It also fixes deleting video files and GIFs loaded in the Preview Panel.
* feat(ui): add file deletion confirmation boxes
* feat(ui): add delete file menu option + shortcut
* ui: update file deletion message boxes
* fix(ui): same default confirm button on win/mac
- Make "Yes" the default choice in the delete file modal for both Windows and macOS (Linux untested)
- Change status messages to be more broad, since they also are displayed when cancelling the operation
* ui: show perm deletion warning on all platforms
* fix: run_macro didn't work for files that aren't in a sub directory
* fix: add_generic_data_to_entry would add a new Content Tags Field if the Content Tags field was the first field
* fix: get_gdl_sidecar used wrong file extension for discovering gdl side car files
* run_macro: ensure that source folder parameter is case insensitive
Co-authored-by: Travis Abendshien <46939827+CyanVoxel@users.noreply.github.com>
---------
Co-authored-by: Travis Abendshien <46939827+CyanVoxel@users.noreply.github.com>
* Fix text and RAW image handling
- Fix RAW images not being loaded correctly in the preview panel
- Fix trying to read size data from null images
- Refactor `os.stat` to `<Path object>.stat()`
- Remove unnecessary upper/lower conversions
- Improve encoding compatibility beyond UTF-8 when reading text files
- Code cleanup
* Use chardet for character encoding detection
* Add support for waveform + album cover thumbnails
* Rename "cover" variables for MyPy
* Rename "audio_tags" variables for MyPy + typing
* Add # type: ignore to fromstring method
* Add GIF preview support
* Add rough check for invalid video codecs
* Add ".plist" to PLAINTEXT_TYPES
* Add readable video tester
* Add ".psd" to IMAGE_TYPES; Handle ID3NoHeaderError
* Improve and style waveform previews
* Add final return statement to _album_artwork()
* Add final return statement to _audio_waveform()
* Tweak waveform color and size
* Fix ItemThumb label text color in light mode
* Fix most theme UI legibility issues
* Match additional UI to color scheme
* ruff format
* feat(ui): add UI color palette dict
* feat(ui) center and color small font previews
* fix(ui): large font previews follow app theme
* fix(ui): blender previews follow app theme
* feat(ui): add resizable thumbnail options
* fix: mkv files with "[0][0][0][0]" codec load properly
* fix: missing audio files properly handled
* feat(ui): use system accent color for thumb selections
* fix(ui): hide gif preview in multi-selections
* feat(ui): add dynamic file thumb icons
* fix(ui): hide previous thumbnail before resizing
* (fix): catch ffmpeg errors in file tester
* Squashed commit of the following:
commit 9a3c19d398
Author: Travis Abendshien <lvnvtravis@gmail.com>
Date: Wed Jul 24 22:57:32 2024 -0700
fix: add missing comma + sort extensions
commit 53b2db9b5f
Author: Travis Abendshien <lvnvtravis@gmail.com>
Date: Wed Jul 24 14:46:16 2024 -0700
refactor: move type constants to new media classes
* feat(ui): add media types and icon resources
* feat(ui): add more default media types and icons
Add additional default icons for:
- Blender
- Presentation
- Program
- Spreadsheet
Add/expand additional media types:
- PDF
- Packages
* fix: remove leading dot in preview panel ext
* refactor: remove edge from `four_corner_gradient()`
* fix: handle missing files in `resource_manager`
* fix(ui): thumb edges fading on refresh
* feat(ui): add default icons for audio+vector thumbs
* feat(ui): apply edge to default icon thumbs
* chore: remove unused code
* refactor(ui): move loading icon to `ResourceManager`
* added support for Source 1 + 2 file thumbnails
All plaintext variants and VTF file conversions.
* Added render code for VTF files
Added support for VTF files by using the vtf2img library for PIL
* Add files via upload
* fixed Ruff errors
* fixed Ruff errors
* chore: organize imports, lists; ruff formatting
* Change references of Source to Source Engine
* Added error handler + changed source to source engine
* add struct to import and docstring for source_engine
* complying to the demigod ruff
* chore: format with ruff
---------
Co-authored-by: Travis Abendshien <46939827+CyanVoxel@users.noreply.github.com>
* Update item_thumb.py
* Update preview_panel.py
* Update video_player.py
* made it so preview_panel.py uses self.open_explorer_action instead of just normal open_explorer_action
* fix(tags): include cluster in tag_id search
* fix(ui): remove unused tag context menu item
Remove unused "Add to Search" context menu item for tag widgets.
* fix(ui): add tag search from tag_database
Add missing functionality for the "Search for Tag" context menu option + left click functionality inside `tag_database.py` aka the "Tag Manager" panel.
* fix: verify `tag_id:` input in search
* style: remove commented code
* fix: change `Library` import to type check only
* Fix text and RAW image handling
- Fix RAW images not being loaded correctly in the preview panel
- Fix trying to read size data from null images
- Refactor `os.stat` to `<Path object>.stat()`
- Remove unnecessary upper/lower conversions
- Improve encoding compatibility beyond UTF-8 when reading text files
- Code cleanup
* Use chardet for character encoding detection
* Add support for waveform + album cover thumbnails
* Rename "cover" variables for MyPy
* Rename "audio_tags" variables for MyPy + typing
* Add # type: ignore to fromstring method
* Add GIF preview support
* Add rough check for invalid video codecs
* Add ".plist" to PLAINTEXT_TYPES
* Add readable video tester
* Add ".psd" to IMAGE_TYPES; Handle ID3NoHeaderError
* Improve and style waveform previews
* Add final return statement to _album_artwork()
* Add final return statement to _audio_waveform()
* Tweak waveform color and size
* Fix ItemThumb label text color in light mode
* Fix most theme UI legibility issues
* Match additional UI to color scheme
* ruff format
* feat(ui): add UI color palette dict
* feat(ui) center and color small font previews
* fix(ui): large font previews follow app theme
* fix(ui): blender previews follow app theme
* feat(ui): add resizable thumbnail options
* fix: mkv files with "[0][0][0][0]" codec load properly
* fix: missing audio files properly handled
* feat(ui): use system accent color for thumb selections
* fix(ui): hide gif preview in multi-selections
* feat(ui): add dynamic file thumb icons
* fix(ui): hide previous thumbnail before resizing
* (fix): catch ffmpeg errors in file tester
* Squashed commit of the following:
commit 9a3c19d398
Author: Travis Abendshien <lvnvtravis@gmail.com>
Date: Wed Jul 24 22:57:32 2024 -0700
fix: add missing comma + sort extensions
commit 53b2db9b5f
Author: Travis Abendshien <lvnvtravis@gmail.com>
Date: Wed Jul 24 14:46:16 2024 -0700
refactor: move type constants to new media classes
* feat(ui): add media types and icon resources
* feat(ui): add more default media types and icons
Add additional default icons for:
- Blender
- Presentation
- Program
- Spreadsheet
Add/expand additional media types:
- PDF
- Packages
* fix: remove leading dot in preview panel ext
* refactor: remove edge from `four_corner_gradient()`
* fix: handle missing files in `resource_manager`
* fix(ui): thumb edges fading on refresh
* feat(ui): add default icons for audio+vector thumbs
* feat(ui): apply edge to default icon thumbs
* chore: remove unused code
* refactor(ui): move loading icon to `ResourceManager`
* fix(ui) color for default icons follow theme
* fix: remove `theme_color` redef
* refactor: make some consts and args clearer
* refactor: organize arguments, update docstrings
The ability to pass a border radius scaling argument is also included.
* chore: format docstrings with ruff
* refactor: replace magic numbers with named values
* refactor: remove unused code, comments, & imports
* refactor: rename args to not shadow builtins
* refactor: remove unused vars from `thumb_renderer`
* fix: handle ValueError in `render()`
Handle ValueErrors in `render()`. This case was encountered when attempting to render an `XPM` file during testing.
* docs: add FFmpeg requirement to README
* Add the ability to create tags when adding a tag to a file.
* ui: unify tag widget appearance
Unify the tag widget appearance and remove unnecessary "*1" multiplication.
* refactor: change some var names & add docstrings
* feat: edit panel is opened before adding tag
* feat(ui): focus save button on add panel
Focus the save button on the Add Tag panel. This allows the user to promptly hit enter to add the tag as-is.
---------
Co-authored-by: bjorn-out <b.g.out@uva.nl>
Co-authored-by: Travis Abendshien <46939827+CyanVoxel@users.noreply.github.com>
* Implement #327
Sort tags in the Library Tags panel and the Add Parent Tags panel with Archived and Favorite at the top, then sort by color, and then sort alphabetically.
* Sort tags alphabetically when a search is performed
* Format with Ruff
* Prioritize tags whose names match the query over tags that match the query in other ways
* Update thumb_renderer.py
Included support for rendering blender thumbnails
* Add files via upload
Add functions that get the thumbnail's data
* Update thumb_renderer.py
* Update blender_thumbnailer.py
* Update thumb_renderer.py
* Update thumb_renderer.py
Changed where imports are according to feedback
* Update thumb_renderer.py
Changed blender thumbnail function name to reduce ambiguity
* Update blender_thumbnailer.py
Updated function name
* Update blender_thumbnailer.py
* Update blender_thumbnailer.py
Ruff format
* Update thumb_renderer.py
Ruff format
* Update constants.py
Add .blend1, 2, 3 etc file support
* Update blender_thumbnailer.py
Refactor to follow requested changes
* Update thumb_renderer.py
More refactoring
* Update blender_thumbnailer.py
Ruff format
* Update thumb_renderer.py
Ruff format
* Update to pyside6.7.1
* Fix Ruff
* Fix MyPy
* Update mypy job to also use PySide6 6.7.1
* Remove unused imports
* Add Description to class
* Ruff format
* Fix Warning in pagination.py
* Probably fix Pyside app test
* Rename CustomQPushButton to QPushButtonWrapper
also renamed custom_qbutton.py to qbutton_wrapper.py
* fix: python complaining about backslashes inside f-string expressions
refactor excessively long f-string into separate variables
* fix: missing f on f-string
* Format with Ruff
* Ability to drop local files in to TagStudio to add to library
* Added renaming option to drop import
* Improved readability and switched to pathLib
* format
* Apply suggestions from code review
Co-authored-by: yed podtrzitko <yedpodtrzitko@users.noreply.github.com>
* Revert Change
* Update tagstudio/src/qt/modals/drop_import.py
Co-authored-by: yed podtrzitko <yedpodtrzitko@users.noreply.github.com>
* Added support for folders
* formatting
* Progress bars added
* Added Ability to Drag out of window
* f
* format
* Ability to drop local files in to TagStudio to add to library
* Added renaming option to drop import
* Improved readability and switched to pathLib
* format
* Apply suggestions from code review
Co-authored-by: yed podtrzitko <yedpodtrzitko@users.noreply.github.com>
* Revert Change
* Update tagstudio/src/qt/modals/drop_import.py
Co-authored-by: yed podtrzitko <yedpodtrzitko@users.noreply.github.com>
* Added support for folders
* formatting
* Progress bars added
* Added Ability to Drag out of window
* f
* format
* format
* formatting and refactor
* format again
* formatting for mypy
* convert lambda to func for clarity
* mypy fixes
* fixed dragout only worked on selected
* Refactor typo, Add license
* Reformat QMessageBox
* Disable drops when no library is open
---------
Co-authored-by: yed podtrzitko <yedpodtrzitko@users.noreply.github.com>
Co-authored-by: Travis Abendshien <lvnvtravis@gmail.com>
* Add landing page when no library is open
- Add landing page when no library is open
- Add linear_gradient method
- Reformat main_window.py with spaces instead of tabs because apparently it wasn't formatted already?
* Add color_overlay methods, ClickableLabel widget
- Add color_overlay helper methods
- Add clickable_label widget
- Add docstrings to landing.py methods
- Add logo easter egg
- Refactor landing.py content
* Fix redefinition
* Fix macOS shortcut text
* Add option to use a whitelist instead of a blacklist
* maybe fix mypy?
* Fix Mypy and rename ignored_extensions
* This should fix mypy
* Update checkbox text
* Update window title
* shorten if statment and update text
* update variable names
* Fix Mypy
* hopefully fix mypy
* Fix mypy
* deprecate ignored_extensions
Co-authored-by: Jiri <yedpodtrzitko@users.noreply.github.com>
* polishing
* polishing
* Fix mypy
* finishing touches
Co-authored-by: Jiri <yedpodtrzitko@users.noreply.github.com>
* Fix boolean loading
* UI/UX + ext list loading tweaks
- Change extension list mode setting from Checkbox to ComboBox to help better convey its purpose
- Change and simplify wording
- Add type hints to extension variables and change loading to use `get()` with default values
- Sanitize older extension lists that don't use extensions with a leading "."
- Misc. code organization and docstrings
---------
Co-authored-by: Jiri <yedpodtrzitko@users.noreply.github.com>
Co-authored-by: Travis Abendshien <lvnvtravis@gmail.com>