* feat: Warn user if FFmpeg is not installed
Creates a Warning dialog on startup if the program cannot find FFmpeg or
FFprobe in the PATH. Other interactions with the program are blocked
until the issue is either ignore or resolved.
* docs: Add FFmpeg installation guide
* ruff formatting
* chore: Cleanup missing logic and warning message
* chore: Remove custom icon
Per QT docs, handling custom iconPixmap requires multiple icons per
platform. Easier to just use universal, default warning icon (yellow
triangle)
* fix: Ignore dialog with X button
* fix: Move startup checks after CI
* chore: Unreverse install check logic
* doc: Improve docs formatting
* docs: Point help url to new docs sites
* Remove ffmpeg docs page
* Use which from python stdlib
* fix(ThumbRenderer): Use audio icon when no ffmpeg
When ffmpeg is missing, Popen raises a FileNotFound error. This would
be caught as an Unlinked file and use the broken file icon. The
exception is now caught and a more appropriate exception is raised in
its place.
* ruff formatting
* fix(PreviewPanel): Use birthtime for creation time
st_ctime does not provide accurate creation time on MacOS, and as of
Python 3.12 is deprecated for Windows. On these two platforms use
st_birthtime, but fall back to st_ctime on linux.
* mypy errors
* fix: Do not create command prompt window on subcmd
Patches files from abandoned libraries are located and updated in
src/qt/helpers/vendored with modified sections labeld PATCHED. A wrapper
around subprocess.Popen automatically sets the creation flag to no
window on windows.
* fix: Replace Popen in mediainfo_json decoder
* fixup: Pipe stdin to stdin
* chore: Exclude vendored dir from tooling checks
* suppress mypy warnings
* 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