misc
- fixed an exclusive-to-inclusive system predicate parsing regression, for instance the input
system:filetype is not xwas parsing assystem:filetype is x, which was because of a logical hole in a recent rewrite - added 'Active Search Predicates list height' to
options->file search. this is the list above the tag autocomplete input on normal search boxes. defaults to 6 (was previously 8 due to weirdness) - tag lists no longer default to min height 8 rows but 1. let me know if anything sizes crazy now
- fixed the
help->aboutdb transaction period, which was typoed and calculating off the wrong number - the 'don't use important accounts with hydrus' warning is clarified and unified in the downloader help, login dialog, and now session cookies dialog
- the media viewer right-click menu now has a 'player' sub-menu at the end that says what player (mpv, QtMediaPlayer, Hydrus Native stuff) is currently in view. might be worth tucking this into a deeper advanced/maintenance/debug menu somewhere in a future reshuffle, but for now it is there
QtMediaPlayer (and an mpv thing)
- fixed a 'C++ object already deleted' instability error with the new GraphicsView QtMediaPlayer. I had this a couple of times in devving but needed to tighten up how some mouse event hacks were owned and destroyed
- fixed an UI hang that could sometimes occur in PySide6 when opening a new media viewer when the preview viewer already has a QtMediaPlayer loaded
- added
TEST: Use the same mpv player through media transitionsandTEST: Use the same QtMediaPlayer through media transitionsoptions tooptions->media playback. previously, I would always create or swap to a different player when navigating from video to video, because re-using the same guy was super flickery or crash city. things are better now and I'm open to testing it more - added
TEST: Use OpenGL Window in QtMediaPlayertooptions->media playback. maybe it improves performance for big vids? I noticed it can cause some initial window-level flickering in Windows, but it is worth trying in different situations
boring QtMediaPlayer cleanup
- the new GraphicsView test now loops natively and tracks 'num plays' through some fudgy maths (previously it hooked into the video 'end; stop' statechange and manually did 'seek 0; play'). I've had some reports about the program hanging on video end-loop, so let's see if this helps that
- made the mouse-move event hack a little safer
- rewrote some media destruction signals and moved QtMediaPlayer destruction responsibility from the GUI to the MediaContainer itself. there's no more weird reparenting
- QtMediaPlayers are now cleaned up more aggressively. generally a 500ms timer instead of 5s
boring cleanup
- broke
options->media playbackinto sections and fixed some layout issues - fixed a bit of foolishness that was causing the
hydrus_test_boot.pyunit test script to always exit( 1 ) even when everything was OK - relatedly, replaced all lazy
except:handling withexcept Exception as e: - if the duplicates filter fails to generate a visual duplicate comparison, the error now only makes one popup per program boot. it still spams some basic 'hash x failed' stuff to log so we can debug the issue
- cleaned up a little 'menu last click' global out of HG
- added a 'Run the launch script, not the .py' note to the 'running from source' help
boring import options overhaul
- broke the 'file filtering import options' (stuff like allowed filetypes and min/max filesize) out of 'file import options (legacy)' just like I did presentation and prefetch import options the other week. the legacy object now holds a 'file filtering import options' sub-object in prep for the conversion to the new options structure
- did the same for the 'location import options' (stuff like where to put the file and auto-archive/url options)
- wrote an edit panel for 'file filtering import options'
- did the same for 'location import options'
- fixed the red warning text about an invalid, empty import destination context to now appear properly and instantly on dialog load, if it boots with an invalid destination context
- 'associate primary/source urls' checkboxes are no longer hidden behind advanced mode
- the prefetch import options are now in their own edit panel
- the presentation and notes import options panels are now QWidgets not ScrollingEditPanels, which will fix some jank layout we've seen here
- fixed some layout expanding issues in the file import options panel
- network job and file import statuses now work with a file filtering import options object for their filtering decisions, not a file import options
- importers now consult a location import options for pre-work destination validity checks
- updated the unit tests for the new 'file filtering import options' object
- updated the unit tests for the 'location import options' object
- wrote some very basic prefitch import options unit tests