621 lines
29 KiB
Python
621 lines
29 KiB
Python
from hydrus.core import HydrusConstants as HC
|
|
from hydrus.core import HydrusGlobals as HG
|
|
from hydrus.core import HydrusExceptions
|
|
from hydrus.core import HydrusSerialisable
|
|
|
|
SIMPLE_ARCHIVE_DELETE_FILTER_BACK = 0
|
|
SIMPLE_ARCHIVE_DELETE_FILTER_DELETE = 1
|
|
SIMPLE_ARCHIVE_DELETE_FILTER_KEEP = 2
|
|
SIMPLE_ARCHIVE_DELETE_FILTER_SKIP = 3
|
|
SIMPLE_ARCHIVE_FILE = 4
|
|
SIMPLE_CHECK_ALL_IMPORT_FOLDERS = 5
|
|
SIMPLE_CLOSE_MEDIA_VIEWER = 6
|
|
SIMPLE_CLOSE_PAGE = 7
|
|
SIMPLE_COPY_BMP = 8
|
|
SIMPLE_COPY_BMP_OR_FILE_IF_NOT_BMPABLE = 9
|
|
SIMPLE_COPY_FILE = 10
|
|
SIMPLE_COPY_MD5_HASH = 11
|
|
SIMPLE_COPY_PATH = 12
|
|
SIMPLE_COPY_SHA1_HASH = 13
|
|
SIMPLE_COPY_SHA256_HASH = 14
|
|
SIMPLE_COPY_SHA512_HASH = 15
|
|
SIMPLE_DELETE_FILE = 16
|
|
SIMPLE_DUPLICATE_FILTER_ALTERNATES = 17
|
|
SIMPLE_DUPLICATE_FILTER_BACK = 18
|
|
SIMPLE_DUPLICATE_FILTER_CUSTOM_ACTION = 19
|
|
SIMPLE_DUPLICATE_FILTER_EXACTLY_THE_SAME = 20
|
|
SIMPLE_DUPLICATE_FILTER_FALSE_POSITIVE = 21
|
|
SIMPLE_DUPLICATE_FILTER_SKIP = 22
|
|
SIMPLE_DUPLICATE_FILTER_THIS_IS_BETTER_AND_DELETE_OTHER = 23
|
|
SIMPLE_DUPLICATE_FILTER_THIS_IS_BETTER_BUT_KEEP_BOTH = 24
|
|
SIMPLE_DUPLICATE_MEDIA_SET_ALTERNATE = 25
|
|
SIMPLE_DUPLICATE_MEDIA_SET_ALTERNATE_COLLECTIONS = 26
|
|
SIMPLE_DUPLICATE_MEDIA_SET_CUSTOM = 27
|
|
SIMPLE_DUPLICATE_MEDIA_SET_FOCUSED_BETTER = 28
|
|
SIMPLE_DUPLICATE_MEDIA_SET_FOCUSED_KING = 29
|
|
SIMPLE_DUPLICATE_MEDIA_SET_SAME_QUALITY = 30
|
|
SIMPLE_EXIT_APPLICATION = 31
|
|
SIMPLE_EXPORT_FILES = 32
|
|
SIMPLE_EXPORT_FILES_QUICK_AUTO_EXPORT = 33
|
|
SIMPLE_FLIP_DARKMODE = 34
|
|
SIMPLE_FLIP_DEBUG_FORCE_IDLE_MODE_DO_NOT_SET_THIS = 35
|
|
SIMPLE_FOCUS_MEDIA_VIEWER = 36
|
|
SIMPLE_GET_SIMILAR_TO_EXACT = 37
|
|
SIMPLE_GET_SIMILAR_TO_SIMILAR = 38
|
|
SIMPLE_GET_SIMILAR_TO_SPECULATIVE = 39
|
|
SIMPLE_GET_SIMILAR_TO_VERY_SIMILAR = 40
|
|
SIMPLE_GLOBAL_AUDIO_MUTE = 41
|
|
SIMPLE_GLOBAL_AUDIO_MUTE_FLIP = 42
|
|
SIMPLE_GLOBAL_AUDIO_UNMUTE = 43
|
|
SIMPLE_HIDE_TO_SYSTEM_TRAY = 44
|
|
SIMPLE_INBOX_FILE = 45
|
|
SIMPLE_LAUNCH_MEDIA_VIEWER = 46
|
|
SIMPLE_LAUNCH_THE_ARCHIVE_DELETE_FILTER = 47
|
|
SIMPLE_MANAGE_FILE_NOTES = 48
|
|
SIMPLE_MANAGE_FILE_RATINGS = 49
|
|
SIMPLE_MANAGE_FILE_TAGS = 50
|
|
SIMPLE_MANAGE_FILE_URLS = 51
|
|
SIMPLE_MOVE_ANIMATION_TO_NEXT_FRAME = 52
|
|
SIMPLE_MOVE_ANIMATION_TO_PREVIOUS_FRAME = 53
|
|
SIMPLE_NEW_DUPLICATE_FILTER_PAGE = 54
|
|
SIMPLE_NEW_GALLERY_DOWNLOADER_PAGE = 55
|
|
SIMPLE_NEW_PAGE = 56
|
|
SIMPLE_NEW_PAGE_OF_PAGES = 57
|
|
SIMPLE_NEW_SIMPLE_DOWNLOADER_PAGE = 58
|
|
SIMPLE_NEW_URL_DOWNLOADER_PAGE = 59
|
|
SIMPLE_NEW_WATCHER_DOWNLOADER_PAGE = 60
|
|
SIMPLE_OPEN_FILE_IN_EXTERNAL_PROGRAM = 61
|
|
SIMPLE_OPEN_KNOWN_URL = 62
|
|
SIMPLE_OPEN_SELECTION_IN_NEW_PAGE = 63
|
|
SIMPLE_PAN_BOTTOM_EDGE = 64
|
|
SIMPLE_PAN_DOWN = 65
|
|
SIMPLE_PAN_HORIZONTAL_CENTER = 66
|
|
SIMPLE_PAN_LEFT = 67
|
|
SIMPLE_PAN_LEFT_EDGE = 68
|
|
SIMPLE_PAN_RIGHT = 69
|
|
SIMPLE_PAN_RIGHT_EDGE = 70
|
|
SIMPLE_PAN_TOP_EDGE = 71
|
|
SIMPLE_PAN_UP = 72
|
|
SIMPLE_PAN_VERTICAL_CENTER = 73
|
|
SIMPLE_PAUSE_MEDIA = 74
|
|
SIMPLE_PAUSE_PLAY_MEDIA = 75
|
|
SIMPLE_PAUSE_PLAY_SLIDESHOW = 76
|
|
SIMPLE_REDO = 77
|
|
SIMPLE_REFRESH = 78
|
|
SIMPLE_REFRESH_ALL_PAGES = 79
|
|
SIMPLE_REFRESH_PAGE_OF_PAGES_PAGES = 80
|
|
SIMPLE_REMOVE_FILE_FROM_VIEW = 81
|
|
SIMPLE_RESTART_APPLICATION = 82
|
|
SIMPLE_SET_MEDIA_FOCUS = 83
|
|
SIMPLE_SET_SEARCH_FOCUS = 84
|
|
SIMPLE_SHOW_AND_FOCUS_MANAGE_TAGS_FAVOURITE_TAGS = 85
|
|
SIMPLE_SHOW_AND_FOCUS_MANAGE_TAGS_FILE_LOOKUP_SCRIPT_TAGS = 86
|
|
SIMPLE_SHOW_AND_FOCUS_MANAGE_TAGS_RECENT_TAGS = 87
|
|
SIMPLE_SHOW_AND_FOCUS_MANAGE_TAGS_RELATED_TAGS = 88
|
|
SIMPLE_SHOW_HIDE_SPLITTERS = 89
|
|
SIMPLE_SHOW_MENU = 90
|
|
SIMPLE_SWITCH_BETWEEN_100_PERCENT_AND_CANVAS_ZOOM = 91
|
|
SIMPLE_SWITCH_BETWEEN_FULLSCREEN_BORDERLESS_AND_REGULAR_FRAMED_WINDOW = 92
|
|
SIMPLE_SYNCHRONISED_WAIT_SWITCH = 93
|
|
SIMPLE_UNCLOSE_PAGE = 94
|
|
SIMPLE_UNDELETE_FILE = 95
|
|
SIMPLE_UNDO = 96
|
|
SIMPLE_VIEW_FIRST = 97
|
|
SIMPLE_VIEW_LAST = 98
|
|
SIMPLE_VIEW_NEXT = 99
|
|
SIMPLE_VIEW_PREVIOUS = 100
|
|
SIMPLE_ZOOM_IN = 101
|
|
SIMPLE_ZOOM_OUT = 102
|
|
SIMPLE_EXIT_APPLICATION_FORCE_MAINTENANCE = 103
|
|
SIMPLE_ZOOM_IN_VIEWER_CENTER = 104
|
|
SIMPLE_ZOOM_OUT_VIEWER_CENTER = 105
|
|
SIMPLE_SWITCH_BETWEEN_100_PERCENT_AND_CANVAS_ZOOM_VIEWER_CENTER = 106
|
|
SIMPLE_DUPLICATE_MEDIA_DISSOLVE_FOCUSED_ALTERNATE_GROUP = 107
|
|
SIMPLE_DUPLICATE_MEDIA_DISSOLVE_ALTERNATE_GROUP = 108
|
|
SIMPLE_DUPLICATE_MEDIA_DISSOLVE_FOCUSED_DUPLICATE_GROUP = 109
|
|
SIMPLE_DUPLICATE_MEDIA_DISSOLVE_DUPLICATE_GROUP = 110
|
|
SIMPLE_DUPLICATE_MEDIA_REMOVE_FOCUSED_FROM_ALTERNATE_GROUP = 111
|
|
SIMPLE_DUPLICATE_MEDIA_REMOVE_FOCUSED_FROM_DUPLICATE_GROUP = 112
|
|
SIMPLE_DUPLICATE_MEDIA_RESET_FOCUSED_POTENTIAL_SEARCH = 113
|
|
SIMPLE_DUPLICATE_MEDIA_RESET_POTENTIAL_SEARCH = 114
|
|
SIMPLE_DUPLICATE_MEDIA_REMOVE_FOCUSED_POTENTIALS = 115
|
|
SIMPLE_DUPLICATE_MEDIA_REMOVE_POTENTIALS = 116
|
|
SIMPLE_DUPLICATE_MEDIA_SET_POTENTIAL = 117
|
|
SIMPLE_DUPLICATE_MEDIA_CLEAR_FALSE_POSITIVES = 118
|
|
SIMPLE_DUPLICATE_MEDIA_CLEAR_FOCUSED_FALSE_POSITIVES = 119
|
|
SIMPLE_RUN_ALL_EXPORT_FOLDERS = 120
|
|
SIMPLE_MOVE_PAGES_SELECTION_LEFT = 121
|
|
SIMPLE_MOVE_PAGES_SELECTION_RIGHT = 122
|
|
SIMPLE_MOVE_PAGES_SELECTION_HOME = 123
|
|
SIMPLE_MOVE_PAGES_SELECTION_END = 124
|
|
SIMPLE_REFRESH_RELATED_TAGS = 125
|
|
SIMPLE_AUTOCOMPLETE_FORCE_FETCH = 126
|
|
SIMPLE_AUTOCOMPLETE_IME_MODE = 127
|
|
SIMPLE_AUTOCOMPLETE_IF_EMPTY_TAB_LEFT = 128
|
|
SIMPLE_AUTOCOMPLETE_IF_EMPTY_TAB_RIGHT = 129
|
|
SIMPLE_AUTOCOMPLETE_IF_EMPTY_PAGE_LEFT = 130
|
|
SIMPLE_AUTOCOMPLETE_IF_EMPTY_PAGE_RIGHT = 131
|
|
SIMPLE_AUTOCOMPLETE_IF_EMPTY_MEDIA_PREVIOUS = 132
|
|
SIMPLE_AUTOCOMPLETE_IF_EMPTY_MEDIA_NEXT = 133
|
|
|
|
simple_enum_to_str_lookup = {
|
|
SIMPLE_ARCHIVE_DELETE_FILTER_BACK : 'archive/delete filter: back',
|
|
SIMPLE_ARCHIVE_DELETE_FILTER_DELETE : 'archive/delete filter: delete',
|
|
SIMPLE_ARCHIVE_DELETE_FILTER_KEEP : 'archive/delete filter: keep',
|
|
SIMPLE_ARCHIVE_DELETE_FILTER_SKIP : 'archive/delete filter: skip',
|
|
SIMPLE_ARCHIVE_FILE : 'archive file',
|
|
SIMPLE_CHECK_ALL_IMPORT_FOLDERS : 'check all import folders now',
|
|
SIMPLE_CLOSE_MEDIA_VIEWER : 'close media viewer',
|
|
SIMPLE_CLOSE_PAGE : 'close page',
|
|
SIMPLE_COPY_BMP : 'copy bmp of image',
|
|
SIMPLE_COPY_BMP_OR_FILE_IF_NOT_BMPABLE : 'copy bmp of image, or copy file of other files',
|
|
SIMPLE_COPY_FILE : 'copy file',
|
|
SIMPLE_COPY_MD5_HASH : 'copy md5 hash',
|
|
SIMPLE_COPY_PATH : 'copy file paths',
|
|
SIMPLE_COPY_SHA1_HASH : 'copy sha1 hash',
|
|
SIMPLE_COPY_SHA256_HASH : 'copy sha256 hash',
|
|
SIMPLE_COPY_SHA512_HASH : 'copy sha512 hash',
|
|
SIMPLE_DELETE_FILE : 'delete file',
|
|
SIMPLE_DUPLICATE_FILTER_ALTERNATES : 'duplicate filter: set as alternates',
|
|
SIMPLE_DUPLICATE_FILTER_BACK : 'duplicate filter: back',
|
|
SIMPLE_DUPLICATE_FILTER_CUSTOM_ACTION : 'duplicate filter: do custom action',
|
|
SIMPLE_DUPLICATE_FILTER_EXACTLY_THE_SAME : 'duplicate filter: set as the same',
|
|
SIMPLE_DUPLICATE_FILTER_FALSE_POSITIVE : 'duplicate filter: set as not related/false positive',
|
|
SIMPLE_DUPLICATE_FILTER_SKIP : 'duplicate filter: skip',
|
|
SIMPLE_DUPLICATE_FILTER_THIS_IS_BETTER_AND_DELETE_OTHER : 'duplicate filter: this is better, delete other',
|
|
SIMPLE_DUPLICATE_FILTER_THIS_IS_BETTER_BUT_KEEP_BOTH : 'duplicate filter: this is better, keep both',
|
|
SIMPLE_DUPLICATE_MEDIA_SET_ALTERNATE : 'file relationships: set files as alternates',
|
|
SIMPLE_DUPLICATE_MEDIA_SET_ALTERNATE_COLLECTIONS : 'file relationships: set collects as separate alternate groups',
|
|
SIMPLE_DUPLICATE_MEDIA_SET_CUSTOM : 'file relationships: do custom action',
|
|
SIMPLE_DUPLICATE_MEDIA_SET_FOCUSED_BETTER : 'file relationships: the focused file is a better duplicate',
|
|
SIMPLE_DUPLICATE_MEDIA_SET_FOCUSED_KING : 'file relationships: set the focused file as king duplicate',
|
|
SIMPLE_DUPLICATE_MEDIA_SET_SAME_QUALITY : 'file relationships: set files as the same quality duplicates',
|
|
SIMPLE_EXIT_APPLICATION : 'exit program: close',
|
|
SIMPLE_EXPORT_FILES : 'export these files',
|
|
SIMPLE_EXPORT_FILES_QUICK_AUTO_EXPORT : 'export these files (quick auto-export)',
|
|
SIMPLE_FLIP_DARKMODE : 'flip darkmode (will be replaced by style/qss soon)',
|
|
SIMPLE_FLIP_DEBUG_FORCE_IDLE_MODE_DO_NOT_SET_THIS : 'force debug idle mode (do not use this!)',
|
|
SIMPLE_FOCUS_MEDIA_VIEWER : 'keyboard focus: to the media viewer',
|
|
SIMPLE_GET_SIMILAR_TO_EXACT : 'show similar files: 0 (exact)',
|
|
SIMPLE_GET_SIMILAR_TO_SIMILAR : 'show similar files: 4 (similar)',
|
|
SIMPLE_GET_SIMILAR_TO_SPECULATIVE : 'show similar files: 8 (speculative)',
|
|
SIMPLE_GET_SIMILAR_TO_VERY_SIMILAR : 'show similar files: 2 (very similar)',
|
|
SIMPLE_GLOBAL_AUDIO_MUTE : 'mute global audio',
|
|
SIMPLE_GLOBAL_AUDIO_MUTE_FLIP : 'mute/unmute global audio',
|
|
SIMPLE_GLOBAL_AUDIO_UNMUTE : 'unmute global audio',
|
|
SIMPLE_HIDE_TO_SYSTEM_TRAY : 'hide to system tray',
|
|
SIMPLE_INBOX_FILE : 'inbox file',
|
|
SIMPLE_LAUNCH_MEDIA_VIEWER : 'launch the media viewer',
|
|
SIMPLE_LAUNCH_THE_ARCHIVE_DELETE_FILTER : 'launch the archive/delete filter',
|
|
SIMPLE_MANAGE_FILE_NOTES : 'manage file notes',
|
|
SIMPLE_MANAGE_FILE_RATINGS : 'manage file ratings',
|
|
SIMPLE_MANAGE_FILE_TAGS : 'manage file tags',
|
|
SIMPLE_MANAGE_FILE_URLS : 'manage file urls',
|
|
SIMPLE_MOVE_PAGES_SELECTION_LEFT : 'move page selection left (cycles up through page of pages at boundaries)',
|
|
SIMPLE_MOVE_PAGES_SELECTION_RIGHT : 'move page selection right (cycles up through page of pages at boundaries)',
|
|
SIMPLE_MOVE_PAGES_SELECTION_HOME : 'move selection to leftmost page',
|
|
SIMPLE_MOVE_PAGES_SELECTION_END : 'move selection to rightmost page',
|
|
SIMPLE_MOVE_ANIMATION_TO_NEXT_FRAME : 'move animation one frame forward',
|
|
SIMPLE_MOVE_ANIMATION_TO_PREVIOUS_FRAME : 'move animation one frame back',
|
|
SIMPLE_NEW_DUPLICATE_FILTER_PAGE : 'open a new page: duplicate filter',
|
|
SIMPLE_NEW_GALLERY_DOWNLOADER_PAGE : 'open a new page: gallery downloader',
|
|
SIMPLE_NEW_PAGE : 'open a new page: search page',
|
|
SIMPLE_NEW_PAGE_OF_PAGES : 'open a new page: page of pages',
|
|
SIMPLE_NEW_SIMPLE_DOWNLOADER_PAGE : 'open a new page: simple downloader',
|
|
SIMPLE_NEW_URL_DOWNLOADER_PAGE : 'open a new page: url downloader',
|
|
SIMPLE_NEW_WATCHER_DOWNLOADER_PAGE : 'open a new page: thread watcher',
|
|
SIMPLE_OPEN_FILE_IN_EXTERNAL_PROGRAM : 'open file in external program',
|
|
SIMPLE_OPEN_KNOWN_URL : 'open known url',
|
|
SIMPLE_OPEN_SELECTION_IN_NEW_PAGE : 'open files in a new page',
|
|
SIMPLE_PAN_BOTTOM_EDGE : 'pan file to bottom edge',
|
|
SIMPLE_PAN_DOWN : 'pan file down',
|
|
SIMPLE_PAN_HORIZONTAL_CENTER : 'pan file left/right to center',
|
|
SIMPLE_PAN_LEFT : 'pan file left',
|
|
SIMPLE_PAN_LEFT_EDGE : 'pan file to left edge',
|
|
SIMPLE_PAN_RIGHT : 'pan file right',
|
|
SIMPLE_PAN_RIGHT_EDGE : 'pan file to right edge',
|
|
SIMPLE_PAN_TOP_EDGE : 'pan file to top edge',
|
|
SIMPLE_PAN_UP : 'pan file up',
|
|
SIMPLE_PAN_VERTICAL_CENTER : 'pan file up/down to center',
|
|
SIMPLE_PAUSE_MEDIA : 'pause media',
|
|
SIMPLE_PAUSE_PLAY_MEDIA : 'pause/play media',
|
|
SIMPLE_PAUSE_PLAY_SLIDESHOW : 'pause/play slideshow',
|
|
SIMPLE_REDO : 'redo (limited support)',
|
|
SIMPLE_REFRESH : 'refresh page search/sort',
|
|
SIMPLE_REFRESH_ALL_PAGES : 'refresh all pages',
|
|
SIMPLE_REFRESH_PAGE_OF_PAGES_PAGES : 'refresh all pages on current page of pages',
|
|
SIMPLE_REMOVE_FILE_FROM_VIEW : 'remove file from current view',
|
|
SIMPLE_RESTART_APPLICATION : 'exit program: restart',
|
|
SIMPLE_RUN_ALL_EXPORT_FOLDERS : 'run all export folders now',
|
|
SIMPLE_SET_MEDIA_FOCUS : 'keyboard focus: to the thumbnail grid',
|
|
SIMPLE_SET_SEARCH_FOCUS : 'keyboard focus: to the default text entry of page/dialog',
|
|
SIMPLE_SHOW_AND_FOCUS_MANAGE_TAGS_FAVOURITE_TAGS : 'keyboard focus: to manage tags\' favourite tags',
|
|
SIMPLE_SHOW_AND_FOCUS_MANAGE_TAGS_FILE_LOOKUP_SCRIPT_TAGS : 'keyboard focus: to manage tags\' file lookup scripts',
|
|
SIMPLE_SHOW_AND_FOCUS_MANAGE_TAGS_RECENT_TAGS : 'keyboard focus: to manage tags\' recent tags',
|
|
SIMPLE_SHOW_AND_FOCUS_MANAGE_TAGS_RELATED_TAGS : 'keyboard focus: to manage tags\' related tags',
|
|
SIMPLE_REFRESH_RELATED_TAGS : 'refresh manage tags\' related tags with thorough duration',
|
|
SIMPLE_SHOW_HIDE_SPLITTERS : 'show/hide the left page panel and preview canvas',
|
|
SIMPLE_SHOW_MENU : 'show menu',
|
|
SIMPLE_SWITCH_BETWEEN_100_PERCENT_AND_CANVAS_ZOOM : 'zoom: switch between 100% and canvas fit',
|
|
SIMPLE_SWITCH_BETWEEN_FULLSCREEN_BORDERLESS_AND_REGULAR_FRAMED_WINDOW : 'switch between fullscreen borderless and regular framed window',
|
|
SIMPLE_SYNCHRONISED_WAIT_SWITCH : 'switch between searching a page immediately on new tags and waiting',
|
|
SIMPLE_UNCLOSE_PAGE : 'restore the most recently closed page',
|
|
SIMPLE_UNDELETE_FILE : 'undelete file',
|
|
SIMPLE_UNDO : 'undo (limited support)',
|
|
SIMPLE_VIEW_FIRST : 'media navigation: first',
|
|
SIMPLE_VIEW_LAST : 'media navigation: last',
|
|
SIMPLE_VIEW_NEXT : 'media navigation: next',
|
|
SIMPLE_VIEW_PREVIOUS : 'media navigation: previous',
|
|
SIMPLE_ZOOM_IN : 'zoom: in',
|
|
SIMPLE_ZOOM_OUT : 'zoom: out',
|
|
SIMPLE_EXIT_APPLICATION_FORCE_MAINTENANCE : 'exit program: close and force shutdown maintenance',
|
|
SIMPLE_ZOOM_IN_VIEWER_CENTER : 'zoom: in with forced media viewer center',
|
|
SIMPLE_ZOOM_OUT_VIEWER_CENTER : 'zoom: out with forced media viewer center',
|
|
SIMPLE_SWITCH_BETWEEN_100_PERCENT_AND_CANVAS_ZOOM_VIEWER_CENTER : 'zoom: switch 100% and canvas fit with forced media viewer center',
|
|
SIMPLE_DUPLICATE_MEDIA_DISSOLVE_FOCUSED_ALTERNATE_GROUP : 'file relationships: dissolve focused file alternate group',
|
|
SIMPLE_DUPLICATE_MEDIA_DISSOLVE_ALTERNATE_GROUP : 'file relationships: dissolve alternate groups',
|
|
SIMPLE_DUPLICATE_MEDIA_DISSOLVE_FOCUSED_DUPLICATE_GROUP : 'file relationships: dissolve focused file duplicate group',
|
|
SIMPLE_DUPLICATE_MEDIA_DISSOLVE_DUPLICATE_GROUP : 'file relationships: dissolve duplicate groups',
|
|
SIMPLE_DUPLICATE_MEDIA_REMOVE_FOCUSED_FROM_ALTERNATE_GROUP : 'file relationships: remove focused file from alternate group',
|
|
SIMPLE_DUPLICATE_MEDIA_REMOVE_FOCUSED_FROM_DUPLICATE_GROUP : 'file relationships: remove focused file from duplicate group',
|
|
SIMPLE_DUPLICATE_MEDIA_RESET_FOCUSED_POTENTIAL_SEARCH : 'file relationships: reset focused file potential search',
|
|
SIMPLE_DUPLICATE_MEDIA_RESET_POTENTIAL_SEARCH : 'file relationships: reset potential searches',
|
|
SIMPLE_DUPLICATE_MEDIA_REMOVE_FOCUSED_POTENTIALS : 'file relationships: remove focused file from potential duplicate pairs',
|
|
SIMPLE_DUPLICATE_MEDIA_REMOVE_POTENTIALS : 'file relationships: remote files from potential duplicate pairs',
|
|
SIMPLE_DUPLICATE_MEDIA_SET_POTENTIAL : 'file relationships: set files as potential duplicates',
|
|
SIMPLE_DUPLICATE_MEDIA_CLEAR_FALSE_POSITIVES : 'file relationships: clear false positives',
|
|
SIMPLE_DUPLICATE_MEDIA_CLEAR_FOCUSED_FALSE_POSITIVES : 'file relationships: clear focused file false positives',
|
|
SIMPLE_AUTOCOMPLETE_FORCE_FETCH : 'force-fetch tag autocomplete results',
|
|
SIMPLE_AUTOCOMPLETE_IME_MODE : 'flip IME-friendly mode on/off (this disables extra shortcut processing so you can do IME popup stuff)',
|
|
SIMPLE_AUTOCOMPLETE_IF_EMPTY_TAB_LEFT : 'if input is empty, move left one autocomplete dropdown tab',
|
|
SIMPLE_AUTOCOMPLETE_IF_EMPTY_TAB_RIGHT : 'if input is empty, move right one autocomplete dropdown tab',
|
|
SIMPLE_AUTOCOMPLETE_IF_EMPTY_PAGE_LEFT : 'if input & results list are empty, move to left one service page',
|
|
SIMPLE_AUTOCOMPLETE_IF_EMPTY_PAGE_RIGHT : 'if input & results list are empty, move to right one service page',
|
|
SIMPLE_AUTOCOMPLETE_IF_EMPTY_MEDIA_PREVIOUS : 'if input & results list are empty and in media viewer manage tags dialog, move to previous media',
|
|
SIMPLE_AUTOCOMPLETE_IF_EMPTY_MEDIA_NEXT : 'if input & results list are empty and in media viewer manage tags dialog, move to previous media'
|
|
}
|
|
|
|
legacy_simple_str_to_enum_lookup = {
|
|
'archive_delete_filter_back' : SIMPLE_ARCHIVE_DELETE_FILTER_BACK,
|
|
'archive_delete_filter_delete' : SIMPLE_ARCHIVE_DELETE_FILTER_DELETE,
|
|
'archive_delete_filter_keep' : SIMPLE_ARCHIVE_DELETE_FILTER_KEEP,
|
|
'archive_delete_filter_skip' : SIMPLE_ARCHIVE_DELETE_FILTER_SKIP,
|
|
'archive_file' : SIMPLE_ARCHIVE_FILE,
|
|
'check_all_import_folders' : SIMPLE_CHECK_ALL_IMPORT_FOLDERS,
|
|
'close_media_viewer' : SIMPLE_CLOSE_MEDIA_VIEWER,
|
|
'close_page' : SIMPLE_CLOSE_PAGE,
|
|
'copy_bmp' : SIMPLE_COPY_BMP,
|
|
'copy_bmp_or_file_if_not_bmpable' : SIMPLE_COPY_BMP_OR_FILE_IF_NOT_BMPABLE,
|
|
'copy_file' : SIMPLE_COPY_FILE,
|
|
'copy_md5_hash' : SIMPLE_COPY_MD5_HASH,
|
|
'copy_path' : SIMPLE_COPY_PATH,
|
|
'copy_sha1_hash' : SIMPLE_COPY_SHA1_HASH,
|
|
'copy_sha256_hash' : SIMPLE_COPY_SHA256_HASH,
|
|
'copy_sha512_hash' : SIMPLE_COPY_SHA512_HASH,
|
|
'delete_file' : SIMPLE_DELETE_FILE,
|
|
'duplicate_filter_alternates' : SIMPLE_DUPLICATE_FILTER_ALTERNATES,
|
|
'duplicate_filter_back' : SIMPLE_DUPLICATE_FILTER_BACK,
|
|
'duplicate_filter_custom_action' : SIMPLE_DUPLICATE_FILTER_CUSTOM_ACTION,
|
|
'duplicate_filter_exactly_the_same' : SIMPLE_DUPLICATE_FILTER_EXACTLY_THE_SAME,
|
|
'duplicate_filter_false_positive' : SIMPLE_DUPLICATE_FILTER_FALSE_POSITIVE,
|
|
'duplicate_filter_skip' : SIMPLE_DUPLICATE_FILTER_SKIP,
|
|
'duplicate_filter_this_is_better_and_delete_other' : SIMPLE_DUPLICATE_FILTER_THIS_IS_BETTER_AND_DELETE_OTHER,
|
|
'duplicate_filter_this_is_better_but_keep_both' : SIMPLE_DUPLICATE_FILTER_THIS_IS_BETTER_BUT_KEEP_BOTH,
|
|
'duplicate_media_set_alternate' : SIMPLE_DUPLICATE_MEDIA_SET_ALTERNATE,
|
|
'duplicate_media_set_alternate_collections' : SIMPLE_DUPLICATE_MEDIA_SET_ALTERNATE_COLLECTIONS,
|
|
'duplicate_media_set_custom' : SIMPLE_DUPLICATE_MEDIA_SET_CUSTOM,
|
|
'duplicate_media_set_focused_better' : SIMPLE_DUPLICATE_MEDIA_SET_FOCUSED_BETTER,
|
|
'duplicate_media_set_focused_king' : SIMPLE_DUPLICATE_MEDIA_SET_FOCUSED_KING,
|
|
'duplicate_media_set_same_quality' : SIMPLE_DUPLICATE_MEDIA_SET_SAME_QUALITY,
|
|
'exit_application' : SIMPLE_EXIT_APPLICATION,
|
|
'exit_application_force_maintenance' : SIMPLE_EXIT_APPLICATION_FORCE_MAINTENANCE,
|
|
'export_files' : SIMPLE_EXPORT_FILES,
|
|
'export_files_quick_auto_export' : SIMPLE_EXPORT_FILES_QUICK_AUTO_EXPORT,
|
|
'flip_darkmode' : SIMPLE_FLIP_DARKMODE,
|
|
'flip_debug_force_idle_mode_do_not_set_this' : SIMPLE_FLIP_DEBUG_FORCE_IDLE_MODE_DO_NOT_SET_THIS,
|
|
'focus_media_viewer' : SIMPLE_FOCUS_MEDIA_VIEWER,
|
|
'get_similar_to_exact' : SIMPLE_GET_SIMILAR_TO_EXACT,
|
|
'get_similar_to_similar' : SIMPLE_GET_SIMILAR_TO_SIMILAR,
|
|
'get_similar_to_speculative' : SIMPLE_GET_SIMILAR_TO_SPECULATIVE,
|
|
'get_similar_to_very_similar' : SIMPLE_GET_SIMILAR_TO_VERY_SIMILAR,
|
|
'global_audio_mute' : SIMPLE_GLOBAL_AUDIO_MUTE,
|
|
'global_audio_mute_flip' : SIMPLE_GLOBAL_AUDIO_MUTE_FLIP,
|
|
'global_audio_unmute' : SIMPLE_GLOBAL_AUDIO_UNMUTE,
|
|
'hide_to_system_tray' : SIMPLE_HIDE_TO_SYSTEM_TRAY,
|
|
'inbox_file' : SIMPLE_INBOX_FILE,
|
|
'launch_media_viewer' : SIMPLE_LAUNCH_MEDIA_VIEWER,
|
|
'launch_the_archive_delete_filter' : SIMPLE_LAUNCH_THE_ARCHIVE_DELETE_FILTER,
|
|
'manage_file_notes' : SIMPLE_MANAGE_FILE_NOTES,
|
|
'manage_file_ratings' : SIMPLE_MANAGE_FILE_RATINGS,
|
|
'manage_file_tags' : SIMPLE_MANAGE_FILE_TAGS,
|
|
'manage_file_urls' : SIMPLE_MANAGE_FILE_URLS,
|
|
'move_animation_to_next_frame' : SIMPLE_MOVE_ANIMATION_TO_NEXT_FRAME,
|
|
'move_animation_to_previous_frame' : SIMPLE_MOVE_ANIMATION_TO_PREVIOUS_FRAME,
|
|
'new_duplicate_filter_page' : SIMPLE_NEW_DUPLICATE_FILTER_PAGE,
|
|
'new_gallery_downloader_page' : SIMPLE_NEW_GALLERY_DOWNLOADER_PAGE,
|
|
'new_page' : SIMPLE_NEW_PAGE,
|
|
'new_page_of_pages' : SIMPLE_NEW_PAGE_OF_PAGES,
|
|
'new_simple_downloader_page' : SIMPLE_NEW_SIMPLE_DOWNLOADER_PAGE,
|
|
'new_url_downloader_page' : SIMPLE_NEW_URL_DOWNLOADER_PAGE,
|
|
'new_watcher_downloader_page' : SIMPLE_NEW_WATCHER_DOWNLOADER_PAGE,
|
|
'open_file_in_external_program' : SIMPLE_OPEN_FILE_IN_EXTERNAL_PROGRAM,
|
|
'open_known_url' : SIMPLE_OPEN_KNOWN_URL,
|
|
'open_selection_in_new_page' : SIMPLE_OPEN_SELECTION_IN_NEW_PAGE,
|
|
'pan_bottom_edge' : SIMPLE_PAN_BOTTOM_EDGE,
|
|
'pan_down' : SIMPLE_PAN_DOWN,
|
|
'pan_horizontal_center' : SIMPLE_PAN_HORIZONTAL_CENTER,
|
|
'pan_left' : SIMPLE_PAN_LEFT,
|
|
'pan_left_edge' : SIMPLE_PAN_LEFT_EDGE,
|
|
'pan_right' : SIMPLE_PAN_RIGHT,
|
|
'pan_right_edge' : SIMPLE_PAN_RIGHT_EDGE,
|
|
'pan_top_edge' : SIMPLE_PAN_TOP_EDGE,
|
|
'pan_up' : SIMPLE_PAN_UP,
|
|
'pan_vertical_center' : SIMPLE_PAN_VERTICAL_CENTER,
|
|
'pause_media' : SIMPLE_PAUSE_MEDIA,
|
|
'pause_play_media' : SIMPLE_PAUSE_PLAY_MEDIA,
|
|
'pause_play_slideshow' : SIMPLE_PAUSE_PLAY_SLIDESHOW,
|
|
'redo' : SIMPLE_REDO,
|
|
'refresh' : SIMPLE_REFRESH,
|
|
'refresh_all_pages' : SIMPLE_REFRESH_ALL_PAGES,
|
|
'refresh_page_of_pages_pages' : SIMPLE_REFRESH_PAGE_OF_PAGES_PAGES,
|
|
'remove_file_from_view' : SIMPLE_REMOVE_FILE_FROM_VIEW,
|
|
'restart_application' : SIMPLE_RESTART_APPLICATION,
|
|
'set_media_focus' : SIMPLE_SET_MEDIA_FOCUS,
|
|
'set_search_focus' : SIMPLE_SET_SEARCH_FOCUS,
|
|
'show_and_focus_manage_tags_favourite_tags' : SIMPLE_SHOW_AND_FOCUS_MANAGE_TAGS_FAVOURITE_TAGS,
|
|
'show_and_focus_manage_tags_file_lookup_script_tags' : SIMPLE_SHOW_AND_FOCUS_MANAGE_TAGS_FILE_LOOKUP_SCRIPT_TAGS,
|
|
'show_and_focus_manage_tags_recent_tags' : SIMPLE_SHOW_AND_FOCUS_MANAGE_TAGS_RECENT_TAGS,
|
|
'show_and_focus_manage_tags_related_tags' : SIMPLE_SHOW_AND_FOCUS_MANAGE_TAGS_RELATED_TAGS,
|
|
'show_hide_splitters' : SIMPLE_SHOW_HIDE_SPLITTERS,
|
|
'show_menu' : SIMPLE_SHOW_MENU,
|
|
'switch_between_100_percent_and_canvas_zoom' : SIMPLE_SWITCH_BETWEEN_100_PERCENT_AND_CANVAS_ZOOM,
|
|
'switch_between_fullscreen_borderless_and_regular_framed_window' : SIMPLE_SWITCH_BETWEEN_FULLSCREEN_BORDERLESS_AND_REGULAR_FRAMED_WINDOW,
|
|
'synchronised_wait_switch' : SIMPLE_SYNCHRONISED_WAIT_SWITCH,
|
|
'unclose_page' : SIMPLE_UNCLOSE_PAGE,
|
|
'undelete_file' : SIMPLE_UNDELETE_FILE,
|
|
'undo' : SIMPLE_UNDO,
|
|
'view_first' : SIMPLE_VIEW_FIRST,
|
|
'view_last' : SIMPLE_VIEW_LAST,
|
|
'view_next' : SIMPLE_VIEW_NEXT,
|
|
'view_previous' : SIMPLE_VIEW_PREVIOUS,
|
|
'zoom_in' : SIMPLE_ZOOM_IN,
|
|
'zoom_out' : SIMPLE_ZOOM_OUT
|
|
}
|
|
|
|
APPLICATION_COMMAND_TYPE_SIMPLE = 0
|
|
APPLICATION_COMMAND_TYPE_CONTENT = 1
|
|
|
|
class ApplicationCommand( HydrusSerialisable.SerialisableBase ):
|
|
|
|
SERIALISABLE_TYPE = HydrusSerialisable.SERIALISABLE_TYPE_APPLICATION_COMMAND
|
|
SERIALISABLE_NAME = 'Application Command'
|
|
SERIALISABLE_VERSION = 3
|
|
|
|
def __init__( self, command_type = None, data = None ):
|
|
|
|
if command_type is None:
|
|
|
|
command_type = APPLICATION_COMMAND_TYPE_SIMPLE
|
|
|
|
|
|
if data is None:
|
|
|
|
data = SIMPLE_ARCHIVE_FILE
|
|
|
|
|
|
HydrusSerialisable.SerialisableBase.__init__( self )
|
|
|
|
self._command_type = command_type
|
|
self._data = data
|
|
|
|
|
|
def __repr__( self ):
|
|
|
|
return self.ToString()
|
|
|
|
|
|
def _GetSerialisableInfo( self ):
|
|
|
|
if self._command_type == APPLICATION_COMMAND_TYPE_SIMPLE:
|
|
|
|
serialisable_data = self._data
|
|
|
|
elif self._command_type == APPLICATION_COMMAND_TYPE_CONTENT:
|
|
|
|
( service_key, content_type, action, value ) = self._data
|
|
|
|
serialisable_data = ( service_key.hex(), content_type, action, value )
|
|
|
|
|
|
return ( self._command_type, serialisable_data )
|
|
|
|
|
|
def _InitialiseFromSerialisableInfo( self, serialisable_info ):
|
|
|
|
( self._command_type, serialisable_data ) = serialisable_info
|
|
|
|
if self._command_type == APPLICATION_COMMAND_TYPE_SIMPLE:
|
|
|
|
self._data = serialisable_data
|
|
|
|
elif self._command_type == APPLICATION_COMMAND_TYPE_CONTENT:
|
|
|
|
( serialisable_service_key, content_type, action, value ) = serialisable_data
|
|
|
|
self._data = ( bytes.fromhex( serialisable_service_key ), content_type, action, value )
|
|
|
|
|
|
|
|
def _UpdateSerialisableInfo( self, version, old_serialisable_info ):
|
|
|
|
if version == 1:
|
|
|
|
( command_type, serialisable_data ) = old_serialisable_info
|
|
|
|
if command_type == APPLICATION_COMMAND_TYPE_SIMPLE:
|
|
|
|
if serialisable_data == 'duplicate_filter_this_is_better':
|
|
|
|
serialisable_data = 'duplicate_filter_this_is_better_and_delete_other'
|
|
|
|
elif serialisable_data == 'duplicate_filter_not_dupes':
|
|
|
|
serialisable_data = 'duplicate_filter_false_positive'
|
|
|
|
|
|
|
|
new_serialisable_info = ( command_type, serialisable_data )
|
|
|
|
return ( 2, new_serialisable_info )
|
|
|
|
|
|
if version == 2:
|
|
|
|
( command_type, serialisable_data ) = old_serialisable_info
|
|
|
|
if command_type == APPLICATION_COMMAND_TYPE_SIMPLE:
|
|
|
|
if serialisable_data in legacy_simple_str_to_enum_lookup:
|
|
|
|
serialisable_data = legacy_simple_str_to_enum_lookup[ serialisable_data ]
|
|
|
|
else:
|
|
|
|
serialisable_data = SIMPLE_ARCHIVE_FILE
|
|
|
|
|
|
|
|
new_serialisable_info = ( command_type, serialisable_data )
|
|
|
|
return ( 3, new_serialisable_info )
|
|
|
|
|
|
|
|
def GetCommandType( self ):
|
|
|
|
return self._command_type
|
|
|
|
|
|
def GetData( self ):
|
|
|
|
return self._data
|
|
|
|
|
|
def GetContentAction( self ):
|
|
|
|
if self._command_type != APPLICATION_COMMAND_TYPE_CONTENT:
|
|
|
|
raise Exception( 'Not a content command!' )
|
|
|
|
|
|
( service_key, content_type, action, value ) = self._data
|
|
|
|
return action
|
|
|
|
|
|
def GetContentServiceKey( self ):
|
|
|
|
if self._command_type != APPLICATION_COMMAND_TYPE_CONTENT:
|
|
|
|
raise Exception( 'Not a content command!' )
|
|
|
|
|
|
( service_key, content_type, action, value ) = self._data
|
|
|
|
return service_key
|
|
|
|
|
|
def GetContentValue( self ):
|
|
|
|
if self._command_type != APPLICATION_COMMAND_TYPE_CONTENT:
|
|
|
|
raise Exception( 'Not a content command!' )
|
|
|
|
|
|
( service_key, content_type, action, value ) = self._data
|
|
|
|
return value
|
|
|
|
|
|
def IsSimpleCommand( self ):
|
|
|
|
return self._command_type == APPLICATION_COMMAND_TYPE_SIMPLE
|
|
|
|
|
|
def IsContentCommand( self ):
|
|
|
|
return self._command_type == APPLICATION_COMMAND_TYPE_CONTENT
|
|
|
|
|
|
def ToString( self ):
|
|
|
|
if self._command_type == APPLICATION_COMMAND_TYPE_SIMPLE:
|
|
|
|
return simple_enum_to_str_lookup[ self._data ]
|
|
|
|
elif self._command_type == APPLICATION_COMMAND_TYPE_CONTENT:
|
|
|
|
( service_key, content_type, action, value ) = self._data
|
|
|
|
components = []
|
|
|
|
components.append( HC.content_update_string_lookup[ action ] )
|
|
components.append( HC.content_type_string_lookup[ content_type ] )
|
|
|
|
if content_type == HC.CONTENT_TYPE_RATINGS:
|
|
|
|
if action in ( HC.CONTENT_UPDATE_SET, HC.CONTENT_UPDATE_FLIP ):
|
|
|
|
value_string = 'uncertain rating, "{}"'.format( value )
|
|
|
|
if HG.client_controller is not None and HG.client_controller.IsBooted():
|
|
|
|
try:
|
|
|
|
service = HG.client_controller.services_manager.GetService( service_key )
|
|
|
|
value_string = service.ConvertRatingToString( value )
|
|
|
|
except HydrusExceptions.DataMissing:
|
|
|
|
pass
|
|
|
|
|
|
|
|
else:
|
|
|
|
value_string = '' # only 1 up/down allowed atm
|
|
|
|
|
|
else:
|
|
|
|
value_string = '"{}"'.format( value )
|
|
|
|
|
|
if len( value_string ) > 0:
|
|
|
|
components.append( value_string )
|
|
|
|
|
|
components.append( 'for' )
|
|
|
|
services_manager = HG.client_controller.services_manager
|
|
|
|
if services_manager.ServiceExists( service_key ):
|
|
|
|
service = services_manager.GetService( service_key )
|
|
|
|
components.append( service.GetName() )
|
|
|
|
else:
|
|
|
|
components.append( 'unknown service!' )
|
|
|
|
|
|
return ' '.join( components )
|
|
|
|
|
|
|
|
HydrusSerialisable.SERIALISABLE_TYPES_TO_OBJECT_TYPES[ HydrusSerialisable.SERIALISABLE_TYPE_APPLICATION_COMMAND ] = ApplicationCommand
|
|
|