windows
zip: https://github.com/hydrusnetwork/hydrus/releases/download/v404/Hydrus.Network.404.-.Windows.-.Extract.only.zip
exe: https://github.com/hydrusnetwork/hydrus/releases/download/v404/Hydrus.Network.404.-.Windows.-.Installer.exe
macOS
app: https://github.com/hydrusnetwork/hydrus/releases/download/v404/Hydrus.Network.404.-.macOS.-.App.dmg
linux
tar.gz: https://github.com/hydrusnetwork/hydrus/releases/download/v404/Hydrus.Network.404.-.Linux.-.Executable.tar.gz
source
tar.gz: https://github.com/hydrusnetwork/hydrus/archive/v404.tar.gz
I had a good week working almost entirely on the client's multi-column lists. They now remember their column widths and sort.
multi-column lists
All the tables across the program are now plugged into a unified options structure. This remembers the lists' columns' widths, so if you resize the manage subscriptions list a little tighter, then the next time you load that dialog, it should come back the same. The lists across the program that automatically start and maintain a sort (e.g. manage subs, or the query list in a downloader page), also remember if you change the sort.
This sounds simple, but it involved rewriting critical sections for every list, and there are about 66 different ones! I am happy with the change, as it means a load of duct-tape mess is unified and easier to maintain and extend in future.
I built the system with several near-term extensions in mind: having all lists sort cleanly, quickly, and by default, and show sort up/down arrows; allowing columns to be rearranged; and allowing columns to be hidden, which will also allow me to add complicated columns (e.g. statistically expensive subscription quality info) that start hidden by default.
Although the system is now easier to check for errors, the sheer number of lists and amount of code I changed this week means there is probably a typo somewhere in a column name or initial size. I have checked the main lists closely, but if you encounter anything odd, or even a list that does not boot at all, please let me know. There are still a couple of sizing calculation peculiarities I need to fix.
full list
- column lists:
- all multi-column lists across the program now remember the widths of their columns when they are next recreated
- the last column of any list is now universally the 'stretching' column, which should correctly initialise with its preferred/previous size, but also grows and shrinks with the parent window
- while all lists retain their initial rows height, and those in the gallery and watcher management panels will continue to grow and shrink in a fixed way, all lists in dialog windows can now be shrunk down to four rows
- the minimum size of any column is now much smaller, about three characters
- all column headers now tooltip their name
- lists should be better about sizing in non-100% OS UI scalings
- the lists that are automatically sorted (e.g. the download pages, and manage subs) now remember the last sort you gave them
- future plans, now within reach:
- all lists will sort, sort arrows will appear on the header, and sort will be faster
- columns will be rearrangeable
- columns will be hide/showable, and initially hidden complicated columns will be available
- there will be some, maybe optional, capability to have lists sync live, so if you edit one, the others do the same
- num rows height memory, maybe–we'll see how the above shakes out first
- boring code changes:
- moved list code to a new sub-module
- wrote a status object for column list current columns, widths, and sort, and plugged it into list code
- wrote a manager to handle column statuses, and plugged it into the main controller and db
- wrote definitions for every list (66 or so different lists!) and all their columns, and unified width, name, default sort, and future hideabality and default hide/show status to that one easy to edit and extend location
- rewrote list column and sort initialisation to work off the new status object and added hooks for list sorting and column resizing to save new status back
- rewrote every list column instantiation to use the new system
- numerous misc column list code cleanup
- .
- the rest:
- double middle-clicking on the page tab bar should now correctly close two tabs in a row (rather than opening the rename page dialog on the second)
- entering an odd number of hex characters into system:hash no longer causes an error. this will be changed in future to properly highlight and explain badly pasted or incorrect-length hashes in future
- the new red text for non-functional status texts in review services now properly re-colours itself between normal/red when an error or resolution occurs while the panel is open
- hydrus now knows if it is running in the Haiku operating system and has preliminary platform specificity. if you are interested in helping to get hydrus running properly in Haiku, please join in with github issue #358
- cleaned up a mix of smaller code, unused variables and imports and so on
next week
Back to small jobs next week. This list work monopolised my time, so I want to catch up on messages and some bug fixes, and I'd like to also slip in namespace-specific system:number of tags (like "files with more than one series: tag") as well, if the search logic is not too hellish.
EDIT: I messed up the double middle-click on page tab. I’ll fix it next week!