Skip to content

Commit

Permalink
Version 407
Browse files Browse the repository at this point in the history
closes #325, closes #388, closes #384, closes #369
  • Loading branch information
hydrusnetwork committed Aug 5, 2020
1 parent 3a296e9 commit 123e076
Show file tree
Hide file tree
Showing 68 changed files with 2,028 additions and 1,521 deletions.
29 changes: 29 additions & 0 deletions help/changelog.html
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,35 @@
<div class="content">
<h3>changelog</h3>
<ul>
<li><h3>version 407</h3></li>
<ul>
<li>sibling prep:</li>
<li>I am preparing for a new siblings database cache for v408. this will ultimately make siblings (and parents) faster, more accurate, more powerful, and simple to undo. I have decided, as part of it, to make siblings and parents completely virtual (i.e. the tags won't exist for real, they'll be implied). better tools to manage hard-replace siblings and parents will come later, as trying to support both situations at once has not been excellent</li>
<li>.</li>
<li>created options to hold per-service sibling and parent preferences, so you'll be able to set up '"my tags" siblings and then "ptr" siblings apply to "my tags"' or 'no parents apply to this service'</li>
<li>wrote UI for the sibling options under 'services->manage where tag siblings apply'. you can play with it if you like, and it saves values, but it is not plugged in yet and makes no changes</li>
<li>siblings logic is a little tighter. the db and gui side of siblings structure calculation is more unified, petitioned siblings are discounted properly on all generation, and the db side now resolves conflict decisions the same on every regen. the gui-side still runs on an older structure, but will be updated to exactly mirror the db</li>
<li>updated and unified how large numbers of raw tag siblings are fetched in the database. it also supports fast tag slicing, speeding up sibling cache maintenance. the siblings lookup cache now uses this method for regeneration and update calls</li>
<li>.</li>
<li>the rest:</li>
<li>tag right-click menu copying now supports all combinations of selected/all, tags/subtags, and no_count/with_counts where appropriate (issue #325)</li>
<li>if the media viewer is too thin for the top hover window to fit into its space, the top-right hover now drops down below it. I don't really like how this looks, and will probably instead figure out a flow layout so the toolbar buttons always fit, but at least they are now accessible (issue #388)</li>
<li>altered the above fix--if the top-right hover window can be shrunk to fit in the available space, it will now squeeze in, only bumping down if it can't</li>
<li>moving the mouse off an activated (e.g. clicked) hover window now instantly activates the main canvas. this should fix up some fast swallowed clicks and annoying click-to-activate issues with the center-right duplicates hover window, which does not hide (issue #384)</li>
<li>the duplicates hover window now positions correctly if its min size is too wide to fit in a thin media window</li>
<li>if you make changes to a parser or content parser, there is now a yes/no confirmation when trying to cancel the dialog</li>
<li>fixed an issue where 'queue' listboxes with no edit button would throw an error on double-click. now double-click in this case deletes</li>
<li>fixed a couple of timestamp convertions that were doing YYYY/MM/DD instead of the more ISO-nice YYYY-MM-DD. also, when in UTC, they'll correctly say UTC now instead of GMT (issue #369)</li>
<li>fixed some borked centered text layout on ratings dialog and import folder dialog</li>
<li>fixed the manage services dialog's wrong headers for type/name columns</li>
<li>added links in the official help to the new user-written simple help guide at https://github.com/Zweibach/text/blob/master/Hydrus/Hydrus%20Help%20Docs/00_tableOfContents.md</li>
<li>moved object tag and ratings code to a new client module, 'metadata', and pulled various ratings gui code into a new separate file</li>
<li>refactored some more manager code around to generally more sensible locations</li>
<li>did a bit more work chasing down the highlight-downloader ui deadlock, which unfortunately still exists</li>
<li>reduced the number of db hits some paged downloaders need, particularly on highlight and init</li>
<li>updated some test code to support cleverer db testing</li>
<li>updated mpv for windows build. api version is now 1.109. this fixes at least one weird linux vm audio driver issue</li>
</ul>
<li><h3>version 406</h3></li>
<ul>
<li>subscription management:</li>
Expand Down
2 changes: 1 addition & 1 deletion help/getting_started_files.html
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
<body>
<div class="content">
<p><a href="getting_started_installing.html"><---- Back to the installing and updating</a></p>
<p>If any of this is confusing, some users are building video guides for hydrus to help new users <a href="https://github.com/CuddleBear92/Hydrus-guides">here</a>!</p>
<p>If any of this is confusing, a simpler guide is <a href="https://github.com/Zweibach/text/blob/master/Hydrus/Hydrus%20Help%20Docs/00_tableOfContents.md">here</a>, and some video guides are <a href="https://github.com/CuddleBear92/Hydrus-guides">here</a>!</p>
<h3 class="warning">a warning</h3>
<p class="warning">Hydrus can be powerful, and you control everything. By default, you are not connected to any servers and absolutely nothing is shared with other users--and you can't accidentally one-click your way to exposing your whole collection--but if you tag private files with real names and click to upload that data to a tag repository that other people have access to, the program won't try to stop you. If you want to do private sexy slideshows of your shy wife, that's great, but think twice before you upload files or tags anywhere, particularly as you learn. It is <b>impossible</b> to contain leaks of private information.</p>
<p class="warning">There are no limits and few brakes on your behaviour. It is possible to import millions of files. For many new users, their first mistake is downloading too much too fast in overexcitement and becoming overwhelmed. Take things slow and figure out good processing workflows that work for your schedule before you start adding 500 subscriptions.</p>
Expand Down
2 changes: 1 addition & 1 deletion help/getting_started_installing.html
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
<body>
<div class="content">
<p><a href="introduction.html"><---- Back to the introduction</a></p>
<p>If any of this is confusing, some users are building video guides for hydrus to help new users <a href="https://github.com/CuddleBear92/Hydrus-guides">here</a>!</p>
<p>If any of this is confusing, a simpler guide is <a href="https://github.com/Zweibach/text/blob/master/Hydrus/Hydrus%20Help%20Docs/00_tableOfContents.md">here</a>, and some video guides are <a href="https://github.com/CuddleBear92/Hydrus-guides">here</a>!</p>
<h3 id="downloading">downloading</h3>
<p>You can get the latest release at <a href="https://github.com/hydrusnetwork/hydrus/releases">my github releases page</a>.</p>
<p>I try to release a new version every Wednesday by 8pm EST and write an accompanying post on <a href="http://hydrus.tumblr.com/">my tumblr</a> and a sticky on <a href="https://8kun.top/hydrus/index.html">my 8kun board</a>.</p>
Expand Down
2 changes: 1 addition & 1 deletion help/getting_started_tags.html
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
<body>
<div class="content">
<p><a href="getting_started_files.html"><--- Back to files</a></p>
<p>If any of this is confusing, some users are building video guides for hydrus to help new users <a href="https://github.com/CuddleBear92/Hydrus-guides">here</a>!</p>
<p>If any of this is confusing, a simpler guide is <a href="https://github.com/Zweibach/text/blob/master/Hydrus/Hydrus%20Help%20Docs/00_tableOfContents.md">here</a>, and some video guides are <a href="https://github.com/CuddleBear92/Hydrus-guides">here</a>!</p>
<h3 id="intro">how do we find files?</h3>
<p>So, you have stored some media in your database. Everything is hashed and cached. You can search by inbox and resolution and size and so on, but if you really want to find what we are looking for, you will have to use <i>tags</i>.</p>
<p><a href="faq.html#tags">FAQ: what is a tag?</a></p>
Expand Down
2 changes: 1 addition & 1 deletion hydrus/client/ClientAPI.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
from hydrus.core import HydrusGlobals as HG
from hydrus.core import HydrusSerialisable

from hydrus.client import ClientTags
from hydrus.client.metadata import ClientTags

CLIENT_API_PERMISSION_ADD_URLS = 0
CLIENT_API_PERMISSION_ADD_FILES = 1
Expand Down
20 changes: 17 additions & 3 deletions hydrus/client/ClientController.py
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@
from hydrus.client import ClientManagers
from hydrus.client import ClientOptions
from hydrus.client import ClientSearch
from hydrus.client import ClientTags
from hydrus.client import ClientServices
from hydrus.client import ClientThreading
from hydrus.client.gui import ClientGUI
from hydrus.client.gui import ClientGUIDialogs
Expand All @@ -45,6 +45,8 @@
from hydrus.client.gui import QtPorting as QP
from hydrus.client.gui.lists import ClientGUIListManager
from hydrus.client.importing import ClientImportSubscriptions
from hydrus.client.metadata import ClientTags
from hydrus.client.metadata import ClientTagsHandling
from hydrus.client.networking import ClientNetworking
from hydrus.client.networking import ClientNetworkingBandwidth
from hydrus.client.networking import ClientNetworkingDomain
Expand Down Expand Up @@ -799,7 +801,7 @@ def InitModel( self ):

self.pub( 'splash_set_status_subtext', 'services' )

self.services_manager = ClientManagers.ServicesManager( self )
self.services_manager = ClientServices.ServicesManager( self )

self.pub( 'splash_set_status_subtext', 'options' )

Expand Down Expand Up @@ -928,11 +930,13 @@ def InitModel( self ):

self.pub( 'splash_set_status_subtext', 'tag display' )

# note that this has to be made before siblings/parents managers, as they rely on it

tag_display_manager = self.Read( 'serialisable', HydrusSerialisable.SERIALISABLE_TYPE_TAG_DISPLAY_MANAGER )

if tag_display_manager is None:

tag_display_manager = ClientTags.TagDisplayManager()
tag_display_manager = ClientTagsHandling.TagDisplayManager()

tag_display_manager._dirty = True

Expand Down Expand Up @@ -1679,6 +1683,11 @@ def SetServices( self, services ):

with HG.dirty_object_lock:

previous_services = self.services_manager.GetServices()
previous_service_keys = { service.GetServiceKey() for service in previous_services }

new_tag_service_keys = [ service.GetServiceKey() for service in services if service.GetServiceType() in HC.REAL_TAG_SERVICES and service.GetServiceKey() not in previous_service_keys ]

upnp_services = [ service for service in services if service.GetServiceType() in ( HC.LOCAL_BOORU, HC.CLIENT_API_SERVICE ) ]

self.CallToThread( self.services_upnp_manager.SetServices, upnp_services )
Expand All @@ -1687,6 +1696,11 @@ def SetServices( self, services ):

self.services_manager.RefreshServices()

if len( new_tag_service_keys ) > 0:

self.tag_display_manager.AddNewTagServiceKeys( new_tag_service_keys )



self.RestartClientServerServices()

Expand Down

0 comments on commit 123e076

Please sign in to comment.