* 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
* refactor: move existing code to view
* refactor: move existing code to controller
* fix: imports
* refactor: make methods private by default
* refactor: privatise fields
* refactor: reduce code duplication
* refactor: consolidate and sort display methods
* refactor: remove needless setting of delete action text
* refactor: extract control logic from _display_file
* refactor: use MediaType for __switch_preview
* fix: import in preview_panel_view.py
* refactor: remove unnecessary wrapper on view side
* refactor: move image data retrieval to control side
* refactor: move audio / video specific code to the respective method
* refactor: remove superfluos methods
* refactor: this and that
* refactor: use proper type instead of dict for file stats
* refactor: extract gif parsing to controller
* refactor: extract video size extraction to controller
* doc: add rule of thumb to Qt MVC Style Guide
* doc: change rule of thumb from note to tip
---------
Co-authored-by: Travis Abendshien <46939827+CyanVoxel@users.noreply.github.com>
* 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
* feat: add settings field
* feat: change click behaviour based on settings value
* fix: make ignore comment pyright specific to shut up mypy
* fix: add german and english translations for new strings
* fix: settings dropdowns were always english not matter the selected language
* feat: custom modal making use of QDateTimeEdit
* fix: add back license notice
* refactor: remove unnecessary line
* feat: use date and hour format from settings for date time picker
* 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
* refactor: store browsing history for navigation purposes
* refactor: remove page_size from FilterState
* refactor: move on from the term "filter" in favor of "BrowsingState"
* fix: refactors didn't propagate to the tests
* fix: ruff complaints
* fix: remaing refactoring errors
* fix: navigation works again
* fix: also store and restore query
* fix: tests were overwriting the settings.toml
* fix(GlobalSettings): add default value for _loaded_from
* fix: a case in read_settings didn't set loaded_from correctly
* fix(GlobalSettings): proper serialisation
* refactor: simplify datetime widget creation
* refactor: fix warnings
* feat: text modal to enter date
* chore: change ignore comment to only apply to pyright not mypy
* feat(ui): expand file and thumbnail support
* feat: add iwork and powerpoint thumb support
Note: a lot of the zip-based code is becoming duplicated - this should be consolidated in the future.
* fix: remove decompression bomb check and catch others
* feat: add .aiff file equivalencies
* ui: update database icon
* feat: add .effect and .shader to shader set
* fix: correct malformed or missing media types
* feat: add misc code/plaintext types to media types
* fix: catch BadZipFile error for iWork thumbs
* chore: add type hints to thumb_renderer dicts
* refactor: change most internal render methods to static
* feat: merge media controls.
Initial commit to merge audio/video files. There are
still a few bugs around widget sizing that need fixing.
* fix: center widgets in preview area
Add widgets to a sublayout to allow for centering
in a QStackedLayout.
Remove references to the legacy video player in
the thumb preview.
* fix: resolve commit suggestions.
Subclass QSlider to handle click events
and allow for easier seeking.
Implement context menu along with autoplay
setting for the media widget.
Pause video when media player is clicked
instead of opening file.
* fix: start media muted
Start video/audio muted on initial load of
the media player.
Remove code causing mypy issue.
Add new method for getting slider click state.
* refactor: use layouts instead of manual positioning.
Add various layouts for positioning widgets instead
of manually moving widgets.
Change the volume slider orientation at smaller
media sizes.
* fix: color position label white
Fix position label color to white so it stays visible
regardless of theme.
* fix: allow dragging slider after click
* Apply suggestions from code review
fix: apply suggestions from code review.
Co-authored-by: Travis Abendshien <46939827+CyanVoxel@users.noreply.github.com>
* fix: remove references to legacy video player.
Combine the stats logic for video/audio into one method.
Fix several issues after incorrectly implementing suggestions.
* fix: add loop setting and other actions.
* refactor: simplify widget state management.
Make a single method to control widget state.
Works with the main QStackLayout and cleans up
widget state if it is needed (i.e., stopping the media
player when switching to a different preview).
* fix: add pages to QStackLayout to fix widget position.
Fixes a regression in commit 4c6934. We need the pages
to properly center the widgets in the QStackLayout.
* fix: ensure media_player doesn't exceed maximum size if thumbnail.
Fix and issue where the media_player would expand past the
thumbnail on resize.
* refactor: move settings to new system
* build: add "src" to pathex.
Instead of having to pre-install tagstudio, this will have PyInstaller directly build it from source.
* build: be more selective about the data files.
Since PyInstaller builds from source now there is no need to manually add it.
---------
Co-authored-by: Léonard <Leeooonaard@gmail.com>
* feat: create QMovie with file path instead of copying image around
* fix: make ignore pyright specific so mypy doesn't complain
* fix: restore ability to delete file while viewing it