1# -*- coding: utf-8 -*- 2'''constants.py - Miscellaneous constants.''' 3 4import re 5import os 6import operator 7 8from mcomix import tools 9 10APPNAME = 'MComix' 11VERSION = '1.2.1g20210526' 12 13REQUIRED_PYTHON_VERSION = (3, 8, 0) 14REQUIRED_PIL_VERSION = '6.2.1' 15 16CPU_COUNT = os.cpu_count() 17STARTDIR = os.getcwd() 18PORTABLE_MODE = tools.is_portable_mode() 19 20HOME_DIR = tools.get_home_directory() 21CONFIG_DIR = tools.get_config_directory() 22DATA_DIR = tools.get_data_directory() 23 24BASE_PATH = tools.rootdir() 25THUMBNAIL_PATH = tools.get_thumbnails_directory() 26LIBRARY_DATABASE_PATH = os.path.join(DATA_DIR, 'library.db') 27LIBRARY_COVERS_PATH = os.path.join(DATA_DIR, 'library_covers') 28PREFERENCE_PATH = os.path.join(CONFIG_DIR, 'preferences.conf') 29KEYBINDINGS_CONF_PATH = os.path.join(CONFIG_DIR, 'keybindings.conf') 30 31BOOKMARK_JSON_PATH = os.path.join(DATA_DIR, 'bookmarks.json') 32FILEINFO_JSON_PATH = os.path.join(DATA_DIR, 'file.json') 33 34ZOOM_MODE_BEST, ZOOM_MODE_WIDTH, ZOOM_MODE_HEIGHT, ZOOM_MODE_MANUAL, ZOOM_MODE_SIZE = range(5) 35 36WIDTH_AXIS, HEIGHT_AXIS = range(2) 37DISTRIBUTION_AXIS, ALIGNMENT_AXIS = WIDTH_AXIS, HEIGHT_AXIS 38NORMAL_AXES = (0, 1) 39SWAPPED_AXES = (1, 0) 40WESTERN_ORIENTATION = (1, 1) 41MANGA_ORIENTATION = (-1, 1) 42SCROLL_TO_CENTER = -2 43SCROLL_TO_START = -3 44SCROLL_TO_END = -4 45FIRST_INDEX = 0 46LAST_INDEX = -1 47UNION_INDEX = -2 48ANIMATION_DISABLED = 0 49ANIMATION_NORMAL = 1 # loop as animation setting 50ANIMATION_ONCE = 1<<1 # loop only once 51ANIMATION_INF = 1<<2 # loop infinity 52 53ZIP, RAR, RAR5, TAR, GZIP, BZIP2, XZ, PDF, SEVENZIP, LHA, ZIP_EXTERNAL, SQUASHFS = range(12) 54NORMAL_CURSOR, GRAB_CURSOR, WAIT_CURSOR, NO_CURSOR = range(4) 55LIBRARY_DRAG_EXTERNAL_ID, LIBRARY_DRAG_BOOK_ID, LIBRARY_DRAG_COLLECTION_ID = range(3) 56AUTOROTATE_NEVER, AUTOROTATE_WIDTH_90, AUTOROTATE_WIDTH_270, \ 57 AUTOROTATE_HEIGHT_90, AUTOROTATE_HEIGHT_270 = range(5) 58 59RESPONSE_REVERT_TO_DEFAULT = 3 60RESPONSE_REMOVE = 4 61RESPONSE_IMPORT = 5 62RESPONSE_SAVE_AS = 6 63RESPONSE_REPLACE = 7 64RESPONSE_NEW = 8 65 66# These are bit field values, so only use powers of two. 67STATUS_PAGE, STATUS_RESOLUTION, STATUS_PATH, STATUS_FILENAME, STATUS_FILENUMBER, STATUS_FILESIZE = \ 68 1, 2, 4, 8, 16, 32 69SHOW_DOUBLE_AS_ONE_TITLE, SHOW_DOUBLE_AS_ONE_WIDE = 1, 2 70 71MAX_LIBRARY_COVER_SIZE = 500 72SORT_NAME, SORT_PATH, SORT_SIZE, SORT_LAST_MODIFIED, SORT_NAME_LITERAL, SORT_LOCALE = 1, 2, 3, 4, 5, 6 73SORT_DESCENDING, SORT_ASCENDING = 1, 2 74SIZE_HUGE, SIZE_LARGE, SIZE_NORMAL, SIZE_SMALL, SIZE_TINY = MAX_LIBRARY_COVER_SIZE, 300, 250, 125, 80 75 76ACCEPTED_COMMENT_EXTENSIONS = ['txt', 'nfo', 'xml'] 77 78# see https://www.freedesktop.org/wiki/Software/shared-mime-info/ 79# for mimetypes not registed to IANA 80 81ZIP_FORMATS = ( 82 # https://www.iana.org/assignments/media-types/application/zip 83 ('.zip', 'application/zip'), 84 # https://www.iana.org/assignments/media-types/application/vnd.comicbook+zip 85 ('.cbz', 'application/vnd.comicbook+zip'), 86) 87 88RAR_FORMATS = ( 89 # https://www.iana.org/assignments/media-types/application/vnd.rar 90 ('.rar', 'application/vnd.rar'), 91 # https://www.iana.org/assignments/media-types/application/vnd.comicbook-rar 92 ('.cbr', 'application/vnd.comicbook-rar'), 93) 94 95TAR_FORMATS = ( 96 # not registed in IANA 97 ('.tar', 'application/x-tar'), 98 # not registed in IANA 99 ('.cbt', 'application/x-cbt'), 100 101 # see https://www.gnu.org/software/tar/manual/html_section/tar_68.html#auto_002dcompress 102 # and https://git.savannah.gnu.org/cgit/tar.git/commit/?id=2c06a80918019471876956eef4ef22f05c9e0571 103 # for compressed tar 104 105 # gzip 106 ('.tar.gz', 'application/x-compressed-tar'), 107 ('.tgz', 'application/x-compressed-tar'), 108 # bzip2 109 ('.tar.bz2', 'application/x-bzip-compressed-tar'), 110 ('.tar.bz', 'application/x-bzip-compressed-tar'), 111 ('.tbz2', 'application/x-bzip-compressed-tar'), 112 ('.tbz', 'application/x-bzip-compressed-tar'), 113 ('.tb2', 'application/x-bzip-compressed-tar'), 114 # lzma 115 ('.tar.lzma', 'application/x-lzma-compressed-tar'), 116 ('.tlz', 'application/x-lzma-compressed-tar'), 117 # xz 118 ('.tar.xz', 'application/x-xz-compressed-tar'), 119 ('.txz', 'application/x-xz-compressed-tar'), 120) 121 122SZIP_FORMATS = ( 123 # not registed in IANA 124 ('.7z', 'application/x-7z-compressed'), 125 # not registed in IANA 126 ('.cb7', 'application/x-cb7'), 127) 128 129LHA_FORMATS = ( 130 # not registed in IANA 131 ('.lha', 'application/x-lha'), 132 # not registed in IANA 133 ('.lzh', 'application/x-lha'), 134) 135 136PDF_FORMATS = ( 137 # https://www.iana.org/assignments/media-types/application/pdf 138 ('.pdf','application/pdf'), 139) 140 141SQUASHFS_FORMATS = ( 142 # not registed in IANA 143 ('.squashfs', 'application/vnd.squashfs'), 144 ('.sqsh', 'application/vnd.squashfs'), 145) 146 147ARCHIVE_FORMATS = ZIP_FORMATS + RAR_FORMATS + TAR_FORMATS + SQUASHFS_FORMATS 148ARCHIVE_FORMATS += SZIP_FORMATS + LHA_FORMATS + PDF_FORMATS 149 150# vim: expandtab:sw=4:ts=4 151