Skip to content

Commit

Permalink
Version 145
Browse files Browse the repository at this point in the history
  • Loading branch information
hydrusnetwork committed Jan 21, 2015
1 parent d13afc0 commit 2f75a7f
Show file tree
Hide file tree
Showing 14 changed files with 667 additions and 490 deletions.
15 changes: 15 additions & 0 deletions help/changelog.html
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,21 @@
<div class="content">
<h3>changelog</h3>
<ul>
<li><h3>version 145</h3></li>
<ul>
<li>added custom gui colours for thumbnail backgrounds and borders, the autocomplete background, and media background and text</li>
<li>added <- and -> arrows to manage tags dialog launched from navigable media viewer</li>
<li>on empty input in the manage tags dialog, page up and page down work as shortcuts for the new <- and -> buttons</li>
<li>fixed the media height calculation for animations, so when they are vertically scaled, the total height including scanbar won't overflow off screen</li>
<li>allowed non-integer page, chapter, volume tags in display and sort calculations</li>
<li>semi-integer tags will sort along with integer tags and string tags like so: 0 < 0a < 0b < 1 < 2 < 22</li>
<li>improved the old tag/media sorting code</li>
<li>removed loli and shota from hentai foundry filter options</li>
<li>patched old db-stored predicates to attempt to convert to the new format when queried for _inclusive</li>
<li>this _should_ have fixed the recent export folder problems</li>
<li>created an 8chan board, and updated my various links, including in the client, to migrate from my old forum to this</li>
<li>misc code improvements</li>
</ul>
<li><h3>version 144</h3></li>
<ul>
<li>files named 'Thumbs.db' will now be skipped in the import files dialog</li>
Expand Down
14 changes: 9 additions & 5 deletions help/contact.html
Original file line number Diff line number Diff line change
Expand Up @@ -7,16 +7,20 @@
<body>
<div class="content">
<h3>contact and links</h3>
<p>Please send bug reports straight to my email or forum. Your other ideas and comments are always welcome.</p>
<p>I don't really do chat, and I don't get caught up in the social stuff on twitter/tumblr. I like to spend a day or so to think before replying to non-urgent emails, but I do reply to everything.</p>
<p>Please send bug reports straight to my email or the board. Your other ideas and comments are always welcome.</p>
<p>I don't really do chat, and I don't get caught up in social networking stuff. I often like to spend a day or so to think before replying to non-urgent emails, but I do reply to everything.</p>
<p>I delete all tweets and resolved email conversations after three months. So, if you think you are waiting for a reply, or I said I was going to work on something you care about and seem to have forgotten, please do nudge me.</p>
<p>If you have a problem with something on someone else's server, please, <span class="warning">do not come to me</span>, as I cannot help. If your ex-gf's nudes have leaked onto the internet, or you find something terribly offensive, or you just plain hate the free flow of information, I cannot help you at all.</p>
<p>Anyway:</p>
<ul>
<li><a href="mailto:[email protected]">email</a></li>
<li><a href="http://hydrus.x10.mx/forum/">forum</a></li>
<li><a href="http://hydrus.tumblr.com/">tumblr</a> (<a href="http://hydrus.tumblr.com/rss">rss</a>)</li>
<li><a href="http://hydrusnetwork.github.io/hydrus/">homepage</a></li>
<li><a href="https://github.com/hydrusnetwork/hydrus/releases">new downloads</a></li>
<li><a href="http://www.mediafire.com/hydrus">old downloads</a></li>
<li><a href="https://github.com/hydrusnetwork/hydrus">github</a></li>
<li><a href="http://8ch.net/hydrus/index.html">8chan board</a></li>
<li><a href="http://twitter.com/hydrusnetwork">twitter</a></li>
<li><a href="http://hydrus.tumblr.com">tumblr</a> (<a href="http://hydrus.tumblr.com/rss">rss</a>)</li>
<li><a href="mailto:[email protected]">email</a></li>
</ul>
<p>If you would like to send me something physical, you can use my PO Box:</p>
<ul>
Expand Down
18 changes: 18 additions & 0 deletions include/ClientConstants.py
Original file line number Diff line number Diff line change
Expand Up @@ -197,6 +197,7 @@
CLIENT_DEFAULT_OPTIONS[ 'idle_period' ] = 60 * 30
CLIENT_DEFAULT_OPTIONS[ 'maintenance_delete_orphans_period' ] = 86400 * 3
CLIENT_DEFAULT_OPTIONS[ 'maintenance_vacuum_period' ] = 86400 * 5
CLIENT_DEFAULT_OPTIONS[ 'fit_to_canvas' ] = False

system_predicates = {}

Expand Down Expand Up @@ -226,6 +227,23 @@

CLIENT_DEFAULT_OPTIONS[ 'namespace_colours' ] = default_namespace_colours

default_gui_colours = {}

default_gui_colours[ 'thumb_background' ] = ( 255, 255, 255 )
default_gui_colours[ 'thumb_background_selected' ] = ( 217, 242, 255 ) # light blue
default_gui_colours[ 'thumb_background_remote' ] = ( 32, 32, 36 ) # 50% Payne's Gray
default_gui_colours[ 'thumb_background_remote_selected' ] = ( 64, 64, 72 ) # Payne's Gray
default_gui_colours[ 'thumb_border' ] = ( 223, 227, 230 ) # light grey
default_gui_colours[ 'thumb_border_selected' ] = ( 1, 17, 26 ) # dark grey
default_gui_colours[ 'thumb_border_remote' ] = ( 248, 208, 204 ) # 25% Vermillion, 75% White
default_gui_colours[ 'thumb_border_remote_selected' ] = ( 227, 66, 52 ) # Vermillion, lol
default_gui_colours[ 'thumbgrid_background' ] = ( 255, 255, 255 )
default_gui_colours[ 'autocomplete_background' ] = ( 235, 248, 255 ) # very light blue
default_gui_colours[ 'media_background' ] = ( 255, 255, 255 )
default_gui_colours[ 'media_text' ] = ( 0, 0, 0 )

CLIENT_DEFAULT_OPTIONS[ 'gui_colours' ] = default_gui_colours

default_sort_by_choices = []

default_sort_by_choices.append( ( 'namespaces', [ 'series', 'creator', 'title', 'volume', 'chapter', 'page' ] ) )
Expand Down
103 changes: 0 additions & 103 deletions include/ClientDB.py
Original file line number Diff line number Diff line change
Expand Up @@ -5345,107 +5345,6 @@ def _UpdateImageboards( self, site_edit_log ):

def _UpdateDB( self, version ):

if version == 95:

self._c.execute( 'COMMIT' )

self._c.execute( 'PRAGMA foreign_keys = OFF;' )

self._c.execute( 'BEGIN IMMEDIATE' )

service_basic_info = self._c.execute( 'SELECT service_id, service_key, type, name FROM services;' ).fetchall()
service_address_info = self._c.execute( 'SELECT service_id, host, port, last_error FROM addresses;' ).fetchall()
service_account_info = self._c.execute( 'SELECT service_id, access_key, account FROM accounts;' ).fetchall()
service_repository_info = self._c.execute( 'SELECT service_id, first_begin, next_begin FROM repositories;' ).fetchall()
service_ratings_like_info = self._c.execute( 'SELECT service_id, like, dislike FROM ratings_like;' ).fetchall()
service_ratings_numerical_info = self._c.execute( 'SELECT service_id, lower, upper FROM ratings_numerical;' ).fetchall()

service_address_info = { service_id : ( host, port, last_error ) for ( service_id, host, port, last_error ) in service_address_info }
service_account_info = { service_id : ( access_key, account ) for ( service_id, access_key, account ) in service_account_info }
service_repository_info = { service_id : ( first_begin, next_begin ) for ( service_id, first_begin, next_begin ) in service_repository_info }
service_ratings_like_info = { service_id : ( like, dislike ) for ( service_id, like, dislike ) in service_ratings_like_info }
service_ratings_numerical_info = { service_id : ( lower, upper ) for ( service_id, lower, upper ) in service_ratings_numerical_info }

self._c.execute( 'DROP TABLE services;' )
self._c.execute( 'DROP TABLE addresses;' )
self._c.execute( 'DROP TABLE accounts;' )
self._c.execute( 'DROP TABLE repositories;' )
self._c.execute( 'DROP TABLE ratings_like;' )
self._c.execute( 'DROP TABLE ratings_numerical;' )

self._c.execute( 'CREATE TABLE services ( service_id INTEGER PRIMARY KEY, service_key BLOB_BYTES, service_type INTEGER, name TEXT, info TEXT_YAML );' )
self._c.execute( 'CREATE UNIQUE INDEX services_service_key_index ON services ( service_key );' )

services = []

for ( service_id, service_key, service_type, name ) in service_basic_info:

info = {}

if service_id in service_address_info:

( host, port, last_error ) = service_address_info[ service_id ]

info[ 'host' ] = host
info[ 'port' ] = port
info[ 'last_error' ] = last_error


if service_id in service_account_info:

( access_key, account ) = service_account_info[ service_id ]

info[ 'access_key' ] = access_key
info[ 'account' ] = account


if service_id in service_repository_info:

( first_begin, next_begin ) = service_repository_info[ service_id ]

info[ 'first_begin' ] = first_begin
info[ 'next_begin' ] = next_begin


if service_id in service_ratings_like_info:

( like, dislike ) = service_ratings_like_info[ service_id ]

info[ 'like' ] = like
info[ 'dislike' ] = dislike


if service_id in service_ratings_numerical_info:

( lower, upper ) = service_ratings_numerical_info[ service_id ]

info[ 'lower' ] = lower
info[ 'upper' ] = upper


self._c.execute( 'INSERT INTO services ( service_id, service_key, service_type, name, info ) VALUES ( ?, ?, ?, ?, ? );', ( service_id, sqlite3.Binary( service_key ), service_type, name, info ) )


self._c.execute( 'COMMIT' )

self._c.execute( 'PRAGMA foreign_keys = ON;' )

self._c.execute( 'BEGIN IMMEDIATE' )


if version == 95:

for ( service_id, info ) in self._c.execute( 'SELECT service_id, info FROM services;' ).fetchall():

if 'account' in info:

info[ 'account' ].MakeStale()

self._c.execute( 'UPDATE services SET info = ? WHERE service_id = ?;', ( info, service_id ) )




if version == 101:

self._c.execute( 'CREATE TABLE yaml_dumps ( dump_type INTEGER, dump_name TEXT, dump TEXT_YAML, PRIMARY KEY ( dump_type, dump_name ) );' )
Expand Down Expand Up @@ -7296,8 +7195,6 @@ def DAEMONSynchroniseSubscriptions():

info[ 'rating_yaoi' ] = 1
info[ 'rating_yuri' ] = 1
info[ 'rating_loli' ] = 1
info[ 'rating_shota' ] = 1
info[ 'rating_teen' ] = 1
info[ 'rating_guro' ] = 1
info[ 'rating_furry' ] = 1
Expand Down
20 changes: 10 additions & 10 deletions include/ClientGUI.py
Original file line number Diff line number Diff line change
Expand Up @@ -998,18 +998,18 @@ def help():
dont_know.Append( CC.MENU_EVENT_ID_TO_ACTION_CACHE.GetId( 'auto_server_setup' ), p( 'Just set up the server on this computer, please' ) )
menu.AppendMenu( wx.ID_NONE, p( 'I don\'t know what I am doing' ), dont_know )
links = wx.Menu()
tumblr = wx.MenuItem( links, CC.MENU_EVENT_ID_TO_ACTION_CACHE.GetId( 'tumblr' ), p( 'Tumblr' ) )
tumblr.SetBitmap( wx.Bitmap( HC.STATIC_DIR + os.path.sep + 'tumblr.png' ) )
twitter = wx.MenuItem( links, CC.MENU_EVENT_ID_TO_ACTION_CACHE.GetId( 'twitter' ), p( 'Twitter' ) )
twitter.SetBitmap( wx.Bitmap( HC.STATIC_DIR + os.path.sep + 'twitter.png' ) )
site = wx.MenuItem( links, CC.MENU_EVENT_ID_TO_ACTION_CACHE.GetId( 'site' ), p( 'Site' ) )
site.SetBitmap( wx.Bitmap( HC.STATIC_DIR + os.path.sep + 'file_repository_small.png' ) )
forum = wx.MenuItem( links, CC.MENU_EVENT_ID_TO_ACTION_CACHE.GetId( 'forum' ), p( 'Forum' ) )
forum.SetBitmap( wx.Bitmap( HC.STATIC_DIR + os.path.sep + 'file_repository_small.png' ) )
links.AppendItem( tumblr )
links.AppendItem( twitter )
board = wx.MenuItem( links, CC.MENU_EVENT_ID_TO_ACTION_CACHE.GetId( '8chan_board' ), p( '8chan Board' ) )
board.SetBitmap( wx.Bitmap( HC.STATIC_DIR + os.path.sep + '8chan.png' ) )
twitter = wx.MenuItem( links, CC.MENU_EVENT_ID_TO_ACTION_CACHE.GetId( 'twitter' ), p( 'Twitter' ) )
twitter.SetBitmap( wx.Bitmap( HC.STATIC_DIR + os.path.sep + 'twitter.png' ) )
tumblr = wx.MenuItem( links, CC.MENU_EVENT_ID_TO_ACTION_CACHE.GetId( 'tumblr' ), p( 'Tumblr' ) )
tumblr.SetBitmap( wx.Bitmap( HC.STATIC_DIR + os.path.sep + 'tumblr.png' ) )
links.AppendItem( site )
links.AppendItem( forum )
links.AppendItem( board )
links.AppendItem( twitter )
links.AppendItem( tumblr )
menu.AppendMenu( wx.ID_NONE, p( 'Links' ), links )
debug = wx.Menu()
debug.Append( CC.MENU_EVENT_ID_TO_ACTION_CACHE.GetId( 'debug_garbage' ), p( 'Garbage' ) )
Expand Down Expand Up @@ -1828,7 +1828,7 @@ def EventMenu( self, event ):
elif command == 'delete_service_info': self._DeleteServiceInfo()
elif command == 'exit': self.EventExit( event )
elif command == 'fetch_ip': self._FetchIP( data )
elif command == 'forum': webbrowser.open( 'http://hydrus.x10.mx/forum' )
elif command == '8chan_board': webbrowser.open( 'http://8ch.net/hydrus/index.html' )
elif command == 'file_integrity': self._CheckFileIntegrity()
elif command == 'help': webbrowser.open( 'file://' + HC.BASE_DIR + '/help/index.html' )
elif command == 'help_about': self._AboutWindow()
Expand Down
Loading

0 comments on commit 2f75a7f

Please sign in to comment.