comix-4.0.4/0000755000175000001440000000000011165455045011541 5ustar sorkuserscomix-4.0.4/messages/0000755000175000001440000000000011165455154013351 5ustar sorkuserscomix-4.0.4/src/0000755000175000001440000000000011165455545012335 5ustar sorkuserscomix-4.0.4/mime/0000755000175000001440000000000011165455014012464 5ustar sorkuserscomix-4.0.4/images/0000755000175000001440000000000011165455014013002 5ustar sorkuserscomix-4.0.4/messages/hu/0000755000175000001440000000000011165455015013761 5ustar sorkuserscomix-4.0.4/messages/pl/0000755000175000001440000000000011165455014013757 5ustar sorkuserscomix-4.0.4/messages/hr/0000755000175000001440000000000011165455014013755 5ustar sorkuserscomix-4.0.4/messages/ko/0000755000175000001440000000000011165455014013755 5ustar sorkuserscomix-4.0.4/messages/fr/0000755000175000001440000000000011165455014013753 5ustar sorkuserscomix-4.0.4/messages/es/0000755000175000001440000000000011165455014013753 5ustar sorkuserscomix-4.0.4/messages/pt_BR/0000755000175000001440000000000011165455014014352 5ustar sorkuserscomix-4.0.4/messages/cs/0000755000175000001440000000000011165455014013751 5ustar sorkuserscomix-4.0.4/messages/zh_CN/0000755000175000001440000000000011165455014014345 5ustar sorkuserscomix-4.0.4/messages/id/0000755000175000001440000000000011165455014013740 5ustar sorkuserscomix-4.0.4/messages/zh_TW/0000755000175000001440000000000011165455014014377 5ustar sorkuserscomix-4.0.4/messages/ja/0000755000175000001440000000000011165455014013736 5ustar sorkuserscomix-4.0.4/messages/sv/0000755000175000001440000000000011165455014013774 5ustar sorkuserscomix-4.0.4/messages/ru/0000755000175000001440000000000011165455014013772 5ustar sorkuserscomix-4.0.4/messages/ca/0000755000175000001440000000000011165455014013727 5ustar sorkuserscomix-4.0.4/mime/icons/0000755000175000001440000000000011165455014013577 5ustar sorkuserscomix-4.0.4/images/48x48/0000755000175000001440000000000011165455014013601 5ustar sorkuserscomix-4.0.4/images/16x16/0000755000175000001440000000000011165455014013567 5ustar sorkuserscomix-4.0.4/images/24x24/0000755000175000001440000000000011165455014013565 5ustar sorkuserscomix-4.0.4/images/32x32/0000755000175000001440000000000011165455014013563 5ustar sorkuserscomix-4.0.4/images/22x22/0000755000175000001440000000000011165455014013561 5ustar sorkuserscomix-4.0.4/messages/hu/LC_MESSAGES/0000755000175000001440000000000011165455015015546 5ustar sorkuserscomix-4.0.4/messages/pl/LC_MESSAGES/0000755000175000001440000000000011165455014015544 5ustar sorkuserscomix-4.0.4/messages/hr/LC_MESSAGES/0000755000175000001440000000000011165455014015542 5ustar sorkuserscomix-4.0.4/messages/ko/LC_MESSAGES/0000755000175000001440000000000011165455014015542 5ustar sorkuserscomix-4.0.4/messages/fr/LC_MESSAGES/0000755000175000001440000000000011165455014015540 5ustar sorkuserscomix-4.0.4/messages/es/LC_MESSAGES/0000755000175000001440000000000011165455014015540 5ustar sorkuserscomix-4.0.4/messages/pt_BR/LC_MESSAGES/0000755000175000001440000000000011165455014016137 5ustar sorkuserscomix-4.0.4/messages/cs/LC_MESSAGES/0000755000175000001440000000000011165455014015536 5ustar sorkuserscomix-4.0.4/messages/zh_CN/LC_MESSAGES/0000755000175000001440000000000011165455014016132 5ustar sorkuserscomix-4.0.4/messages/id/LC_MESSAGES/0000755000175000001440000000000011165455014015525 5ustar sorkuserscomix-4.0.4/messages/zh_TW/LC_MESSAGES/0000755000175000001440000000000011165455014016164 5ustar sorkuserscomix-4.0.4/messages/ja/LC_MESSAGES/0000755000175000001440000000000011165455014015523 5ustar sorkuserscomix-4.0.4/messages/sv/LC_MESSAGES/0000755000175000001440000000000011165455014015561 5ustar sorkuserscomix-4.0.4/messages/ru/LC_MESSAGES/0000755000175000001440000000000011165455014015557 5ustar sorkuserscomix-4.0.4/messages/ca/LC_MESSAGES/0000755000175000001440000000000011165455014015514 5ustar sorkuserscomix-4.0.4/mime/icons/16x16/0000755000175000001440000000000011165455014014364 5ustar sorkuserscomix-4.0.4/mime/icons/24x24/0000755000175000001440000000000011165455014014362 5ustar sorkuserscomix-4.0.4/mime/icons/32x32/0000755000175000001440000000000011165455014014360 5ustar sorkuserscomix-4.0.4/mime/icons/22x22/0000755000175000001440000000000011165455014014356 5ustar sorkuserscomix-4.0.4/mime/icons/48x48/0000755000175000001440000000000011165455014014376 5ustar sorkuserscomix-4.0.4/.install.py.swp0000644000175000001440000004000011165455052014437 0ustar sorkusersb0VIM 7.2aI4L%9sorksot~sork/Pontus/Programmering/Python/Comix/comix-4.0.4/install.py 3210#"! UtpZE[aTUad#Z\87-wDC { w v l a S E D c b &   h 8  v F  Q  ^,n:j7 }Nb+d/e2 ('src/recent.pyc', 'share/comix/src'), ('src/recent.py', 'share/comix/src'), ('src/properties.pyc', 'share/comix/src'), ('src/properties.py', 'share/comix/src'), ('src/process.pyc', 'share/comix/src'), ('src/process.py', 'share/comix/src'), ('src/preferences.pyc', 'share/comix/src'), ('src/preferences.py', 'share/comix/src'), ('src/portability.pyc', 'share/comix/src'), ('src/portability.py', 'share/comix/src'), ('src/main.pyc', 'share/comix/src'), ('src/main.py', 'share/comix/src'), ('src/librarybackend.pyc', 'share/comix/src'), ('src/librarybackend.py', 'share/comix/src'), ('src/library.pyc', 'share/comix/src'), ('src/library.py', 'share/comix/src'), ('src/lens.pyc', 'share/comix/src'), ('src/lens.py', 'share/comix/src'), ('src/labels.pyc', 'share/comix/src'), ('src/labels.py', 'share/comix/src'), ('src/image.pyc', 'share/comix/src'), ('src/image.py', 'share/comix/src'), ('src/icons.pyc', 'share/comix/src'), ('src/icons.py', 'share/comix/src'), ('src/histogram.pyc', 'share/comix/src'), ('src/histogram.py', 'share/comix/src'), ('src/filehandler.pyc', 'share/comix/src'), ('src/filehandler.py', 'share/comix/src'), ('src/filechooser.pyc', 'share/comix/src'), ('src/filechooser.py', 'share/comix/src'), ('src/event.pyc', 'share/comix/src'), ('src/event.py', 'share/comix/src'), ('src/enhance.pyc', 'share/comix/src'), ('src/enhance.py', 'share/comix/src'), ('src/encoding.pyc', 'share/comix/src'), ('src/encoding.py', 'share/comix/src'), ('src/edit.pyc', 'share/comix/src'), ('src/edit.py', 'share/comix/src'), ('src/deprecated.pyc', 'share/comix/src'), ('src/deprecated.py', 'share/comix/src'), ('src/cursor.pyc', 'share/comix/src'), ('src/cursor.py', 'share/comix/src'), ('src/constants.pyc', 'share/comix/src'), ('src/constants.py', 'share/comix/src'), ('src/comment.pyc', 'share/comix/src'), ('src/comment.py', 'share/comix/src'), ('src/comix.py', 'share/comix/src'), ('src/bookmark.pyc', 'share/comix/src'), ('src/bookmark.py', 'share/comix/src'), ('src/archive.pyc', 'share/comix/src'), ('src/archive.py', 'share/comix/src'), ('src/about.pyc', 'share/comix/src'),FILES = (('src/about.py', 'share/comix/src'),# Files to be installed, as (source file, destination directory)# 'de', 'it', 'nl', 'el', 'fa'# These translations have not yet been updated for Comix 4: 'pt_BR', 'ru', 'sv', 'zh_CN', 'zh_TW')TRANSLATIONS = ('ca', 'cs', 'es', 'fr', 'hr', 'hu', 'id', 'ja', 'ko', 'pl',install_mime = Trueinstall_dir = '/usr/local/'source_dir = os.path.dirname(os.path.realpath(__file__))import shutilimport getoptimport sysimport os""" x-cbt and x-cbr archive files. or register new mime types for x-cbz, --no-mime Do not install the file manager thumbnailer instead of /usr/local --dir Install or uninstall in Options: uninstall Uninstall from /usr/local install Install to /usr/localCommands:Usage: install.py [OPTIONS] COMMAND-------------------------------------------------------------------------------This script installs or uninstalls Comix on your system."""#!/usr/bin/env pythonad  s%A ?      info()else: print 'install Comix again later.' print 'Please remove that directory manually if you do not plan to' print '\nThere might still be files in ~/.comix/ left on your system.' uninstall('/tmp/comix') uninstall('share/pixmaps/comix') uninstall('share/pixmaps/comix.png') # These are from old versions of Comix, we try to remove them anyway. uninstall(link) for _, link in MIME_LINKS: uninstall(os.path.join(path, os.path.basename(src))) for src, path in MIME_FILES: uninstall(os.path.join('share/locale', lang, 'LC_MESSAGES/comix.mo')) for lang in TRANSLATIONS: uninstall(link) for _, link in LINKS: uninstall('share/icons/hicolor/scalable/apps/comix.svg')comix-4.0.4/install.py0000755000175000001440000003631311145523141013561 0ustar sorkusers#!/usr/bin/env python """ This script installs or uninstalls Comix on your system. ------------------------------------------------------------------------------- Usage: install.py [OPTIONS] COMMAND Commands: install Install to /usr/local uninstall Uninstall from /usr/local Options: --dir Install or uninstall in instead of /usr/local --no-mime Do not install the file manager thumbnailer or register new mime types for x-cbz, x-cbt and x-cbr archive files. """ import os import sys import getopt import shutil source_dir = os.path.dirname(os.path.realpath(__file__)) install_dir = '/usr/local/' install_mime = True TRANSLATIONS = ('ca', 'cs', 'es', 'fr', 'hr', 'hu', 'id', 'ja', 'ko', 'pl', 'pt_BR', 'ru', 'sv', 'zh_CN', 'zh_TW') # These translations have not yet been updated for Comix 4: # 'de', 'it', 'nl', 'el', 'fa' # Files to be installed, as (source file, destination directory) FILES = (('src/about.py', 'share/comix/src'), ('src/about.pyc', 'share/comix/src'), ('src/archive.py', 'share/comix/src'), ('src/archive.pyc', 'share/comix/src'), ('src/bookmark.py', 'share/comix/src'), ('src/bookmark.pyc', 'share/comix/src'), ('src/comix.py', 'share/comix/src'), ('src/comment.py', 'share/comix/src'), ('src/comment.pyc', 'share/comix/src'), ('src/constants.py', 'share/comix/src'), ('src/constants.pyc', 'share/comix/src'), ('src/cursor.py', 'share/comix/src'), ('src/cursor.pyc', 'share/comix/src'), ('src/deprecated.py', 'share/comix/src'), ('src/deprecated.pyc', 'share/comix/src'), ('src/edit.py', 'share/comix/src'), ('src/edit.pyc', 'share/comix/src'), ('src/encoding.py', 'share/comix/src'), ('src/encoding.pyc', 'share/comix/src'), ('src/enhance.py', 'share/comix/src'), ('src/enhance.pyc', 'share/comix/src'), ('src/event.py', 'share/comix/src'), ('src/event.pyc', 'share/comix/src'), ('src/filechooser.py', 'share/comix/src'), ('src/filechooser.pyc', 'share/comix/src'), ('src/filehandler.py', 'share/comix/src'), ('src/filehandler.pyc', 'share/comix/src'), ('src/histogram.py', 'share/comix/src'), ('src/histogram.pyc', 'share/comix/src'), ('src/icons.py', 'share/comix/src'), ('src/icons.pyc', 'share/comix/src'), ('src/image.py', 'share/comix/src'), ('src/image.pyc', 'share/comix/src'), ('src/labels.py', 'share/comix/src'), ('src/labels.pyc', 'share/comix/src'), ('src/lens.py', 'share/comix/src'), ('src/lens.pyc', 'share/comix/src'), ('src/library.py', 'share/comix/src'), ('src/library.pyc', 'share/comix/src'), ('src/librarybackend.py', 'share/comix/src'), ('src/librarybackend.pyc', 'share/comix/src'), ('src/main.py', 'share/comix/src'), ('src/main.pyc', 'share/comix/src'), ('src/portability.py', 'share/comix/src'), ('src/portability.pyc', 'share/comix/src'), ('src/preferences.py', 'share/comix/src'), ('src/preferences.pyc', 'share/comix/src'), ('src/process.py', 'share/comix/src'), ('src/process.pyc', 'share/comix/src'), ('src/properties.py', 'share/comix/src'), ('src/properties.pyc', 'share/comix/src'), ('src/recent.py', 'share/comix/src'), ('src/recent.pyc', 'share/comix/src'), ('src/slideshow.py', 'share/comix/src'), ('src/slideshow.pyc', 'share/comix/src'), ('src/status.py', 'share/comix/src'), ('src/status.pyc', 'share/comix/src'), ('src/thumbbar.py', 'share/comix/src'), ('src/thumbbar.pyc', 'share/comix/src'), ('src/thumbnail.py', 'share/comix/src'), ('src/thumbnail.pyc', 'share/comix/src'), ('src/thumbremover.py', 'share/comix/src'), ('src/thumbremover.pyc', 'share/comix/src'), ('src/ui.py', 'share/comix/src'), ('src/ui.pyc', 'share/comix/src'), ('images/16x16/comix.png', 'share/comix/images/16x16'), ('images/comix.svg', 'share/comix/images'), ('images/double-page.png', 'share/comix/images'), ('images/fitheight.png', 'share/comix/images'), ('images/fitmanual.png', 'share/comix/images'), ('images/fitbest.png', 'share/comix/images'), ('images/fitwidth.png', 'share/comix/images'), ('images/comments.png', 'share/comix/images'), ('images/gimp-flip-horizontal.png', 'share/comix/images'), ('images/gimp-flip-vertical.png', 'share/comix/images'), ('images/gimp-rotate-90.png', 'share/comix/images'), ('images/gimp-rotate-180.png', 'share/comix/images'), ('images/gimp-rotate-270.png', 'share/comix/images'), ('images/gimp-thumbnails.png', 'share/comix/images'), ('images/gimp-transform.png', 'share/comix/images'), ('images/zoom.png', 'share/comix/images'), ('images/lens.png', 'share/comix/images'), ('images/library.png', 'share/comix/images'), ('images/manga.png', 'share/comix/images'), ('images/tango-add-bookmark.png', 'share/comix/images'), ('images/tango-archive.png', 'share/comix/images'), ('images/tango-enhance-image.png', 'share/comix/images'), ('images/tango-image.png', 'share/comix/images'), ('comix.1.gz', 'share/man/man1'), ('comix.desktop', 'share/applications'), ('images/16x16/comix.png', 'share/icons/hicolor/16x16/apps'), ('images/22x22/comix.png', 'share/icons/hicolor/22x22/apps'), ('images/24x24/comix.png', 'share/icons/hicolor/24x24/apps'), ('images/32x32/comix.png', 'share/icons/hicolor/32x32/apps'), ('images/48x48/comix.png', 'share/icons/hicolor/48x48/apps'), ('images/comix.svg', 'share/icons/hicolor/scalable/apps')) # Symlinks to be created, as (target, symlink) LINKS = (('../share/comix/src/comix.py', 'bin/comix'),) # Mime files to be installed, as (source file, destination directory) MIME_FILES = (('mime/comicthumb', 'bin'), ('mime/comicthumb.1.gz', 'share/man/man1'), ('mime/comix.xml', 'share/mime/packages'), ('mime/icons/16x16/application-x-cbz.png', 'share/icons/hicolor/16x16/mimetypes'), ('mime/icons/22x22/application-x-cbz.png', 'share/icons/hicolor/22x22/mimetypes'), ('mime/icons/24x24/application-x-cbz.png', 'share/icons/hicolor/24x24/mimetypes'), ('mime/icons/32x32/application-x-cbz.png', 'share/icons/hicolor/32x32/mimetypes'), ('mime/icons/48x48/application-x-cbz.png', 'share/icons/hicolor/48x48/mimetypes')) # Mime symlinks to be created, as (target, symlink) MIME_LINKS = (('application-x-cbz.png', 'share/icons/hicolor/16x16/mimetypes/application-x-cbr.png'), ('application-x-cbz.png', 'share/icons/hicolor/16x16/mimetypes/application-x-cbt.png'), ('application-x-cbz.png', 'share/icons/hicolor/22x22/mimetypes/application-x-cbr.png'), ('application-x-cbz.png', 'share/icons/hicolor/22x22/mimetypes/application-x-cbt.png'), ('application-x-cbz.png', 'share/icons/hicolor/24x24/mimetypes/application-x-cbr.png'), ('application-x-cbz.png', 'share/icons/hicolor/24x24/mimetypes/application-x-cbt.png'), ('application-x-cbz.png', 'share/icons/hicolor/32x32/mimetypes/application-x-cbr.png'), ('application-x-cbz.png', 'share/icons/hicolor/32x32/mimetypes/application-x-cbt.png'), ('application-x-cbz.png', 'share/icons/hicolor/48x48/mimetypes/application-x-cbr.png'), ('application-x-cbz.png', 'share/icons/hicolor/48x48/mimetypes/application-x-cbt.png')) def info(): """Print usage info and exit.""" print __doc__ sys.exit(1) def install(src, dst): """Copy to . The path is relative to the source_dir and the path is a directory relative to the install_dir. """ try: dst = os.path.join(install_dir, dst, os.path.basename(src)) src = os.path.join(source_dir, src) assert os.path.isfile(src) assert not os.path.isdir(dst) if not os.path.isdir(os.path.dirname(dst)): os.makedirs(os.path.dirname(dst)) shutil.copy(src, dst) print 'Installed', dst except Exception: print 'Could not install', dst def uninstall(path): """Remove the file or directory at , which is relative to the install_dir. """ try: path = os.path.join(install_dir, path) if os.path.isfile(path) or os.path.islink(path): os.remove(path) elif os.path.isdir(path): shutil.rmtree(path) else: return print 'Removed', path except Exception: print 'Could not remove', path def make_link(src, link): """Create a symlink pointing to . The path is relative to the install_dir, and the path is relative to the full path of the created link. """ try: link = os.path.join(install_dir, link) if os.path.isfile(link) or os.path.islink(link): os.remove(link) if not os.path.exists(os.path.dirname(link)): os.makedirs(os.path.dirname(link)) os.symlink(src, link) print 'Symlinked', link except: print 'Could not create symlink', link def check_dependencies(): """Check for required and recommended dependencies.""" required_found = True recommended_found = True print 'Checking dependencies ...\n' print 'Required dependencies:' # Should also check the PyGTK version. To do that we have to load the # gtk module though, which normally can't be done while using `sudo`. try: import pygtk print ' PyGTK ........................ OK' except ImportError: print ' !!! PyGTK .................... Not found' required_found = False try: import Image assert Image.VERSION >= '1.1.5' print ' Python Imaging Library ....... OK' except ImportError: print ' !!! Python Imaging Library ... Not found' required_found = False except AssertionError: print ' !!! Python Imaging Library ... version', Image.VERSION, print 'found' print ' !!! Python Imaging Library 1.1.5 or higher is required' required_found = False print '\nRecommended dependencies:' # rar/unrar is only a requirement to read RAR (.cbr) files. rar = False for path in os.getenv('PATH').split(':'): if (os.path.isfile(os.path.join(path, 'unrar')) or os.path.isfile(os.path.join(path, 'rar'))): print ' rar/unrar .................... OK' rar = True break if not rar: print ' !!! rar/unrar ................ Not found' recommended_found = False if not required_found: print '\nCould not find all required dependencies!' print 'Please install them and try again.' sys.exit(1) if not recommended_found: print '\nNote that not all recommeded dependencies were found.' print 'Comix has still been installed, but will not be able to' print 'use all its functions until they are installed.' print # --------------------------------------------------------------------------- # Parse the command line. # --------------------------------------------------------------------------- try: opts, args = getopt.gnu_getopt(sys.argv[1:], '', ['dir=', 'no-mime']) except getopt.GetoptError: info() for opt, value in opts: if opt == '--dir': install_dir = value if not os.path.isdir(install_dir): print '\n!!! Error:', install_dir, 'does not exist.' info() elif opt == '--no-mime': install_mime = False # --------------------------------------------------------------------------- # Install Comix. # --------------------------------------------------------------------------- if args == ['install']: check_dependencies() print 'Installing Comix to', install_dir, '...\n' if not os.access(install_dir, os.W_OK): print 'You do not have write permissions to', install_dir sys.exit(1) for src, dst in FILES: install(src, dst) for lang in TRANSLATIONS: install(os.path.join('messages', lang, 'LC_MESSAGES/comix.mo'), os.path.join('share/locale/', lang, 'LC_MESSAGES')) for src, link in LINKS: make_link(src, link) if install_mime: for src, dst in MIME_FILES: install(src, dst) for src, link in MIME_LINKS: make_link(src, link) os.popen('update-mime-database "%s"' % os.path.join(install_dir, 'share/mime')) print '\nUpdated mime database (added .cbz, .cbr and .cbt file types.)' schema = os.path.join(source_dir, 'mime/comicbook.schemas') os.popen('GCONF_CONFIG_SOURCE=$(gconftool-2 --get-default-source) ' 'gconftool-2 --makefile-install-rule "%s" 2>/dev/null' % schema) print '\nRegistered comic archive thumbnailer in gconf (if available).' print 'The thumbnailer is only supported by some file managers,', print 'such as Nautilus' print 'and Thunar.' print 'You might have to restart the file manager for the thumbnailer', print 'to be activated.' os.utime(os.path.join(install_dir, 'share/icons/hicolor'), None) # --------------------------------------------------------------------------- # Uninstall Comix. # --------------------------------------------------------------------------- elif args == ['uninstall']: print 'Uninstalling Comix from', install_dir, '...\n' uninstall('share/comix') uninstall('share/man/man1/comix.1.gz') uninstall('share/applications/comix.desktop') uninstall('share/icons/hicolor/16x16/apps/comix.png') uninstall('share/icons/hicolor/22x22/apps/comix.png') uninstall('share/icons/hicolor/24x24/apps/comix.png') uninstall('share/icons/hicolor/32x32/apps/comix.png') uninstall('share/icons/hicolor/48x48/apps/comix.png') uninstall('share/icons/hicolor/scalable/apps/comix.svg') for _, link in LINKS: uninstall(link) for lang in TRANSLATIONS: uninstall(os.path.join('share/locale', lang, 'LC_MESSAGES/comix.mo')) for src, path in MIME_FILES: uninstall(os.path.join(path, os.path.basename(src))) for _, link in MIME_LINKS: uninstall(link) # These are from old versions of Comix, we try to remove them anyway. uninstall('share/pixmaps/comix.png') uninstall('share/pixmaps/comix') uninstall('/tmp/comix') print '\nThere might still be files in ~/.comix/ left on your system.' print 'Please remove that directory manually if you do not plan to' print 'install Comix again later.' else: info() comix-4.0.4/comix.1.gz0000644000175000001440000000122311150253245013347 0ustar sorkusersUIcomix.1Mo0 <@4v)aBkM-;6mkU,Wۺ4Y|Eɗ4On`wF ,'w --b3j%>=7?xm "~mh'j9'`'ɍ0^0_lf(8QZZ4X@ZG_ENO"#l,d& G+sp*A,4Rvi@(_1à*3o~|4E|[qw#K;9OȾ~ J:$橙X> ahzaBa6,JU5WáխɰЦD^6F!'w]C4?(3eVd2KXkZX(/jÏr@?comix-4.0.4/README0000644000175000001440000000530111113267415012413 0ustar sorkusers- Comix README - === About ===================================================================== Comix is a user-friendly, customizable image viewer. It is specifically designed to handle comic books, but also serves as a generic viewer. It reads images in ZIP, RAR or tar archives as well as plain image files. It is written in Python and uses GTK+ through the PyGTK bindings. === Installation ============================================================== Run "python install.py install" as root to install Comix in /usr/local. To uninstall, simply run "python install.py uninstall". If order to install Comix in another base directory, use the --dir option. Example: # python install.py --dir /usr install If you have installed with --dir, do not forget to use the same option when uninstalling. There is another option, --no-mime, that can be used to tell install.py that it should not register new mime types for cbz, cbr and cbt archives, or install the thumbnail creation script for these files that is used by some file managers (such as Nautilus and Thunar). As an example of how to install Comix from the downloaded tar.gz file, run as the root user (via su or sudo): # tar -xzf comix-x.y.tar.gz # cd comix-x.y # python install.py install If you don't want to install Comix in some system directory, you can just execute the file src/comix.py in the unpacked Comix directory to run the program. You could also create a symlink somewhere in your PATH pointing to this file. === Dependencies ============================================================== Comix needs Python 2.4, PyGTK 2.12 and PIL (Python Imaging Library) 1.1.5 or newer to function. To use the library you need pysqlite (which is usually included in the standard library for Python 2.5 and later). You also need either the "unrar" or the "rar" program installed if you wish to read RAR (.cbr) archives. === Credits =================================================================== Thanks to everyone who have contributed translations, suggestions, bug reports, fixes and donations! Icons with a filename starting with "gimp" are taken from The GIMP, and icons with a filename starting with "tango" are taken from the Tango Desktop Project. Most other icons are made by Victor Castillejo, creator of the GNOME-Colors icon theme. === Contact =================================================================== Pontus Ekberg http://comix.sourceforge.net Don't hesitate to contact me. =============================================================================== Have a nice day. comix-4.0.4/COPYING0000644000175000001440000003605610474312233012577 0ustar sorkusers GNU GENERAL PUBLIC LICENSE Version 2, June 1991 Copyright (C) 1989, 1991 Free Software Foundation, Inc. 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. Preamble The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users. This General Public License applies to most of the Free Software Foundation's software and to any other program whose authors commit to using it. (Some other Free Software Foundation software is covered by the GNU Library General Public License instead.) You can apply it to your programs, too. When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for this service if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs; and that you know you can do these things. To protect your rights, we need to make restrictions that forbid anyone to deny you these rights or to ask you to surrender the rights. These restrictions translate to certain responsibilities for you if you distribute copies of the software, or if you modify it. For example, if you distribute copies of such a program, whether gratis or for a fee, you must give the recipients all the rights that you have. You must make sure that they, too, receive or can get the source code. And you must show them these terms so they know their rights. We protect your rights with two steps: (1) copyright the software, and (2) offer you this license which gives you legal permission to copy, distribute and/or modify the software. Also, for each author's protection and ours, we want to make certain that everyone understands that there is no warranty for this free software. If the software is modified by someone else and passed on, we want its recipients to know that what they have is not the original, so that any problems introduced by others will not reflect on the original authors' reputations. Finally, any free program is threatened constantly by software patents. We wish to avoid the danger that redistributors of a free program will individually obtain patent licenses, in effect making the program proprietary. To prevent this, we have made it clear that any patent must be licensed for everyone's free use or not licensed at all. The precise terms and conditions for copying, distribution and modification follow. GNU GENERAL PUBLIC LICENSE TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION 0. This License applies to any program or other work which contains a notice placed by the copyright holder saying it may be distributed under the terms of this General Public License. The "Program", below, refers to any such program or work, and a "work based on the Program" means either the Program or any derivative work under copyright law: that is to say, a work containing the Program or a portion of it, either verbatim or with modifications and/or translated into another language. (Hereinafter, translation is included without limitation in the term "modification".) Each licensee is addressed as "you". Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of running the Program is not restricted, and the output from the Program is covered only if its contents constitute a work based on the Program (independent of having been made by running the Program). Whether that is true depends on what the Program does. 1. You may copy and distribute verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this License and to the absence of any warranty; and give any other recipients of the Program a copy of this License along with the Program. You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection in exchange for a fee. 2. You may modify your copy or copies of the Program or any portion of it, thus forming a work based on the Program, and copy and distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions: a) You must cause the modified files to carry prominent notices stating that you changed the files and the date of any change. b) You must cause any work that you distribute or publish, that in whole or in part contains or is derived from the Program or any part thereof, to be licensed as a whole at no charge to all third parties under the terms of this License. c) If the modified program normally reads commands interactively when run, you must cause it, when started running for such interactive use in the most ordinary way, to print or display an announcement including an appropriate copyright notice and a notice that there is no warranty (or else, saying that you provide a warranty) and that users may redistribute the program under these conditions, and telling the user how to view a copy of this License. (Exception: if the Program itself is interactive but does not normally print such an announcement, your work based on the Program is not required to print an announcement.) These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Program, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Program, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it. Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Program. In addition, mere aggregation of another work not based on the Program with the Program (or with a work based on the Program) on a volume of a storage or distribution medium does not bring the other work under the scope of this License. 3. You may copy and distribute the Program (or a work based on it, under Section 2) in object code or executable form under the terms of Sections 1 and 2 above provided that you also do one of the following: a) Accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or, b) Accompany it with a written offer, valid for at least three years, to give any third party, for a charge no more than your cost of physically performing source distribution, a complete machine-readable copy of the corresponding source code, to be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or, c) Accompany it with the information you received as to the offer to distribute corresponding source code. (This alternative is allowed only for noncommercial distribution and only if you received the program in object code or executable form with such an offer, in accord with Subsection b above.) The source code for a work means the preferred form of the work for making modifications to it. For an executable work, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the executable. However, as a special exception, the source code distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable. If distribution of executable or object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place counts as distribution of the source code, even though third parties are not compelled to copy the source along with the object code. 4. You may not copy, modify, sublicense, or distribute the Program except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense or distribute the Program is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance. 5. You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or distribute the Program or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by modifying or distributing the Program (or any work based on the Program), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying the Program or works based on it. 6. Each time you redistribute the Program (or any work based on the Program), the recipient automatically receives a license from the original licensor to copy, distribute or modify the Program subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. You are not responsible for enforcing compliance by third parties to this License. 7. If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot distribute so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not distribute the Program at all. For example, if a patent license would not permit royalty-free redistribution of the Program by all those who receive copies directly or indirectly through you, then the only way you could satisfy both it and this License would be to refrain entirely from distribution of the Program. If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended to apply and the section as a whole is intended to apply in other circumstances. It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any such claims; this section has the sole purpose of protecting the integrity of the free software distribution system, which is implemented by public license practices. Many people have made generous contributions to the wide range of software distributed through that system in reliance on consistent application of that system; it is up to the author/donor to decide if he or she is willing to distribute software through any other system and a licensee cannot impose that choice. This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License. 8. If the distribution and/or use of the Program is restricted in certain countries either by patents or by copyrighted interfaces, the original copyright holder who places the Program under this License may add an explicit geographical distribution limitation excluding those countries, so that distribution is permitted only in or among countries not thus excluded. In such case, this License incorporates the limitation as if written in the body of this License. 9. The Free Software Foundation may publish revised and/or new versions of the General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. Each version is given a distinguishing version number. If the Program specifies a version number of this License which applies to it and "any later version", you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of this License, you may choose any version ever published by the Free Software Foundation. 10. If you wish to incorporate parts of the Program into other free programs whose distribution conditions are different, write to the author to ask for permission. For software which is copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally. NO WARRANTY 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. END OF TERMS AND CONDITIONS comix-4.0.4/comix.desktop0000644000175000001440000000203511042213242014234 0ustar sorkusers[Desktop Entry] Encoding=UTF-8 Name=Comix Name[it]=Comix GenericName=Comic Book Viewer GenericName[sv]=Serieboksläsare GenericName[fr]=Visionneur de bandes dessinées Comment=A viewer for comic book archives Comment[it]=Un visualizzatore di fumetti Comment[es]=Un visor de comics Comment[sv]=En serieboksläsare Comment[fr]=Visionneur d'images spécialisé dans la lecture des bandes dessinées Comment[pl]=Przeglądarka komiksów Exec=comix %f Icon=comix Terminal=false Type=Application StartupNotify=true Categories=Application;Graphics;Viewer; MimeType=application/x-cbz;application/x-cbr;application/x-cbt;image/jpeg;image/png;image/gif;image/tiff;image/bmp;image/x-icon;image/x-xpixmap;image/x-xbitmap;application/x-zip;application/zip;application/x-rar;application/x-tar;application/x-gzip;application/x-bzip2;image/svg+xml;image/svg;image/svg-xml;image/vnd.adobe.svg+xml;text/xml-svg;image/x-portable-anymap;image/x-portable-bitmap;image/x-portable-graymap;image/x-portable-pixmap;image/x-pcx;image/x-cmu-raster;image/x-sun-raster;image/x-tga; comix-4.0.4/ChangeLog0000644000175000001440000011643311165454703013323 0ustar sorkusersComix 4.0.4 - Applied a workaround for a bug that caused the "Open" dialog to crash when trying to open a file when the file type filter had been reset to blank. This bug seems to only appear on some systems, probably depending on the installed GTK+ version. - Fixed a bug that caused the error message for unfulfilled dependencies to not be printed properly. - The rar/unrar program is now invoked in such a way as to keep broken or incomplete files extracted from RAR archives, since Comix might be able to display parts of these files anyway. Comix 4.0.3 - Hungarian translation updated by Ernő Drabik. - French translation updated by Benoît H. - Added a feature to automatically rotate images according to their EXIF tags. - Fixed a bug that caused drag-n-drop actions from KDE applications to not work properly. - Fixed some bugs that caused problems with non-UTF-8 filename encodings. - Fixed a bug that caused the manual zoom mode to not work as expected when set as the default mode. - Comix now accepts directories as command-line arguments. - Added command-line arguments to start Comix in fullscreen mode and to display the library on startup. - Comix preferences and data now reside in the $XDG_CONFIG_HOME and $XDG_DATA_HOME directories instead of in ~/.comix/. - Some minor interface enhancements. Comix 4.0.2 - Brazilian Portuguese translation updated by Marcelo Góes. - Traditional Chinese translation updated by Wayne Su. - Catalan translation updated by Carles Escrig Royo. - Internal filenames in archives created by the archive editing dialog no longer contain temporary filename cruft. Comix 4.0.1 - Croatian translation updated by Adrian C. - Polish translation updated by Darek Jakoniuk. - Russian translation updated by Артем Смирнов. - Simplified Chinese translation updated by Xie Yanbo. - Re-added the "flip pages when scrolling off the page" preference from previous Comix versions. Thanks to Mamoru Tasaka. - Added a portability module for handling home directories in a more portable way. Thanks to Oddegamra. Comix 4.0.0 - Comix has been completely rewritten from scratch. On the surface things look quite a bit like they used to, but the internal workings are entirely new. There are too many changes for them all to be mentioned here, but a couple of highlights are a much more functional library and a new archive editing dialog. The work on this new version of Comix has been going on in rather sporadic phases for almost two years, and during that time I have received help from lots of different people. Now, I must admit, I can no longer remember them all. So instead of trying to list as many as I can here, I will instead simply say thank you to everyone who have contributed fixes, patches, suggestions or encouraging words. Thanks! Comix 3.6.5 - Applied security fix patches to handle unsecure tempfile creation and character escaping in filenames. Thanks to Mamoru Tasaka and others for the patches. - Added a Korean translation by 김민기. - Added a Persian translation by Maryam Sanaat. - Added a Indonesian translation by Andhika Padmawan. - Added a Czech translation by Jan Nekvasil. Comix 3.6.4 - Added a Russian translation by Artyom Smirnov. - Added a Croatian translation by Adrian C. - Fixed a bug in the thumbnailer, comicthumb, failing to create thumbnails for Zip and tar archives. - Some minor changes. Comix 3.6.3 - Added a Hungarian translation by Ernő Drabik. - Added a patch by Abdullah Hamed that fixes so that the arrow keys can be used to flip pages also when not in fit-to-screen mode when the corresponding preference is set. Just like was possible only with the scroll wheel before. - Fixed a bug with opening certain Zip files. Thanks to Steve Juranich for the fix. - Fixed a bug concerning %'s in filenames. Comix 3.6.2 - Added Japanese translation by Mamoru Tasaka. Comix 3.6.1 - Updated Brazilian Portuguese and Dutch translations. Comix 3.6 - Added an "Adjust colour" dialog that lets you specify values for brightness, contrast, saturation and sharpness. - Improved the behaviour of the "Save window position and size" and "Default fullscreen" preferences. - Changed the "Save window position and size" preference to on by default. - Changed the menus a bit. - Improved autocontrast (slightly heavier contrast change). - Changed the UI of the properties dialog a bit to better suit low resolution screens. - Improved handling of Zip files containing files with filenames of an unknown character encoding. - Added extra error message to install.py that is displayed when trying to install into a non-existing directory. - Added a --no-balloon option to install.py that tells the Nautilus thumbnailer to not imprint balloon images on thumbnails by default. - Fixed a bug that could cause Comix to scale images to the wrong dimensions on a dual-screen setup. Thanks to Vegard Eriksen for this fix. - Fixed a bug that caused icons to not be loaded when starting Comix through a symbolic link not located in the same directory as the `comix` executable. - Fixed a bug that could cause an error message when going back to a previous archive by flipping backwards in double page mode and directly switching to single page mode afterwards. - Fixed a bug that caused Comix to treat empty files as tar archives. Thanks to Christoph Wolk for this fix. - Fixed a bug in comicthumb with thumbnailing rar archives, plus some cleanup. (Christoph Wolk) Comix 3.5.1 - Fixed a bug that caused the mode of all images to be reported as "unknown" instead of RGB/CMYK etc. - Fixed a bug that could cause an error when trying to quit Comix under certain circumstances (i.e. when there is no ~/.comix/menu_thumbnails/ directory present). Comix 3.5 - Added a bunch of new icons, including a new "logo". - The magnifying lens code has been polished a bit. It is now substantially faster so the lens should appear less choppy. - Added horizontal and vertical lossless JPEG flip commands. - Added a JPEG desaturation command. - Added support for SVG, PCX, PNM, PBM, PGM, PPM, Targa and Sun raster image files. - Rearranged the toolbar a bit and added tooltips to it. - When a directory is given as a command line parameter, Comix now recursively searches for cbr, cbz and cbt files as well as image files. - Changed install.py so that it aborts installation if the required dependencies are not found. - Fixed a bug that caused the space key to not scroll down when in double page mode and manga mode and the window is wider than the pages. - Applied a workaround for a bug(?) in WindowMaker that caused problems when using the "fullscreen as default" preference. - Fixed a memory leak in the magnifying lens code. - Some internal and some minor changes. Comix 3.4 - Added more image data to the properties dialog. - Added a "delete image" command that can remove single images from Comix. It is currently not possible to remove image files within archives. - Added lossless JPEG rotation commands. It is currently not possible to rotate image files within archives. The `jpegtran` program (part of the jpeg library) must be present for this to work. Comix can still run as normal without `jpegtran`, but then without the new JPEG rotation capabilities. - Changed the buttons in the toolbar. - Improved the space key smart scrolling mode so that it automatically performs all the sideways scrolling as well. - Added a preference to set the magnitude of the space key scroll in percentages of either the window size or the page size. - Added a Traditional Chinese translation by Hsin-Lin Cheng. - Comments are now displayed using a monospaced font. - Comments can now be dragged around with the mouse just like an image. - Directories can now be given as command line parameters as well as files. If a directory is given it will be recursed into and the first image file found will be loaded. - Improved cover guessing of comicthumb and the library a bit. - Handling of files that have filenames encoded with the wrong character encoding is now more sturdy. - Fixed a bug that could cause outdated thumbnails to be left in the ~/.comix/menu_thumbnails/ directory when running multiple instances of Comix at the same time. - Applied a workaround for a bug(?) in WindowMaker that caused the "Open dialog" to be invisible while in fullscreen mode when using WindowMaker. The same problem applies to the library window, but there is no workaround for that in place currently. - Fixed a bug that could cause no images to be displayed when turning double page mode off, then on again and flipping to the next couple of pages in that order. - Some minor changes. Comix 3.3 - Added a slideshow feature. - Added RGB colour histogram to the properties dialog. More data will be added in future versions. - Added a Catalan translation by Carles Escrig. - Rewrote install.py from scratch. - Fixed a bug that caused compressed tar archives to be presented as plain tar archives. - Fixed a bug that could cause invalid page numbers in bookmarks when re-adding an already present bookmark. - Some minor changes. Comix 3.2.1 - Added support for the `rar` program in addition to `unrar` to handle RAR (.cbr) files. - Updated Polish translation by Kamil Leduchowski. - Some minor changes. Comix 3.2 - Changed PyGTK requirement to version 2.8 or higher. - Added a "Fit width mode" and a "Fit height mode" that automatically scales images to fit the width or height of the window. - Default filenames for extracted images are changed to _. from .. - Moved the manga mode setting from the preferences dialog to the menus. - Redesigned the library interface a bit. The background colour is now fixed and does not change with the background colour of the main window. Default thumbnail size is now 128x128 px, and thumbnails have a border to make them more clearly separated. - Added Greek translation by Paul Chatzidimitriou. - Xie Yanbo updated the Simplified Chinese translation. - Changed the menu icons for "Open library..." and "Add to library". The icons are taken from the Silk Icons set at www.famfamfam.com. - Broken images are now correctly handled by the thumbnail sidebar. - The workaround against a problem with unrar applied in version 3.1.3 has been removed again. It created some new problems with archives that have multiple files with the same filename in different subdirectories. - Fixed a bug so that translations and extra icons are always available when running Comix from the source directory, no matter what directory is the current working directory. - Fixed a bug in the "Go to page dialog" that caused the page to not be changed when manually typing in a new page number and pressing Enter. - Some minor changes. Comix 3.1.3 - Added Polish translation by Kamil Leduchowski. - Updated French translation by Achraf Cherti. Comix 3.1.2 - Fixed a bug which caused ALL files to be added to the library when adding in recursive mode instead of just archives. Also, only files with cbz, cbr or cbt as filename extension will now be added in recursive mode to avoid adding cruft files with the same magic numbers as the archives. Comix 3.1.1 - Added automatic dependency checking to install.py. - Added error messages and graceful exit from Comix in the case of missing dependencies. - Applied a workaround for a bug(?) in unrar that caused problems with some RAR archives containing directories with invalid filename encodings. Thanks to François Ingelrest. - Updated French translation by Achraf Cherti. - Changed the "Use stored thumbnails for images in archives" preference to off by default. - Changed the "Go to the next archive in directory after last page" preference to on by default. Comix 3.1 - Created a new convert dialog that is built from the standard GTK+ save dialog. It now supports saving in different directories etc. - Added an "Extract image" menu item that lets you extract individual images from the archive. - Added support for recursive adding of archives to the library. - Added a Frech translation by Achraf Cherti. - Fixed a bug which rendered the magnifying lens and the ability to drag images around with the mouse useless in some situations, and with some certain versions (7.0?) of X.org. - Pressing enter in the "Go to page" dialog entry now has the same effect as pressing OK. - Applied a workaround for a bug(?) in certain builds of PIL that made Comix crash when it tried to draw page numbers on thumbnails. Now Comix simply ignores the page numbers if this problem occurs and imforms the user that a different version of PIL is required, instead of crashing. Comix 3.0.1 - Added a Dutch translation by Arthur Nieuwland. Comix 3.0 - Major cleanup of the entire code base. - Completely redesigned the properties dialog. - Comix now stores a list of the 10 last viewed files. It also updates the ~/.recently-used file as is proposed by the freedesktop.org standard. Thanks to Jose M. daLuz. - Added an "Add to library" menu item. - Redesigned the library window slightly. - Added an Italian translation by Raimondo Giammanco. - The Nautilus thumbnailer, comicthumb, has been updated by Christoph Wolk to support subarchives among other things. - Added a preference to set the size of the magnifying lens. Thanks to Jose M. daLuz. - Added a scalable svg icon. - Improved handling of files without read permission. - Fixed a bug which caused the recommended name for a converted directory of images to be the same as one of the image files plus filename extension instead of the name of the directory plus filename extension. Thanks to Manuel Quiñones. - Fixed a bug with the magnifying lens which could appear when using it in double page mode and manga mode, possibly showing the images as if not in manga mode. - Fixed a bug which caused unnecessary reloading of files from disk when resizing images that is already in memory in double page mode. - Fixed a bug which could cause the wrong image to be displayed when continuously flipping forward really fast in cache mode. - Some minor fixes. Comix 2.9 - Added a comic book library feature to Comix. Comic book archives can be added to the library through a dialog or by drag and drop. The comic books appear as covers in the library window where they can be browsed or opened. They can be easily filtered by typing in regular expressions. - When dropping multiple files on the Comix main window, the first file gets opened now instead of none. - The convert dialog now saves the last used archive type. - Fixed a memory leak when creating new thumbnails from files. - Some minor fixes. Comix 2.8 - MIME types for cbz, cbr and cbt archives are now registered by default. Use the --no-mime flag for install.py to skip it. - Added a thumbnailer (by Christoph Wolk) that lets file managers create thumbnails for cbz, cbr and cbt archives. Currently it is only supported by Nautilus and does not affect other file managers. It is installed if the --no-mime flag is not given to install.py. Nautilus has to be restarted before the thumbnailer is activated. - Added a "Hide all" menu item which hides menubar, toolbar, statusbar, scrollbars and thumbnails at once. - Added an option to only display a single image in double page mode if that image consists of two pages. An image is assumed to consist of two pages if it's width is greater than it's height. - Filename is now displayed as well as directory name when viewing images in a directory in single page mode. - Changed max zoom to 1000% to prevent X server resource drains. - F11 can now be used to toggle fullscreen mode. - Fixed a bug which caused the cursor to be invisible when dragging around an image in fullscreen mode. - Fixed a bug which removed the drag and drop functionality. - Fixed a bug which could cause the scroll wheel to stop working when displaying the magnifying lens by pressing the middle mouse button, holding down the right mouse button and letting go the middle mouse button again. - Fixed a bug which could cause the chess board pattern background for small transparent images to be zoomed in or out when changing size. - Fixed a bug which could cause changes of saturation in small images to not be updated when changing it and changing it back again. - Fixed a bug which could cause the images to be scaled incorrectly when the "Use smart scaling in double page mode" preference was set. - Fixed a bug which caused the thumb selection not to be updated when moving from page two to page one in double page mode. - Some minor fixes. Comix 2.7 - Improved image quality through dithering in 16 bits per pixel. Thanks to John Ellis, the author of GQview, for helping me with this. - Added previews of files in the "Open" dialog. Stored thumbnails are used when they exist, otherwise previews are created directly from the files. Previews of archives are also available, but only when thumbnails have already been stored for that archive. - The cursor is now only being hidden when it has been idle for two seconds instead of always. - Changed "Hide cursor in fullscreen mode" to on by default. - Added chess board pattern as background for transparent images. - Added file filters to the "Open" dialog. - Saturation adjustment now affects the magnifying lens also. - Added Brazilian Portuguese translation by Marcelo Góes. - Added German translation by Christoph Wolk. - Added a "comix.xml" file which can be installed to register cbz, cbr and cbt mime types. Because of inconsistency on some systems, mime types are not registered by default. Follow the instructions in the mime README file to install. Thanks to Cristoph Wolk for this contribution. - Changed permissions of temporary folders to octal 700 to preserve the users privacy. - Added page number information to thumbnails generated for archives. This information will displayed for previews of archives if available. - Fixed a bug which caused the image width and height information embedded in thumbnails to be put in the wrong namespace of the PNG tEXt chunks. - Fixed possible wrong permissions of thumbnail folders on some systems. Permissions should now always be 700. - Fixed a bug which caused the magnifying lens to display the wrong page in manga mode (thanks Christoph Wolk). - Fixed a bug which could cause Comix to crash when trying to view a very small image scaled down so that it contained no pixels at all. - Some minor fixes. Comix 2.6 - Comix now conforms to the thumbnail managing standard as proposed by freedesktop.org. Thumbnails for plain image files can be read and written to ~/.thumbnails where they are shared with other applications conforming to the same standard. Thumbnails for images in archives can also be stored, but due to limitations in the standard they are stored in ~/.comix for private use by Comix only. - Improved handling of corrupt and missing files. Comix now simply displays a "file missing" image instead of terminating. - Added a menu entry for the lens toggle action. - Some minor fixes. Comix 2.5 - Added a mouse controlled "magnification lens" that can be used to zoom in on parts of the images. It will appear while holding the middle mouse button. Pressing 'z' can also toggle it on or off. - Added the ability to set the size of the thumbnails. - Improved the look of the bookmark handling features. Small thumbnails will now be displayed for the bookmarks. - Fixed a bug which caused one of the two images in double page mode to remain displayed even after using the "Close" command. - Fixed a bug which caused the "Use smart scaling in double page mode" preference to misbehave with rotated images. - Fixed a bug which caused the convert dialog to not automatically fill in a new filename for files with non-UTF8 filenames. - Some minor fixes. Comix 2.4.1 - Improved cache handling slightly. - FIxed a bug which could cause Comix to crash when starting with the "Save window position and size for future sessions" option turned on. - Fixed a bug which caused only one thumbnail to remain selected when clicking on the first of the two selected thumbnails in double page mode. - Fixed a bug which caused Comix to always go to the first page when reloading thumbnails in double page mode due to switching the "Show page numbers on thumbnails" on or off. Comix 2.4 - Added full support for internationalization (i18n). Apart from English, Comix is now translated to Swedish, Simplified Chinese and Spanish. - Added an option to let Comix automatically adjust the contrast of the images so that the darkest pixel is completely black and the lightest pixel is completely white. - Added an option to space key "smart scrolling" feature as if in double page mode even when in single page mode. - Added thin borders around the thumbnails so that they should be more easily distinguished. - Added accelerators for more menu items. - Fixed a bug which caused the wrong image to be displayed when viewing the third last and the second last pages in double page mode, exiting double page mode and flipping forward one page. - Fixed a bug which caused Comix to display no warning when trying to create a file in a directory where it does not have permission to do so. Comix 2.3 - Comix now depends on the Python Imaging Library (http://www.pythonware.com/products/pil/) to handle some image manipulations. - Added the ability to rotate and mirror images. - Added an option to set the contrast of the images. - Added an option to show the page numbers in the upper left corner of each thumbnail. - Cleaned up the preferences dialog a bit. - The arrow keys now flips pages in fit-to-screen mode. - Added an option to go to the same directory as last time when opening the "Open" dialog, instead of always going to a preset directory. - Fixed a bug which caused comments to not be displayed until after all thumbnails had been loaded when using the "Always view comments when opening a new file" option. - Fixed a bug which caused comment files in a directory, had their extensions been added to the comment extensions list while the directory was loaded, to not be opened correctly until the directory had been reloaded. - Fixed a bug which caused the scrollbars to not align themselves automatically when switching between viewing comments and viewing images. - Fixed a bug which caused the "Fit width", "Fit height" and "Best fit" commands to scale incorrectly when viewing thumbnails. - Fixed a bug which could cause the wrong image to be displayed if switching from one page to another and back again really quickly. - Some minor fixes. Comix 2.2.1 - Fixed a bug which caused underscores in bookmark names to be shown as underlines for the next character. - Fixed a bug which caused Comix to crash when trying to close the program while loading thumbnails for an archive/directory that was opened while loading thumbnails for the same archive/directory. - Fixed a bug which caused some events (e.g. switching fullscreen on/off), invoked while loading thumbnails, to be delayed until all the thumbnails had been loaded if they were invoked more than once during this loading. There are still some issues with events that in themself initiate the loading of thumbnails (e.g. open new file) being delayed if invoked multiple times during the loading. This should, however, not be a problem in most cases. - Fixed a bug which caused some thumbnails to not be displayed in whole when using certain GTK themes. - Fixed a bug which caused the selected thumbnails to not be updated properly when switching between single page and double page mode. - Fixed a bug which caused the thumbnail scrollbar to not update it's length when resizing the main window. - Made the automatic scrolling of the thumbnail pane more consequent in double page mode. Comix 2.2 - Added a thumbnail browser. - Added a "smart scrolling" option for the space key. - The number pad on the keyboard can now be used to align the image(s). '1' takes you to the lower left corner, '2' takes you to the middle of the bottom, '3' takes you to the lower right corner and so on for all nine digits. - Added an option to automatically open the last viewed page when Comix is started. - The zoom in and zoom out commands now zoom straight on, preserving the alignment of the viewed image(s). - Fixed a bug which caused images to be scaled slighty wrong during specific window size/image size combinations. - Fixed a bug which caused the wrong image to be displayed when jumping two pages forward with the cache option turned on in single page mode. Comix 2.1 - Made the dialogs more GNOME HIG compliant. - Added an option to let the scroll wheel scroll horizontally when at the top or bottom of the page. - Added an option to let the scroll wheel flip pages when scrolling "off the page". - Added an option to use smart scaling when in double page mode and fit-to-screen mode. The smart scaling feature makes the images scale independently so that no space is wasted. The largest of the images is scaled as before, but the smallest in now scaled up to fill any extra space. - Added an option to set the toolbar to show either icons, text or both. - The image can now be dragged around with the middle mouse button as well. - If adding a bookmark for an archive/directory that is already bookmarked, Comix now updates the page number of that bookmark instead of adding a new one. - Added tooltips for the preferences dialog. - Removed the zoom entry in the preferences dialog. - Made the cleanup of files in /tmp a bit more sturdy. - Fixed a bug which caused the scrollbars to not align themselves automatically when opening a new archive/folder. - Fixed a bug which caused changes to fullscreen, fit-to-screen mode etc. that were made while the preferences dialog was open to be reverted when the dialog was closed. - Fixed a bug which caused some images to appear twice if they were packed in an archive containing multiple subfolders. - Fixed a bug which caused some strange behaviour when (un)hiding the menubar after a bookmark had been added/removed. - Some minor fixes. Comix 2.0 - The text in the comments is now selectable. - Some minor (mainly cosmetic) changes. Comix 2.0b - Comix 2.0b has a major speed advantage over previous versions. I rewrote some of the code, mainly the parts concerning the caching of images. Page flipping with the cache option turned off is now about twice as fast as before (not counting the time it takes to scale the image(s) since this is highly dependant on the image scaling quality being used). Forward page flipping with the cache option turned on now seems almost instantaneous (again not counting the possible delay to scale the image(s)). Backwards flipping with the cache option turned on is no longer suffering any speed penalty, it is just as fast as normal flipping without any cache would be. The only occasion when things will be slower with the cache option turned on is when doing irregular flipping, as from page 1 to page 7 to page 3 etc., and even then things will seem to be as fast as normal though some extra work is done "under the hood". Using cache is strongly recommended from now on. - Added a bookmarks manager that lets you add or remove single bookmarks. - Added support for image/x-icon, image/x-xpixmap and image/x-xbitmap image formats. - Changed the text entry field for the default path to a button which brings up a nice standard folder selection dialog. - The "Flip position of pages in double page mode" option, now called "Manga mode", automatically aligns the scrollbars to the upper-right corner of the window when flipping to a new page. - The "Hide menubar etc. in fullscreen" option now also affects the scrollbars. - Fixed a bug which caused temporary files to be overwritten when viewing two archives in two different Comix sessions at the same time. - Fixed a bug which caused the separators in the menus to disappear after a while. - Fixed a bug that caused the wrong page to be displayed when flipping backwards one step in double page mode, switching to one page mode, switching back to double page mode again and then flipping forward one step, all with the cache option set. - Lots of minor fixes. Comix 1.6 - The next page can now be flipped to by pressing the left mouse button on the main window. Images can still be moved around by clicking and dragging before you release the button again. - The "Hide cursor" option now only affect fullscreen. - Comix now sorts files by the standard set up by the LC_COLLATE environmental variable. - Added a new dialog to display an error message if the convert utility is used in some way to alter a file which the user does not have appropriate permissions to. - Fixed a bug with the wrong filename sometimes being shown in the properties dialog when viewing plain image files. - Fixed a bug with strange things happening when opening the preferences window in windowed mode and closing it in fullscreen mode and vice versa. - Fixed a bug with the "Hide menubar etc. in fullscreen" option not always working as expected. - Some minor fixes. Comix 1.5 - Added support for forward/back buttons on mice that have them. Thanks to Stephen Jones for this feature. - New option to set which filename extensions should be treated as comment files. - New option to automatically hide menubar etc. when entering fullscreen mode. - Improved the look of the properties dialog. - Fixed problems with parsing certain comment files. - Some minor fixes. Comix 1.4 - Added support for embedded archive comments in the form of .txt or .nfo files. - The convert utility now creates exact copies of the directory structure in the source archive/directory, including correct filenames. - The zoom in and zoom out commands now zoom 15% relative to the current size instead of 20% relative to the original size. - Changed default image scaling quality to "Tiles" from "Hyper". - Some minor fixes. Comix 1.3.1 - Fixed a bug with old cached images sometimes being shown when a new archive/directory had been opened. Comix 1.3 - The viewed page(s) can now be dragged around by pressing the mouse button and moving the cursor. - New option to cache the next page for faster forward page flipping. Continuous backwards flipping will be slower with this option. Slightly more RAM will be used as well. - Comix now handles manipulation of already loaded images (resizing, changing scaling technique, etc.) more efficiently due to less disk IO. - Fixed a bug that caused saved options to not be loaded when the program is restarted. Comix 1.2 - Drag and drop support. - Changed the install.py script slightly. - Added new error messages for the statusbar when trying to open non-valid files etc. Comix 1.1.2 - Applied a workaround for a bug(?) in newer versions of PyGTK, which made the OK button in the file selection dialog return the wrong value, rendering it useless. Thanks to neota for this solution. Comix 1.1.1 - The "file" dependancy is no longer needed. All mime type checks are now done internally. - Fixed an error in the .desktop file. - The install.py script now uses "update-desktop-database" to update the menus properly. - Some minor fixes. Comix 1.1 - Support for nestled archives, i.e. archives in archives. - The install.py script now includes a "--installdir" option to let the user choose the install directory, e.g. /usr instead of /usr/local. - Comix now includes a manpage. - Some minor fixes. Comix 1.0.2 - Added support for filenames encoded with various international character encodings. - Some minor fixes. Comix 1.0.1 - Fixed a bug with the background colour option not working as expected on certain systems. Comix 1.0 - Added an archive convert feature. Archives and directories can be converted to Zip, tar, tar.gz or tar.bz2. - More changes toward a hopefully more user-friendly GUI. Comix 0.9 - A number of efforts has been made to make Comix more GNOME HIG compliant. - Added optional menubar, toolbar and statusbar. - Added an option to hide the mouse cursor. - The space key now works in fit to screen mode as well. - Fixed a bug with certain hotkeys not working before the right-click menu had been shown the first time. - Fixed a bug with archive names sometimes being displayed incorrectly in the bookmarks menu. - Some minor fixes. Comix 0.8 - Comix now handles zip, tar, tar.gz and tar.bz2 archives internally. The unzip and tar programs are no longer needed. - New option to let you go to the next archive when flipping past the last page in the current archive, and vice versa for the first page. - Fixed a bug with small images sometimes being stretched to fit the screen although the corresponding option was not set. - Fixed a bug with exiting fullscreen mode with the escape key. - Supported image formats are now "only" JPEG, PNG, TIFF, GIF and BMP. There were problems with other files being reported as image files though they were not. - Some minor fixes. Comix 0.7 - Added a new "bookmark" feature. - Now reads any image format supported by gtk.gdk.Pixbuf (that means most formats). - Fixed a bug with capital letters not working as hotkeys. - Some minor fixes. Comix 0.6 - Added a new option to hide the scrollbars even when not in fit to screen mode. - Pressing space now scrolls the page to show the next part of it, if pressed at the bottom of the page it flips to the next page. - Dialogs should now look better and use buttons with stock icons. - Scrolling could be a bit faulty due to different dimensions of the scrollbars in different themes. That problem is now fixed. - `Fit width', `Fit height' and `Fit to screen' commands should now be exact. Comix 0.5.2 - The makefile in 0.5.1 could in some cases change the permissions of the folders Comix were installed in to 0755. To solve this vulnerability Comix 0.5.2 uses a python script `install.py' to install the program instead. Usage of the 0.5.1 makefile is not recommended! Comix 0.5.1 - Fixed a problem with the makefile. Destination directories will now be created if they do not already exist. Comix 0.5 - Fixed a bug with the background colour option not working. - Added a colour picking dialog instead of the old entry box for the background colour. - Added a new more user-friendly file chooser dialog. - Added `Fit width', `Fit height' and `Fit to screen' commands to the right-click menu. - Added new option to save zooming values to future sessions. - The right-click menu and the preferences window now looks better and should hopefully be more user friendly. - Changed some hotkeys and their effect. - PyGTK requirement is now 2.6+. Comix 0.4 - Comix now supports image zooming and window scrolling as well as the old fit-to-screen-mode. - Comix now includes a makefile, a .desktop file and an icon for an easy installation and desktop integration. Comix 0.3 - New option to save window position and size to future sessions. - New option to set a default path to open when selecting a new file with the `Open file' command. - Comix now supports page scrolling with the mouse wheel. - Fixed a bug with trying to view `File info' when viewing the last page in double page mode. - Fixed a bug with the number of pages always reported as zero in the go-to-page-window. - Some minor fixes. Comix 0.2.1 - Fixed a bug with opening archives with 3+ files with the same name. Comix 0.2 - Now uses the shutil module to move and delete files instead of calling the `rm' and `mv' programs. - Now uses gtk.gdk.pixbuf_get_file_info() to check image file types and the `file' program to check filetypes for ZIP/RAR archives. Filename extensions should no longer matter for Comix. - Now supports tar, tar.gz and tar.bz2 archives. - New menu option `File info' brings up a window and displays various information about the file being viewed. - New option to flip the pages viewed in double page mode. - New option to reverse the reading order (start with the last page). - New option to set the saturation of the images displayed. - Some minor fixes. - New dependencies are `file' and `tar' (should be installed on most systems as default). comix-4.0.4/messages/messages.pot0000644000175000001440000004744211137133373015712 0ustar sorkusers#: src/about.py:19 src/about.py:68 msgid "About" msgstr "" #: src/about.py:56 msgid "Comix is an image viewer specifically designed to handle comic books." msgstr "" #: src/about.py:58 msgid "It reads ZIP, RAR and tar archives, as well as plain image files." msgstr "" #: src/about.py:60 msgid "Comix is licensed under the GNU General Public License." msgstr "" #: src/about.py:83 msgid "Developer" msgstr "" #: src/about.py:84 src/about.py:85 msgid "Simplified Chinese translation" msgstr "" #: src/about.py:86 msgid "Spanish translation" msgstr "" #: src/about.py:87 msgid "Brazilian Portuguese translation" msgstr "" #: src/about.py:88 msgid "German translation and Nautilus thumbnailer" msgstr "" #: src/about.py:89 src/about.py:90 msgid "Italian translation" msgstr "" #: src/about.py:91 msgid "Dutch translation" msgstr "" #: src/about.py:92 msgid "French translation" msgstr "" #: src/about.py:93 src/about.py:94 msgid "Polish translation" msgstr "" #: src/about.py:95 msgid "Greek translation" msgstr "" #: src/about.py:96 msgid "Catalan translation" msgstr "" #: src/about.py:97 src/about.py:98 msgid "Traditional Chinese translation" msgstr "" #: src/about.py:99 msgid "Japanese translation" msgstr "" #: src/about.py:100 msgid "Hungarian translation" msgstr "" #: src/about.py:101 msgid "Russian translation" msgstr "" #: src/about.py:102 msgid "Croatian translation" msgstr "" #: src/about.py:103 msgid "Korean translation" msgstr "" #: src/about.py:104 msgid "Persian translation" msgstr "" #: src/about.py:105 msgid "Indonesian translation" msgstr "" #: src/about.py:106 msgid "Czech translation" msgstr "" #: src/about.py:107 msgid "Icon design" msgstr "" #: src/about.py:114 msgid "Credits" msgstr "" #: src/archive.py:66 msgid "Could not find RAR file extractor!" msgstr "" #: src/archive.py:68 msgid "" "You need either the rar or the unrar program installed in " "order to read RAR (.cbr) files." msgstr "" #: src/archive.py:305 msgid "ZIP archive" msgstr "" #: src/archive.py:306 msgid "Tar archive" msgstr "" #: src/archive.py:307 msgid "Gzip compressed tar archive" msgstr "" #: src/archive.py:308 msgid "Bzip2 compressed tar archive" msgstr "" #: src/archive.py:309 msgid "RAR archive" msgstr "" #: src/bookmark.py:28 msgid "_Add bookmark" msgstr "" #: src/bookmark.py:30 msgid "_Edit bookmarks..." msgstr "" #: src/bookmark.py:32 msgid "_Clear bookmarks..." msgstr "" #: src/bookmark.py:78 msgid "Clear all bookmarks?" msgstr "" #: src/bookmark.py:80 msgid "" "All stored bookmarks will be removed. Are you sure that you want to continue?" msgstr "" #: src/bookmark.py:230 msgid "Edit bookmarks" msgstr "" #: src/bookmark.py:256 src/edit.py:270 msgid "Name" msgstr "" #: src/bookmark.py:257 msgid "Page" msgstr "" #: src/comment.py:16 src/preferences.py:299 msgid "Comments" msgstr "" #: src/comment.py:53 #, python-format msgid "Could not read %s" msgstr "" #: src/deprecated.py:16 msgid "There are deprecated files left on your computer." msgstr "" #: src/deprecated.py:22 msgid "" "Some old files (that were used for storing preferences, the library, " "bookmarks etc. for older versions of Comix) were found on your computer. If " "you do not plan on using the older versions of Comix again, you should " "remove these files in order to save some disk space. Do you want these files " "to be removed for you now?" msgstr "" #: src/edit.py:29 msgid "Edit archive" msgstr "" #: src/edit.py:37 msgid "Import" msgstr "" #: src/edit.py:51 msgid "Images" msgstr "" #: src/edit.py:52 msgid "Other files" msgstr "" #: src/edit.py:101 msgid "The new archive could not be saved!" msgstr "" #: src/edit.py:103 msgid "The original files have not been removed." msgstr "" #: src/edit.py:117 msgid "Archives are stored as ZIP files." msgstr "" #: src/edit.py:170 src/edit.py:288 msgid "Remove from archive" msgstr "" #: src/edit.py:258 msgid "" "Please note that the only files that are automatically added to this list " "are those files in archives that Comix recognizes as comments." msgstr "" #: src/edit.py:273 msgid "Size" msgstr "" #: src/enhance.py:51 msgid "Enhance image" msgstr "" #: src/enhance.py:52 msgid "Defaults" msgstr "" #: src/enhance.py:79 msgid "Brightness" msgstr "" #: src/enhance.py:90 msgid "Contrast" msgstr "" #: src/enhance.py:101 msgid "Saturation" msgstr "" #: src/enhance.py:112 msgid "Sharpness" msgstr "" #: src/enhance.py:126 msgid "Automatically adjust contrast." msgstr "" #: src/enhance.py:128 msgid "" "Automatically adjust contrast (both lightness and darkness), separately for " "each colour band." msgstr "" #: src/filechooser.py:38 src/library.py:490 msgid "Open" msgstr "" #: src/filechooser.py:42 msgid "Save" msgstr "" #: src/filechooser.py:78 msgid "All files" msgstr "" #: src/filechooser.py:81 msgid "All Archives" msgstr "" #: src/filechooser.py:85 msgid "ZIP archives" msgstr "" #: src/filechooser.py:87 msgid "RAR archives" msgstr "" #: src/filechooser.py:89 msgid "Tar archives" msgstr "" #: src/filechooser.py:134 #, python-format msgid "A file named '%s' already exists. Do you want to replace it?" msgstr "" #: src/filechooser.py:137 msgid "Replacing it will overwrite its contents." msgstr "" #: src/filechooser.py:182 src/filechooser.py:260 msgid "All images" msgstr "" #: src/filechooser.py:184 src/filechooser.py:262 msgid "JPEG images" msgstr "" #: src/filechooser.py:185 src/filechooser.py:263 msgid "PNG images" msgstr "" #: src/filechooser.py:206 msgid "Automatically add the books to this collection" msgstr "" #: src/filehandler.py:209 #, python-format msgid "Could not open %s: Is a directory." msgstr "" #: src/filehandler.py:213 #, python-format msgid "Could not open %s: No such file." msgstr "" #: src/filehandler.py:217 #, python-format msgid "Could not open %s: Permission denied." msgstr "" #: src/filehandler.py:222 #, python-format msgid "Could not open %s: Unknown file type." msgstr "" #: src/filehandler.py:285 #, python-format msgid "No images in '%s'" msgstr "" #: src/filehandler.py:413 msgid "Unknown filetype" msgstr "" #: src/librarybackend.py:273 src/librarybackend.py:275 msgid "(Copy)" msgstr "" #: src/library.py:38 msgid "Library" msgstr "" #: src/library.py:150 msgid "Rename..." msgstr "" #: src/library.py:152 msgid "Duplicate collection" msgstr "" #: src/library.py:154 msgid "Remove collection..." msgstr "" #: src/library.py:202 msgid "All books" msgstr "" #: src/library.py:231 msgid "Remove collection from the library?" msgstr "" #: src/library.py:233 msgid "" "The selected collection will be removed from the library (but the books and " "subcollections in it will remain). Are you sure that you want to continue?" msgstr "" #: src/library.py:251 msgid "Rename collection?" msgstr "" #: src/library.py:253 msgid "Please enter a new name for the selected collection." msgstr "" #: src/library.py:271 #, python-format msgid "Could not change the name to '%s'." msgstr "" #: src/library.py:275 src/library.py:882 msgid "A collection by that name already exists." msgstr "" #: src/library.py:285 msgid "Could not duplicate collection." msgstr "" #: src/library.py:382 msgid "Root" msgstr "" #: src/library.py:386 #, python-format msgid "" "Put the collection '%(subcollection)s' in the collection '%(supercollection)" "s'." msgstr "" #: src/library.py:407 #, python-format msgid "Add books to '%s'." msgstr "" #: src/library.py:411 #, python-format msgid "" "Move books from '%(source collection)s' to '%(destination collection)s'." msgstr "" #: src/library.py:493 msgid "Remove from this collection" msgstr "" #: src/library.py:496 msgid "Remove from the library..." msgstr "" #: src/library.py:589 #, python-format msgid "Removed %(num)d book(s) from '%(collection)s'." msgstr "" #: src/library.py:598 msgid "Remove books from the library?" msgstr "" #: src/library.py:600 msgid "" "The selected books will be removed from the library (but the original files " "will be untouched). Are you sure that you want to continue?" msgstr "" #: src/library.py:610 #, python-format msgid "Removed %d book(s) from the library." msgstr "" #: src/library.py:770 msgid "Search" msgstr "" #: src/library.py:775 msgid "" "Display only those books that have the specified text string in their full " "path. The search is not case sensitive." msgstr "" #: src/library.py:777 msgid "Cover size" msgstr "" #: src/library.py:790 msgid "Add books" msgstr "" #: src/library.py:794 msgid "Add more books to the library." msgstr "" #: src/library.py:796 msgid "Add collection" msgstr "" #: src/library.py:801 msgid "Add a new empty collection." msgstr "" #: src/library.py:807 msgid "Open the selected book." msgstr "" #: src/library.py:833 src/properties.py:118 #, python-format msgid "%d pages" msgstr "" #: src/library.py:855 msgid "Add new collection?" msgstr "" #: src/library.py:857 msgid "Please enter a name for the new collection." msgstr "" #: src/library.py:863 msgid "New collection" msgstr "" #: src/library.py:877 #, python-format msgid "Could not add a new collection called '%s'." msgstr "" #: src/library.py:911 msgid "Adding books" msgstr "" #: src/library.py:931 msgid "Added books" msgstr "" #: src/library.py:953 #, python-format msgid "Adding '%s'..." msgstr "" #: src/main.py:699 msgid "SLIDESHOW" msgstr "" #: src/preferences.py:80 msgid "Preferences" msgstr "" #: src/preferences.py:95 msgid "Background" msgstr "" #: src/preferences.py:97 msgid "Use this colour as background" msgstr "" #: src/preferences.py:99 msgid "Always use this selected colour as the background colour." msgstr "" #: src/preferences.py:104 msgid "Use dynamic background colour." msgstr "" #: src/preferences.py:108 msgid "Automatically pick a background colour that fits the viewed image." msgstr "" #: src/preferences.py:111 msgid "Thumbnails" msgstr "" #: src/preferences.py:112 msgid "Thumbnail size (in pixels)" msgstr "" #: src/preferences.py:119 msgid "Show page numbers on thumbnails." msgstr "" #: src/preferences.py:126 msgid "Magnifying Glass" msgstr "" #: src/preferences.py:127 msgid "Magnifying glass size (in pixels)" msgstr "" #: src/preferences.py:133 msgid "" "Set the size of the magnifying glass. It is a square with a side of this " "many pixels." msgstr "" #: src/preferences.py:135 msgid "Magnification factor" msgstr "" #: src/preferences.py:142 msgid "Set the magnification factor of the magnifying glass." msgstr "" #: src/preferences.py:145 msgid "Image scaling" msgstr "" #: src/preferences.py:146 msgid "Stretch small images." msgstr "" #: src/preferences.py:150 msgid "" "Stretch images to a size that is larger than their original size if the " "current zoom mode requests it. If this preference is unset, images are never " "scaled to be larger than their original size." msgstr "" #: src/preferences.py:153 msgid "Transparency" msgstr "" #: src/preferences.py:155 msgid "Use checkered background for transparent images." msgstr "" #: src/preferences.py:161 msgid "" "Use a grey checkered background for transparent images. If this preference " "is unset, the background is plain white instead." msgstr "" #: src/preferences.py:163 msgid "Appearance" msgstr "" #: src/preferences.py:169 msgid "Scroll" msgstr "" #: src/preferences.py:171 msgid "Use smart space key scrolling." msgstr "" #: src/preferences.py:176 msgid "" "Use smart scrolling with the space key. Normally the space key scrolls only " "right down (or up when shift is pressed), but with this preference set it " "also scrolls sideways and so tries to follow the natural reading order of " "the comic book." msgstr "" #: src/preferences.py:180 msgid "Flip pages when scrolling off the edges of the page." msgstr "" #: src/preferences.py:185 msgid "" "Flip pages when scrolling \"off the page\" with the scroll wheel or with the " "arrow keys. It takes three consecutive \"steps\" with the scroll wheel or " "the arrow keys for the pages to be flipped." msgstr "" #: src/preferences.py:188 src/ui.py:298 msgid "Double page mode" msgstr "" #: src/preferences.py:190 msgid "Flip two pages in double page mode." msgstr "" #: src/preferences.py:195 msgid "" "Flip two pages, instead of one, each time we flip pages in double page mode." msgstr "" #: src/preferences.py:198 msgid "Show only one wide image in double page mode." msgstr "" #: src/preferences.py:204 msgid "" "Display only one image in double page mode, if the image's width exceeds its " "height. The result of this is that scans that span two pages are displayed " "properly (i.e. alone) also in double page mode." msgstr "" #: src/preferences.py:207 msgid "Files" msgstr "" #: src/preferences.py:209 msgid "Automatically open the next archive." msgstr "" #: src/preferences.py:214 msgid "" "Automatically open the next archive in the directory when flipping past the " "last page, or the previous archive when flipping past the first page." msgstr "" #: src/preferences.py:217 msgid "Automatically open the last viewed file on startup." msgstr "" #: src/preferences.py:222 msgid "" "Automatically open, on startup, the file that was open when Comix was last " "closed." msgstr "" #: src/preferences.py:225 msgid "Store information about recently opened files." msgstr "" #: src/preferences.py:230 msgid "" "Add information about all files opened from within Comix to the shared " "recent files list." msgstr "" #: src/preferences.py:233 msgid "Store thumbnails for opened files." msgstr "" #: src/preferences.py:238 msgid "" "Store thumbnails for opened files according to the freedesktop.org " "specification. These thumbnails are shared by many other applications, such " "as most file managers." msgstr "" #: src/preferences.py:241 msgid "Cache" msgstr "" #: src/preferences.py:242 msgid "Use a cache to speed up browsing." msgstr "" #: src/preferences.py:246 msgid "" "Cache the images that are next to the currently viewed image in order to " "speed up browsing. Since the speed improvements are quite big, it is " "recommended that you have this preference set, unless you are running short " "on free RAM." msgstr "" #: src/preferences.py:248 msgid "Behaviour" msgstr "" #: src/preferences.py:254 msgid "Default modes" msgstr "" #: src/preferences.py:256 msgid "Use double page mode by default." msgstr "" #: src/preferences.py:261 msgid "Use fullscreen by default." msgstr "" #: src/preferences.py:266 msgid "Use manga mode by default." msgstr "" #: src/preferences.py:271 msgid "Default zoom mode" msgstr "" #: src/preferences.py:273 src/ui.py:290 msgid "Best fit mode" msgstr "" #: src/preferences.py:274 src/ui.py:292 msgid "Fit width mode" msgstr "" #: src/preferences.py:275 src/ui.py:294 msgid "Fit height mode" msgstr "" #: src/preferences.py:276 src/ui.py:296 msgid "Manual zoom mode" msgstr "" #: src/preferences.py:282 msgid "Fullscreen" msgstr "" #: src/preferences.py:284 msgid "Automatically hide all toolbars in fullscreen." msgstr "" #: src/preferences.py:290 msgid "Slideshow" msgstr "" #: src/preferences.py:291 msgid "Slideshow delay (in seconds)" msgstr "" #: src/preferences.py:300 msgid "Comment extensions" msgstr "" #: src/preferences.py:306 msgid "" "Treat all files found within archives, that have one of these file endings, " "as comments." msgstr "" #: src/preferences.py:309 msgid "Rotation" msgstr "" #: src/preferences.py:311 msgid "Automatically rotate images according to their metadata." msgstr "" #: src/preferences.py:316 msgid "" "Automatically rotate images when an orientation is specified in the image " "metadata, such as in an Exif tag." msgstr "" #: src/preferences.py:318 msgid "Display" msgstr "" #: src/properties.py:94 msgid "Properties" msgstr "" #: src/properties.py:119 #, python-format msgid "%d comments" msgstr "" #: src/properties.py:129 src/properties.py:164 msgid "Location" msgstr "" #: src/properties.py:131 src/properties.py:165 msgid "Accessed" msgstr "" #: src/properties.py:133 src/properties.py:167 msgid "Modified" msgstr "" #: src/properties.py:135 src/properties.py:169 msgid "Permissions" msgstr "" #: src/properties.py:136 src/properties.py:170 msgid "Owner" msgstr "" #: src/properties.py:140 msgid "Archive" msgstr "" #: src/properties.py:174 msgid "Image" msgstr "" #: src/thumbremover.py:24 msgid "Thumbnail maintenance" msgstr "" #: src/thumbremover.py:26 msgid "Cleanup" msgstr "" #: src/thumbremover.py:38 msgid "Cleanup thumbnails" msgstr "" #: src/thumbremover.py:48 msgid "" "Thumbnails for files (such as image files and comic book archives) are " "stored in your home directory. Many different applications use and create " "these thumbnails, but sometimes thumbnails remain even though the original " "files have been removed - wasting space. This dialog can cleanup your stored " "thumbnails by removing orphaned and outdated thumbnails." msgstr "" #: src/thumbremover.py:60 msgid "Thumbnail directory" msgstr "" #: src/thumbremover.py:67 msgid "Total number of thumbnails" msgstr "" #: src/thumbremover.py:70 src/thumbremover.py:77 msgid "Calculating..." msgstr "" #: src/thumbremover.py:74 msgid "Total size of thumbnails" msgstr "" #: src/thumbremover.py:82 msgid "Do you want to cleanup orphaned and outdated thumbnails now?" msgstr "" #: src/thumbremover.py:118 msgid "Removing thumbnails" msgstr "" #: src/thumbremover.py:137 msgid "Number of removed thumbnails" msgstr "" #: src/thumbremover.py:144 msgid "Total size of removed thumbnails" msgstr "" #: src/thumbremover.py:195 #, python-format msgid "Removed thumbnail for '%s'" msgstr "" #: src/ui.py:34 msgid "_Next page" msgstr "" #: src/ui.py:36 msgid "_Previous page" msgstr "" #: src/ui.py:38 msgid "_First page" msgstr "" #: src/ui.py:40 msgid "_Last page" msgstr "" #: src/ui.py:42 msgid "_Zoom in" msgstr "" #: src/ui.py:44 msgid "Zoom _out" msgstr "" #: src/ui.py:46 msgid "O_riginal size" msgstr "" #: src/ui.py:48 msgid "_Close" msgstr "" #: src/ui.py:50 msgid "_Quit" msgstr "" #: src/ui.py:52 msgid "_Rotate 90 degrees CW" msgstr "" #: src/ui.py:54 msgid "Rotate 180 de_grees" msgstr "" #: src/ui.py:56 msgid "Rotat_e 90 degrees CCW" msgstr "" #: src/ui.py:58 msgid "Fli_p horizontally" msgstr "" #: src/ui.py:60 msgid "Flip _vertically" msgstr "" #: src/ui.py:62 msgid "Manual _Zoom" msgstr "" #: src/ui.py:63 msgid "Open _recent" msgstr "" #: src/ui.py:64 msgid "_Bookmarks" msgstr "" #: src/ui.py:65 msgid "T_oolbars" msgstr "" #: src/ui.py:66 msgid "_Edit" msgstr "" #: src/ui.py:67 msgid "_File" msgstr "" #: src/ui.py:68 msgid "_View" msgstr "" #: src/ui.py:69 msgid "_Go" msgstr "" #: src/ui.py:70 msgid "_Help" msgstr "" #: src/ui.py:71 msgid "_Transform" msgstr "" #: src/ui.py:75 msgid "_Fullscreen" msgstr "" #: src/ui.py:77 msgid "_Double page mode" msgstr "" #: src/ui.py:79 msgid "_Toolbar" msgstr "" #: src/ui.py:81 msgid "_Menubar" msgstr "" #: src/ui.py:83 msgid "St_atusbar" msgstr "" #: src/ui.py:85 msgid "S_crollbars" msgstr "" #: src/ui.py:87 msgid "Th_umbnails" msgstr "" #: src/ui.py:89 msgid "H_ide all" msgstr "" #: src/ui.py:91 msgid "_Manga mode" msgstr "" #: src/ui.py:93 msgid "_Keep transformation" msgstr "" #: src/ui.py:95 msgid "Run _slideshow" msgstr "" #: src/ui.py:97 msgid "Magnifying _glass" msgstr "" #: src/ui.py:103 msgid "_Best fit mode" msgstr "" #: src/ui.py:105 msgid "Fit _width mode" msgstr "" #: src/ui.py:107 msgid "Fit _height mode" msgstr "" #: src/ui.py:109 msgid "M_anual zoom mode" msgstr "" #: src/ui.py:115 msgid "_About" msgstr "" #: src/ui.py:117 msgid "_View comments..." msgstr "" #: src/ui.py:119 msgid "_Edit archive..." msgstr "" #: src/ui.py:121 msgid "_Open..." msgstr "" #: src/ui.py:123 msgid "_Properties" msgstr "" #: src/ui.py:125 msgid "_Enhance image..." msgstr "" #: src/ui.py:128 msgid "_Thumbnail maintenance..." msgstr "" #: src/ui.py:130 msgid "Pr_eferences" msgstr "" #: src/ui.py:134 msgid "_Library..." msgstr "" #: src/ui.py:284 msgid "First page" msgstr "" #: src/ui.py:286 msgid "Previous page" msgstr "" #: src/ui.py:287 msgid "Next page" msgstr "" #: src/ui.py:288 msgid "Last page" msgstr "" #: src/ui.py:299 msgid "Manga mode" msgstr "" #: src/ui.py:300 msgid "Magnifying glass" msgstr "" comix-4.0.4/src/icons.pyc0000644000175000001440000000643111165455545014171 0ustar sorkusers )Ic@s7dZddkZddkZddkZdZdS(s%icons.py - Load Comix specific icons.iNc Csd5d6d7d8d9d:d;d<d=d>d?d@dAdBdCdDdEdFdGdHdIf}d}tiitiitiitid+}tiitii|d,otii|d-}nZxV|d.d/d0gD]B}tiitii|d1otii|d2}PqqW|djodSnt i i tii|d3}t i |t i }x}|D]u\}}yJtii||}t i i |}t i|}|i||Wqftj od4|GHqfXqfW|idS(JNsgimp-flip-horizontal.pngscomix-flip-horizontalsgimp-flip-vertical.pngscomix-flip-verticalsgimp-rotate-180.pngscomix-rotate-180sgimp-rotate-270.pngscomix-rotate-270sgimp-rotate-90.pngscomix-rotate-90sgimp-thumbnails.pngscomix-thumbnailssgimp-transform.pngscomix-transformstango-enhance-image.pngscomix-enhance-imagestango-add-bookmark.pngscomix-add-bookmarkstango-archive.pngs comix-archivestango-image.pngs comix-images library.pngs comix-librarys comments.pngscomix-commentsszoom.pngs comix-zoomslens.pngs comix-lenssdouble-page.pngscomix-double-pages manga.pngs comix-mangas fitbest.pngs comix-fitbests fitwidth.pngscomix-fitwidths fitheight.pngscomix-fitheights fitmanual.pngscomix-fitmanualisimages/16x16/comix.pngtimagess/usrs /usr/locals /usr/X11R6s"share/comix/images/16x16/comix.pngsshare/comix/imagess16x16/comix.pngs! Could not load icon "%s".(sgimp-flip-horizontal.pngscomix-flip-horizontal(sgimp-flip-vertical.pngscomix-flip-vertical(sgimp-rotate-180.pngscomix-rotate-180(sgimp-rotate-270.pngscomix-rotate-270(sgimp-rotate-90.pngscomix-rotate-90(sgimp-thumbnails.pngscomix-thumbnails(sgimp-transform.pngscomix-transform(stango-enhance-image.pngscomix-enhance-image(stango-add-bookmark.pngscomix-add-bookmark(stango-archive.pngs comix-archive(stango-image.pngs comix-image(s library.pngs comix-library(s comments.pngscomix-comments(szoom.pngs comix-zoom(slens.pngs comix-lens(sdouble-page.pngscomix-double-page(s manga.pngs comix-manga(s fitbest.pngs comix-fitbest(s fitwidth.pngscomix-fitwidth(s fitheight.pngscomix-fitheight(s fitmanual.pngscomix-fitmanual(tNonetostpathtdirnametrealpathtsystargvtisfiletjointgtktgdktpixbuf_new_from_filetwindow_set_default_icont IconFactorytIconSettaddt Exceptiont add_default( t_iconst icon_pathtbasetprefixtpixbuftfactorytfilenametstockidticonset((sE/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/icons.pyt load_iconss^ 1"       (t__doc__RRR R(((sE/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/icons.pyss   comix-4.0.4/src/thumbbar.pyc0000644000175000001440000002300311165455545014654 0ustar sorkusers 4%Ic @sdZddkZddkZddkZddkZddkZddkZddklZddk Z dei fdYZ dZ dS(s0thumbbar.py - Thumbnail sidebar for main window.iN(tprefstThumbnailSidebarcBseZdZdZdZdZdZdZdZdZ dZ d Z d Z d Z d Zd ZdZRS(s<A thumbnail sidebar including scrollbar for the main window.cCsAtii|td||_t|_d|_d|_ti ti i |_ ti |i |_|iiti id gti itid|_ti}ti|_|ii|idd|iiti|ii|i|ii|t|ii|dd|iitdd|ii tddd|ii!t|ii"|_#d|i#_$d|i#_%ti&d|_'|i'i(|i#|ii)|_*|i|i|i|i'|ii+d|i,|ii-d |i.|i*i-d |i/|ii-d |i0dS( Nis text/uri-listtpixbufsthumbnail sizeiiit drag_begint drag_data_gettchangedt scroll_event(s text/uri-listii(1tgtktHBoxt__init__tFalset_windowt_loadedtNonet _load_taskt_heightt ListStoretgdktPixbuft _liststoretTreeViewt _treeviewtenable_model_drag_sourcet BUTTON1_MASKt ACTION_COPYtTreeViewColumnt_columntCellRendererPixbuftLayoutt_layouttputt set_sizingtTREE_VIEW_COLUMN_FIXEDt append_columnt pack_starttTruetset_attributestset_fixed_widthRtset_size_requesttset_headers_visibletget_vadjustmentt_vadjusttstep_incrementtpage_incrementt VScrollbart_scrolltset_adjustmentt get_selectiont _selectiont connect_aftert _drag_begintconnectt_drag_data_gett_selection_eventt _scroll_event(tselftwindowt cellrenderer((sH/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/thumbbar.pyR s@       cCs"|iid|iidS(s3Return the width in pixels of the ThumbnailSidebar.i(Rt size_requestR-(R7((sH/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/thumbbar.pyt get_width:scGs|idS(sShow the ThumbnailSidebar.N(tshow_all(R7targs((sH/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/thumbbar.pytshow>scCs|idS(sHide the ThumbnailSidebar.N(thide_all(R7((sH/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/thumbbar.pythideBscCs?|ii|iiddd|_t|_t|_dS(s4Clear the ThumbnailSidebar of any loaded thumbnails.iN( RtclearRtset_sizeRR R R#t _stop_update(R7((sH/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/thumbbar.pyRAFs    cCsK|iitdd|iitddd|i|idS(sUReload the thumbnails with the size specified by in the preferences. sthumbnail sizeiiN(RR%RRR&RAtload_thumbnails(R7((sH/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/thumbbar.pytresizeNs cCs|ip@|iii p/td p#tdp|iiotdodSnt|_|idj ot i |int i |i |_dS(s3Load the thumbnails, if it is appropriate to do so.sshow thumbnailsshide allshide all in fullscreenN( R R t file_handlert file_loadedRt is_fullscreenR#RR tgobjectt source_removetidle_addt_load(R7((sH/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/thumbbar.pyRDWs cCs|ipdSn|ii|iiid|ii|iiid|i}|i |i i jp*|i |i |i i |i i jod|i |i d|i i d}td|}t|i i|i i |}|i i|ndS(sSelect the thumbnail for the currently viewed page and make sure that the thumbbar is scrolled so that the selected thumb is in view. Niii(R R0t select_pathR RFtget_current_pageRtget_background_areaRtyR)t get_valuetheightt page_sizetmaxtmintuppert set_value(R7trecttvalue((sH/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/thumbbar.pyt update_selectcs   &"cCsM|iiidj o t}n td}t|_xtd|iiidD]}|iii |tdtd|}tdot ||nt i |d}|i i|gxtiotitqW|iodSn|i|ii|d|ii7_|iid|iqSWt|_|idS(Nscreate thumbnailsisthumbnail sizesshow page numbers on thumbnailsi(R RFt archive_typeR R RRCtxrangetget_number_of_pagest get_thumbnailt_add_page_numbertimaget add_borderRtappendRtevents_pendingtmain_iterationRRRORRRRRBR#RZ(R7tcreatetiR((sH/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/thumbbar.pyRLts,        cCs;y|iidddSWntj o dSnXdS(s/Return the index of the currently selected row.iiN(R0tget_selected_rowst ExceptionR (R7((sH/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/thumbbar.pyt_get_selected_rowscCs8y|ii|idWntj onXdS(s1Handle events due to changed thumbnail selection.iN(R tset_pageRiRh(R7ttree_selection((sH/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/thumbbar.pyR5scCs|itiijo!|ii|iidnW|itiijo@|ii|ii }|iit |iid|ndS(s.Handle scroll events on the thumbnail sidebar.i<N( t directionRRt SCROLL_UPR)RWRQt SCROLL_DOWNRVRSRU(R7twidgetteventRV((sH/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/thumbbar.pyR6s !cGsfyL|i}|iii|d}dti|}|i|gWntj onXdS(sPut the URI of the selected file into the SelectionData, so that the file can be copied (e.g. to a file manager). isfile://localhostN(RiR RFtget_path_to_pageturllibt pathname2urltset_urisRh(R7ttreeviewtcontextt selectionR=tselectedtpathturi((sH/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/thumbbar.pyR4s cCs|id}|i|}tiitiitd|i}|i||i dddd|i}|i |dddS(sWe hook up on drag_begin events so that we can set the hotspot for the cursor at the top left corner of the thumbnail (so that we might actually see where we are dropping!). iiiN( t get_cursortcreate_row_drag_iconRRRtCOLORSPACE_RGBR#tget_sizetget_from_drawablet get_colormaptset_icon_pixbuf(R7RuRvRytpixmaptpointer((sH/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/thumbbar.pyR2s(t__name__t __module__t__doc__R R;R>R@RARERDRZRLRiR5R6R4R2(((sH/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/thumbbar.pyRs '          cCst|}tdt|d|i}td|i}tid||fd }ti|}|i d |dd t i |}|i dd|||ddd S(sAdd page number in a black rectangle in the top left corner of . This is highly dependent on the dimensions of the built-in font in PIL (bad). If the PIL font was changed, this function would likely produce badly positioned numbers on the pixbuf. iii tRGBiiitfilliN(iii(ii(iii( tstrRUtlenR;t get_heighttImagetnewt ImageDrawtDrawttextR`t pil_to_pixbuft copy_area(RtpageRtwidthRRtimtdrawt num_pixbuf((sH/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/thumbbar.pyR_s #( RRrRRIRRR`t preferencesRt thumbnailRRR_(((sH/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/thumbbar.pyss       comix-4.0.4/src/status.pyc0000644000175000001440000000524111165455545014377 0ustar sorkusers ' Hc@s;dZddkZddkZdeifdYZdS(s&status.py - Statusbar for main window.iNt StatusbarcBsDeZdZdZedZddZdZdZ RS(cCs<tii||itd|_d|_d|_dS(Nt(tgtkRt__init__tset_has_resize_griptTruet _page_infot _resolutiont _filename(tself((sF/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/status.pyR s    cCs.|id|iddti|dS(szSet a specific message (such as an error message) on the statusbar, replacing whatever was there earlier. is %sN(tpoptpushtencodingt to_unicode(R tmessage((sF/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/status.pyt set_messages cCs<|od||d|f|_nd||f|_dS(sUpdate the page number.s %d,%d / %dis%d / %dN(R(R tpagettotalt double_page((sF/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/status.pytset_page_numberscCs5d||_|dj o|id|7_ndS(sUpdate the resolution data. Takes one or two tuples, (x, y, scale), describing the original resolution of an image as well as the currently displayed scale in percent. s%dx%d (%.1f%%)s, %dx%d (%.1f%%)N(RtNone(R tleft_dimensionstright_dimensions((sF/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/status.pytset_resolutions  cCsti||_dS(sUpdate the filename.N(R R R(R tfilename((sF/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/status.pyt set_filename*scCs7|id|idd|i|i|ifdS(s/Set the statusbar to display the current state.is! %s | %s | %sN(R R RRR(R ((sF/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/status.pytupdate.s  N( t__name__t __module__RRtFalseRRRRR(((sF/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/status.pyRs     (t__doc__RR R(((sF/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/status.pyss  comix-4.0.4/src/slideshow.pyc0000644000175000001440000000516311165455545015060 0ustar sorkusers WHc@s9dZddkZddklZdddYZdS(s!slideshow.py - Slideshow handler.iN(tprefst SlideshowcBsMeZdZdZdZdZdZdZdZdZ RS(sCSlideshow handler that manages starting and stopping of slideshows.cCs||_t|_d|_dS(N(t_windowtFalset_runningtNonet_id(tselftwindow((sI/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/slideshow.pyt__init__ s  cCsD|ip6titd|i|_t|_|iindS(Nsslideshow delay( Rtgobjectt timeout_addRt_nextRtTrueRt update_title(R((sI/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/slideshow.pyt_starts  cCs8|io*ti|it|_|iindS(N(RR t source_removeRRRR(R((sI/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/slideshow.pyt_stops  cCsH|iiio$|iiidittSn|iitS(Nt slideshow( Rt file_handlert is_last_paget actiongroupt get_actiont set_activeRt next_pageR (R((sI/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/slideshow.pyR s  cCs)|io|in |idS(sToggle a slideshow on or off.N(t get_activeRR(Rtaction((sI/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/slideshow.pyttoggle$s cCs|iS(s0Return True if a slideshow is currently running.(R(R((sI/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/slideshow.pyt is_running+scCs)|io|i|indS(s3Update the delay time a started slideshow is using.N(RRR(R((sI/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/slideshow.pyt update_delay/s  ( t__name__t __module__t__doc__R RRR RRR(((sI/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/slideshow.pyRs      ((R R t preferencesRR(((sI/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/slideshow.pyss comix-4.0.4/src/thumbremover.pyc0000644000175000001440000002053511165455545015576 0ustar sorkusers ^WjIc @sdZddkZddkZddkZddkZddkZddkZddkZddkZda ei i ei dZdeifdYZdeifdYZdZd Zd ZdS( srthumbremover.py - Thumbnail maintenance module for Comix. Removes and cleans up outdated and orphaned thumbnails. iNs .thumbnailst_ThumbnailMaintenanceDialogcBs#eZdZdZdZRS(c Cs,d|_tii|td|dtitif|itdti}|i ti ti ti |i t|it|id|id|i|itititd}|id|ii|tttitd}|idd |i}|ititidt|i |i!||i|ttd |iti"ttdti#td }|idd |i$t%|i|ttd ti&td }|i|tttit%d}tit%d}|i|tt|i|tttid td}|idd|i|t%t%ti'dt(i)t*}|idd|i|t%t%tid td}|idd|i|t%t%ti'td|_+|i+idd|i|i+t%t%tid td}|idd|i|t%t%ti'td|_,|i,idd|i|i,t%t%ti#td}|idd |i|ttd |i-xti.oti/tqW|i0dS(NisThumbnail maintenancetCleanupitresponseiisCleanup thumbnailsg?isaThumbnails for files (such as image files and comic book archives) are stored in your home directory. Many different applications use and create these thumbnails, but sometimes thumbnails remain even though the original files have been removed - wasting space. This dialog can cleanup your stored thumbnails by removing orphaned and outdated thumbnails.i s%s:sThumbnail directoryg?s%ssTotal number of thumbnailssCalculating...sTotal size of thumbnailss<Do you want to cleanup orphaned and outdated thumbnails now?(1t _num_thumbstgtktDialogt__init__t_t STOCK_CLOSEtRESPONSE_CLOSEt add_buttont RESPONSE_OKt set_imagetimage_new_from_stockt STOCK_CLEARtICON_SIZE_BUTTONtset_has_separatortFalset set_resizabletset_border_widthtconnectt _responsetset_default_responsetVBoxtvboxt pack_starttlabelst BoldLabelt set_alignmenttget_attributestinserttpangot AttrScalet SCALE_LARGEtlentget_texttset_attributest HSeparatort ItalicLabelt set_line_wraptTruetHBoxtLabeltencodingt to_unicodet _thumb_baset_num_thumbs_labelt_size_thumbs_labeltshow_alltevents_pendingtmain_iterationt_update_num_and_size( tselftwindowtbuttontmain_boxtlabeltattrlistthboxtleft_boxt right_box((sL/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/thumbremover.pyRsx           cCsd|_d}xdD]}tiit|}tii|ooxlti|D]W}tii||}tii|o)|id7_|ti|i 7}qTqTWqqW|i i d|i|i i d|ddS( Nitnormaltlargeis%ds%.1f MiBg0A(R=R>( RtostpathtjoinR-tisdirtlistdirtisfiletstattst_sizeR.tset_textR/(R4t size_thumbstsubdirtdir_pathtentryt entry_path((sL/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/thumbremover.pyR3[s &cCs9|tijot||i|intdS(N(RR t_ThumbnailRemoverRR3t _close_dialog(R4tdialogR((sL/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/thumbremover.pyRis(t__name__t __module__RR3R(((sL/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/thumbremover.pyRs E RMcBseZdZdZRS(c Cs||_t|_tii|td|dtitif|i dd|i t|i t|i d|i d|i|itititd}|i d|ii|tttitd }|i|ttdtitd}titd}|i|tt|i|tttid td }|id d |i|tttid }|idd |i|tttid td}|id d |i|tttid} | idd |i| ttti} |i| ttti} | idd| iti|i| tt|id} d} d}xdD]}ti i!t"|}ti i#|pqnxti$|D]}|iodSn| d7} ti i!||}ti i%|pqnt}yWti&|}t'i(|i)}t*|d}t+|d}ti&|i,}Wnt-j o t}nX|p!ti i%| p ||joyti.|Wnt-j o qnX| d7} ||i/7}|i0d| | i0d|d| i0tdt1i2|n| ddjo| i3| |inxti4oti5tqWqWqW|idS(NsRemoving thumbnailsiiiiRiii s%s:sNumber of removed thumbnailsg?t0s Total size of removed thumbnailss0.0 MiBg?gR=R>is Thumb::URIs Thumb::MTimes%ds%.1f MiBg0AsRemoved thumbnail for '%s'i2(snormalslarge(6t _total_thumbsRt_destroyRRRRt STOCK_STOPR tset_size_requestRRRRRRRRRR)R(RRRR*t ProgressBarR&t set_ellipsizeRtELLIPSIZE_MIDDLER0R?R@RAR-RBRCRDREtImagetopentinfot _uri_to_pathtinttst_mtimet ExceptiontremoveRFRGR+R,t set_fractionR1R2(R4tparentt total_thumbsR7R:R;R<R8t number_labelt size_labeltbartremoving_labelt iterationtremoved_thumbsRHRIRJRKRLtbrokentstatsR\t orig_patht thumb_mtimet src_mtime((sL/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/thumbremover.pyRss                cGst|_|idS(N(R(RTtdestroy(R4targs((sL/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/thumbremover.pyRs (RPRQRR(((sL/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/thumbremover.pyRMqs YcCs6|idoti|dSnti|SdS(sReturn the path corresponding to the URI , unless it is a non-local resource in which case we return the pathname with the type identifier intact. sfile://iN(t startswithturllibt url2pathname(turi((sL/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/thumbremover.pyR]scCs+tdjot|an tidS(N(t_dialogtNoneRtpresent(tactionR5((sL/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/thumbremover.pyt open_dialogs cGs%tdj otidandS(N(RvRwRp(Rq((sL/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/thumbremover.pyRNs  (t__doc__R?RsRRRZR+Rt constantsRwRvR@RAtHOME_DIRR-RRRMR]RzRN(((sL/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/thumbremover.pyss        ]` comix-4.0.4/src/recent.pyc0000644000175000001440000000413111165455545014331 0ustar sorkusers Hc@sGdZddkZddkZddkZdeifdYZdS(s!recent.py - Recent files handler.iNtRecentFilesMenucBs#eZdZdZdZRS(cCs||_ti|_tii||i|iti|it ti }|i |i d|i d|i d|i d|i d|i d|i d|i d|i d |i ||id |idS( Nsapplication/x-zipsapplication/zipsapplication/x-rarsapplication/x-tarsapplication/x-gzipsapplication/x-bzip2sapplication/x-cbzsapplication/x-cbrsapplication/x-cbttitem_activated(t_windowtgtktrecent_manager_get_defaultt_managertRecentChooserMenut__init__t set_sort_typetRECENT_SORT_MRUt set_show_tipstTruet RecentFiltertadd_pixbuf_formatst add_mime_typet add_filtertconnectt_load(tselftuitwindowtrfilter((sF/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/recent.pyR s$              cGs6|i}ti|d}|iii|dS(Ni(tget_current_uriturllibt url2pathnameRt file_handlert open_file(Rtargsturitpath((sF/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/recent.pyR#s cCs=tidpdSndti|}|ii|dS(Nsstore recent file infosfile://(t preferencestprefsRt pathname2urlRtadd_item(RRR((sF/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/recent.pytadd(s(t__name__t __module__RRR"(((sF/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/recent.pyR s  (t__doc__RRRRR(((sF/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/recent.pyss   comix-4.0.4/src/properties.pyc0000644000175000001440000001547011165455545015255 0ustar sorkusers פ5Ic@sdZddkZddkZddkZyddkZWnej onXddkZddkZddkZddk Z ddk Z ddk Z da deifdYZdeifdYZdZdZdS( s"properties.py - Properties dialog.iNt_PagecBs;eZdZdZdZdZdZdZRS(s`A page to put in the gtk.Notebook. Contains info about a file (an image or an archive.) cCs0tii|td|idtitd}|i|tti|_|i|ittti }|i ti ti i d|idd|i|ti }|id|i ti ti i d|i|titd|_|iid|i|idS( Ni s#333iiis#ddbii (tgtktVBoxt__init__tFalsetset_border_widthtHBoxt pack_starttImaget_thumbtEventBoxt modify_bgt STATE_NORMALtgdkt color_parsetset_size_requesttaddt_mainbox(tselfttopboxt borderboxt insidebox((sJ/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/properties.pyRs"      cCs&ti|d}|ii|dS(Ni(timaget add_borderR tset_from_pixbuf(Rtpixbuf((sJ/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/properties.pyt set_thumbnail1scCsXtiti|}|idd|ii|tt|iiti dS(sbSet the filename to be displayed to . Call this before set_main_info(). ig?N( tlabelst BoldLabeltencodingt to_unicodet set_alignmentRRRRR(Rtfilenametlabel((sJ/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/properties.pyt set_filename5scCsJxC|D];}ti|}|idd|ii|ttqWdS(stSet the information in the main info box (below the filename) to the values in the sequence . ig?N(RtLabelRRRR(RtinfottextR!((sJ/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/properties.pyt set_main_info>s c Cstitd}|i|tttitd}titd}|i|tt|i|ttx||D]t\}}tid|}|idd|i|ttti |}|idd|i|ttqvWdS(sSet the information below the main info box to the values in the sequence . Each entry in info should be a tuple (desc, value). i is%s:g?iN( RRRRRtTrueRRRR#( RR$thboxtleft_boxt right_boxtdesctvaluet desc_labelt value_label((sJ/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/properties.pytset_secondary_infoGs (t__name__t __module__t__doc__RRR"R&R/(((sJ/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/properties.pyRs    t_PropertiesDialogcBseZdZRS(c Cstii|td|dtitif|it|it|i dt |i titi }|i d|i d|ii|ttd|iidj ot}|iidddd d }|i||ii}|i|yxti|ii}td |iitd |iiti|iid |idf}|i |yt!i"|i#d}Wn"t$j ot%|i#}nXtdt&i'ti(i)|iiftdt*i+dt*i,|i-ftdt*i+dt*i,|i.ftdt/ti0|i1ftd|ff} |i2| Wnt$j onX|i3|ti4tdn|ii5} t}|iiddd d }|i|ti(i6| }|i|yVti| }|ii7\} } d| | f|ii8d|idf}|i |yt!i"|i#d}Wn"t$j ot%|i#}nXtdt&i'ti(i)| ftdt*i+dt*i,|i-ftdt*i+dt*i,|i.ftdt/ti0|i1ftd|ff} |i2| Wnt$j onX|i3|ti4td|i9dS(Nt Propertiesitresponseiiitwidthitheightis%d pagess %d commentss%.1f MiBg0AtLocationtAccesseds%Y-%m-%d, %H:%M:%StModifiedt PermissionstOwnertArchives%dx%d pxs%.1f KiBg@R(:RtDialogRt_t STOCK_CLOSEtRESPONSE_CLOSEt set_resizableRtset_has_separatortconnectt _close_dialogtset_default_responsetNotebookRtvboxRt file_handlert archive_typetNoneRt get_thumbnailRtget_pretty_current_filenameR"toststattget_path_to_basetget_number_of_pagestget_number_of_commentstarchivetget_nametst_sizeR&tpwdtgetpwuidtst_uidt ExceptiontstrRRtpathtdirnamettimetstrftimet localtimetst_atimetst_mtimetocttS_IMODEtst_modeR/t append_pageR#tget_path_to_pagetbasenametget_sizet get_mime_nametshow_all( RtwindowtnotebooktpagetthumbR tstatst main_infotuidtsecondary_infoR[R6R7((sJ/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/properties.pyR\s           !#      $!(R0R1R(((sJ/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/properties.pyR3ZscCs+tdjot|an tidS(N(t_dialogRKR3tpresent(tactionRk((sJ/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/properties.pyt open_dialogs cGs%tdj otidandS(N(RsRKtdestroy(targs((sJ/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/properties.pyREs  (R2RNR]RORVt ImportErrorRtpangoRSRRRRKRsRRR>R3RvRE(((sJ/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/properties.pyss$         CX comix-4.0.4/src/librarybackend.pyc0000644000175000001440000003617611165455545016043 0ustar sorkusers PtIc @sdZddkZyddklZWnHej o<yddklZWqqej odGHdZqqXnXddkZddkZddk Z ddk Z ei i ei dZei i ei dZdd dYZdS( s<librarybackend.py - Comic book library backend using sqlite.iN(tdbapi2s+! Could neither find pysqlite2 nor sqlite3.s library.dbtlibrary_coverstLibraryBackendcBseZdZdZdddZdZdZdZdZ dZ dZ dd Z d Z d Zd Zd ZddZdZdZdZdZdZdZdZdZdZdZdZdZRS(s_The LibraryBackend handles the storing and retrieval of library data to and from disk. cCsd}tit|_||i_t|i_|iidip|i n|iidip|i n|iidip|i ndS(NcSs#t|djo |dSn|S(s\Return rows as sequences only when they have more than one element. ii(tlen(tcursortrow((sN/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/librarybackend.pyt row_factorys spragma table_info(Book)spragma table_info(Collection)spragma table_info(Contain)( Rtconnectt_db_patht_conRtstrt text_factorytexecutetfetchallt_create_table_bookt_create_table_collectiont_create_table_contain(tselfR((sN/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/librarybackend.pyt__init__s   cCs|djoC|djo|iid}q|iidd|f}nI|djo|iid|f}n |iid|d|f}|iS(sReturn a sequence with all the books in , or *ALL* books if is None. If is not None, we only return books where the occurs in the path. s5select id from Book order by paths[select id from Book where path like ? order by paths%%%s%%sselect id from Book where id in (select book from Contain where collection = ?) order by pathsselect id from Book where id in (select book from Contain where collection = ?) and path like ? order by pathN(tNoneR R R (Rt collectiont filter_stringtcur((sN/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/librarybackend.pytget_books_in_collection0s        c Cs~y"|iid|fi}Wn tj od|GHdSnXti|dtdt}|djo d|GHn|S(srReturn a pixbuf with a thumbnail of the cover of , or None if the cover can not be fetched. s2select path from Book where id = ?s! Non-existant book #%dtcreatetdst_dirs! Could not get cover for %sN( R R tfetchonet ExceptionRt thumbnailt get_thumbnailtTruet _cover_dir(Rtbooktpathtthumb((sN/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/librarybackend.pytget_book_coverIs     cCs"|iid|f}|iS(s^Return the filesystem path to , or None if isn't in the library. s.select path from Book where id = ?(R R R(RR R((sN/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/librarybackend.pyt get_book_pathXs cCsF|iid|f}|i}|djodSnti|S(sSReturn the name of , or None if isn't in the library. s.select name from Book where id = ?N(R R RRtencodingt to_unicode(RR Rtname((sN/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/librarybackend.pyt get_book_name`s    cCs"|iid|f}|iS(s^Return the number of pages in , or None if isn't in the library. s/select pages from Book where id = ?(R R R(RR R((sN/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/librarybackend.pytget_book_pagesks cCs"|iid|f}|iS(s]Return the archive format of , or None if isn't in the library. s0select format from Book where id = ?(R R R(RR R((sN/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/librarybackend.pytget_book_formatss cCs"|iid|f}|iS(s\Return the size of in bytes, or None if isn't in the library. s.select size from Book where id = ?(R R R(RR R((sN/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/librarybackend.pyt get_book_size{s cCsE|djo|iid}n|iid|f}|iS(sReturn a sequence with all the subcollections in , or all top-level collections if is None. sdselect id from Collection where supercollection isnull order by namesaselect id from Collection where supercollection = ? order by nameN(RR R R (RRR((sN/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/librarybackend.pytget_collections_in_collections     cCs|iid}|iS(sReturn a sequence with all collections (flattened hierarchy). The sequence is sorted alphabetically by collection name. s3select id from Collection order by name(R R R (RR((sN/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/librarybackend.pytget_all_collectionss  cCsC|iid|f}|i}|djodSnt|S(seReturn the name field of the , or None if the collection does not exist. s4select name from Collection where id = ?N(R R RRtunicode(RRRR'((sN/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/librarybackend.pytget_collection_names    cCs"|iid|f}|iS(sReturn the collection called , or None if no such collection exists. Names are unique, so at most one such collection can exist. s4select id from Collection where name = ?(R R R(RR'R((sN/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/librarybackend.pytget_collection_by_names cCs"|iid|f}|iS(s+Return the supercollection of .s?select supercollection from Collection where id = ?(R R R(RRR((sN/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/librarybackend.pytget_supercollections c CsPtii|}tii|}ti|}|djotSn|\}}}ti |dt dt |i i d|fi}yY|dj o&|i i d|||||fn#|i i d|||||fWn#tij od|GHtSnX|dj o2|i i d|fi} |i| |nt S( sAdd the archive at to the library. If is not None, it is the collection that the books should be put in. Return True if the book was successfully added (or was already added). RRs.select id from Book where path = ?spupdate Book set name = ?, pages = ?, format = ?, size = ? where path = ?sqinsert into Book (name, path, pages, format, size) values (?, ?, ?, ?, ?)s&! Could not add book %s to the librarys2select id from Book where path = ?N(tosR!tabspathtbasenametarchivetget_archive_infoRtFalseRRRRR R RRtErrortadd_book_to_collection( RR!RR'tinfotformattpagestsizetoldR ((sN/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/librarybackend.pytadd_books0         cCsDy|iid|ftSWntij od|GHnXtS(swAdd a new collection with to the library. Return True if the collection was successfully added. s8insert into Collection (name) values (?)s! Could not add collection %s(R R RRR8R7(RR'((sN/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/librarybackend.pytadd_collections  cCs^y|iid||fWn:tij on&tij od||fGHnXdS(sPut into .sDinsert into Contain (collection, book) values (?, ?)s(! Could not add book %s to collection %sN(R R Rt DatabaseErrorR8(RR R((sN/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/librarybackend.pyR9s cCsD|djo|iid|fn|iid||fdS(s}Put into , or put in the root if is None. sYupdate Collection set supercollection = NULL where id = ?sVupdate Collection set supercollection = ? where id = ?N(RR R (Rt subcollectiontsupercollection((sN/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/librarybackend.pytadd_collection_to_collections    cCs\y!|iid||ftSWn4tij on tij od|GHnXtS(s_Rename the to . Return True if the renaming was successful. s;update Collection set name = ? where id = ?s#! Could not rename collection to %s(R R RRRAR8R7(RRR'((sN/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/librarybackend.pytrename_collections cCs|i|}|djotSn|dtd}x)|i|o|dtd}q;W|i|djotSn|iid|fi}|iid||ft S(sDuplicate the by creating a new collection containing the same books. Return True if the duplication was successful. t s(Copy)s4select id from Collection where name = ?syinsert or ignore into Contain (collection, book) select ?, book from Contain where collection = ?N( R/RR7t_R0R@R R RR(RRR't copy_nametcopy_collection((sN/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/librarybackend.pytduplicate_collections   cCsc|i|}|dj oti|dtn|iid|f|iid|fdS(s#Remove the from the library.Rsdelete from Book where id = ?s"delete from Contain where book = ?N(R$RRtdelete_thumbnailRR R (RR R!((sN/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/librarybackend.pyt remove_books  cCsF|iid|f|iid|f|iid|fdS(s6Remove the (sans books) from the library.s#delete from Collection where id = ?s(delete from Contain where collection = ?sRupdate Collection set supercollection = NULL where supercollection = ?N(R R (RR((sN/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/librarybackend.pytremove_collection#s    cCs|iid||fdS(s Remove from .sAdelete from Contain where book = ? and collection = ?N(R R (RR R((sN/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/librarybackend.pytremove_book_from_collection+s cCs|ii|iidS(s!Commit changes and close cleanly.N(R tcommittclose(R((sN/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/librarybackend.pyRP0s cCs|iiddS(Nscreate table book ( id integer primary key, name string, path string unique, pages integer, format integer, size integer, added date default current_date)(R R (R((sN/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/librarybackend.pyR5s cCs|iiddS(Nscreate table collection ( id integer primary key, name string unique, supercollection integer)(R R (R((sN/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/librarybackend.pyR?s cCs|iiddS(Nscreate table contain ( collection integer not null, book integer not null, primary key (collection, book))(R R (R((sN/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/librarybackend.pyREs N(t__name__t __module__t__doc__RRRR#R$R(R)R*R+R,R-R/R0R1R?R@R9RDRERJRLRMRNRPRRR(((sN/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/librarybackend.pyRs6          "       ((RSR2tsqlite3Rt ImportErrort pysqlite2RR5t constantsR%RR!tjointDATA_DIRRRR(((sN/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/librarybackend.pyss      comix-4.0.4/src/library.pyc0000644000175000001440000011562611165455545014531 0ustar sorkusers \jIc@sdZddkZddkZddkZddklZddkZddkZddk Z ddk Z ddk Z ddk Z ddk Z ddkZddkZddkZddklZddkZeadZed\ZZZdeifdYZdeifd YZd eifd YZd ei fd YZ!dei"fdYZ#dZ$dZ%dS(s library.py - Comic book library.iN(tescape(tprefsit_LibraryDialogcBs>eZdZdZdZdZdZddZRS(slThe library window. Automatically creates and uses a new librarybackend.LibraryBackend when opened. c Cstii|ti|itdtd|itd|id|i d|_ ||_ ti |_|iitti|_t||_t||_t||_tiddt}|i|iddddtititiB|i|iddddtitiBtitiB|i|iddddtitiBti|i|iddddtiti|i||i dS( Nslib window widthslib window heighttLibraryt delete_eventiiii(!tgtktWindowt__init__tWINDOW_TOPLEVELtresizeRt set_titlet_tconnecttclosetNonet filter_stringt _file_handlert Statusbart _statusbartset_has_resize_griptTruetlibrarybackendtLibraryBackendtbackendt _BookAreat book_areat _ControlAreat control_areat_CollectionAreatcollection_areatTabletFalsetattachtFILLtEXPANDtaddtshow_all(tselft file_handlerttable((sG/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/library.pyR#s,  %% ( cCsE|ii|}|djodSn|i|ii|dS(sOpen the book with ID .N(Rt get_book_pathRR Rt open_file(R%tbooktpath((sG/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/library.pyt open_book=s   cCs4|iid|iiddti|dS(s_Set a specific message on the statusbar, replacing whatever was there earlier. is %sN(Rtpoptpushtencodingt to_unicode(R%tmessage((sG/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/library.pytset_status_messageEscGsV|i\td to the library. If is not None, it is the name of a (new or existing) collection the books should be put in. slast library collectionN(RRtget_collection_by_nametadd_collectiont_AddBooksProgressDialogRRtdisplay_collections(R%tpathstcollection_namet collection((sG/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/library.pyt add_booksUs      N( t__name__t __module__t__doc__RR,R2R RR@(((sG/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/library.pyRs     RcBseZdZdZdZdZdZdZddZ dZ dZ d Z d Z d Zd Zd ZdZdZRS(stThe _CollectionArea is the sidebar area in the library where different collections are displayed in a tree. c CsWtii|||_|ititititt |_ ti |i |_ |i i d|i|i i d|i|i i d|i|i id|i|i i d|i|i i d|i|i i d|i|i it|i it|it|i itiidtitfgtii ti!}ti"d|d d }|i i$||i%|i ti&|_'d }|i'i(|ti)d }|i*d dt+ddd|i,fdti-t+ddd|i.fdti/t+ddd|i0fg|i'i1|d |i2dS(Ntcursor_changedtdrag_data_receivedt drag_motiont drag_begintbutton_press_eventtkey_press_eventt row_activatedR?tmarkupis scomix-library-collection-areatrenames Rename...t duplicatesDuplicate collectiontremovesRemove collection...(3RtScrolledWindowRt_libraryt set_policyt POLICY_NEVERtPOLICY_AUTOMATICt TreeStoretstrtintt _treestoretTreeViewt _treeviewR t_collection_selectedt_drag_data_receivedt _drag_motiont connect_aftert _drag_begint _button_presst _key_presst_expand_or_collapse_rowtset_headers_visibleRtset_rules_hintRt_set_acceptable_droptenable_model_drag_sourcetgdkt BUTTON1_MASKtTARGET_SAME_WIDGETt_DRAG_COLLECTION_IDt ACTION_MOVEtCellRendererTexttTreeViewColumnRt append_columnR#t UIManagert _ui_managertadd_ui_from_stringt ActionGroupt add_actionsR t_rename_collectiont STOCK_COPYt_duplicate_collectiont STOCK_REMOVEt_remove_collectiontinsert_action_groupR<(R%tlibraryt cellrenderertcolumntui_descriptiont actiongroup((sG/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/library.pyRosF       cCs5|ii}|djodSn|i|dS(svReturn the collection ID for the currently selected collection, or None if no collection is selected. Ni(RYt get_cursorRt_get_collection_at_path(R%tcursor((sG/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/library.pytget_current_collections c sfdfd}fd}gii|iiiiddttdtgddii |dS(sTDisplay the library collections by redrawing them from the backend data. Should be called on startup or when the collections hierarchy has been changed (e.g. after moving, adding, renaming). Any row that was expanded before the call will have it's corresponding new row also expanded after the call. csgx`iii|D]I}iii|}ii|t||g}||qWdS(N(RPRtget_collections_in_collectiontget_collection_nameRWtappendt xmlescape(t parent_itert supercolltcolltnamet child_iter(R%t_recursive_add(sG/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/library.pyRs csv|i|d}|tdjo.dtd<ii|ii|n"|joii|ndS(Nislast library collection(t get_valueRRRYtexpand_to_patht set_cursor(t treestoreR+titeratorR?(texpanded_collectionsR%(sG/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/library.pyt_expand_and_selects  cs i|}i|dS(N(RR(ttreeviewR+R?(R%R(sG/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/library.pyt_expanded_rows_accumulatorss %ss All booksN( RYtmap_expanded_rowsRWtclearRRRR t_COLLECTION_ALLtforeach(R%RR((RR%RsG/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/library.pyR<s    cCs%|ii|}|ii|dS(sUReturn the collection ID of the collection at the (TreeView) . i(RWtget_iterR(R%R+R((sG/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/library.pyRscCsY|i}|djp|tdjodSn|td is True.R*R?N( RYtenable_model_drag_destRtTARGET_SAME_APPRRhRiRfRj(R%t acceptable((sG/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/library.pyRds  cCs|id}|i|}tiitiitd|i}|i||i dddd|i}|i |dddS(sCreate a cursor image for drag-n-drop of collections. We use the default one (i.e. the row with text), but put the hotspot in the top left corner so that one can actually see where one is dropping, which unfortunately isn't the default case. iiiN( R~tcreate_row_drag_iconRRftPixbuftCOLORSPACE_RGBRR3tget_from_drawablet get_colormaptset_icon_pixbuf(R%RRR+tpixmaptpointer((sG/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/library.pyR^sN(RARBRCRRR<RRZRRwRsRuR_R`RaR[R\RdR^(((sG/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/library.pyRis  1 &   $     F RcBseZdZdZdZdZdZdZdZdZ dZ d Z d Z d Z d Zd ZdZdZdZdZRS(s^The _BookArea is the central area in the library where the book covers are displayed. c Csotii|||_t|_|ititititi i t |_ ti |i |_|iid|iid|i|iid|i|iid|i|iid|i|iid|i|iid|i|iid|i|iititi i|iidd titfgti i|ii ti!d dt"fgti i#ti iB|ii$ti%|i&|iti'|_(d }|i(i)|ti*d }|i+d ti,t-ddd|i/fdti0t-ddd|i1fdti2t-ddd|i3fg|i(i4|ddS(Nititem_activatedtselection_changedRGt drag_data_getRERHRIR*s text/uri-lists scomix-library-book-areatopentOpensremove from collectionsRemove from this collectionsremove from librarysRemove from the library...(5RRORRPRt _stop_updateRQRSt ListStoreRfRRVt _liststoretIconViewt _iconviewtset_pixbuf_columnR t_book_activatedt_selection_changedR]R^t_drag_data_getR[R_R`t modify_baset STATE_NORMALtColorReRRRjt drag_dest_settDEST_DEFAULT_ALLt_DRAG_EXTERNAL_IDt ACTION_COPYtset_selection_modetSELECTION_MULTIPLER#RnRoRpRqRrt STOCK_OPENR Rtopen_selected_bookRvt_remove_books_from_collectiont STOCK_DELETEt_remove_books_from_libraryRx(R%RyR|R}((sG/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/library.pyRsJ         cCs|ii|iidS(s6Run clean-up tasks for the _BookArea prior to closing.N(Rt unselect_allRR(R%((sG/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/library.pyR s cCst|_|ii|tjo d}nxt|iii ||ii D]b\}}|i ||ddjo8xt i ot itqW|iodSqqRqRWt|_dS(s2Display the books in in the IconView.iiN(RRRRRRt enumerateRPRtget_books_in_collectionRt _add_bookRtevents_pendingtmain_iterationR(R%R?tiR*((sG/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/library.pyRs        cCs t|_dS(s4Signal that the updating of book covers should stop.N(RR(R%((sG/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/library.pyR4scCs&|ii|}|ii|dS(s\Remove the book at from the ListStore (and thus from the _BookArea). N(RRRN(R%R+R((sG/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/library.pyRscCs%|ii|}|ii|dS(s8Return the book ID corresponding to the IconView .i(RRR(R%R+R((sG/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/library.pyRscGs?|ii}|pdSn|d}|i|i|dS(s!Open the currently selected book.Ni(Rtget_selected_itemsR(R%R8tselectedR+((sG/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/library.pyRs  cCs|iii|}|djo|iititi}nti |t dt dt d}ti |dd}|i i||gdS(s<Add the to the ListStore (and thus to the _BookArea).gq= ףp?slibrary cover sizeilN(RPRtget_book_coverRt render_iconRtSTOCK_MISSING_IMAGEtICON_SIZE_DIALOGtimagetfit_in_rectangleRVRt add_borderRR(R%R*tpixbuf((sG/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/library.pyR&s   cCs#|i|}|ii|dS(s(Open the book at the (liststore) .N(RRPR,(R%ticonviewR+R*((sG/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/library.pyR3scCs#|i}|iii|dS(s[Update the displayed info in the _ControlArea when a new book is selected. N(RRPRt update_info(R%R'R((sG/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/library.pyR8s cGs|iii}|tjodSn|ii}x@|D]8}|i|}|iii|||i |q=W|iii |}|ii t dht |d<|d<dS(suRemove the currently selected book(s) from the current collection, and thus also from the _BookArea. Ns.Removed %(num)d book(s) from '%(collection)s'.tnumR?(RPRRRRRRRRRRR2R R(R%R8R?RR+R*t coll_name((sG/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/library.pyR?s   cGsti|idtititd}|itd|i}|i|ti jos|i i }x=|D]5}|i |}|ii i||i|qyW|iitdt|ndS(sRemove the currently selected book(s) from the library, and thus also from the _BookArea, if the user clicks 'Yes' in a dialog. isRemove books from the library?sThe selected books will be removed from the library (but the original files will be untouched). Are you sure that you want to continue?s$Removed %d book(s) from the library.N(RRRPRRR RRRRRRRRt remove_bookRR2R(R%R8RRRR+R*((sG/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/library.pyRPs      cCso|it|it|i}|djodSn|itiijo|i ||n|i djo|i |p|i |i |nt|idjo|iiditn|iidit|iiitjo|iiditn|iidit|iididdd|i |indS(s-Handle mouse button presses on the _BookArea.Niis /Popup/opens/Popup/remove from collections/Popup(RRVRRRttypeRRft_2BUTTON_PRESSRRtpath_is_selectedRt select_pathRRRoRRRRRPRRRRRR(R%R'RR+((sG/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/library.pyR_ds($     cCs(|itiijo|indS(s$Handle key presses on the _BookArea.N(RRRRR(R%R'R((sG/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/library.pyR`scCs|id}t|i}|i|}|iii|}|djo|iit i t i }n|i t d|idt d|idt ii}ti|dd}ti|d}|djo|i}|i}t iit iitdt d|dt d|d} | id|i| dd||ddddt iid tid dd} ti| } | idd ddd| idd dddt|} | iddt| ddf| d dti | } | i| t d|dt d|d ddt d|dt d|d ddt iid n|} |i!| dddS(s'Create a cursor image for drag-n-drop from the library. This method relies on implementation details regarding PIL's drawing functions and default font to produce good looking results. If those are changed in a future release of PIL, this method might produce bad looking output (e.g. non-centered text). It's also used with connect_after() to overwrite the cursor automatically created when using enable_model_drag_source(), so in essence it's a hack, but at least it works. iiiliiii itRGBAiitfilltoutlineiiii iN(ii(iiiiiiiiiiiiiiii(iii(iii(iiiiiiiiiiiiiiii(iii(iii(iii("R~RRRRPRRRR RR!R"t scale_simpletmaxt get_widtht get_heightRft INTERP_TILESR#R%RRRR1t compositetImagetnewt ImageDrawtDrawtpolygonRUttextt pil_to_pixbufR(R%R'Rt icon_patht num_booksR*tcovert cover_widtht cover_heightRtimtdrawR>tcircle((sG/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/library.pyR^sH  %   &    '&*c GsW|i}dig}|D]}|t|dq~}|idd|dS(sFill the SelectionData with (iconview) paths for the dragged books formatted as a string with each path separated by a comma. Ris text/plainiN(RtjoinRUtset( R%R'RRR8R=t_[1]R+R>((sG/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/library.pyRs 4c Gs|i}|pdSng}x|D]|} | ido| d} n=| ido| d} n| ido| d} nti| } |i| q(W|iii} |iii | } |ii || dS(ssHandle drag-n-drop events ending on the book area (i.e. from external apps like the file manager). Nsfile://localhost/isfile:///isfile:/i( tget_urist startswithturllibt url2pathnameRRPRRRRR@( R%twidgetRRRtdataR8turisR=turiR+R?R>((sG/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/library.pyR[s" (RARBRCRR RR4RRRRRRRRR_R`R^RR[(((sG/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/library.pyRs$ 2            5 RcBsDeZdZdZdZdZdZdZdZRS(sThe _ControlArea is the bottom area of the library window where information is displayed and controls such as buttons resides. c Cs||_tii|td|idti}|ititi i d|i ddti}|id|ititi i dti td}|id|i |tt|i||i|ti|_|iiti|iid d |i |ittti|_|iiti|iid d |i |ittti|_|iiti|iid d |i |ittti|_|iiti|iid d |i |ittti td}|i |tttit}|i |tttid td }|i |ttti}|id |i|itd|i |ttdtid td}|i |ttdti t!dddddd } ti"| } | i dd| i#t| id|i$|i | tt|i titttitd}|i |ttti%td} | i&ti'ti(ti)| id|i*| itd|i | ttti%td} | id|i+| i&ti'ti(ti)| itd|i | tt|i tittti%dti-|_.|i.id|ii/i0|i.itd|i.i1t|i |i.ttdS(Ni i s#333i^iis#ddbiig?s%s:tSearchtactivatesrDisplay only those books that have the specified text string in their full path. The search is not case sensitive.is Cover sizeslibrary cover sizei2iit value_changeds Add bookstclickedsAdd more books to the library.sAdd collectionsAdd a new empty collection.sOpen the selected book.(2RPRRRRtset_border_widthtEventBoxt modify_bgR Rft color_parsetset_size_requesttVBoxRR#tlabelst BoldLabelt _namelabelt set_ellipsizetpangotELLIPSIZE_MIDDLEt set_alignmenttLabelt _pageslabelt _filelabelt _dirlabelRR RR t _filter_bookstset_tooltip_textt AdjustmentRtHScaletset_draw_valuet_change_cover_sizetButtont set_imagetimage_new_from_stockt STOCK_ADDtICON_SIZE_BUTTONt _add_bookst_add_collectionRRt _open_buttonRRR( R%Ryt borderboxt insideboxtinfoboxRthboxtlabelt search_entryt adjustmenttcover_size_scaletadd_book_buttontadd_collection_button((sG/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/library.pyRs                cCs|iit|o|iii|d}|iii|}ti i |iii |}|iii |}|iii |}|iii|}nd}}}}}t|djo|iitn|dj o|iiti|n|iid|dj o|iitd|n|iid|dj o<|dj o/|iidti|d|dfn|iid|dj o|iiti|n|iiddS( s]Update the info box using the currently books from the _BookArea. iiRs%d pagess%s, %ss%.1f MiBg0AN(RuRRRPRRRt get_book_nametosR+tdirnameR(tget_book_formattget_book_pagest get_book_sizeRRRR_RR/R0ReR Rftarchivetget_nameRg(R%RR*Rtdir_pathtformattpagestsize((sG/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/library.pyR(+s2    cGsti|idS(s[Open up a filechooser dialog from which books can be added to the library. N(R5topen_library_filechooser_dialogRP(R%R8((sG/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/library.pyRsNsc Gstid dtititd}|itd|ititi }|i i |ti }|i td|it|i |ttd|i|i}|i}|i|tijo|o|iii|o3|iii|}|td<|iiiqtd|}|iii|d j od|td f}n|ii|nd S( s6Add a new collection to the library, through a dialog.isAdd new collection?s+Please enter a name for the new collection.sNew collectionislast library collections+Could not add a new collection called '%s'.s%s %ss)A collection by that name already exists.N(RRRRRR RRRRRRRRRRR$RRRRPRR:R9RRR<R2( R%R8t add_dialogRRRRR?R1((sG/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/library.pyRtTs6           cGs^|i|i_|iipd|i_n|iii}ti|iii |dS(sDisplay only the books in the current collection whose paths contain the string in the gtk.Entry. The string is not case-sensitive. N( RRPRRRRRRRR(R%RR8R?((sG/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/library.pyRhus  cCsEt|itd<|iii}ti|iii |dS(s/Change the size of the covers in the _BookArea.slibrary cover sizeN( RVRRRPRRRRRR(R%tscaleR?((sG/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/library.pyRms( RARBRCRR(RsRtRhRm(((sG/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/library.pyRs N #  ! R;cBs eZdZdZdZRS(s9Dialog with a ProgressBar that adds books to the library.cCstii|td|tititift|_|i dd|i t|i t|i d|i d|i|itititd}|i d|ii|tttitd}|i|ttdtitd}titd}|i|tt|i|tttid td }|id d |i|tttid } | id d |i| ttti} |i| ttti} | id d| iti|i| tt|itt |} d } xt!|D]\}}|i"i#||o| d7} | i$d| n| i$tdt%i&|| i'|d| xti(oti)tqW|iodSq6q6W|idS(skAdds the books at to the library, and also to the , unless it is None. s Adding booksiiiRiii s%s:s Added booksg?t0ig?is%dsAdding '%s'...N(*RtDialogRR t DIALOG_MODALt STOCK_STOPtRESPONSE_CLOSERt_destroyR[tset_has_separatort set_resizableRWR t _responseRR\RRRRR]R^RcRdt ProgressBart ItalicLabelR`RaRbR$tfloatRRRtadd_bookRR/R0t set_fractionRR(R%RyR=R?tmain_boxRytleft_boxt right_boxRzt number_labeltbart added_labelt total_pathst total_addedRR+((sG/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/library.pyRs^             cGst|_|idS(N(RRR(R%R8((sG/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/library.pyRs (RARBRCRR(((sG/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/library.pyR;s 7cCsDtdjo)tidjo dGHq@t|an tidS(Ns0! You need an sqlite wrapper to use the library.(t_dialogRRtdbapi2Rtpresent(Rtwindow((sG/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/library.pyt open_dialogs   cGs/tdj otidatindS(N(RRRtgctcollect(R8((sG/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/library.pyR7s  (&RCRRRMtxml.sax.saxutilsRRRRRaR9R;RR/R5R]Rt preferencesRR#RRRtrangeR RRiRRRORRRRRR;RR7(((sG/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/library.pyss8              LT@ comix-4.0.4/src/filechooser.pyc0000644000175000001440000003320511165455545015357 0ustar sorkusers BIc @sdZddkZddkZddkZddkZddkZddkZddklZddk Z da da dei fdYZdefdYZdefd YZd efd YZd Zd ZdZdZdS(s:filechooser.py - Custom FileChooserDialog implementations.iN(tprefst_ComicFileChooserDialogcBsPeZdZdZeidZdZdZ dZ dZ dZ RS(siWe roll our own FileChooserDialog because the one in GTK seems buggy with the preview widget. The argument dictates what type of filechooser dialog we want (i.e. it is gtk.FILE_CHOOSER_ACTION_OPEN or gtk.FILE_CHOOSER_ACTION_SAVE). This is a base class for the _MainFileChooserDialog, the _LibraryFileChooserDialog and the StandAloneFileChooserDialog. Subclasses should implement a method files_chosen(paths) that will be called once the filechooser has done its job and selected some files. If the dialog was closed or Cancel was pressed, is the empty list. c Cs||_|tijo.td}titititif}n+td}titititif}ti i ||dd||i ti|i ttid||_|iidd|ii|i|id|iid|id |i|iid |itititd }|id dti|_|iid d |i|itt|ii|tid tidti|_ |i i!ti"|i|i tttidti|_#|i#i!ti"|i|i#tt|ii$t|i%|iid|i&ti'}|i(d|i)td|ii*||i*tdd |i*tdd!|i*tdd"|i*tdd#yy|i+i,dj o3t-i.i/|i+i,o|ii0|i+i,n0t-i.i1t2do|ii3t2dnWnt4j onX|i%dS($NtOpentSaveitactioniiiitresponsetfile_activatedi itweighttscalesupdate-previewt*s All filess All Archivessapplication/x-zipsapplication/zipsapplication/x-rarsapplication/x-tarsapplication/x-gzipsapplication/x-bzip2sapplication/x-cbzsapplication/x-cbrsapplication/x-cbts ZIP archivess RAR archivess Tar archivess#path of last browsed in filechooser( sapplication/x-zipsapplication/zipsapplication/x-rarsapplication/x-tarsapplication/x-gzipsapplication/x-bzip2sapplication/x-cbzsapplication/x-cbrsapplication/x-cbt(sapplication/x-zipsapplication/zipsapplication/x-cbz(sapplication/x-rarsapplication/x-cbr(sapplication/x-tarsapplication/x-gzipsapplication/x-bzip2sapplication/x-cbt(5t_actiontgtktFILE_CHOOSER_ACTION_OPENt_t STOCK_CANCELtRESPONSE_CANCELt STOCK_OPENt RESPONSE_OKt STOCK_SAVEtDialogt__init__tNonetset_default_responsetset_has_separatortFalsetFileChooserWidgett filechoosertset_size_requesttvboxt pack_starttset_border_widthtconnectt _responsetVBoxtImaget_preview_imagetset_preview_widgettlabelstFormattedLabeltpangot WEIGHT_BOLDt SCALE_SMALLt _namelabelt set_ellipsizetELLIPSIZE_MIDDLEt _sizelabeltset_use_preview_labeltshow_allt_update_previewt FileFiltert add_patterntset_namet add_filtert __class__t_last_activated_filetostpathtisfilet set_filenametisdirRtset_current_foldert Exception(tselfRttitletbuttonst preview_boxtffilter((sK/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/filechooser.pyR#sz             cCsKti}x|D]}|i|qW|i||ii|dS(s_Add a filter, called , for each mime type in to the filechooser. N(R R1t add_mime_typeR3RR4(R>tnametmimesRBtmime((sK/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/filechooser.pyR4is   cCs|ii|dS(N(Rtset_current_name(R>RD((sK/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/filechooser.pyt set_save_namesscCs|ii|dS(N(RR<(R>R8((sK/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/filechooser.pytset_current_directoryvsc Cs}|tijo\|ii}t|djo@tii|do)|ii|d|i ddSn|pdSn|i ti jotii |doti ddtititdtii|d}|itd|i}|i|tijo|i ddSq8n|iitd<|d|i_|i|n|igdS(szReturn a list of the paths of the chosen files, or None if the event only changed the current directory. iiRNs<A file named '%s' already exists. Do you want to replace it?s)Replacing it will overwrite its contents.s#path of last browsed in filechooser(R RRt get_filenamestlenR7R8R;R<temit_stop_by_nameR tFILE_CHOOSER_ACTION_SAVEtexistst MessageDialogRtMESSAGE_QUESTIONtBUTTONS_OK_CANCELR tbasenametformat_secondary_texttruntdestroytget_current_folderRR5R6t files_chosen(R>twidgetRtpathstoverwrite_dialog((sK/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/filechooser.pyR ys2*         cGs|ii}|otii|oti|td}|djo1|i i |i i d|i i dqti|d}|i i||i i titii||i i dti|idn.|i i |i i d|i i ddS(Nscreate thumbnailstis%.1f KiBg@(Rtget_preview_filenameR7R8R9t thumbnailt get_thumbnailRRR#tclearR*tset_textR-timaget add_bordertset_from_pixbuftencodingt to_unicodeRRtstattst_size(R>targsR8tpixbuf((sK/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/filechooser.pyR0s     N( t__name__t __module__t__doc__RR6R R RR4RHRIR R0(((sK/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/filechooser.pyRs F   "t_MainFileChooserDialogcBs eZdZdZdZRS(s=The normal filechooser dialog used with the "Open" menu item.cCsti|||_|i|ti}|i|itd|i i ||i tdd|i tdd |i i }y|i i |t dWn|i i |dnXdS( Ns All imagess JPEG imagess image/jpegs PNG imagess image/pngslast filter in main filechooseri(s image/jpeg(s image/png(RRt_windowtset_transient_forR R1tadd_pixbuf_formatsR3R RR4t list_filterst set_filterR(R>twindowRBtfilters((sK/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/filechooser.pyRs      cCsm|o[y/|iii|ii}|tdRYt filter_index((sK/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/filechooser.pyRWs(RjRkRlRRW(((sK/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/filechooser.pyRms t_LibraryFileChooserDialogcBs)eZdZdZdZdZRS(s=The filechooser dialog used when adding books to the library.c Csti|||_|i||iit|iid|it i dt dt |_ |i itdt i|_|iiitx?|iiiD]+}|iii|}|ii|qWt it d}|i|i t t |i|itt|i|ii||ii}y|ii|tdWn'tj o|ii|dnXdS(Ntcurrent_folder_changeds%s:s.Automatically add the books to this collectionsauto add books into collectionsis"last filter in library filechooseri(RRt_libraryRoRtset_select_multipletTrueRt_set_collection_nameR t CheckButtonR Rt_collection_buttont set_activeRtcombo_box_entry_new_textt _comboentrytchildtset_activates_defaulttbackendtget_all_collectionstget_collection_namet append_texttHBoxRR/tset_extra_widgetRqRrR=(R>tlibraryt collectionRDtcollection_boxRt((sK/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/filechooser.pyRs8           cGs2tii|ii}|iii|dS(sXSet the text in the ComboBoxEntry to the name of the current directory. N(R7R8RRRRVRRR`(R>RhRD((sK/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/filechooser.pyRscCs|o|iio.ttd<|ii}|p d}qUnttdRYtcollection_nameRz((sK/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/filechooser.pyRW s"  (RjRkRlRRRW(((sK/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/filechooser.pyR{s % tStandAloneFileChooserDialogcBs/eZdZeidZdZdZRS(sA simple filechooser dialog that is designed to be used with the gtk.Dialog.run() method. The dictates what type of filechooser dialog we want (i.e. save or open). If the type is an open-dialog, we use multiple selection by default. cCsti|||tijo|iitnd|_ti }|i |i t d|ii ||i t dd|i t dddS(Ns All imagess JPEG imagess image/jpegs PNG imagess image/png(s image/jpeg(s image/png(RRR R RR~RRt_pathsR1RpR3R R4(R>RRB((sK/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/filechooser.pyR(s   cCs|iS(s]Return the selected paths. To be called after run() has returned a response. (R(R>((sK/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/filechooser.pyt get_paths5scCs ||_dS(N(R(R>RY((sK/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/filechooser.pyRW;s(RjRkRlR R RRRW(((sK/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/filechooser.pyR s cCs+tdjot|an tidS(s!Open the main filechooser dialog.N(t_main_filechooser_dialogRRmtpresent(RRs((sK/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/filechooser.pytopen_main_filechooser_dialog?s cGs%tdj otidandS(s"Close the main filechooser dialog.N(RRRU(Rh((sK/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/filechooser.pyRwHs  cCs+tdjot|an tidS(s$Open the library filechooser dialog.N(t_library_filechooser_dialogRR{R(R((sK/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/filechooser.pytopen_library_filechooser_dialogPs cGs%tdj otidandS(s%Close the library filechooser dialog.N(RRRU(Rh((sK/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/filechooser.pyRYs  (RlR7R R'RdRaR%t preferencesRR]RRRRRRmR{RRRwRR(((sK/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/filechooser.pyss$       *F  comix-4.0.4/src/edit.pyc0000644000175000001440000003533011165455545014003 0ustar sorkusers \jIc@sdZddkZddkZddkZddkZddkZddkZddkZddkZddk Z ddk Z ddk Z ddk Z dadeifdYZdeifdYZdeifdYZd Zd ZdS( sedit.py - Archive editor.iNt_EditArchiveDialogcBs2eZdZdZdZdZdZRS(sThe _EditArchiveDialog lets users edit archives (or directories) by reordering images and removing and adding images or other files. The result can be saved as a ZIP archive. cCstii|td|tititift|_|i |_ ||_ |i ti ti |_|i tdti|_|iitititi|it|id|ittiiiddttiiidd|id|it||_ t!||_"ti#}|id|i$|i ti%td |i$|i"ti%td |i&i'||i(t)i*|i+dS( Ns Edit archivetImportii2iiXtresponseitImagess Other files(,tgtktDialogt__init__t_t DIALOG_MODALt STOCK_CANCELtRESPONSE_CANCELtFalsetkillt file_handlert_windowt add_buttont STOCK_SAVE_ASt RESPONSE_OKt _save_buttont RESPONSE_HELPt_import_buttont set_imagetimage_new_from_stockt STOCK_ADDtICON_SIZE_BUTTONtset_has_separatortset_border_widthtresizetmintgdktscreen_get_defaultt get_widtht get_heighttconnectt _responset _ImageAreat _image_areat _OtherAreat _other_areatNotebookt append_pagetLabeltvboxt pack_starttshow_alltgobjecttidle_addt_load_original_files(tselftwindowtnotebook((sD/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/edit.pyRs.      %#  "" cCs|iit|iit|iitiitii |i i |i otSn|i i|iid|iit|iittS(s\Load the original files from the archive or directory into the edit dialog. N(Rt set_sensitiveR RR1t set_cursorRRtCursortWATCHR$t fetch_imagesR R&tfetch_commentstNonetTrue(R0((sD/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/edit.pyR/9s"   c Cs|it|iitiitiixtioti tq2W|i i }|i i }yHt iddtii|dddtii|d}t}Wn t}nX|pvti|||tiitii|d}|i|i}|oti||tqDt}n|or|iid ti|idtitit d}|i!t d |i"|i#|itnd S( s+Create a new archive with the chosen files.tsuffixs.%stprefixstmp.tdiriis#The new archive could not be saved!s)The original files have not been removed.N($R3R R1R4RRR5R6tevents_pendingtmain_iterationR$tget_file_listingR&ttempfiletmkstemptostpathtbasenametdirnameR:tarchivetPackertsplitexttpacktwaittrenamet _close_dialogR9t MessageDialogRt MESSAGE_ERRORt BUTTONS_CLOSERtformat_secondary_texttruntdestroy( R0t archive_patht image_filest other_filesttmp_pathtfailtpackertpacking_successtdialog((sD/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/edit.pyt _pack_archiveIs@ "    %       cCs|tijotiti}|ii}|iti i ||i dti i ti i |d|iititd|i|i}|i|o|i|dqn|tijoti}|i|i}|ixm|D]Q}ti|o|ii|qti i|o|ii|qqWntt|_dS(Ns%s.cbzis!Archives are stored as ZIP files.( RRt filechoosertStandAloneFileChooserDialogtFILE_CHOOSER_ACTION_SAVER tget_path_to_basetset_current_directoryRCRDRFt set_save_nameRIREtset_extra_widgetR)RRRt get_pathsRSR\Rt filehandlert is_image_fileR$tadd_extra_imagetisfileR&tadd_extra_fileRMR:R (R0R[Rtsrc_pathtpathsRD((sD/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/edit.pyR"ls6        (t__name__t __module__t__doc__RR/R\R"(((sD/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/edit.pyRs    #R#cBsVeZdZdZdZdZdZdZdZdZ dZ RS( s6The area used for displaying and handling image files.cCsptii|||_|ititititiit t |_ ti |i |_ |i i d|i id|i it|i iti|i id|i|i id|i|i id|i|i|i ti|_d}|ii|tid}|idtitd dd|i!fg|ii"|ddS( Niitbutton_press_eventtkey_press_eventt drag_begins scomix-edit-archive-image-areatremovesRemove from archive(#RtScrolledWindowRt _edit_dialogt set_policytPOLICY_AUTOMATICt ListStoreRtPixbuftstrt _liststoretIconViewt _iconviewtset_pixbuf_columntset_tooltip_columntset_reorderableR:tset_selection_modetSELECTION_MULTIPLER!t _button_presst _key_presst connect_aftert _drag_begintaddt UIManagert _ui_managertadd_ui_from_stringt ActionGroupt add_actionst STOCK_REMOVERR9t _remove_pagestinsert_action_group(R0t edit_dialogtui_descriptiont actiongroup((sD/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/edit.pyRs* cCsxtd|iiidD]}|iii|dddt}ti|dd}|iii|}|i i |t i t ii||g|ddjo;xtiotitqW|iiodSqq q WdS( s0Load all the images in the archive or directory.iiCidtcreateiUUUi iN(txrangeRtR tget_number_of_pagest get_thumbnailR timaget add_bordertget_path_to_pageRztappendtencodingt to_unicodeRCRDRERR>R?R (R0tpagetthumbRD((sD/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/edit.pyR7s   "  cCsti|dt}|djo|ititi}nti |dd}ti |dd}|i i |t ii||gdS(s?Add an imported image (at ) to the end of the image list.RiCidiiUUUN(t thumbnailRR R9t render_iconRtSTOCK_MISSING_IMAGEtICON_SIZE_DIALOGRtfit_in_rectangleRRzRRCRDRE(R0RDR((sD/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/edit.pyRgs  cCs/g}x"|iD]}|i|dqW|S(s>Return a list with the full paths to all the images, in order.i(RzR(R0t file_listtrow((sD/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/edit.pyR@s  cGsF|ii}x0|D](}|ii|}|ii|qWdS(s2Remove the currently selected pages from the list.N(R|tget_selected_itemsRztget_iterRr(R0targsRkRDtiterator((sD/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/edit.pyRs cCs|it|it|i}|djodSn|idjoZ|i|p|i|i|n|i i di ddd|i|i ndS(s2Handle mouse button presses on the thumbnail area.Nis/Popup( tget_path_at_postinttxtyR9tbuttontpath_is_selectedt unselect_allt select_pathRt get_widgettpopupttime(R0ticonviewteventRD((sD/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/edit.pyRs$  cCs(|itiijo|indS(s)Handle key presses on the thumbnail area.N(tkeyvalRtkeysymstDeleteR(R0RR((sD/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/edit.pyRscCs|id}|i|}tiitiitd|i}|i||i dddd|i}|i |dddS(sWe hook up on drag_begin events so that we can set the hotspot for the cursor at the top left corner of the thumbnail (so that we might actually see where we are dropping!). iiiN( t get_cursortcreate_drag_iconRRRxtCOLORSPACE_RGBR:tget_sizetget_from_drawablet get_colormaptset_icon_pixbuf(R0RtcontextRDtpixmaptpointer((sD/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/edit.pyRs( RlRmRnRR7RgR@RRRR(((sD/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/edit.pyR#s    R%cBsMeZdZdZdZdZdZdZdZdZ RS(s:The area used for displaying and handling non-image files.cCstii|||_ti}|ititi|i|tit d}|i dd|i t |i|t t dtittt|_ti|i|_|iit |iid|i|iid|iti}tit d|dd}|it |ii|tit d |dd }|ii||i|iti|_d }|ii|tid }|i d ti!t ddd|i#fg|ii$|ddS(NsPlease note that the only files that are automatically added to this list are those files in archives that Comix recognizes as comments.g?i RoRptNamettextitSizeis scomix-edit-archive-other-areaRrsRemove from archive(%RtVBoxRRtRsRuRvR+R)Rt set_alignmentt set_line_wrapR:R RwRyRztTreeViewt _treeviewtset_rules_hintR!RRtCellRendererTexttTreeViewColumnt set_expandt append_columnRRRRRRRR9t _remove_fileR(R0Rtscrolledtinfot cellrenderertcolumnRR((sD/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/edit.pyRs:      cCsx{td|iiidD]Z}|iii|}dti|id}|ii ti i |||gq WdS(s!Load all comments in the archive.is%.1f KiBg@N( RRtR tget_number_of_commentstget_comment_nameRCtstattst_sizeRzRRDRE(R0tnumRDtsize((sD/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/edit.pyR8$s  cCsCdti|id}|iitii|||gdS(s3Add an extra imported file (at ) to the list.s%.1f KiBg@N(RCRRRzRRDRE(R0RDR((sD/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/edit.pyRi,scCs/g}x"|iD]}|i|dqW|S(s=Return a list with the full paths to all the files, in order.i(RzR(R0RR((sD/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/edit.pyR@1s  cGs>|iiid}|dj o|ii|ndS(s1Remove the currently selected file from the list.iN(Rt get_selectiont get_selectedR9RzRr(R0RR((sD/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/edit.pyR8s cCs|it|it|i}|djodSn|d}|idjo/|iididdd|i|i ndS(s(Handle mouse button presses on the area.Niis/Popup( RRRRR9RRRRR(R0ttreeviewRRD((sD/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/edit.pyR>s$  cCs(|itiijo|indS(sHandle key presses on the area.N(RRRRR(R0RR((sD/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/edit.pyRHs( RlRmRnRR8RiR@RRR(((sD/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/edit.pyR%s )     cCs+tdjot|an tidS(N(t_dialogR9Rtpresent(tactionR1((sD/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/edit.pyt open_dialogNs cGs%tdj otidandS(N(RR9RS(R((sD/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/edit.pyRMVs  (RnRCRAR-RtpangoRGtcursorRR]ReRRR9RRRRsR#RR%RRM(((sD/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/edit.pyss$            umW comix-4.0.4/src/comment.pyc0000644000175000001440000000630211165455545014515 0ustar sorkusers Ic@skdZddkZddkZddkZddkZdadeifdYZdZ dZ dS(scomment.py - Comments dialog.iNt_CommentsDialogcBseZdZRS(cCstii|td|dtitif|it|it |i dt |i ti|i ddti}|it |id|id|ii|ti}|idt|id t |id d |id t |id d|idt ti}|i|xtd|iidD]}tit}|idti}|ititi|i|ti}|i|ti} | id|i| t i!i"|ii#|} |ii$|} | djotdt!} nti&|} | i't(i)| | i*|| i+ti,| } | i| | i-i.}|i/ti0|ti1t(i)| }|i2||q]W|i3dS(NtCommentsitresponseiXi&iiteditables editable-settfamilyt Monospaces family-settscaleg?s scale-setiisCould not read %s(4tgtktDialogt__init__t_t STOCK_CLOSEtRESPONSE_CLOSEtset_has_separatortFalset set_resizabletTruetconnectt _close_dialogtset_default_responsetset_default_sizetNotebooktset_scrollabletset_border_widthtvboxt pack_starttTextTagt set_propertyt TextTagTabletaddtxranget file_handlertget_number_of_commentstVBoxtScrolledWindowt set_policytPOLICY_AUTOMATICtEventBoxtadd_with_viewporttostpathtbasenametget_comment_nametget_comment_texttNonet TextBuffertset_texttencodingt to_unicodet apply_tagt get_boundstTextViewtget_default_attributestbg_colort modify_bgt STATE_NORMALtLabelt insert_pagetshow_all(tselftwindowtnotebookttagt tag_tabletnumtpagetscrolledtoutboxtinboxtnamettextt text_buffert text_viewR5t tab_label((sG/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/comment.pyR s^                   (t__name__t __module__R (((sG/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/comment.pyR scCs+tdjot|an tidS(s3Create and display the (singleton) comments dialog.N(t_dialogR,Rtpresent(tactionR<((sG/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/comment.pyt open_dialogCs cGs%tdj otidandS(sDestroy the comments dialog.N(RLR,tdestroy(targs((sG/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/comment.pyRLs  ( t__doc__R'RtpangoR/R,RLRRROR(((sG/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/comment.pyss    6 comix-4.0.4/src/bookmark.pyc0000644000175000001440000003525011165455545014664 0ustar sorkusers PtIc @sdZddkZddkZddkZddkZddkZddkZeiieidZ dei fdYZ dei fdYZ dd d YZd eifd YZdS( s<bookmark.py - Bookmarks handler (including menu and dialog).iNsbookmarks.picklet BookmarksMenucBsVeZdZdZdZdZdZdZdZdZ dZ RS( sBookmarksMenu extends gtk.Menu with convenience methods relating to bookmarks. It contains fixed items for adding bookmarks etc. as well as dynamic items corresponding to the current bookmarks. c Cstii|||_tid|_|iiddtddd|i fddtddd|i fd ti td dd|i fgti |_|iid}|i|i|i|i|iid}|i|i|i|i|i|i|iti |iid }|i|i|i|i|i|iit||i|_dS( Nscomix-bookmarkst add_bookmarkscomix-add-bookmarks _Add bookmarks dtedit_bookmarkss_Edit bookmarks...s btclear_bookmarkss_Clear bookmarks...(tgtktMenut__init__t_windowt ActionGroupt _actiongroupt add_actionst_tNonet_add_current_to_bookmarkst_edit_bookmarkst STOCK_CLEARt_clear_bookmarkstSeparatorMenuItemt _separatort get_actiontset_accel_grouptget_accel_grouptappendtcreate_menu_itemtshow_allthidet_BookmarksStoret file_handlert_bookmarks_store(tselftuitwindowtaction((sH/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/bookmark.pyRs2    cCs+|i|d|i|iidS(sAdd to the menu.iN(tinserttshowR(Rtbookmark((sH/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/bookmark.pyR4s cCs2|i||iio|iindS(s Remove from the menu.N(tremoveRtis_emptyRR(RR#((sH/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/bookmark.pytremove_bookmark:s cGs|iidS(s/Add the currently viewed file to the bookmarks.N(Rtadd_current_to_bookmarks(Rtargs((sH/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/bookmark.pyR @scGst|i|idS(sOpen the bookmarks dialog.N(t_BookmarksDialogRR(RR(((sH/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/bookmark.pyRDscGsxti|idtititd}|itd|i}|i|ti jo|i i ndS(sZRemove all bookmarks, if the user presses 'Yes' in a confirmation dialog. isClear all bookmarks?sMAll stored bookmarks will be removed. Are you sure that you want to continue?N( Rt MessageDialogRtMESSAGE_QUESTIONtBUTTONS_YES_NOR tformat_secondary_texttruntdestroyt RESPONSE_YESRR(RR(t choice_dialogtresponse((sH/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/bookmark.pyRHs    cCs|iidi|dS(sSet the sensitivities of menu items as appropriate if represents whether a file is currently loaded in the main program or not. RN(R Rt set_sensitive(Rtloaded((sH/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/bookmark.pyR3VscCs|iidS(s4Store relevant bookmark info in the comix directory.N(Rtwrite_bookmarks_file(R((sH/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/bookmark.pyR5]s( t__name__t __module__t__doc__RRR&R RRR3R5(((sH/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/bookmark.pyRs       t _BookmarkcBsDeZdZdZdZdZdZdZdZRS(s|_Bookmark represents one bookmark. It extends the gtk.ImageMenuItem and is thus put directly in the bookmarks menu. cCs||_||_||_||_||_||_tii|t |t |idj oti dti }nti dti }|i||id|idS(Ns comix-archives comix-imagetactivate(t_namet_patht_paget _numpagest _archive_typet _file_handlerRtMenuItemRtstrtFalseR timage_new_from_stocktICON_SIZE_MENUt set_imagetconnectt_load(RRtnametpathtpagetnumpagest archive_typetim((sH/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/bookmark.pyRhs       cCsd|i|i|ifS(Ns %s, (%d / %d)(R;R=R>(R((sH/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/bookmark.pyt__str__xscGs|ii|i|idS(s/Open the file and page the bookmark represents.N(R@t open_fileR<R=(RR(((sH/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/bookmark.pyRH{scCs ||ijS(s3Return True if the bookmark is for the file .(R<(RRJ((sH/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/bookmark.pyt same_pathscCsJ|ii}|i|}d|i|if}||i||fS(s\Return a tuple corresponding to one row in the _BookmarkDialog's ListStore. s%d / %d(t get_imaget get_stockt render_iconR=R>R;(RtstocktpixbufRK((sH/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/bookmark.pytto_rowscCs"|i|i|i|i|ifS(szReturn a tuple suitable for pickling. The bookmark can be fully re-created using the values in the tuple. (R;R<R=R>R?(R((sH/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/bookmark.pytpacks( R6R7R8RRORHRQRWRX(((sH/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/bookmark.pyR9bs     RcBs_eZdZdZdZdZdZdZdZdZ dZ d Z RS( sThe _BookmarksStore is a backend for both the bookmarks menu and dialog. Changes in the _BookmarksStore is mirrored in both. cCs||_||_g|_tiitoyYttd}ti |}ti |}x|D]}|i |qeW|i Wqt j o,dGtGHdGHti t|iqXndS(Ntrbs! bookmark.py: Could not parses0! bookmark.py: Deleting corrupt bookmarks file. (t_menuR@t _bookmarkstosRJtisfilet _pickle_pathtopentcPickletloadtadd_bookmark_by_valuestcloset ExceptionR$R(RtmenuRtfdtversiontpacksRX((sH/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/bookmark.pyRs"     cCsBt|i|||||}|ii||ii|dS(s7Create a bookmark and add it to the store and the menu.N(R9R@R[RRZR(RRIRJRKRLRMR#((sH/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/bookmark.pyRbs cCs$|ii||ii|dS(s-Add the to the store and the menu.N(R[RRZR(RR#((sH/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/bookmark.pyRscCs$|ii||ii|dS(s2Remove the from the store and the menu.N(R[R$RZR&(RR#((sH/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/bookmark.pyR&scCs|ii}|ii}|ii}|ii}|ii}x3|iD](}|i|o|i|PqRqRW|i |||||S(s8Add the currently viewed file to the store and the menu.( R@tget_pretty_current_filenamet get_real_pathtget_current_pagetget_number_of_pagesRMR[RQR&Rb(RRIRJRKRLRMR#((sH/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/bookmark.pyR's    cCs&x|iD]}|i|q WdS(s1Remove all bookmarks from the store and the menu.N(R[R&(RR#((sH/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/bookmark.pyRs cCs|iS(s&Return all the bookmarks in the store.(R[(R((sH/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/bookmark.pyt get_bookmarksscCst|idjS(s,Return True if the store is currently empty.i(tlenR[(R((sH/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/bookmark.pyR%scCsvttd}titi|tig}|iD]}||iq6~}ti||ti|i dS(s4Store relevant bookmark info in the comix directory.twbN( R_R^R`tdumpt constantstVERSIONtHIGHEST_PROTOCOLR[RXRc(RRft_[1]R#Rh((sH/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/bookmark.pyR5s *( R6R7R8RRbRR&R'RRmR%R5(((sH/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/bookmark.pyRs        R)cBsDeZdZdZdZdZdZdZdZRS(sA_BookmarksDialog lets the user remove and/or rearrange bookmarks.c Cstii|td|tititititif||_ |i t |i t |ititi}|id|id|iti|ititi|ii|titiititit|_ti|i|_|ii t |ii!t |ii"|_#|i$|iti%}ti&}ti'd||_)ti'td||_*ti'td||_+|ii,|i)|ii,|i*|ii,|i+|i)i-|dd|i*i-|dd |i+i-|dd |i*i.t |i)i/ti0|i*i/ti0|i+i/ti0|i1d d |i2d |i3|i2d |i4|ii2d|i5x$|i i6D]}|i7|qW|i8dS(NsEdit bookmarksiitNametPageRVittextiiiR2t delete_eventtkey_press_event(9RtDialogRR t DIALOG_MODALt STOCK_REMOVEt RESPONSE_NOt STOCK_CLOSEtRESPONSE_CLOSERtset_has_separatorRCt set_resizabletTruetset_default_responsetScrolledWindowtset_border_widthtset_shadow_typet SHADOW_INt set_policytPOLICY_AUTOMATICtvboxt pack_startt ListStoretgdktPixbuftgobjectt TYPE_STRINGR9t _liststoretTreeViewt _treeviewtset_rules_hinttset_reorderablet get_selectiont _selectiontaddtCellRendererTexttCellRendererPixbuftTreeViewColumnR t _icon_colt _name_colt _page_colt append_columntset_attributest set_expandt set_sizingtTREE_VIEW_COLUMN_AUTOSIZEtresizeRGt _responset_closet_key_press_eventRmt _add_bookmarkR(RRtbookmarks_storetscrolledtcellrenderer_texttcellrenderer_pbufR#((sH/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/bookmark.pyRsV         cCs|ii|idS(s!Add the to the dialog.N(RtprependRW(RR#((sH/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/bookmark.pyRscCs]|iid}|dj o9|ii|d}|ii||ii|ndS(sRRemove the currently selected bookmark from the dialog and from the store.iiN(Rt get_selectedR Rt get_valueR$RR&(RttreeiterR#((sH/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/bookmark.pyt_remove_selecteds  cCs@|tijo|in|tijo|indS(N(RRRR}R(RtdialogR2((sH/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/bookmark.pyR#scGs(|itiijo|indS(N(tkeyvalRtkeysymstDeleteR(RRteventR(((sH/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/bookmark.pyR)scGsg}|ii}xI|dj o;|ii|d}|id||ii|}qWx.|D]&}|ii||ii|qhW|i dS(sNClose the dialog and update the _BookmarksStore with the new ordering.iiN( Rt get_iter_rootR RR!t iter_nextRR&RR/(RR(torderingRR#((sH/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/bookmark.pyR-s ( R6R7R8RRRRRR(((sH/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/bookmark.pyR)s 1   ((R8R\R`RRRqRJtjointDATA_DIRR^RRt ImageMenuItemR9RRzR)(((sH/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/bookmark.pyss      S2Mcomix-4.0.4/src/about.pyc0000644000175000001440000001255411165455545014173 0ustar sorkusers aIc @sdZddkZddkZddkZddkZddkZddkZdadei fdYZ dZ dZ dS(sabout.py - About dialog.iNt _AboutDialogcBseZdZRS(c!CsMtii|td|dtitif|it|it|i dt |i titi }|i i|ttd|id|idtitd}|idtiitiitiitid}tii|d}tii|pNxK|dd d gD]3}tii|d }tii|oPq2q2WnyKtii|d d }ti}|i||i|ttd Wntj o dGHnXti} | iddt i!dtddtddtddddd|i| t"t"d| i#ti$| i%t"|i&|titdti'} | i(ti)ti*ti+td} | id| i,| tit"d} tit"d} | i| tt| i| ttxdtdfdtdfdtdfd td!fd"td#fd$td%fd&td'fd(td'fd)td*fd+td,fd-td,fd.td/fd0td/fd1td2fd3td4fd5td6fd7td6fd8td9fd:td;fd<td=fd>td?fd@tdAfdBtdCfdDtdEfdFtdGfdHtdIffD]t\}}t-i.dJ|}|i/dKdK| i|t"t"ti|}|i/ddK| i|t"t"qW|i&| titdL|i0dS(MNtAboutitresponseiiisimages/comix.svgs/usrs /usr/locals /usr/X11R6sshare/comix/images/comix.svgii s+! Could not find the icon file "comix.svg" s<Coms@ix s% sEComix is an image viewer specifically designed to handle comic books.s sAIt reads ZIP, RAR and tar archives, as well as plain image files.s s7Comix is licensed under the GNU General Public License.s-Copyright © 2005-2009 Pontus Ekberg s!herrekberg@users.sourceforge.net s%http://comix.sourceforge.net is Pontus Ekbergt Developers Emfox ZhousSimplified Chinese translations Xie YanbosManuel QuiñonessSpanish translations Marcelo Góess Brazilian Portuguese translationsChristoph Wolks+German translation and Nautilus thumbnailersRaimondo GiammancosItalian translationtGhePeUsArthur NieuwlandsDutch translations Achraf ChertisFrench translations Benoît H.sKamil LeduchowskisPolish translationsDarek JakoniuksPaul ChatzidimitriousGreek translationsCarles Escrig RoyosCatalan translationsHsin-Lin ChengsTraditional Chinese translationsWayne Sus Mamoru TasakasJapanese translations Ernő DrabiksHungarian translationsArtyom SmirnovsRussian translations Adrian C.sCroatian translations 김민기sKorean translations Maryam SanaatsPersian translationsAndhika PadmawansIndonesian translations Jan NekvasilsCzech translationsVictor Castillejos Icon designs%s:g?tCredits(1tgtktDialogt__init__t_t STOCK_CLOSEtRESPONSE_CLOSEtset_has_separatortFalset set_resizabletconnectt _close_dialogtset_default_responsetNotebooktvboxt pack_starttset_border_widthtVBoxtostpathtdirnametrealpathtsystargvtjointisfiletgdktpixbuf_new_from_file_at_sizetImagetset_from_pixbuft ExceptiontLabelt set_markupt constantstVERSIONtTruet set_justifytJUSTIFY_CENTERtset_selectablet insert_pagetScrolledWindowt set_policyt POLICY_NEVERtPOLICY_AUTOMATICtHBoxtadd_with_viewporttlabelst BoldLabelt set_alignmenttshow_all(tselftwindowtnotebooktboxtbaset icon_pathtprefixtpixbufticontlabeltscrolledthboxtleft_boxt right_boxt nice_persont descriptiont name_labelt desc_label((sE/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/about.pyRs      1      D     (t__name__t __module__R(((sE/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/about.pyRscCs+tdjot|an tidS(s$Create and display the about dialog.N(t_dialogtNoneRtpresent(tactionR8((sE/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/about.pyt open_dialogws cGs%tdj otidandS(sDestroy the about dialog.N(RKRLtdestroy(targs((sE/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/about.pyRs  ( t__doc__RRRtpangoR&R3RLRKRRROR(((sE/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/about.pyss      g comix-4.0.4/src/ui.pyc0000644000175000001440000003336011165455545013474 0ustar sorkusers |Ic@sdZddkZddkZddkZddkZddkZddkZddkZddkZddk Z ddk Z ddk Z ddk Z ddk Z deifdYZdS(sui.py - UI definitions for main window. Logically this isn't really a separate module from main.py, but it is given it's own file for the sake of readability. iNtMainUIcBseZdZdZRS(cCs+tii|||_tid|_|iidtitddd|i fdti tddd|i fdti td d d|ifd titd d d|ifdtitddd|ifdtitddd|ifdtitddd|ifdtitddd|iifdtitddd|ifddtdd d|ifd!d"td#dd|ifd$d%td&d'd|ifd(d)td*dd|ifd+d,td-dd|i fd.d/td0fd1dtd2fd3dtd4fd5dtd6fd7dtd8fd9dtd:fd;dtd<fd=dtd>fd?dtd@fdAdBtdCfdg|ii!dEdtdFdGd|i"fdHdItdJdKd|i#fdLdtdMdd|i$fdNdtdOdd|i%fdPdtdQdd|i&fdRdtdSdd|i'fdTdtdUdVd|i(fdWdtdXdYd|i)fdZd[td\d]d|i*fd^dtd_d`d|i+fdati,tdbdcd|i-i.fdddetdfdgd|i/i.fg |ii0dhditdjdkdt1i2fdldmtdndodt1i3fdpdqtdrdsdt1i4fdtdutdvdwdt1i5fgdx|i6|iidyti7tdzddt8i9fd{d|td}d~dt:i9fdti;tdddt<i9fdti=tdddt>i?fdti@tdddtAi9fddtdddtBi9fddtdddtCi9fdtiDtdddt1i9fg||iiddtdddtEi9fg|id}|iF||iG|idtHiI|||_J|iKdiL|iJ|iKdiMtNiO|||_N|iKdiL|iN|iKdiM|iP|iQ|iKdiRtS|iKdiTtU|iKdiVtd|iKdiVtd|iKdiVtd|iKdiVtd|iKdiVtd|iKdiVtd|iKdiVtd|iKdiVtd|iKdiVtd|iKdiVtd|iKdiVtddS(Ns comix-maint next_pages _Next paget Page_Downt previous_pages_Previous pagetPage_Upt first_pages _First pagetHomet last_pages _Last pagetEndtzoom_ins_Zoom intKP_Addtzoom_outs Zoom _outt KP_Subtractt zoom_originalsO_riginal sizes 0tcloset_Closes wtquitt_Quits qt rotate_90scomix-rotate-90s_Rotate 90 degrees CWtrt rotate_180scomix-rotate-180sRotate 180 de_greest rotate_270scomix-rotate-270sRotat_e 90 degrees CCWsrt flip_horizscomix-flip-horizontalsFli_p horizontallyt flip_vertscomix-flip-verticalsFlip _verticallyt menu_zooms comix-zooms Manual _Zoomt menu_recents Open _recenttmenu_bookmarkst _Bookmarkst menu_toolbarst T_oolbarst menu_editt_Editt menu_filet_Filet menu_viewt_Viewtmenu_got_Got menu_helpt_Helptmenu_transformscomix-transformt _Transformtexpandert fullscreent _Fullscreentft double_pagescomix-double-pages_Double page modetdttoolbart_Toolbartmenubart_Menubart statusbart St_atusbart scrollbart S_crollbarst thumbnailst Th_umbnailstF9shide alls H_ide alltit manga_modes comix-mangas _Manga modetmtkeep_transformations_Keep transformationtkt slideshowsRun _slideshows Stlenss comix-lenssMagnifying _glasstgt best_fit_modes comix-fitbests_Best fit modetbtfit_width_modescomix-fitwidthsFit _width modetwtfit_height_modescomix-fitheightsFit _height modethtfit_manual_modescomix-fitmanualsM_anual zoom modetaitaboutt_Abouttcommentsscomix-commentss_View comments...tct edit_archives_Edit archive...topens_Open...s ot propertiest _Propertiess Returnt enhance_imagescomix-enhance-images_Enhance image...tetthumbnail_maintenancescomix-thumbnailss_Thumbnail maintenance...t preferencest Pr_eferencestlibrarys comix-librarys _Library...s ls is/Menu/menu_bookmarkss/Menu/menu_file/menu_recents/Tool/expanders/Tool/first_pages First pages/Tool/previous_pages Previous pages/Tool/next_pages Next pages/Tool/last_pages Last pages/Tool/best_fit_modes Best fit modes/Tool/fit_width_modesFit width modes/Tool/fit_height_modesFit height modes/Tool/fit_manual_modesManual zoom modes/Tool/double_pagesDouble page modes/Tool/manga_modes Manga modes /Tool/lenssMagnifying glass(R*NNNNN(Wtgtkt UIManagert__init__t_windowt ActionGroupt _actiongroupt add_actionstSTOCK_GO_FORWARDt_tNoneRt STOCK_GO_BACKRtSTOCK_GOTO_FIRSTRtSTOCK_GOTO_LASTRt STOCK_ZOOM_INtmanual_zoom_intSTOCK_ZOOM_OUTtmanual_zoom_outtSTOCK_ZOOM_100tmanual_zoom_originalt STOCK_CLOSEt file_handlert close_filet STOCK_QUITtterminate_programRRRtflip_horizontallytflip_verticallytadd_toggle_actionstchange_fullscreentchange_double_pagetchange_toolbar_visibilitytchange_menubar_visibilitytchange_statusbar_visibilitytchange_scrollbar_visibilitytchange_thumbnails_visibilitytchange_hide_alltchange_manga_modetchange_keep_transformationtSTOCK_MEDIA_PLAYR@ttoggletglasstadd_radio_actionsRVtZOOM_MODE_BESTtZOOM_MODE_WIDTHtZOOM_MODE_HEIGHTtZOOM_MODE_MANUALtchange_zoom_modet STOCK_ABOUTRKt open_dialogtcommentt STOCK_EDITteditt STOCK_OPENt filechoosertopen_main_filechooser_dialogtSTOCK_PROPERTIESRQtenhancet thumbremovertSTOCK_PREFERENCESRXtadd_ui_from_stringtinsert_action_grouptbookmarkt BookmarksMenut bookmarkst get_widgett set_submenutshowtrecenttRecentFilesMenutadd_accel_grouptget_accel_groupt set_expandtTruet set_sensitivetFalsetset_tooltip_text(tselftwindowtui_description((sB/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/ui.pyR[s                c Csd}d}t}t}|iiio't}|iiio t}qOnx'|D]}|ii|i|qVWx'|D]}|ii|i|qW|i i|dS(s8Sets the main UI's widget's sensitivities appropriately.RQRORR@RRRRRRRRRRMN( s propertiess edit_archivescloses slideshows rotate_90s rotate_180s rotate_270s flip_horizs flip_verts next_pages previous_pages first_pages last_page(scomments( RR\Rmt file_loadedRtget_number_of_commentsR^t get_actionRR(RtgeneralRtgeneral_sensitivetcomment_sensitivetname((sB/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/ui.pytset_sensitivities.s6(t__name__t __module__R[R(((sB/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/ui.pyRs (t__doc__RYRKRRRRRt filehandlerRXRVRQRRRZR(((sB/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/ui.pyss             comix-4.0.4/src/lens.pyc0000644000175000001440000001435511165455545014023 0ustar sorkusers ^WjIc@s]dZddkZddkZddkZddklZddkZdddYZdS(slens.py - Magnifying glass.iN(tprefstMagnifyingGlasscBsAeZdZdZdZdZdZdedZRS(sThe MagnifyingGlass creates cursors from the raw pixbufs containing the unscaled data for the currently displayed images. It does this by looking at the cursor position and calculating what image data to put in the "lens" cursor. Note: The mapping is highly dependent on the exact layout of the main window images, thus this module isn't really independent from the main module as it uses implementation details not in the interface. cCs ||_dS(N(t_window(tselftwindow((sD/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/lens.pyt__init__scCsu|iiipdSn|i||}tiitii|tddtdd}|ii i |dS(sCalculate what image data to put in the lens and update the cursor with it; and are the positions of the cursor within the main window layout area. Ns lens sizei( Rt file_handlert file_loadedt_get_lens_pixbuftgtktgdktCursortdisplay_get_defaultRtcursor_handlertset_cursor_type(Rtxtytpixbuftcursor((sD/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/lens.pytset_lens_cursors cCsP|io)|ii\}}|i||n|iiitidS(s=Toggle on or off the lens depending on the state of .N(t get_activeRtget_layout_pointer_positionRR RRtNORMAL(RtactionRR((sD/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/lens.pyttoggle's c CsKtiitiitdtdtd}|id|iio|ii o|ii i \}}n|ii i \}}|ii i }|iii }|i||||||ddt|i||||||ddtn>|ii i }|ii i } |i|||| |ti|dS(sGet a pixbuf containing the appropiate image data for the lens where and are the positions of the cursor. is lens sizeiitlefti(R R tPixbuftCOLORSPACE_RGBtTrueRtfillRtdisplayed_doublet is_manga_modeRt get_pixbufst left_imaget size_requestt right_imaget_add_subpixbuftFalsetimaget add_border( RRRtcanvastr_source_pixbuftl_source_pixbuft l_image_sizet r_image_sizet source_pixbuft image_size((sD/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/lens.pyR/s"  icCs?|ii\}} |o#td|||dd} n(td|||dd|d} td| |dd} || 8}|| 8}td} tdo!| ti|7} | d} n| djot|i|d} nt|i|d} || 9}|| 9}td | }td |}|}||dj}||dj}tdt t i |d||}tdt t i |d||}| djo||i|}}nZ| d jo$|i|}|i|}n)| djo|i||}}ntd o5| djo|i|}q{|i|}ntd o5| djo|i|}q|i|}n||d}||d}|djo||7}d}n|djo||7}d}ntdt |i||}tdt |i||}|djp |djodSn|i t |t |t |t |}|it t i ||it t i ||itii}| djo|itii}nM| d jo|itii}n'| djo|itii}ntd o|idt}ntd o|idt}n|o d}n t |i|i|}|o d}n t |i|i|}|idd|i|i|||dS(sCopy a subpixbuf from to as it should be in the lens if the coordinates , are the mouse pointer position on the main window layout area. The displayed image (scaled from the ) must have size . If is given, it is the width of the "other" image in double page mode. The image we are getting the coordinates for is the left one unless is False. iiitrotationsauto rotate from exifihiZislens magnifications lens sizeishorizontal flips vertical flipNt horizontal(iZi(iZi(iZi(Rtget_visible_area_sizetmaxRR&tget_implied_rotationtfloatt get_heightt get_widthtinttmathtceiltmint subpixbuft scale_simpleR R t INTERP_TILESt rotate_simpletPIXBUF_ROTATE_CLOCKWISEtPIXBUF_ROTATE_UPSIDEDOWNtPIXBUF_ROTATE_COUNTERCLOCKWISEtflipRR%t copy_area(RR(RRR.R-tother_image_widthRtarea_xtarea_yt padding_xt padding_yR/tscalet source_magtwidththeightt paste_leftt paste_toptdest_xtdest_ytsrc_xtsrc_yR;((sD/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/lens.pyR$Is'       **             ""       ( t__name__t __module__t__doc__RRRRRR$(((sD/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/lens.pyR s     ((RUR8R Rt preferencesRR&R(((sD/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/lens.pyss     comix-4.0.4/src/event.pyc0000644000175000001440000002463711165455544014206 0ustar sorkusers kBIc @srdZddkZddkZddkZddkZddkZddklZdfdYZdZdS(sevent.py - Event handling (keyboard, mouse, etc.) for the main window. Logically this isn't really a separate module from main.py, but it is given its own file for the sake of readability. iN(tprefst EventHandlercBsYeZdZdZdZdZdZdZdZdZ dZ RS( cCs:||_d|_d|_d|_d|_d|_dS(Ni(t_windowt_last_pointer_pos_xt_last_pointer_pos_yt_pressed_pointer_pos_xt_pressed_pointer_pos_yt_extra_scroll_events(tselftwindow((sE/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/event.pyt__init__s      cCs|iip!|ii\td|ii ddp|iiqt|ii ddqx|ii ddqq|ii6| d p?|ii6d | p|iiq|ii ddqq|ii#t$i%jp|ii6d |  o|iiqqt3do[|ii4o|ii5o|ii6|d dpk|ii6d |p>|ii ddp|iiq|ii ddq|ii ddq#q{|ii6|d dp>|ii6d |p|iiq#|ii ddq{q|ii6|d p>|ii6d |p|iiq{|ii ddqq|ii#t$i%jp|ii6d | o|iiqn|itii'tii!tii-tii7tii(tii"tii.tii/tiitiif jp)|itii8jo+d|ii jo|ii9dt:SndS(s+Handle key press events on the main window.thoriztlefttverttbottomtmiddletrightttopt fullscreentzoom_intzoom_outtGDK_CONTROL_MASKt zoom_originalii2ig?itGDK_SHIFT_MASKssmart space scrolltfirsttendfirsttsecondt endsecondt startsecondt startfirstt GDK_MOD1_MASKtkey_press_eventN(;tkeyvaltgtktkeysymst KP_Page_Upt BackSpaceRt previous_paget KP_Page_Downt next_pagetKP_1tscroll_to_fixedtKP_2tKP_3tKP_4tKP_5tKP_6tKP_7tKP_8tKP_9tEscapet actiongroupt get_actiont set_activeRtF11tactivatetplustequaltminust_0tKP_0tstatet value_namestDowntKP_Downt zoom_modet preferencestZOOM_MODE_BESTt_scroll_with_flippingtUptKP_UptRighttKP_RighttLefttKP_LefttspacetKP_HometKP_Endtget_visible_area_sizetintt is_manga_modeRtdisplayed_doubletis_on_first_pageR tKP_EntertReturntemit_stop_by_nametTrue(RRRtargstx_stepty_step((sE/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/event.pyR)(s" """"""                 cGsd|iijodSn|itiijo|iiti jo|ii q|iiti jo5|ii o|i ddq|i ddq|i ddn|itiijo|iiti jo|iiq|iiti jo5|ii o|i ddqO|i ddq|i ddnO|itiijo|iin(|itiijo|ii ndS(sHandle scroll wheel events on the maon layout area. The scroll wheel flips pages in best fit mode and scrolls the scrollbars otherwise. tGDK_BUTTON2_MASKNiFii(RGRHt directionR+tgdkt SCROLL_UPRRKRLRMR/tZOOM_MODE_HEIGHTRZRNt SCROLL_DOWNR1t SCROLL_RIGHTt SCROLL_LEFT(RRRRa((sE/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/event.pytscroll_wheel_events,  cCs|idjo4|i|_|i|_|i|_|i|_n|idjo |iii di t nP|idjo?|ii i ti|iiiddd|i|indS(s2Handle mouse click events on the main layout area.iitlensiN(tbuttontx_rootRty_rootRRRRR=R>R?R`tcursor_handlertset_cursor_typetcursortNORMALtpopuptNonettime(RRR((sE/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/event.pytmouse_press_events    cCs|iiiti|idjo7|i|ijo$|i|i jo|ii n|idjo |ii i di tndS(s;Handle mouse button release events on the main layout area.iiRmN(RRqRrRsRtRnRoRRpRR1R=R>R?R(RRR((sE/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/event.pytmouse_release_eventscCst|}d|iijoe|iiiti|ii|i |i |i |i |i |_ |i |_ |i |_nM|iiidio |iii|i|in|iiidS(s%Handle mouse pointer movement events.tGDK_BUTTON1_MASKRmN(t_get_latest_event_of_same_typeRGRHRRqRrRstGRABR RRoRRpRwt _drag_timerR=R>t get_activetglasstset_lens_cursortxtytrefresh(RRR((sE/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/event.pytmouse_move_events    c Cs|idj odSn|i}|pdSn|d} | ido| d} n=| ido| d} n| ido| d} nti| } |iii| dS( s2Handle drag-n-drop events on the main layout area.Nisfile://localhost/isfile:///isfile:/i( tget_source_widgetRvtget_urist startswithturllibt url2pathnameRt file_handlert open_file( RRtcontextRRt selectiontdrag_idt eventtimeturisturitpath((sE/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/event.pytdrag_n_drop_events  cCs|ii||p td od|_dSn|djp5|iio |djp|ii o|djo t}nt}|oGtd|id|_|idjod|_|iiqnDt d|id|_|idjod|_|ii ndS(sHandle scrolling with the scroll wheel or the arow keys, for which the pages might be flipped depending on the preferences. sflip with wheeliNiiii( RR RRRZR`RtmaxR1tminR/(RRRtforwards_scroll((sE/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/event.pyRN2s " '   ( t__name__t __module__R RR)RlRxRyRRRN(((sE/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/event.pyRs    cCsg}x_tiioNtii}|dj o.|i|ijo |}qc|i|q q Wx|D]}|iqoW|S(sReturn the latest event in the event queue that is of the same type as , or itself if no such events are in the queue. All events of that type will be removed from the event queue. N(R+Rftevents_pendingt event_getRvttypetappendtput(Rteventst queued_event((sE/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/event.pyR{Js  ( t__doc__RR+tgobjectRsRLRRR{(((sE/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/event.pyss     :comix-4.0.4/src/histogram.pyc0000644000175000001440000000607511165455544015056 0ustar sorkusers EHc @sXdZddkZddkZddkZddkZddkZddedZdS(s2histogram.py - Draw histograms (RGB) from pixbufs.iNicCstidd|dfd}ti|i}t|d dg}t|d|}g}tdD]} |t|| |qp~} g} tdd D]} | t|| |q~ } g} td dD]} | t|| |q~ }|i }xtdD]}xtdt| || |||dD]}|| |jo|pd }|| |jo|pd }|||jo|pd }|i |d|d |f|||fqOWqWx\tddD]K}xt | |dd| |d| |g| |d jD][}|i |d|d |f\}}}|i |d|d |fd ||fq5Wxxt | |d| |ddD]S}|i ||d |f\}}}|i ||d |fd ||fqWxt | |dd| |d| |g| |d jD][}|i |d|d |f\}}}|i |d|d |f|d |fqLWxxt | |d| |ddD]S}|i ||d |f\}}}|i ||d |f|d |fqWxt ||dd||d||g||d jD][}|i |d|d |f\}}}|i |d|d |f||d fqcWxxt ||d||ddD]S}|i ||d |f\}}}|i ||d |f||d fqWqW|ofd t |}ti|}|id d t|dddfdd|id|ddnti|dd}ti|dd}ti|S(sKDraw a histogram from and return it as another pixbuf. The returned prixbuf will be 262x px. The value of determines the colour intensity of the filled graphs, valid values are between 0 and 255. If is True a label with the maximum pixel value will be added to one corner. tRGBiiiiiiiiiiismax: ii tfilliP(iii(iii(ii(iii(iPiPiP(iii(tImagetnewtimaget pixbuf_to_pilt histogramtmaxtfloattxrangetinttgetdatatputpixeltrangetgetpixeltstrt ImageDrawtDrawt rectangletlenttexttImageOpstexpandt pil_to_pixbuf(tpixbuftheightRRtimt hist_datatmaximumty_scalet_[1]tntrt_[2]tgt_[3]tbtim_datatxtytr_pxtg_pxtb_pxtmaxstrtdraw((sI/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/histogram.pytdraw_histogram sd 588  ,3=*/$&+=*/$&+=*/$&/-(t__doc__tgtkRRRRtTrueR-(((sI/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/histogram.pyss      comix-4.0.4/src/enhance.pyc0000644000175000001440000001752311165455544014462 0ustar sorkusers )Ic@sdZddkZddkZddkZdadd dYZdeifdYZdZ dZ d Z d Z dS( sSenhance.py - Image enhancement handler and dialog (e.g. contrast, brightness etc.) iNt ImageEnhancercBs)eZdZdZdZdZRS(sThe ImageEnhancer keeps track of the "enhancement" values and performs these enhancements on pixbufs. Changes to the ImageEnhancer's values can be made using an _EnhanceImageDialog. cCs:||_d|_d|_d|_d|_t|_dS(Ng?(t_windowt brightnesstcontrastt saturationt sharpnesstFalset autocontrast(tselftwindow((sG/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/enhance.pyt__init__s      cCs}|idjp:|idjp*|idjp|idjp |io/ti||i|i|i|i|iSn|S(s)Return an "enhanced" version of .g?(RRRRRtimagetenhance(Rtpixbuf((sG/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/enhance.pyR s    cCs|iidtdS(saSignal to the main window that a change in the enhancement values has been made. tscrollN(Rt draw_imageR(R((sG/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/enhance.pyt signal_update%s(t__name__t __module__t__doc__R R R(((sG/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/enhance.pyR s  t_EnhanceImageDialogcBs;eZdZdZdZdZdZdZRS(s\A gtk.Dialog which allows modification of the values belonging to an ImageEnhancer. cCstii|td|d|itdtititi|it |i t |i d|i |i ti|i|_t |_tit d}|id|id|ii|ti|_|iidd |i|i|ititit d}|i|t t d tit d}tit d}|i|t t d |i|ttd titd d }|id d|i|tt d tiddddd}ti||_ |i i!d |i i"ti#|i i d|i$|i i%ti&|i|i tt d titdd }|id d|i|tt d tiddddd}ti||_'|i'i!d |i'i"ti#|i'i d|i$|i'i%ti&|i|i'tt d titdd }|id d|i|tt d tiddddd}ti||_(|i(i!d |i(i"ti#|i(i d|i$|i(i%ti&|i|i(tt d titdd }|id d|i|tt d tiddddd}ti||_)|i)i!d |i)i"ti#|i)i d|i$|i)i%ti&|i|i)tt d |ititi*td|_+|i+i,td|i|i+t t d |i+i d|i$t|_|i i-|ii.d |i'i-|ii/d |i(i-|ii0d |i)i-|ii1d |i+i2|ii3t |_|i'i4|i+i5 |i6dS(Ns Enhance imageitDefaultstresponsei iiiiit Brightnesst:ig?ggg?g{Gz?g?s value-changedtContrastt Saturationt SharpnesssAutomatically adjust contrast.s]Automatically adjust contrast (both lightness and darkness), separately for each colour band.ttoggled(7tgtktDialogR t_t add_buttonst RESPONSE_NOtSTOCK_OKt RESPONSE_OKtset_has_separatorRt set_resizabletconnectt _responsetset_default_responsetenhancert _enhancert_blocktVBoxtset_border_widthtvboxtaddtImaget _hist_imagetset_size_requestt pack_startt HSeparatortHBoxtTruetLabelt set_alignmentt AdjustmenttHScalet_brightness_scalet set_digitst set_value_post POS_RIGHTt_change_valuestset_update_policytUPDATE_DELAYEDt_contrast_scalet_saturation_scalet_sharpness_scalet CheckButtont_autocontrast_buttontset_tooltip_textt set_valueRRRRt set_activeRt set_sensitivet get_activetshow_all(RR R.thboxt vbox_leftt vbox_righttlabeltadj((sG/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/enhance.pyR 2s           cCs@|i}|dj o#|iiti|dtndS(s4Draw a histogram representing in the dialog.ttextN(t get_pixbuftNoneR1tset_from_pixbuft histogramtdraw_histogramR(RR R ((sG/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/enhance.pyRWs  cCs|iidS(s"Clear the histogram in the dialog.N(R1tclear(R((sG/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/enhance.pytclear_histogramscGs|iodSn|iid|i_|iid|i_|iid|i_|i id|i_ |i i |i_ |ii|i i |iidS(Ni(R+R;t get_valueR*RRBRRCRRDRRFRKRRJR(Rtargs((sG/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/enhance.pyR?s  cCs|titigjo tn|tijost|_|iid|i id|i id|i id|i i tt|_|i|ndS(Ng(RR#tRESPONSE_DELETE_EVENTt _close_dialogR!R6R+R;RHRBRCRDRFRIRR?(RtdialogR((sG/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/enhance.pyR's   (RRRR RWRYR?R'(((sG/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/enhance.pyR,s  ^   cCs"tdj oti|ndS(s;Draw a histogram of in the dialog, if there is one.N(t_dialogRTRW(R ((sG/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/enhance.pyRWs cCstdj otindS(s3Clear the histogram in the dialog, if there is one.N(R_RTRY(((sG/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/enhance.pyRYs cCs8tdjot|at|in tidS(s<Create and display the (singleton) image enhancement dialog.N(R_RTRRWt left_imagetpresent(tactionR ((sG/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/enhance.pyt open_dialogs  cGs%tdj otidandS(s%Destroy the image enhancement dialog.N(R_RTtdestroy(R[((sG/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/enhance.pyR]s  (( RRRVR RTR_RRRRWRYRcR](((sG/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/enhance.pyss      comix-4.0.4/src/main.pyc0000644000175000001440000006461011165455544014004 0ustar sorkusers PtIc@sdZddkZddkZddkZddkZddkZddkZddkZddkZddk Z ddk Z ddk Z ddk Z ddk Z ddkZddkZddklZddkZddkZddkZddkZdeifdYZdS(smain.py - Main window.iN(tprefst MainWindowcBseZdZeed*ddZeedZdZedZ dZ dZ dZ d Z d Zd Zd Zd ZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZ dZ!d*dZ"d*d*dZ#d Z$d!Z%d"Z&d#Z'd$Z(d%Z)d&Z*d'Z+d(Z,d)Z-RS(+s[The Comix main window, is created at start and terminates the program when closed. ic Cstii|tit|_t|_t|_t|_t i |_ d|_ d|_d|_t|_ti||_ti||_ti|_ti||_ti||_ti ||_!t"i#||_$t%i&||_'|i'i(d|_)|i'i(d|_*|i'i(d|_+|i'i,d|_-ti.|_/ti.|_0ti1td|_2ti3|_4t5i6||_7|i4i8|_9|i4i:|_;ti<|i9|_=ti>|i;|_?|i@d|iAdd|iBtCd tCd |i*iD|i'i(d |i*iEtiF|i2iG|i/|i2iG|i0|i2iH|i4iI|i2dd|iJtCd d |i9_Kd|i9_Ld |i;_Kd|i;_LtiMddt}|iN|iddddtiOtiOtiPBdd |iN|i4ddddtiOtiPBtiOtiPBdd |iN|i=ddddtiOtiQBtiOtiQBdd |iN|i?ddddtiOtiQBtiOdd |iN|i)ddddtiOtiQBtiOdd |iN|i*ddddtiOtiQBtiOdd |iN|iddddtiOtiQBtiOdd tCdo|i-iRdiSntCdp|o|i-iRdiSntCdo|i-iRdiSntCdt i jo|i-iRdiSntCdt iTjo|i-iRdiSnstCdt iUjo|i-iRdiSnEtCdt iVjo0|i-iRdiS|i-iRdiSntCdo$ttCd<|i-iRdiSntCd o$ttCd <|i-iRd!iSntCd"o$ttCd"<|i-iRd#iSntCd$o$ttCd$<|i-iRd%iSntCd&o$ttCd&<|i-iRd'iSntCd(o$ttCd(<|i-iRd(iSntCd)o$ttCd)<|i-iRd*iSndtCd+|ti|7}|d}|ti| 7}|d}n|itijo|djo| }| }n | }| }|djo|| 7}|| 7}n|| 7}|| 7}t|i|d}t|i|d}t}nti|| ||d |d |d |\}} t d o(|id t}| id t} nt do(|id t}| id t} n|ii|}|ii| } |ii||ii| ||i| id}|t|i| id}|djod|i| }nd|i| }|djod| i| }nd| i| }|i i!|ii"|ii#dt|i i$| | |f| | |fn|iidt}|i}|i}t d}t do!|ti|7}|d}n|itijoVt|i|d}t|i|d}|djo||}}nt}nti%|||d |d|}t d o|id t}nt do|id t}n|ii|}|ii||ii&||id}||id}|d jod|i|}nd|i|}|i i!|ii"|ii#|i i$|||ft do)ti'|ii(}|i)|n|i*i+i,|i-i.|i*td|td||ii/|i o|ii/n|ii0|i-i1|i*i2|o;|o|i3ddddq|i3ddddn|i*i+i4|i i5|ii6|i i7|i8xt9i:ot9i;tq6Wti<|i|ii=|i>i?tS(!NitstretchRsauto rotate from exifihiZiidtscale_upt rotation1t rotation2shorizontal flipt horizontals vertical flipigY@Rtsinglessmart bgithorizt endsecondtverttbottomt startfirstttop(iZi(iZi(iZi(iZi(iZi(iZi(@RR*RnR-t file_loadedtget_visible_area_sizeR%R#RkRjRtget_virtual_double_pageR"tdisplayed_doublet get_pixbufsR!t get_widtht get_heighttimagetget_implied_rotationRltintR)Rtfit_2_in_rectangletflipR:R8RFtset_from_pixbufRGtmaxR tset_page_numbertget_current_pagetget_number_of_pagestset_resolutiontfit_in_rectangletcleartget_most_common_edge_colourt get_pixbufR`RItwindowtfreeze_updatesRKtmoveRmthidetset_sizet size_requesttscroll_to_fixedt thaw_updatest set_filenametget_pretty_current_filenametupdatet update_titleRtevents_pendingtmain_iterationtdraw_histogramt do_cacheingR0tload_thumbnails(RRRt area_widtht area_heightt scaled_widtht scaled_heightRt left_pixbuft right_pixbuftleft_unscaled_xtleft_unscaled_ytright_unscaled_xtright_unscaled_yt left_rotationtright_rotationt total_widtht total_heightt x_paddingt y_paddingtleft_scale_percenttright_scale_percenttpixbuft unscaled_xt unscaled_yRt scale_percentt bg_colour((sD/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/main.pyRs                                                               cCsNtdp"dtd px horizontally and px vertically. If is 'first' or 'second', we will not scroll out of the first or second page respectively (dependent on manga mode). The argument only makes sense in double page mode. Return True if call resulted in new adjustment values, False otherwise. itsecondtfirstiN( RRt get_valueRPRRtupperR&R!RGRRFtmint set_value( Rtxtytboundt old_hadjustt old_vadjustt visible_widthtvisible_heightt hadjust_uppert vadjust_uppert hadjust_lowert new_hadjustt new_vadjust((sD/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/main.pyRs,   "   c Cs|ii}|ii}|}|}|i\}}|ii|} |ii|} |djo d}n3|djo| d}n|djo | }n|ip(hdd<dd or is as below, the display is scrolled as follows: horiz: 'left' = left end of display 'middle' = middle of the display 'right' = right end of display 'startfirst' = start of first page 'endfirst' = end of first page 'startsecond' = start of second page 'endsecond' = end of second page vert: 'top' = top of display 'middle' = middle of display 'bottom' = bottom of display What is considered "start" and "end" depends on whether we are using manga mode or not. Return True if call resulted in new adjustment values. RitmiddleiRtendfirstt startsecondRtlefttrightRN(RRRRPRR RtgetR!R&RFRRR R ( RRRRRRRRRRR((sD/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/main.pyRsj       $                       cCs|iptSn|i\}}|ioD|ii|ii|jp |ii|iidjSn;|iidjp$|ii||iidjSdS(sReturn True if we are currently viewing the first page, i.e. if we are scrolled as far to the left as possible, or if only the left page is visible on the main layout. In manga mode it is the other way around. iN( RRRR!RRRR RFR(RR'R(((sD/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/main.pytis_on_first_pagegs   $cCsc|ii|ii|ii|id|iid|itdt i dS(s;Clear the currently displayed data (i.e. "close" the file).Rts bg colourN( RFRRGR0RWR t set_messageR`RR8tclear_histogram(R((sD/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/main.pyRxs    cCs1|io'|i o|ii|iijS(s1Return True if two pages are currently displayed.(R R"R-RR(R((sD/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/main.pyRs cCs|i\}}td o^|iotd oHtdo||iid8}ntdo||iid8}ntdo||ii8}ntdo||iid8}ntdo|i t i jo||i id 8}qx|i t i jo||iid8}qx|i t ijo2||i id 8}||iid8}qxq|n||fS( shReturn a 2-tuple with the width and height of the visible part of the main layout area. shide allshide all in fullscreens show toolbarisshow statusbarsshow thumbnailss show menubarsshow scrollbari(tget_sizeRRR RR R0RR R%R#RjRTRkRVRl(RR'R(((sD/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/main.pyRs(      #cCsE|ii\}}||ii7}||ii7}||fS(s~Return a 2-tuple with the x and y coordinates of the pointer on the main layout area, relative to the layout. (RKt get_pointerRRRRP(RR R ((sD/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/main.pytget_layout_pointer_positionscCs|iii|tS(sSet the cursor on the main layout area to . You should probably use the cursor_handler instead of using this method directly. (RKRt set_cursorR(Rtmode((sD/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/main.pyR%scCs|ioKtid|ii|iid|ii|iif}n8tid|ii|ii|iif}|iiodt d|f}n|i |dS(s(Set the title acording to current state.s[%d,%d / %d] %s - Comixis[%d / %d] %s - Comixs[%s] %st SLIDESHOWN( Rtencodingt to_unicodeR-RRRR3t is_runningt_RW(Rttitle((sD/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/main.pyRs       cCs>|iititiiitii|tt dS(sxSet the background colour to . Colour is a sequence in the format (r, g, b). Values are 16-bit. N( RKt modify_bgRt STATE_NORMALRptcolormap_get_systemt alloc_colortColorRR(Rtcolour((sD/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/main.pyR`scCstd o|iotd ovtdo|iin|iitdo|iin|iitdo|iin|iitdo1|iti jo|i i|i intdo1|iti jo|i i|i inWtdo1|iti jo|i i|i in|i i|i itdo|iiq|iinO|ii|ii|ii|ii|i i|i idS( sUHide and/or show main window widgets depending on the current state. shide allshide all in fullscreens show toolbarsshow statusbars show menubarsshow scrollbarsshow thumbnailsN(RRR R^thide_allR R R%R#RjRTRVRkRlR0RmR(R((sD/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/main.pyRnsD                     cGs|itidjotintdo7|iio*|iitd<|iitdR3R1R.RR(((sD/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/main.pyss*                   comix-4.0.4/src/thumbnail.pyc0000644000175000001440000001672111165455544015043 0ustar sorkusers BIc@s;dZddkZddklZlZyddklZWn#ej oddklZnXddk Z ddk Z ddk Z ddk Z ddk Z ddkZddkZddkZeiieidZeedZedZd Zd Zdd Zd Zd ZdZdZdS(sthumbnail.py - Thumbnail module for Comix implementing (most of) the freedesktop.org "standard" at http://jens.triq.net/thumbnail-spec/ Only normal size (i.e. 128x128 px) thumbnails are supported. iN(t pathname2urlt url2pathname(tmd5(tnews.thumbnails/normalc Cst||}tii|pt|||Snyti|i}yt|d}Wnt j o d}nXti |i |jot|||Snt i i|SWnt j o dSnXdS(sReturn a thumbnail pixbuf for the file at by looking in the directory of stored thumbnails. If a thumbnail for the file doesn't exist we create a thumbnail pixbuf from the original. If is True we also save this new thumbnail in the thumbnail directory. If no thumbnail for can be produced (for whatever reason), return None. Images and archives are handled transparently. Note though that None is always returned for archives where no thumbnail already exist if is False, since re-creating the thumbnail on the fly each time would be too costly. If is set it is the base thumbnail directory, if not we use the default .thumbnails/normal/. s Thumb::MTimeiN(t_path_to_thumbpathtostpathtexistst_get_new_thumbnailtImagetopentinfotintt Exceptiontstattst_mtimetgtktgdktpixbuf_new_from_filetNone(Rtcreatetdst_dirt thumbpathR tmtime((sI/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/thumbnail.pyt get_thumbnails cCsQt||}tii|o+yti|WqMtj oqMXndS(sDelete the thumbnail (if it exists) for the file at . If is set it is the base thumbnail directory, if not we use the default .thumbnails/normal/. N(RRRtisfiletremoveR (RRR((sI/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/thumbnail.pytdelete_thumbnail;s cCsXti|dj o |ot||SndSn|ot||Snt|S(sReturn a new thumbnail pixbuf for the file at . If is True we also save it to disk with as the base thumbnail directory. N(tarchivetarchive_mime_typeRt_get_new_archive_thumbnailt_create_thumbnailt_get_pixbuf128(RRR((sI/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/thumbnail.pyRIsc Csti}tidd}|i||}|i}t|}|djodSn|i|g|i t i i ||}|i x|i|p|iqW|it||d|}ti||S(sReturn a new thumbnail pixbuf for the archive at , and save it to disk; is the base thumbnail directory. tprefixscomix_archive_thumb.t image_pathN(Rt Extractorttempfiletmkdtemptsetupt get_filest _guess_coverRt set_filestextractRRtjointacquiretis_readytwaittreleaseRtshutiltrmtree( RRt extractorttmpdirt conditiontfilestwantedR"tpixbuf((sI/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/thumbnail.pyRWs$        c Cs|djo |}nt|}|djodSntii|\}}}|djo|djo|Sn|dd}dttii|}t ||}ti |} t t | i } t | i} t |}t |}h|d<| d<| d<|d<|d <|d <d tid <} yftii|pti|d n|i|dd| ti|d|ti|dWn tj odG|GdGHnX|S(sCreate a thumbnail from the file at and store it if it is larger than 128x128 px. A pixbuf for the thumbnail is returned. is the base thumbnail directory (usually ~/.thumbnails/normal). If is not None it is used as the path to the image file actually used to create the thumbnail image, although the created thumbnail will still be saved as if for . it mime_typesisfile://stEXt::Thumb::URIstEXt::Thumb::MTimestEXt::Thumb::SizestEXt::Thumb::MimetypestEXt::Thumb::Image::WidthstEXt::Thumb::Image::HeightsComix %sstEXt::Softwareis -comixtemptpngis! thumbnail.py: Could not writes N(RR RRtpixbuf_get_file_infoRRRtnormpatht_uri_to_thumbpathRtstrR Rtst_sizet constantstVERSIONtisdirtmakedirstsavetrenametchmodR ( RRR"R7tmimetwidththeightturiRRRtsizet tEXt_data((sI/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/thumbnail.pyRnsB            cCs)dttii|}t||S(Nsfile://(RRRR;R<(RRRI((sI/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/thumbnail.pyRscCs/t|i}tii||d}|S(seReturn the full path to the thumbnail for when the base thumbnail directory. s.png(Rt hexdigestRRR+(RIRtmd5hashR((sI/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/thumbnail.pyR<scCs8ytii|ddSWntj o dSnXdS(Ni(RRtpixbuf_new_from_file_at_sizeR R(R((sI/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/thumbnail.pyR scCsti|tidti}tidti}t|i|}t|i|}g}|D]$}d|ijo ||qfqf~}|o |dSn|o |dSndS(sReturn the filename within that is the most likely to be the cover of an archive using some simple heuristics. s!\.(jpg|jpeg|png|gif|tif|tiff)\s*$s (cover|front)tbackiN( t filehandlertalphanumeric_sorttretcompiletItfiltertsearchtlowerR(R5text_retfront_retimagest candidatest_[1]tc((sI/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/thumbnail.pyR(s 8  ( t__doc__RturllibRRthashlibRt ImportErrorRRRR0R$RR RR?RPRR+tHOME_DIRt _thumbdirtTrueRRRRRRRR<R R((((sI/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/thumbnail.pyss0             .  comix-4.0.4/src/labels.pyc0000644000175000001440000000537411165455544014324 0ustar sorkusers X$Ic@sgdZddkZddkZdeifdYZdefdYZdefdYZdS( s*labels.py - gtk.Label convenience classes.iNtFormattedLabelcBs>eZdZdeieieidZdZdZ RS(sFormattedLabel keeps a label always formatted with some pango weight, style and scale, even when new text is set using set_text(). tcCs<tii||||_||_||_|idS(N(tgtktLabelt__init__t_weightt_stylet_scalet_format(tselfttexttweighttstyletscale((sF/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/labels.pyR s    cCs!tii|||idS(N(RRtset_textR(R R ((sF/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/labels.pyRscCst|i}ti}|iti|id||iti|id||iti |i d||i |dS(Ni( tlentget_texttpangotAttrListtinsertt AttrWeightRt AttrStyleRt AttrScaleRtset_attributes(R ttext_lentattrlist((sF/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/labels.pyRs  ( t__name__t __module__t__doc__Rt WEIGHT_NORMALt STYLE_NORMALt SCALE_MEDIUMRRR(((sF/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/labels.pyRs   t BoldLabelcBseZdZddZRS(s:A FormattedLabel that is always bold and otherwise normal.RcCsti||dtidS(NR (RRRt WEIGHT_BOLD(R R ((sF/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/labels.pyR&s(RRRR(((sF/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/labels.pyR "st ItalicLabelcBseZdZddZRS(s<A FormattedLabel that is always italic and otherwise normal.RcCsti||dtidS(NR (RRRt STYLE_ITALIC(R R ((sF/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/labels.pyR.s(RRRR(((sF/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/labels.pyR"*s(RRRRRR R"(((sF/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/labels.pyss   comix-4.0.4/src/preferences.pyc0000644000175000001440000005015311165455544015356 0ustar sorkusers PtIc @sJdZddkZddkZddkZddkZddkZddkZdZdZdZ dZ hddgd <e d <dd <d d <e d<dddfd<e d<e d<e d<e d<e d<ed<e d<dd<dd<e d<e d<e d<dd<e d <d!d"<e d#<e d$<e d%<e d&<e d'<e d(<e e e e e fd)<ei d*<dd+<dd,<e d-<e d.<e d/<e d0<e d1<dd2<e d3<e d4<e d5<e d6<eiiidd7d8<eeiiidd7eiiid9d:d;<d<d=<e d><ed?<eiiidd7d@<eiiidd7dA}|itd?|id|id?|itd@|i||itdAti#tdB}|itdC|id|idC|itdD|i|ti#tdE}|itdF|id|idF|itdG|i|ti#tdH}|itdI|id|idI|itdJ|i|ti#tdK}|itdL|id|idL|itdM|i||itdNti#tdO}|itdP|id|idP|itdQ|i||i$|titdRtdS}|itdTti#tdU}|itdV|id|idV|i|ti#tdW}|itdX|id|idX|i|ti#tdY}|itdZ|id|idZ|i|tidtd[}ti%}|i&td\|i&td]|i&td^|i&td_|itd`|ida|i'|i|||itdbti#tdc}|itdd|id|idd|i||itdetidtdf}ti tdgdhdidjd%d}ti!|d'd}|id|i"dg|i|||itdktidtdl}ti(}|i)dmi*tdn|ido|i+|idp|i+|itdq|i|||itdrti#tds}|itdt|id|idt|itdu|i||i$|titdv|i,dS(wNt PreferencesitresponseiiiPt Backgrounds%s:sUse this colour as backgrounds9Always use this selected colour as the background colour.s bg colourt color_setsUse dynamic background colour.ssmart bgttoggledsBAutomatically pick a background colour that fits the viewed image.t ThumbnailssThumbnail size (in pixels)sthumbnail sizeiiii t value_changeds Show page numbers on thumbnails.sshow page numbers on thumbnailssMagnifying Glasss!Magnifying glass size (in pixels)s lens sizei2isUSet the size of the magnifying glass. It is a square with a side of this many pixels.sMagnification factorslens magnificationg?g$@g?g?tdigitss5Set the magnification factor of the magnifying glass.s Image scalingsStretch small images.RsStretch images to a size that is larger than their original size if the current zoom mode requests it. If this preference is unset, images are never scaled to be larger than their original size.t Transparencys0Use checkered background for transparent images.s#checkered bg for transparent imagess{Use a grey checkered background for transparent images. If this preference is unset, the background is plain white instead.t AppearanceitScrollsUse smart space key scrolling.ssmart space scrollsUse smart scrolling with the space key. Normally the space key scrolls only right down (or up when shift is pressed), but with this preference set it also scrolls sideways and so tries to follow the natural reading order of the comic book.s4Flip pages when scrolling off the edges of the page.sflip with wheelsFlip pages when scrolling "off the page" with the scroll wheel or with the arrow keys. It takes three consecutive "steps" with the scroll wheel or the arrow keys for the pages to be flipped.sDouble page modes#Flip two pages in double page mode.sdouble step in double page modesLFlip two pages, instead of one, each time we flip pages in double page mode.s-Show only one wide image in double page mode.sno double page for wide imagessDisplay only one image in double page mode, if the image's width exceeds its height. The result of this is that scans that span two pages are displayed properly (i.e. alone) also in double page mode.tFiless$Automatically open the next archive.sauto open next archivesAutomatically open the next archive in the directory when flipping past the last page, or the previous archive when flipping past the first page.s3Automatically open the last viewed file on startup.sauto load last filesRAutomatically open, on startup, the file that was open when Comix was last closed.s.Store information about recently opened files.sstore recent file infosYAdd information about all files opened from within Comix to the shared recent files list.s"Store thumbnails for opened files.screate thumbnailssStore thumbnails for opened files according to the freedesktop.org specification. These thumbnails are shared by many other applications, such as most file managers.tCaches!Use a cache to speed up browsing.RsCache the images that are next to the currently viewed image in order to speed up browsing. Since the speed improvements are quite big, it is recommended that you have this preference set, unless you are running short on free RAM.t Behaviouris Default modess Use double page mode by default.sdefault double pagesUse fullscreen by default.sdefault fullscreensUse manga mode by default.sdefault manga modesDefault zoom modes Best fit modesFit width modesFit height modesManual zoom modesdefault zoom modetchangedt Fullscreens.Automatically hide all toolbars in fullscreen.shide all in fullscreent SlideshowsSlideshow delay (in seconds)sslideshow delayg@@g?g @tCommentssComment extensionss, scomment extensionstactivatetfocus_out_eventsXTreat all files found within archives, that have one of these file endings, as comments.tRotations8Automatically rotate images according to their metadata.sauto rotate from exifskAutomatically rotate images when an orientation is specified in the image metadata, such as in an Exif tag.tDisplay(-t_windowtgtktDialogt__init__t_t STOCK_CLOSEtRESPONSE_CLOSEtconnectt _responsetset_has_separatortFalset set_resizabletTruetset_default_responsetNotebooktvboxt pack_starttset_border_widtht_PreferencePaget new_sectiont RadioButtontNonetset_tooltip_textt ColorButtontgdktColortprefst_color_button_cbtadd_rowt set_activet_check_button_cbtLabelt Adjustmentt SpinButtont _spinner_cbt CheckButtont append_pagetcombo_box_new_textt append_textt _combo_box_cbtEntrytset_texttjoint _entry_cbtshow_all( tselftwindowtnotebooktpagetfixed_bg_buttont color_buttontdynamic_bg_buttontlabelt adjustmenttthumb_size_spinnertthumb_number_buttontglass_size_spinnertglass_magnification_spinnertstretch_buttontcheckered_bg_buttontsmart_space_buttontflip_with_wheel_buttontstep_length_buttontvirtual_double_buttontauto_open_next_buttontauto_open_last_buttontstore_recent_buttontcreate_thumbs_buttont cache_buttontdouble_page_buttontfullscreen_buttont manga_buttont zoom_combothide_in_fullscreen_buttont delay_spinnertextensions_entrytauto_rotate_button((sK/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/preferences.pyR Ps                                                    cCs|it|<|djo:t|p|iitdq|iidtn|d jo|iidtnc|djo$|iio|iidtn2|d jo$|iii|iii nd S( s.Callback for all checkbutton-type preferences.ssmart bgs bg colourtscrollRs#checkered bg for transparent imagessno double page for wide imagessauto rotate from exifshide all in fullscreensshow page numbers on thumbnailsN(sstretchs#checkered bg for transparent imagessno double page for wide imagessauto rotate from exif( t get_activeR7Rt set_bg_colourt draw_imageR't is_fullscreentthumbnailsidebartcleartload_thumbnails(RJtbuttont preference((sK/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/preferences.pyR;Cs      cCsa|i}|i|i|iftd. i N(RtVBoxR R'R.t_right_column_widthR2t_section(RJtright_column_width((sK/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/preferences.pyR s  cCs/t||i|_|i|ittdS(sUStart a new section in the page, with the header text from
. N(t_PreferenceSectionRRR-R'(RJtheader((sK/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/preferences.pyR0scCs~t|tio|iddn|djo|iii|n0|ii\}}|i||i|dS(sAdd a row to the page (in the latest section), containing one or two items. If the left item is a label it is automatically aligned properly. ig?N( t isinstanceRR<t set_alignmentR2Rt contentboxR-tnew_split_vboxes(RJt left_itemt right_itemtleft_boxt right_box((sK/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/preferences.pyR9s  N(RRRR R0R2R9(((sK/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/preferences.pyR/{s RcBs#eZdZddZdZRS(sThe _PreferenceSection is a convenience class for making one "section" of a preference-style dialog, e.g. it has a bold header and a number of rows which are indented with respect to that header. icCstii|td||_titd|_ti|}|iddti td}|i ti ttd|i |i|i |tt|i |ttddS(sContruct a new section with the header set to the text in
, and the width request of the (possible) right columns set to that of . iig?N( RRR R'RRtlabelst BoldLabelRtHBoxR-(RJRRRQthbox((sK/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/preferences.pyR s cCstitd}titd}|i|idtitd}|i||i|tt|ii|||fS(sFReturn two new VBoxes that are automatically put in the section after the previously added items. The right one has a width request equal to the right_column_width value passed to the class contructor, in order to make it easy for all "right column items" in a page to line up nicely. iii (RRR'tset_size_requestRRR-R(RJRRR((sK/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/preferences.pyRs (RRRR R(((sK/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/preferences.pyRs cCs+tdjot|an tidS(N(t_dialogR2Rtpresent(tactionRK((sK/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/preferences.pyt open_dialogs cGs%tdj otidandS(N(RR2tdestroy(targs((sK/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/preferences.pyRs  cCstiitod}y;ttd}ti|}ti|}|iWnDt j o8dtGH|dj o|inti tqXx1|D]%}|t jo||t |s                                             #    "2&(   comix-4.0.4/src/image.pyc0000644000175000001440000002026411165455544014137 0ustar sorkusers rkIc @sdZddkZddkZddkZddkZddkZddklZeddZ edddZ ddZ d Z d Z d Zd d d d ed ZdZdS(s'image.py - Various image manipulations.iN(tprefsicCst|djo d}n|djo d}nt|d}t|d}|djo||}}n|i}|i}| o||jo||jor|ioatdo+|i||tiiddd d }q|i||tiidd d d }qnt ||t ||jo!t t|||d}nt t|||d}|ioatdo+|i||tiiddd d }q|i||tiidd d d }n|i ||tii}|djo|i tii }nM|d jo|i tii}n'|djo|i tii}n|S(sScale (and return) a pixbuf so that it fits in a rectangle with dimensions x . A negative or means an unbounded dimension - both cannot be negative. If is 90, 180 or 270 we rotate first so that the rotated pixbuf is fitted in the rectangle. Unless is True we don't stretch images smaller than the given rectangle. If has an alpha channel it gets a checkboard background. ii'iiZis#checkered bg for transparent imagesiiiwwwiiii(iZi(tmaxt get_widtht get_heightt get_has_alphaRtcomposite_color_simpletgtktgdkt INTERP_TILEStfloattintt scale_simplet rotate_simpletPIXBUF_ROTATE_CLOCKWISEtPIXBUF_ROTATE_UPSIDEDOWNtPIXBUF_ROTATE_COUNTERCLOCKWISE(tsrctwidththeighttscale_uptrotationt src_widtht src_height((sE/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/image.pytfit_in_rectangle sD       "    #!!       cCs|djo d}n|djo d}n|d8}t|d}t|d}|i}|i}|i} |i} |djo||}}n|djo| | } } n|| } t||| d} t| || d} t|t|t|| t|}t| t|t| | t| }|| jo| | |7} n || jo| | |7} nt|t| |||t|t| |||fS( sScale two pixbufs so that they fit together (side-by-side) into a rectangle with dimensions x , with a 2 px gap. If one pixbuf does not use all of its allotted space, the other one is given it, so that the pixbufs are not necessarily scaled to the same percentage. The pixbufs are rotated according to the angles in and before they are scaled. See fit_in_rectangle() for more info on the parameters. ii'iiiZi(iZi(iZi(RRRtroundtminR RR (tsrc1tsrc2RRRt rotation1t rotation2t src1_widtht src1_heightt src2_widtht src2_heightt total_widthtalloc_width_src1talloc_width_src2tneeded_width_src1tneeded_width_src2((sE/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/image.pytfit_2_in_rectangleIs<            ''   icCs|tiitiitd|i|d|i|d}|i||idd|i|i||||S(sVReturn a pixbuf from with a px border of added. iii( RRtPixbuftCOLORSPACE_RGBtTrueRRtfillt copy_area(tpixbuft thicknesstcolourtcanvas((sE/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/image.pyt add_border|s  c Cs|i}|i}tiitiitd|d}tiitiitd|d}tiitiitdd|}tiitiitdd|}|idd|d|dd|id|d|d|dd|iddd||dd|i|ddd||ddh}xr||||fD]^}t|} xI| i | i d| i dD]&\} } |i | d| || . The return value is a sequence, (r, g, b), with 16 bit values. Note: This could be done more cleanly with subpixbuf(), but that doesn't work as expected together with get_pixels(). iiiiN(RRRRR(R)R*R,t pixbuf_to_pilt getcolorstsizet setdefaulttNonet iteritems(R-RRttop_edget bottom_edget left_edget right_edget colour_counttedgetimtcountR/t max_counttmost_common_colourt_[1]tval((sE/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/image.pytget_most_common_edge_colours2  $$$$## " "  c Csj|i}|idj}tii|tii|d|id|id|odpd|idS(s-Return a pixbuf created from the PIL .tRGBAiiiii(ttostringtmodeRRtpixbuf_new_from_dataR)R4(timagetimagestrtIS_RGBA((sE/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/image.pyt pil_to_pixbufs  cCsi|i|if}|i}|i}|iodpd}ti|||d||dS(s)Return a PIL image created from .REtRGBtrawi(RRt get_rowstridet get_pixelsRtImaget frombuffer(R-t dimensionststridetpixelsRG((sE/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/image.pyR2s   g?cCst|}|djoti|i|}n|o)|idjoti|dd}n*|djoti|i|}n|djoti|i|}n|djoti |i|}nt |S(sDReturn a modified pixbuf from where the enhancement operations corresponding to each argument has been performed. A value of 1.0 means no change. If is True it overrides the value, but only if the image mode is supported by ImageOps.autocontrast (i.e. it is L or RGB.) g?tLRMtcutoffg?(RVsRGB( R2t ImageEnhancet BrightnesstenhanceRGtImageOpst autocontrasttContrasttColort SharpnessRL(R-t brightnesstcontrastt saturationt sharpnessR\R>((sE/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/image.pyRZs     cCsR|id}|djodSn+|djodSn|djodSndS( sReturn the implied rotation of the pixbuf, as given by the pixbuf's orientation option (the value of which is based on EXIF data etc.). The implied rotation is the angle (in degrees) that the raw pixbuf should be rotated in order to be displayed "correctly". E.g. a photograph taken by a camera that is held sideways might store this fact in its EXIF data, and the pixbuf loader will set the orientation option correspondingly. t orientationt3it6iZt8ii(t get_option(R-Rd((sE/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/image.pytget_implied_rotations   (t__doc__RRQRXR[t ImageStatt preferencesRtFalseRR'R1RDRLR2RZRi(((sE/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/image.pyss      =2 ! comix-4.0.4/src/encoding.pyc0000644000175000001440000000163011165455544014637 0ustar sorkusers Hc@s+dZddkZeiZdZdS(sencoding.py - Encoding handler.iNcCsit|to|SnxJtddfD]9}yt||}|SWq(ttfj oq(Xq(WdS(sConvert to unicode. First try the default filesystem encoding, and then fall back on some common encodings. If none of the convertions are successful, "???" is returned. sutf-8slatin-1u???(t isinstancetunicodet_filesystemencodingt UnicodeErrort LookupError(tstringtencodingtustring((sH/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/encoding.pyt to_unicodes (t__doc__tsystgetfilesystemencodingRR(((sH/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/encoding.pyss  comix-4.0.4/src/cursor.pyc0000644000175000001440000000662611165455544014400 0ustar sorkusers JHc@sJdZddkZddkZed\ZZZdddYZdS(scursor.py - Cursor handler.iNit CursorHandlercBsPeZdZdZdZdZdZdZdZdZ RS(cCs(||_d|_t|_t|_dS(N(t_windowtNonet _timer_idtFalset _auto_hidetNORMALt_current_cursor(tselftwindow((sF/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/cursor.pyt__init__ s   cCs|tjo d}nY|tjotiitii}n0|tjotiitii}n|}|i i |||_ |i o)|tjo|i q|indS(sSet the cursor to type . Supported cursor types are available as constants in this module. If is not one of the cursor constants above, it must be a gtk.gdk.Cursor. N(RRtGRABtgtktgdktCursortFLEURtWAITtWATCHRt set_cursorRRt_set_hide_timert _kill_timer(Rtcursortmode((sF/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/cursor.pytset_cursor_types       cCs+t|_|itjo|indS(slSignal that the cursor should auto-hide from now on (e.g. that we are entering fullscreen). N(tTrueRRRR(R((sF/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/cursor.pyt auto_hide_on&s cCs8t|_|i|itjo|itndS(s:Signal that the cursor should *not* auto-hide from now on.N(RRRRRR(R((sF/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/cursor.pyt auto_hide_off.s  cCs"|io|i|indS(s~Refresh the current cursor (i.e. display it and set a new timer in fullscreen). Used when we move the cursor. N(RRR(R((sF/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/cursor.pytrefresh5s cCs2|itid|ii|i|_dS(Ni(Rtgobjectt timeout_addRRt_get_hidden_cursorR(R((sF/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/cursor.pyR<s cCs(|idj oti|indS(N(RRRt source_remove(R((sF/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/cursor.pyRAscCsItiidddd}tii}tii||||ddS(Nii(R R tPixmapRtColorR(Rtpixmaptcolor((sF/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/cursor.pyREs( t__name__t __module__R RRRRRRR(((sF/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/cursor.pyR s       ((t__doc__RR trangeRR RR(((sF/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/cursor.pyss  comix-4.0.4/src/process.pyc0000644000175000001440000000442611165455544014535 0ustar sorkusers aIc@s5dZddkZddkZdddYZdS(s%process.py - Process spawning module.iNtProcesscBs2eZdZdZdZdZdZRS(sIThe subprocess and popen2 modules in Python are broken (see issue #1336). The problem (i.e. complete crash) they can cause happen fairly often (once is too often) in Comix when calling "rar" or "unrar" to extract specific files from archives. We roll our own very simple process spawning module here instead. cCs||_d|_dS(suSetup a Process where is a sequence of arguments that defines the process, e.g. ['ls', '-a']. N(t_argstNonet_proc(tselftargs((sG/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/process.pyt__init__s cCsJy,ti|idti|_|iiSWntj o dSnXdS(sSpawns the process, and returns its stdout. (NOTE: separate function to make python2.4 exception syntax happy) tstdoutN(t subprocesstPopenRtPIPERRt ExceptionR(R((sG/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/process.pyt_execs cCs*zti|iSWdtiXdS(sSpawn the process defined by the args in __init__(). Return a file-like object linked to the spawned process' stdout. N(tgctdisableR tenable(R((sG/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/process.pytspawn#s cCs-|idjotdn|iiS(s"Wait for the process to terminate.sProcess not spawned.N(RRR twait(R((sG/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/process.pyR-s(t__name__t __module__t__doc__RR RR(((sG/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/process.pyRs   ((RR RR(((sG/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/process.pyss  comix-4.0.4/src/archive.pyc0000644000175000001440000003343711165455544014504 0ustar sorkusers OCIc @sdZddkZddkZddkZddkZddkZddkZddkZddkZe d\Z Z Z Z Zdadd dYZdd dYZdZd Zd Zd ZdS(s9archive.py - Archive handling (extract/create) for Comix.iNit ExtractorcBsqeZdZdZdZdZdZdZdZdZ dZ d Z d Z d Z RS( sExtractor is a threaded class for extracting different archive formats. The Extractor can be loaded with paths to archives (currently ZIP, tar, or RAR archives) and a path to a destination directory. Once an archive has been set it is possible to filter out the files to be extracted and set the order in which they should be extracted. The extraction can then be started in a new thread in which files are extracted one by one, and a signal is sent on a condition after each extraction, so that it is possible for other threads to wait on specific files to be ready. Note: Support for gzip/bzip2 compressed tar archives is limited, see set_files() for more info. cCs t|_dS(N(tFalset _setupped(tself((sG/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/archive.pyt__init__#scCs||_||_t||_g|_h|_t|_d |_ t i |_ |it jo+ti|d|_|ii|_nY|itttfjo+ti|d|_|ii|_n|itjotd joutatd jo[dGHtid dtitit d}|i!t d|i"|i#d Sqent$i%tdd|g}|i&}g}|i'D]}||i(t)i*q~|_|i+|i,ndG|GHd St-|_.|i S( sSetup the extractor with archive and destination dir . Return a threading.Condition related to the is_ready() method, or None if the format of isn't supported. trs$! Could not find RAR file extractor.is"Could not find RAR file extractor!sgYou need either the rar or the unrar program installed in order to read RAR (.cbr) files.tvbs--s! Non-supported archive format:N(/t_srct_dsttarchive_mime_typet_typet_filest _extractedRt_stoptNonet_extract_threadt threadingt Conditiont _conditiontZIPtzipfiletZipFilet_zfiletnamelisttTARtGZIPtBZIP2ttarfiletopent_tfiletgetnamestRARt _rar_exect _get_rar_exectgtkt MessageDialogtMESSAGE_WARNINGt BUTTONS_CLOSEt_tformat_secondary_markuptruntdestroytprocesstProcesstspawnt readlinestrstriptostlineseptclosetwaittTrueR(Rtsrctdsttdialogtproctfdt_[1]tname((sG/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/archive.pytsetup&sH              6   cCs|iS(s,Return a list of names of all the files the extractor is currently set for extracting. After a call to setup() this is by default all files found in the archive. The paths in the list are relative to the archive root and are not absolute for the files once extracted. (R (R((sG/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/archive.pyt get_filesTscCs_|ittfjo<g}|iD]}||jo ||q$q$~|_n ||_dS(sySet the files that the extractor should extract from the archive in the order of extraction. Normally one would get the list of all files in the archive using get_files(), then filter and/or permute this list before sending it back using set_files(). Note: Random access on gzip or bzip2 compressed tar archives is no good idea. These formats are supported *only* for backwards compability. They are fine formats for some purposes, but should not be used for scanned comic books. So, we cheat and ignore the ordering applied with this method on such archives. N(R RRR (RtfilesR9tx((sG/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/archive.pyt set_files\s <cCs|ii|tS(sxReturn True if the file in the extractor's file list (as set by set_files()) is fully extracted. (R tgetR(RR:((sG/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/archive.pytis_readymscCs|iS(s=Return the mime type name of the extractor's current archive.(R (R((sG/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/archive.pyt get_mime_typesscCs1t|_|io|iit|_ndS(sSignal the extractor to stop extracting and kill the extracting thread. Blocks until the extracting thread has terminated. N(R3R RRtjoinRtsetupped(R((sG/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/archive.pytstopws   cCs9tid|i|_|iit|iidS(sStart extracting the files in the file list one by one using a new thread. Every time a new file is extracted a notify() will be signalled on the Condition that was returned by setup(). ttargetN(RtThreadt_thread_extractRt setDaemonRtstart(R((sG/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/archive.pytextractscCsO|itjo|iin+|itttfjo|iindS(spClose any open file objects, need only be called manually if the extract() method isn't called. N(R RRR1RRRR(R((sG/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/archive.pyR1scCs/x|iD]}|i|q W|idS(s.Extract the files in the file list one by one.N(R t _extract_fileR1(RR:((sG/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/archive.pyRHs cCs|io|itidny|itjotii|i |}tii tii |pti tii |nt |d}|i|ii||in|itttfjo\tiitii|i |i|i o|ii||i qdG|GdGHnr|itjoatd j oKtitddddd d |i||i g }|i|iqd GHnWnt j onX|i!i"t#|i$|<|i!i%|i!i&d S( sExtract the file named to the destination directory, mark the file as "ready", then signal a notify() on the Condition returned by setup(). itwbs! Non-local tar member:s R>s-kbs-p-s-o-s-inuls--s$! Could not find RAR file extractor.N('R R1tsystexitR RR/tpathRCRtexiststdirnametmakedirsRtwriteRtreadRRRtnormpatht startswithRRKRR RR*R+RR,R2t ExceptionRtacquireR3R tnotifytrelease(RR:tdst_pathtnewR7((sG/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/archive.pyRLs:  $  !     (t__name__t __module__t__doc__RR;R<R?RARBRERKR1RHRL(((sG/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/archive.pyRs  .     tPackercBs2eZdZdZdZdZdZRS(s Packer is a threaded class for packing files into ZIP archives. It would be straight-forward to add support for more archive types, but basically all other types are less well fitted for this particular task than ZIP archives are (yes, really). cCs:||_||_||_||_d|_t|_dS(smSetup a Packer object to create a ZIP archive at . All files pointed to by paths in the sequences and will be included in the archive when packed. The files in will be renamed on the form "NN - .ext", so that the lexical ordering of their filenames match that of their order in the list. The files in will be included as they are, assuming their filenames does not clash with other filenames in the archive. All files are placed in the archive root. N(t _image_filest _other_filest _archive_patht _base_nameRt _pack_threadRt_packing_successful(Rt image_filest other_filest archive_patht base_name((sG/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/archive.pyRs     cCs9tid|i|_|iit|iidS(s6Pack all the files in the file lists into the archive.RFN(RRGt _thread_packRfRIRRJ(R((sG/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/archive.pytpackscCs(|idjo|iin|iS(svBlock until the packer thread has finished. Return True if the packer finished its work successfully. N(RfRRCRg(R((sG/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/archive.pyR2sc Csyti|id}Wn#tj odG|iGHdSnXg}dttt|i|if}xt|iD]\}}||dt i i |df}y|i ||ti WnQtj oEd||ifGH|iyt i|iWnnXdSnX|i|q}Wx|iD]}t i i|}x||jod|}qQWy|i ||tiWnQtj oEd||ifGH|iyt i|iWnnXdSnX|i|q6W|it|_dS(Ntws! Could not create archives%%0%dd - %s%%sis1! Could not add file %s to add to %s, aborting...s_%s(RRRdRXtlentstrRbRet enumerateR/RPtsplitextRTt ZIP_STOREDR1tremovetappendRctbasenamet ZIP_DEFLATEDR3Rg(Rtzfilet used_namestpatterntiRPtfilename((sG/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/archive.pyRlsV    $       (R^R_R`RRmR2Rl(((sG/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/archive.pyRas    cCsytii|oti|tipdSnti|otSnt |d}|i d}|i t i |oQtii|djo8|idotSn|idotSntSn|djotSqnWntj odG|GHnXdS( s;Return the archive type of or None for non-archives.trbiitBZhssRar!s! Error while readingN(R/RPtisfiletaccesstR_OKRRt is_zipfileRRRUR1Rt is_tarfiletgetsizeRWRRRRRX(RPR8tmagic((sG/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/archive.pyR s( ) cCsShtdt<tdt<tdt<tdt<tdt<|S(s0Return a text representation of an archive type.s ZIP archives Tar archivesGzip compressed tar archivesBzip2 compressed tar archives RAR archive(R&RRRRR(t archive_type((sG/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/archive.pytget_name0s cCstidti}t}|i|d|i}|djodSn|i}|it t |i |}t i |i}|||fS(sReturn a tuple (mime, num_pages, size) with info about the archive at , or None if doesn't point to a supported archive. s!\.(jpg|jpeg|png|gif|tif|tiff)\s*$N(tretcompiletIRR;RRBR<R1RotfiltertsearchR/tstattst_size(RPtimage_ret extractortmimeR=t num_pagestsize((sG/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/archive.pytget_archive_info9s     cCs<x5dD]-}ti|gidj o|SqqWdS(sfReturn the name of the RAR file extractor executable, or None if no such executable is found. tunrartrar(RRN(R*R+R,R(tcommand((sG/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/archive.pyR!Js  (((R`RNR/RRRRR"R*trangeRRRRRRR RRaR RRR!(((sG/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/archive.pyss         V  comix-4.0.4/src/filehandler.pyc0000644000175000001440000005502211165455544015332 0ustar sorkusers \jIc@sdZddkZddkZddkZddkZddkZddkZddkZddkZddkZddk Z ddk Z ddk Z ddk Z ddk Z ddklZddkZdfdYZdZdZdZdS( sfilehandler.py - File handler.iN(tprefst FileHandlercBspeZdZdZdZedZdZdZdZ dZ dZ d Z d Z d d Zd ZdZdZdZdZdZdZdZdZdZd'dZdZdZd'dZd'dZd'ddedZd'dZ dZ!d Z"d!Z#d"Z$d#Z%d$Z&d%Z'd&Z(RS((sThe FileHandler keeps track of images, pages, caches and reads files. When the Filehandler's methods refer to pages, they are indexed from 1, i.e. the first page is page 1 etc. Other modules should *never* read directly from the files pointed to by paths given by the FileHandler's methods. The files are not even guaranteed to exist at all times since the extraction of archives is threaded. cCst|_d|_||_d|_tidddti |_ g|_ d|_ g|_ h|_h|_ti|_d|_tidti|_|idS(Ntprefixscomix.tsuffixs!\.(jpg|jpeg|png|gif|tif|tiff)\s*$(tFalset file_loadedtNonet archive_typet_windowt _base_pathttempfiletmkdtemptostsept_tmp_dirt _image_filest_current_image_indext_comment_filest _raw_pixbufst _name_tabletarchivet Extractort _extractort _conditiontretcompiletIt _image_retupdate_comment_extensions(tselftwindow((sK/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/filehandler.pyt__init__$s          cCs}||ijob|i|dy$tii|i||i| from cache. Pixbufs not found in cache are fetched from disk first. i(Rt _wait_on_pagetgtktgdktpixbuf_new_from_fileRt Exceptiont_get_missing_image(Rtindex((sK/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/filehandler.pyt _get_pixbuf5s cCsR|ii p|o|i|iSn|i|i|i|idfS(sReturn the pixbuf(s) for the image(s) that should be currently displayed, from cache. Return two pixbufs in double-page mode unless is True. Pixbufs not found in cache are fetched from disk first. i(Rtdisplayed_doubleR'R(Rtsingle((sK/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/filehandler.pyt get_pixbufsBscCs|i}|d}|iio|d7}ntdo$||i8}||i7}ntd|}t|i|}t ||}x+t |i t |D]}|i |=qWt i d djotidn tix|D]}|i|qWdS( sEMake sure that the correct pixbufs are stored in cache. These are (in the current implementation) the current image(s), and if cacheing is enabled, also the one or two pixbufs before and after them. All other pixbufs are deleted and garbage collected directly in order to save memory. itcacheiiiiN(iii(RRtis_double_pageRt_get_backward_step_lengtht_get_forward_step_lengthtmaxtmintget_number_of_pagestrangetsetRtsyst version_infotgctcollectR'(Rt first_wantedt last_wantedtwanted_pixbufstpagetwanted((sK/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/filehandler.pyt do_cacheingMs&     cCs|iptSn|i}|iiodpd}|i||ijo1tdo|idj o|i ntSn|i |i 7_ ||ijS(s`Set up filehandler to the next page. Return True if this results in a new page. iisauto open next archiveN( RRtget_current_pageRR(R1RRRt_open_next_archiveRR.(Rtold_pagetviewed((sK/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/filehandler.pyt next_pagels   cCs|iptSn|idjo1tdo|idj o|intSn|i}|i}t|i |}|i |8_ |djo |i o|i d7_ n||ijS(sdSet up filehandler to the previous page. Return True if this results in a new page. isauto open next archiveiN( RRR>RRRt_open_previous_archiveR-R0Rtget_virtual_double_page(RR@tstep((sK/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/filehandler.pyt previous_page|s    cCs7|iptSn|i}d|_||ijS(saSet up filehandler to the first page. Return True if this results in a new page. i(RRR>R(RR@((sK/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/filehandler.pyt first_pages    cCs|iptSn|i}|iiodpd}t|i|}|i||_|djo |io|id7_n||ijS(s`Set up filehandler to the last page. Return True if this results in a new page. ii( RRR>RR,R0R1RRD(RR@toffset((sK/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/filehandler.pyt last_pages  cCsUd|jo|ijnptSn|i}|d|_||ijS(sfSet up filehandler to the page . Return True if this results in a new page. ii(R1RR>R(Rtpage_numR@((sK/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/filehandler.pytset_pages $  cCs|ii p%td p|i|ijotSn|i|i}|i|i jot Sn|i|id}|i|i jot SntS(sReturn True if the current state warrants use of virtual double page mode (i.e. if double page mode is on, the corresponding preference is set, and one of the two images that should normally be displayed has a width that exceeds its height). sno double page for wide imagesi( RR,RR>R1RR'Rt get_widtht get_heighttTrue(Rtpage1tpage2((sK/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/filehandler.pyRDs icCs>tii|o%|iiitd|tSntii|p%|iiitd|tSnti |ti p%|iiitd|tSnt i ||_ |i djo3t| o%|iiitd|tSn|iiiti|io|inxtiotitq1W|i dj o||_|ii||i|_|ii}t|i i!|}t"|g}|D]}|tii#|i|q~|_$t|i%i!|}g}|D]}|tii#|i|q~|_&x-t'||i$D]\} } | |i(| |ii?|ii=i@iA|dS( sQOpen the file pointed to by . If is not set we set the current page to 1 (first page), if it is set we set the current page to the value of . If is non-positive it means the last image. Return True if the file is successfully loaded. s"Could not open %s: Is a directory.s Could not open %s: No such file.s%Could not open %s: Permission denied.s%Could not open %s: Unknown file type.iiiNisNo images in '%s'(BR tpathtisdirRt statusbart set_messaget_RtisfiletaccesstR_OKRtarchive_mime_typeRRt is_image_filetcursor_handlertset_cursor_typetcursortWAITRt close_fileR!tevents_pendingtmain_iterationR RtsetupRRt get_filestfilterRtsearchtalphanumeric_sorttjoinRt _comment_reRtzipRR,R1RR/R2t enumeratetremovetinsertt set_filestextracttdirnametlistdirtappendtsorttlocaletstrcollR&tbasenameRNtNORMALt ui_managertset_sensitivitiestnew_pagetrecenttadd(RRQt start_pagetfilest image_filest_[1]tft comment_filest_[2]tnamet full_pathtdepthtpriority_orderingt_[3]tptitfpath((sK/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/filehandler.pyt open_files         66       @        cGst|_d|_g|_d|_g|_|ii|i i|i i|i i i |i it|itidddti|_tidS(s5Run tasks for "closing" the currently opened file(s).Rscomix.RN(RRRR RRRRtclearRRRwRxRtstopt thread_deleteRR R R R R6R7(Rtargs((sK/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/filehandler.pyR_)s          cCs|iit|idS(s3Run clean-up tasks. Should be called prior to exit.N(RRRR(R((sK/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/filehandler.pytcleanup9s cCsH|iio|id|ijSn|i|ijSdS(s Return True if at the last page.iN(RR(R>R1(R((sK/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/filehandler.pyt is_last_page>scCs t|iS(s<Return the number of pages in the current archive/directory.(tlenR(R((sK/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/filehandler.pyR1EscCs |idS(sReturn the current page number.i(R(R((sK/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/filehandler.pyR>IscCs t|iS(s5Return the number of comments in the current archive.(RR(R((sK/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/filehandler.pytget_number_of_commentsMscCsa|i|y4t|i|dd}|i}|iWntj o d}nX|S(s[Return the text in comment or None if comment is not readable. itrbN(t_wait_on_commenttopenRtreadtcloseR$R(Rtnumtfdttext((sK/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/filehandler.pytget_comment_textQs   cCs|i|dS(s%Return the filename of comment .i(R(RR((sK/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/filehandler.pytget_comment_name^scCs3ditd}tid|ti|_dS(siUpdate the regular expression used to filter out comments in archives by their filename. t|scomment extensionss \.(%s)\s*$N(RgRRRRRh(Rtexts((sK/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/filehandler.pyRbscCsp|idj otii|i}n;tiitii|itii|i|i}t i |S(sjReturn a string with the name of the currently viewed file that is suitable for printing. N( RRR RQRuR RgRRtencodingt to_unicode(RR((sK/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/filehandler.pytget_pretty_current_filenameis cCs.|djo|i|iSn|i|dS(sjReturn the full path to the image file for , or the current page if is None. iN(RRR(RR;((sK/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/filehandler.pytget_path_to_pagets cCs|iS(s_Return the full path to the current base (path to archive or image directory.) (R (R((sK/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/filehandler.pytget_path_to_base|scCs,|idj o|iSn|i|iS(sReturn the "real" path to the currently viewed file, i.e. the full path to the archive or the full path to the currently viewed image. N(RRRRR(R((sK/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/filehandler.pyt get_real_pathscCsO|i|tii|i|}|dj o|d|dfSndS(sReturn a tuple (width, height) with the size of . If is None, return the size of the current page. iiiN(ii(R R!R"tpixbuf_get_file_infoRR(RR;tinfo((sK/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/filehandler.pytget_sizes   cCsU|i|tii|i|}|dj o|ddiSntdS(sReturn a string with the name of the mime type of . If is None, return the mime type name of the current page. iRsUnknown filetypeN(R R!R"RRRtupperRU(RR;R((sK/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/filehandler.pyt get_mime_names   icCs|i||i|}|djo#|djoti||}n9ytii|||}Wntj o d}nX|djo|i }nt i |||}|S(sReturn a thumbnail pixbuf of that fit in a box with dimensions x. Return a thumbnail for the current page if is None. If is True, and x <= 128x128, the thumbnail is also stored on disk. iN( R Rt thumbnailt get_thumbnailR!R"tpixbuf_new_from_file_at_sizeR$RR%timagetfit_in_rectangle(RR;twidththeighttcreateRQtthumb((sK/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/filehandler.pyRs    cCsI|i|yti|i|}Wntj o d}nX|S(sReturn a stat object, as used by the stat module, for . If is None, return a stat object for the current page. Return None if the stat object can not be produced (e.g. broken file). N(R R tstatRR$R(RR;tstats((sK/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/filehandler.pyt get_statss   cCs'|iiotdodSndS(s4Return the step length for switching pages forwards.sdouble step in double page modeii(RR(R(R((sK/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/filehandler.pyR.s cCs$|iiotdodSndS(s5Return the step length for switching pages backwards.sdouble step in double page modeii(RR,R(R((sK/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/filehandler.pyR-s  cCstii|i}ti|}|itiy"|itii |i}Wnt j o dSnXxV||dD]F}tii ||}t i |dj o|i|dSqqWdS(sOpen the archive that comes directly after the currently loaded archive in that archive's directory listing, sorted alphabetically. Ni(R RQRoR RpRrRsRtR&Rut ValueErrorRgRRYRR(Rtarch_dirR}t current_indexRRQ((sK/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/filehandler.pyR?s"  cCstii|i}ti|}|itiy"|itii |i}Wnt j o dSnXx[t || D]I}tii ||}t i|dj o|i|ddSqqWdS(sOpen the archive that comes directly before the currently loaded archive in that archive's directory listing, sorted alphabetically. Ni(R RQRoR RpRrRsRtR&RuRtreversedRgRRYRR(RRR}RRRQ((sK/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/filehandler.pyRCs" cCs|iititiS(s1Return a pixbuf depicting a missing/broken image.(Rt render_iconR!tSTOCK_MISSING_IMAGEtICON_SIZE_DIALOG(R((sK/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/filehandler.pyR%scCs |i|}|i|dS(swBlock the running (main) thread until the file corresponding to image has been fully extracted. N(Rt _wait_on_file(RR;RQ((sK/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/filehandler.pyR scCs"|i|d}|i|dS(sxBlock the running (main) thread until the file corresponding to comment has been fully extracted. iN(RR(RRRQ((sK/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/filehandler.pyRscCsk|idjodSn|i|}|iix%|ii|p|iiq5W|iidS(sBlock the running (main) thread if the file is from an archive and has not yet been extracted. Return when the file is ready. N( RRRRtacquireRtis_readytwaittrelease(RRQR((sK/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/filehandler.pyRs  N()t__name__t __module__t__doc__RR'RR*R=RBRFRGRIRKRDRR_RRR1R>RRRRRRRRRRRRRR.R-R?RCR%R RR(((sK/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/filehandler.pyRsJ        e                  cCs9tidtid|f}|it|idS(sStart a threaded removal of the directory tree rooted at . This is to avoid long blockings when removing large temporary dirs. ttargetRN(t threadingtThreadtshutiltrmtreet setDaemonRtstart(RQt del_thread((sK/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/filehandler.pyRs cCs7tii|o tii|}|dj SntS(sLReturn True if the file at is an image file recognized by PyGTK. N(R RQRVR!R"RRR(RQR((sK/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/filehandler.pyRZscs8dtid|idfddS(sDo an in-place alphanumeric sort of the strings in , such that for an example "1.jpg", "2.jpg", "10.jpg" is a sorted ordering. cSs%|iot|Sn|iS(N(tisdigittinttlower(ts((sK/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/filehandler.pyt_format_substring)s s\d+|\D+tkeycsti|S((tmaptfindall(R(Rtrec(sK/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/filehandler.pyt/sN(RRRr(t filenames((RRsK/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/filehandler.pyRf$s (RR R4RRsR R6RRR!RR]RRt preferencesRRRRRZRf(((sK/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/filehandler.pyss*                comix-4.0.4/src/deprecated.pyc0000644000175000001440000000637011165455544015157 0ustar sorkusers PtIc@sedZddkZddkZddkZddkZdeifdYZdZdZdS(s0deprecated.py - Clean up deprecated Comix files.iNt_CleanerDialogcBseZdZdZRS(cCs^tii||dtititd||_|id|i|i tddS(Nis1There are deprecated files left on your computer.tresponses?Some old files (that were used for storing preferences, the library, bookmarks etc. for older versions of Comix) were found on your computer. If you do not plan on using the older versions of Comix again, you should remove these files in order to save some disk space. Do you want these files to be removed for you now?( tgtkt MessageDialogt__init__tMESSAGE_QUESTIONtBUTTONS_YES_NOt_t_pathstconnectt _responsetformat_secondary_text(tselftwindowtpaths((sJ/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/deprecated.pyR s  cCs|tijolxi|iD]Z}y5tii|oti|nti|Wqt j odG|GHqXqWn|i dS(Ns! Could not remove( Rt RESPONSE_YESRtostpathtisdirtshutiltrmtreetremovet Exceptiontdestroy(R tdialogRR((sJ/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/deprecated.pyR s (t__name__t __module__RR (((sJ/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/deprecated.pyR s c Cstiitid}dtifdtifdtifdtiff}x|D]\}}tiitii||ootiitii|| oLy2titii||tii||Wqt j oqXqUqUWdS(stMove config and data files from the old Comix directory (~/.comix/) to the XDG config and data directories. s.comixspreferences.picklesbookmarks.pickles library.dbtlibrary_coversN( RRtjoint constantstHOME_DIRt CONFIG_DIRtDATA_DIRtexiststrenameR(told_dirt to_be_movedtnametnew_dir((sJ/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/deprecated.pytmove_files_to_xdg_dirs%s    +cCstiitidtiitidf}g}x2|D]*}tii|o|i|q=q=W|ot||}|indS(sCheck for a number of deprecated files created by older versions of Comix. If any are found, we ask the user through a dilaog if they should be removed. s.comixrcs.comixN( RRRRRR!tappendRtshow_all(R t deprecatedtfoundRR((sJ/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/deprecated.pytcheck_for_deprecated_files9s( t__doc__RRRRRRR'R,(((sJ/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/deprecated.pyss     comix-4.0.4/src/portability.pyc0000644000175000001440000000416211165455544015416 0ustar sorkusers PtIc@s=dZddkZddkZdZdZdZdS(s Portability functions for Comix.iNcCsGtidjo#tiitiiddSntiidSdS(sOn UNIX-like systems, this method will return the path of the home directory, e.g. /home/username. On Windows, it will return a Comix sub-directory of . twin32t~tComixN(tsystplatformtostpathtjoint expanduser(((sK/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/portability.pytget_home_directorys#cCsVtidjo tSn8tidtiitd}tii|dSdS(s7Return the path to the Comix config directory. On UNIX, this will be $XDG_CONFIG_HOME/comix, on Windows it will be the same directory as get_home_directory(). See http://standards.freedesktop.org/basedir-spec/latest/ for more information on the $XDG_CONFIG_HOME environmental variable. RtXDG_CONFIG_HOMEs.configtcomixN(RRR RtgetenvRR(t base_path((sK/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/portability.pytget_config_directorys   cCsVtidjo tSn8tidtiitd}tii|dSdS(s1Return the path to the Comix data directory. On UNIX, this will be $XDG_DATA_HOME/comix, on Windows it will be the same directory as get_home_directory(). See http://standards.freedesktop.org/basedir-spec/latest/ for more information on the $XDG_DATA_HOME environmental variable. Rt XDG_DATA_HOMEs .local/shareR N(RRR RR RR(R ((sK/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/portability.pytget_data_directory"s   (t__doc__RRR RR(((sK/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/portability.pyss    comix-4.0.4/src/constants.pyc0000644000175000001440000000071611165455544015071 0ustar sorkusers YIc@sLdZddkZddkZdZeiZeiZeiZ dS(s'constants.py - Miscellaneous constants.iNs4.0.4( t__doc__tost portabilitytVERSIONtget_home_directorytHOME_DIRtget_config_directoryt CONFIG_DIRtget_data_directorytDATA_DIR(((sI/home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/constants.pyss     comix-4.0.4/src/encoding.py0000644000175000001440000000115111042125600014447 0ustar sorkusers"""encoding.py - Encoding handler.""" import sys _filesystemencoding = sys.getfilesystemencoding() def to_unicode(string): """Convert to unicode. First try the default filesystem encoding, and then fall back on some common encodings. If none of the convertions are successful, "???" is returned. """ if isinstance(string, unicode): return string for encoding in (_filesystemencoding, 'utf-8', 'latin-1'): try: ustring = unicode(string, encoding) return ustring except (UnicodeError, LookupError): pass return u'???' comix-4.0.4/src/edit.py0000644000175000001440000003256611132456222013633 0ustar sorkusers"""edit.py - Archive editor.""" import os import tempfile import gobject import gtk import pango import archive import cursor import encoding import filechooser import filehandler import image import thumbnail _dialog = None class _EditArchiveDialog(gtk.Dialog): """The _EditArchiveDialog lets users edit archives (or directories) by reordering images and removing and adding images or other files. The result can be saved as a ZIP archive. """ def __init__(self, window): gtk.Dialog.__init__(self, _('Edit archive'), window, gtk.DIALOG_MODAL, (gtk.STOCK_CANCEL, gtk.RESPONSE_CANCEL)) self.kill = False # Dialog is killed. self.file_handler = window.file_handler self._window = window self._save_button = self.add_button(gtk.STOCK_SAVE_AS, gtk.RESPONSE_OK) # There is no stock response for "import", but by using # RESPONSE_HELP we automatically get the button placed at the left. self._import_button = self.add_button(_('Import'), gtk.RESPONSE_HELP) self._import_button.set_image(gtk.image_new_from_stock(gtk.STOCK_ADD, gtk.ICON_SIZE_BUTTON)) self.set_has_separator(False) self.set_border_width(4) self.resize(min(gtk.gdk.screen_get_default().get_width() - 50, 750), min(gtk.gdk.screen_get_default().get_height() - 50, 600)) self.connect('response', self._response) self._image_area = _ImageArea(self) self._other_area = _OtherArea(self) notebook = gtk.Notebook() notebook.set_border_width(6) notebook.append_page(self._image_area, gtk.Label(_('Images'))) notebook.append_page(self._other_area, gtk.Label(_('Other files'))) self.vbox.pack_start(notebook) self.show_all() gobject.idle_add(self._load_original_files) def _load_original_files(self): """Load the original files from the archive or directory into the edit dialog. """ self._save_button.set_sensitive(False) self._import_button.set_sensitive(False) self.window.set_cursor(gtk.gdk.Cursor(gtk.gdk.WATCH)) self._image_area.fetch_images() if self.kill: # fetch_images() allows pending events to be handled. return False self._other_area.fetch_comments() self.window.set_cursor(None) self._save_button.set_sensitive(True) self._import_button.set_sensitive(True) return False def _pack_archive(self, archive_path): """Create a new archive with the chosen files.""" self.set_sensitive(False) self.window.set_cursor(gtk.gdk.Cursor(gtk.gdk.WATCH)) while gtk.events_pending(): gtk.main_iteration(False) image_files = self._image_area.get_file_listing() other_files = self._other_area.get_file_listing() try: tmp_path = tempfile.mkstemp( suffix='.%s' % os.path.basename(archive_path), prefix='tmp.', dir=os.path.dirname(archive_path))[1] fail = False except: fail = True if not fail: packer = archive.Packer(image_files, other_files, tmp_path, os.path.splitext(os.path.basename(archive_path))[0]) packer.pack() packing_success = packer.wait() if packing_success: os.rename(tmp_path, archive_path) _close_dialog() else: fail = True if fail: self.window.set_cursor(None) dialog = gtk.MessageDialog(self._window, 0, gtk.MESSAGE_ERROR, gtk.BUTTONS_CLOSE, _("The new archive could not be saved!")) dialog.format_secondary_text( _("The original files have not been removed.")) dialog.run() dialog.destroy() self.set_sensitive(True) def _response(self, dialog, response): if response == gtk.RESPONSE_OK: dialog = filechooser.StandAloneFileChooserDialog( gtk.FILE_CHOOSER_ACTION_SAVE) src_path = self.file_handler.get_path_to_base() dialog.set_current_directory(os.path.dirname(src_path)) dialog.set_save_name('%s.cbz' % os.path.splitext( os.path.basename(src_path))[0]) dialog.filechooser.set_extra_widget(gtk.Label( _('Archives are stored as ZIP files.'))) dialog.run() paths = dialog.get_paths() dialog.destroy() if paths: self._pack_archive(paths[0]) elif response == gtk.RESPONSE_HELP: # Actually "Import" dialog = filechooser.StandAloneFileChooserDialog() dialog.run() paths = dialog.get_paths() dialog.destroy() for path in paths: if filehandler.is_image_file(path): self._image_area.add_extra_image(path) elif os.path.isfile(path): self._other_area.add_extra_file(path) else: _close_dialog() self.kill = True class _ImageArea(gtk.ScrolledWindow): """The area used for displaying and handling image files.""" def __init__(self, edit_dialog): gtk.ScrolledWindow.__init__(self) self._edit_dialog = edit_dialog self.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC) # The ListStore layout is (thumbnail, basename, full path). self._liststore = gtk.ListStore(gtk.gdk.Pixbuf, str, str) self._iconview = gtk.IconView(self._liststore) self._iconview.set_pixbuf_column(0) self._iconview.set_tooltip_column(1) self._iconview.set_reorderable(True) self._iconview.set_selection_mode(gtk.SELECTION_MULTIPLE) self._iconview.connect('button_press_event', self._button_press) self._iconview.connect('key_press_event', self._key_press) self._iconview.connect_after('drag_begin', self._drag_begin) self.add(self._iconview) self._ui_manager = gtk.UIManager() ui_description = """ """ self._ui_manager.add_ui_from_string(ui_description) actiongroup = gtk.ActionGroup('comix-edit-archive-image-area') actiongroup.add_actions([ ('remove', gtk.STOCK_REMOVE, _('Remove from archive'), None, None, self._remove_pages)]) self._ui_manager.insert_action_group(actiongroup, 0) def fetch_images(self): """Load all the images in the archive or directory.""" for page in xrange(1, self._edit_dialog.file_handler.get_number_of_pages() + 1): thumb = self._edit_dialog.file_handler.get_thumbnail( page, 67, 100, create=False) thumb = image.add_border(thumb, 1, 0x555555FF) path = self._edit_dialog.file_handler.get_path_to_page(page) self._liststore.append([thumb, encoding.to_unicode(os.path.basename(path)), path]) if page % 10 == 0: while gtk.events_pending(): gtk.main_iteration(False) if self._edit_dialog.kill: return def add_extra_image(self, path): """Add an imported image (at ) to the end of the image list.""" thumb = thumbnail.get_thumbnail(path, create=False) if thumb is None: thumb = self.render_icon(gtk.STOCK_MISSING_IMAGE, gtk.ICON_SIZE_DIALOG) thumb = image.fit_in_rectangle(thumb, 67, 100) thumb = image.add_border(thumb, 1, 0x555555FF) self._liststore.append([thumb, os.path.basename(path), path]) def get_file_listing(self): """Return a list with the full paths to all the images, in order.""" file_list = [] for row in self._liststore: file_list.append(row[2]) return file_list def _remove_pages(self, *args): """Remove the currently selected pages from the list.""" paths = self._iconview.get_selected_items() for path in paths: iterator = self._liststore.get_iter(path) self._liststore.remove(iterator) def _button_press(self, iconview, event): """Handle mouse button presses on the thumbnail area.""" path = iconview.get_path_at_pos(int(event.x), int(event.y)) if path is None: return if event.button == 3: if not iconview.path_is_selected(path): iconview.unselect_all() iconview.select_path(path) self._ui_manager.get_widget('/Popup').popup(None, None, None, event.button, event.time) def _key_press(self, iconview, event): """Handle key presses on the thumbnail area.""" if event.keyval == gtk.keysyms.Delete: self._remove_pages() def _drag_begin(self, iconview, context): """We hook up on drag_begin events so that we can set the hotspot for the cursor at the top left corner of the thumbnail (so that we might actually see where we are dropping!). """ path = iconview.get_cursor()[0] pixmap = iconview.create_drag_icon(path) # context.set_icon_pixmap() seems to cause crashes, so we do a # quick and dirty conversion to pixbuf. pointer = gtk.gdk.Pixbuf(gtk.gdk.COLORSPACE_RGB, True, 8, *pixmap.get_size()) pointer = pointer.get_from_drawable(pixmap, iconview.get_colormap(), 0, 0, 0, 0, *pixmap.get_size()) context.set_icon_pixbuf(pointer, -5, -5) class _OtherArea(gtk.VBox): """The area used for displaying and handling non-image files.""" def __init__(self, edit_dialog): gtk.VBox.__init__(self) self._edit_dialog = edit_dialog scrolled = gtk.ScrolledWindow() scrolled.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC) self.pack_start(scrolled) info = gtk.Label(_('Please note that the only files that are automatically added to this list are those files in archives that Comix recognizes as comments.')) info.set_alignment(0.5, 0.5) info.set_line_wrap(True) self.pack_start(info, False, False, 10) # The ListStore layout is (basename, size, full path). self._liststore = gtk.ListStore(str, str, str) self._treeview = gtk.TreeView(self._liststore) self._treeview.set_rules_hint(True) self._treeview.connect('button_press_event', self._button_press) self._treeview.connect('key_press_event', self._key_press) cellrenderer = gtk.CellRendererText() column = gtk.TreeViewColumn(_('Name'), cellrenderer, text=0) column.set_expand(True) self._treeview.append_column(column) column = gtk.TreeViewColumn(_('Size'), cellrenderer, text=1) self._treeview.append_column(column) scrolled.add(self._treeview) self._ui_manager = gtk.UIManager() ui_description = """ """ self._ui_manager.add_ui_from_string(ui_description) actiongroup = gtk.ActionGroup('comix-edit-archive-other-area') actiongroup.add_actions([ ('remove', gtk.STOCK_REMOVE, _('Remove from archive'), None, None, self._remove_file)]) self._ui_manager.insert_action_group(actiongroup, 0) def fetch_comments(self): """Load all comments in the archive.""" for num in xrange(1, self._edit_dialog.file_handler.get_number_of_comments() + 1): path = self._edit_dialog.file_handler.get_comment_name(num) size = '%.1f KiB' % (os.stat(path).st_size / 1024.0) self._liststore.append([os.path.basename(path), size, path]) def add_extra_file(self, path): """Add an extra imported file (at ) to the list.""" size = '%.1f KiB' % (os.stat(path).st_size / 1024.0) self._liststore.append([os.path.basename(path), size, path]) def get_file_listing(self): """Return a list with the full paths to all the files, in order.""" file_list = [] for row in self._liststore: file_list.append(row[2]) return file_list def _remove_file(self, *args): """Remove the currently selected file from the list.""" iterator = self._treeview.get_selection().get_selected()[1] if iterator is not None: self._liststore.remove(iterator) def _button_press(self, treeview, event): """Handle mouse button presses on the area.""" path = treeview.get_path_at_pos(int(event.x), int(event.y)) if path is None: return path = path[0] if event.button == 3: self._ui_manager.get_widget('/Popup').popup(None, None, None, event.button, event.time) def _key_press(self, iconview, event): """Handle key presses on the area.""" if event.keyval == gtk.keysyms.Delete: self._remove_file() def open_dialog(action, window): global _dialog if _dialog is None: _dialog = _EditArchiveDialog(window) else: _dialog.present() def _close_dialog(*args): global _dialog if _dialog is not None: _dialog.destroy() _dialog = None comix-4.0.4/src/image.py0000644000175000001440000002133711132724562013767 0ustar sorkusers"""image.py - Various image manipulations.""" import gtk import Image import ImageEnhance import ImageOps import ImageStat from preferences import prefs def fit_in_rectangle(src, width, height, scale_up=False, rotation=0): """Scale (and return) a pixbuf so that it fits in a rectangle with dimensions x . A negative or means an unbounded dimension - both cannot be negative. If is 90, 180 or 270 we rotate first so that the rotated pixbuf is fitted in the rectangle. Unless is True we don't stretch images smaller than the given rectangle. If has an alpha channel it gets a checkboard background. """ # "Unbounded" really means "bounded to 10000 px" - for simplicity. # Comix would probably choke on larger images anyway. if width < 0: width = 10000 elif height < 0: height = 10000 width = max(width, 1) height = max(height, 1) if rotation in (90, 270): width, height = height, width src_width = src.get_width() src_height = src.get_height() if not scale_up and src_width <= width and src_height <= height: if src.get_has_alpha(): if prefs['checkered bg for transparent images']: src = src.composite_color_simple(src_width, src_height, gtk.gdk.INTERP_TILES, 255, 8, 0x777777, 0x999999) else: src = src.composite_color_simple(src_width, src_height, gtk.gdk.INTERP_TILES, 255, 1024, 0xFFFFFF, 0xFFFFFF) else: if float(src_width) / width > float(src_height) / height: height = int(max(src_height * width / src_width, 1)) else: width = int(max(src_width * height / src_height, 1)) if src.get_has_alpha(): if prefs['checkered bg for transparent images']: src = src.composite_color_simple(width, height, gtk.gdk.INTERP_TILES, 255, 8, 0x777777, 0x999999) else: src = src.composite_color_simple(width, height, gtk.gdk.INTERP_TILES, 255, 1024, 0xFFFFFF, 0xFFFFFF) else: src = src.scale_simple(width, height, gtk.gdk.INTERP_TILES) if rotation == 90: src = src.rotate_simple(gtk.gdk.PIXBUF_ROTATE_CLOCKWISE) elif rotation == 180: src = src.rotate_simple(gtk.gdk.PIXBUF_ROTATE_UPSIDEDOWN) elif rotation == 270: src = src.rotate_simple(gtk.gdk.PIXBUF_ROTATE_COUNTERCLOCKWISE) return src def fit_2_in_rectangle(src1, src2, width, height, scale_up=False, rotation1=0, rotation2=0): """Scale two pixbufs so that they fit together (side-by-side) into a rectangle with dimensions x , with a 2 px gap. If one pixbuf does not use all of its allotted space, the other one is given it, so that the pixbufs are not necessarily scaled to the same percentage. The pixbufs are rotated according to the angles in and before they are scaled. See fit_in_rectangle() for more info on the parameters. """ # "Unbounded" really means "bounded to 10000 px" - for simplicity. # Comix would probably choke on larger images anyway. if width < 0: width = 10000 elif height < 0: height = 10000 width -= 2 # We got a 2 px gap between images width = max(width, 2) # We need at least 1 px per image height = max(height, 1) src1_width = src1.get_width() src1_height = src1.get_height() src2_width = src2.get_width() src2_height = src2.get_height() if rotation1 in (90, 270): src1_width, src1_height = src1_height, src1_width if rotation2 in (90, 270): src2_width, src2_height = src2_height, src2_width total_width = src1_width + src2_width alloc_width_src1 = max(src1_width * width / total_width, 1) alloc_width_src2 = max(src2_width * width / total_width, 1) needed_width_src1 = round(src1_width * min(height / float(src1_height), alloc_width_src1 / float(src1_width))) needed_width_src2 = round(src2_width * min(height / float(src2_height), alloc_width_src2 / float(src2_width))) if needed_width_src1 < alloc_width_src1: alloc_width_src2 += alloc_width_src1 - needed_width_src1 elif needed_width_src1 >= alloc_width_src1: alloc_width_src1 += alloc_width_src2 - needed_width_src2 return (fit_in_rectangle(src1, int(alloc_width_src1), height, scale_up, rotation1), fit_in_rectangle(src2, int(alloc_width_src2), height, scale_up, rotation2)) def add_border(pixbuf, thickness, colour=0x000000FF): """Return a pixbuf from with a px border of added. """ canvas = gtk.gdk.Pixbuf(gtk.gdk.COLORSPACE_RGB, True, 8, pixbuf.get_width() + thickness * 2, pixbuf.get_height() + thickness * 2) canvas.fill(colour) pixbuf.copy_area(0, 0, pixbuf.get_width(), pixbuf.get_height(), canvas, thickness, thickness) return canvas def get_most_common_edge_colour(pixbuf): """Return the most commonly occurring pixel value along the four edges of . The return value is a sequence, (r, g, b), with 16 bit values. Note: This could be done more cleanly with subpixbuf(), but that doesn't work as expected together with get_pixels(). """ width = pixbuf.get_width() height = pixbuf.get_height() top_edge = gtk.gdk.Pixbuf(gtk.gdk.COLORSPACE_RGB, True, 8, width, 1) bottom_edge = gtk.gdk.Pixbuf(gtk.gdk.COLORSPACE_RGB, True, 8, width, 1) left_edge = gtk.gdk.Pixbuf(gtk.gdk.COLORSPACE_RGB, True, 8, 1, height) right_edge = gtk.gdk.Pixbuf(gtk.gdk.COLORSPACE_RGB, True, 8, 1, height) pixbuf.copy_area(0, 0, width, 1, top_edge, 0, 0) pixbuf.copy_area(0, height - 1, width, 1, bottom_edge, 0, 0) pixbuf.copy_area(0, 0, 1, height, left_edge, 0, 0) pixbuf.copy_area(width - 1, 0, 1, height, right_edge, 0, 0) colour_count = {} for edge in (top_edge, bottom_edge, left_edge, right_edge): im = pixbuf_to_pil(edge) for count, colour in im.getcolors(im.size[0] * im.size[1]): colour_count[colour] = colour_count.setdefault(colour, 0) + count max_count = 0 most_common_colour = None for colour, count in colour_count.iteritems(): if count > max_count: max_count = count most_common_colour = colour return [val * 257 for val in most_common_colour] def pil_to_pixbuf(image): """Return a pixbuf created from the PIL .""" imagestr = image.tostring() IS_RGBA = image.mode == 'RGBA' return gtk.gdk.pixbuf_new_from_data(imagestr, gtk.gdk.COLORSPACE_RGB, IS_RGBA, 8, image.size[0], image.size[1], (IS_RGBA and 4 or 3) * image.size[0]) def pixbuf_to_pil(pixbuf): """Return a PIL image created from .""" dimensions = pixbuf.get_width(), pixbuf.get_height() stride = pixbuf.get_rowstride() pixels = pixbuf.get_pixels() mode = pixbuf.get_has_alpha() and 'RGBA' or 'RGB' return Image.frombuffer(mode, dimensions, pixels, 'raw', mode, stride, 1) def enhance(pixbuf, brightness=1.0, contrast=1.0, saturation=1.0, sharpness=1.0, autocontrast=False): """Return a modified pixbuf from where the enhancement operations corresponding to each argument has been performed. A value of 1.0 means no change. If is True it overrides the value, but only if the image mode is supported by ImageOps.autocontrast (i.e. it is L or RGB.) """ im = pixbuf_to_pil(pixbuf) if brightness != 1.0: im = ImageEnhance.Brightness(im).enhance(brightness) if autocontrast and im.mode in ('L', 'RGB'): im = ImageOps.autocontrast(im, cutoff=0.1) elif contrast != 1.0: im = ImageEnhance.Contrast(im).enhance(contrast) if saturation != 1.0: im = ImageEnhance.Color(im).enhance(saturation) if sharpness != 1.0: im = ImageEnhance.Sharpness(im).enhance(sharpness) return pil_to_pixbuf(im) def get_implied_rotation(pixbuf): """Return the implied rotation of the pixbuf, as given by the pixbuf's orientation option (the value of which is based on EXIF data etc.). The implied rotation is the angle (in degrees) that the raw pixbuf should be rotated in order to be displayed "correctly". E.g. a photograph taken by a camera that is held sideways might store this fact in its EXIF data, and the pixbuf loader will set the orientation option correspondingly. """ orientation = pixbuf.get_option('orientation') if orientation == '3': return 180 elif orientation == '6': return 90 elif orientation == '8': return 270 return 0 comix-4.0.4/src/archive.py0000644000175000001440000003063311165441517014327 0ustar sorkusers"""archive.py - Archive handling (extract/create) for Comix.""" import sys import os import re import zipfile import tarfile import threading import gtk import process ZIP, RAR, TAR, GZIP, BZIP2 = range(5) _rar_exec = None class Extractor: """Extractor is a threaded class for extracting different archive formats. The Extractor can be loaded with paths to archives (currently ZIP, tar, or RAR archives) and a path to a destination directory. Once an archive has been set it is possible to filter out the files to be extracted and set the order in which they should be extracted. The extraction can then be started in a new thread in which files are extracted one by one, and a signal is sent on a condition after each extraction, so that it is possible for other threads to wait on specific files to be ready. Note: Support for gzip/bzip2 compressed tar archives is limited, see set_files() for more info. """ def __init__(self): self._setupped = False def setup(self, src, dst): """Setup the extractor with archive and destination dir . Return a threading.Condition related to the is_ready() method, or None if the format of isn't supported. """ self._src = src self._dst = dst self._type = archive_mime_type(src) self._files = [] self._extracted = {} self._stop = False self._extract_thread = None self._condition = threading.Condition() if self._type == ZIP: self._zfile = zipfile.ZipFile(src, 'r') self._files = self._zfile.namelist() elif self._type in (TAR, GZIP, BZIP2): self._tfile = tarfile.open(src, 'r') self._files = self._tfile.getnames() elif self._type == RAR: global _rar_exec if _rar_exec is None: _rar_exec = _get_rar_exec() if _rar_exec is None: print '! Could not find RAR file extractor.' dialog = gtk.MessageDialog(None, 0, gtk.MESSAGE_WARNING, gtk.BUTTONS_CLOSE, _("Could not find RAR file extractor!")) dialog.format_secondary_markup( _("You need either the rar or the unrar program installed in order to read RAR (.cbr) files.")) dialog.run() dialog.destroy() return None proc = process.Process([_rar_exec, 'vb', '--', src]) fd = proc.spawn() self._files = [name.rstrip(os.linesep) for name in fd.readlines()] fd.close() proc.wait() else: print '! Non-supported archive format:', src return None self._setupped = True return self._condition def get_files(self): """Return a list of names of all the files the extractor is currently set for extracting. After a call to setup() this is by default all files found in the archive. The paths in the list are relative to the archive root and are not absolute for the files once extracted. """ return self._files[:] def set_files(self, files): """Set the files that the extractor should extract from the archive in the order of extraction. Normally one would get the list of all files in the archive using get_files(), then filter and/or permute this list before sending it back using set_files(). Note: Random access on gzip or bzip2 compressed tar archives is no good idea. These formats are supported *only* for backwards compability. They are fine formats for some purposes, but should not be used for scanned comic books. So, we cheat and ignore the ordering applied with this method on such archives. """ if self._type in (GZIP, BZIP2): self._files = [x for x in self._files if x in files] else: self._files = files def is_ready(self, name): """Return True if the file in the extractor's file list (as set by set_files()) is fully extracted. """ return self._extracted.get(name, False) def get_mime_type(self): """Return the mime type name of the extractor's current archive.""" return self._type def stop(self): """Signal the extractor to stop extracting and kill the extracting thread. Blocks until the extracting thread has terminated. """ self._stop = True if self._setupped: self._extract_thread.join() self.setupped = False def extract(self): """Start extracting the files in the file list one by one using a new thread. Every time a new file is extracted a notify() will be signalled on the Condition that was returned by setup(). """ self._extract_thread = threading.Thread(target=self._thread_extract) self._extract_thread.setDaemon(False) self._extract_thread.start() def close(self): """Close any open file objects, need only be called manually if the extract() method isn't called. """ if self._type == ZIP: self._zfile.close() elif self._type in (TAR, GZIP, BZIP2): self._tfile.close() def _thread_extract(self): """Extract the files in the file list one by one.""" for name in self._files: self._extract_file(name) self.close() def _extract_file(self, name): """Extract the file named to the destination directory, mark the file as "ready", then signal a notify() on the Condition returned by setup(). """ if self._stop: self.close() sys.exit(0) try: if self._type == ZIP: dst_path = os.path.join(self._dst, name) if not os.path.exists(os.path.dirname(dst_path)): os.makedirs(os.path.dirname(dst_path)) new = open(dst_path, 'wb') new.write(self._zfile.read(name)) new.close() elif self._type in (TAR, GZIP, BZIP2): if os.path.normpath(os.path.join(self._dst, name)).startswith( self._dst): self._tfile.extract(name, self._dst) else: print '! Non-local tar member:', name, '\n' elif self._type == RAR: if _rar_exec is not None: proc = process.Process([_rar_exec, 'x', '-kb', '-p-', '-o-', '-inul', '--', self._src, name, self._dst]) proc.spawn() proc.wait() else: print '! Could not find RAR file extractor.' except Exception: # Better to ignore any failed extractions (e.g. from a corrupt # archive) than to crash here and leave the main thread in a # possible infinite block. Damaged or missing files *should* be # handled gracefully by the main program anyway. pass self._condition.acquire() self._extracted[name] = True self._condition.notify() self._condition.release() class Packer: """Packer is a threaded class for packing files into ZIP archives. It would be straight-forward to add support for more archive types, but basically all other types are less well fitted for this particular task than ZIP archives are (yes, really). """ def __init__(self, image_files, other_files, archive_path, base_name): """Setup a Packer object to create a ZIP archive at . All files pointed to by paths in the sequences and will be included in the archive when packed. The files in will be renamed on the form "NN - .ext", so that the lexical ordering of their filenames match that of their order in the list. The files in will be included as they are, assuming their filenames does not clash with other filenames in the archive. All files are placed in the archive root. """ self._image_files = image_files self._other_files = other_files self._archive_path = archive_path self._base_name = base_name self._pack_thread = None self._packing_successful = False def pack(self): """Pack all the files in the file lists into the archive.""" self._pack_thread = threading.Thread(target=self._thread_pack) self._pack_thread.setDaemon(False) self._pack_thread.start() def wait(self): """Block until the packer thread has finished. Return True if the packer finished its work successfully. """ if self._pack_thread != None: self._pack_thread.join() return self._packing_successful def _thread_pack(self): try: zfile = zipfile.ZipFile(self._archive_path, 'w') except Exception: print '! Could not create archive', self._archive_path return used_names = [] pattern = '%%0%dd - %s%%s' % (len(str(len(self._image_files))), self._base_name) for i, path in enumerate(self._image_files): filename = pattern % (i + 1, os.path.splitext(path)[1]) try: zfile.write(path, filename, zipfile.ZIP_STORED) except Exception: print '! Could not add file %s to add to %s, aborting...' % ( path, self._archive_path) zfile.close() try: os.remove(self._archive_path) except: pass return used_names.append(filename) for path in self._other_files: filename = os.path.basename(path) while filename in used_names: filename = '_%s' % filename try: zfile.write(path, filename, zipfile.ZIP_DEFLATED) except Exception: print '! Could not add file %s to add to %s, aborting...' % ( path, self._archive_path) zfile.close() try: os.remove(self._archive_path) except: pass return used_names.append(filename) zfile.close() self._packing_successful = True def archive_mime_type(path): """Return the archive type of or None for non-archives.""" try: if os.path.isfile(path): if not os.access(path, os.R_OK): return None if zipfile.is_zipfile(path): return ZIP fd = open(path, 'rb') magic = fd.read(4) fd.close() if tarfile.is_tarfile(path) and os.path.getsize(path) > 0: if magic.startswith('BZh'): return BZIP2 if magic.startswith('\037\213'): return GZIP return TAR if magic == 'Rar!': return RAR except Exception: print '! Error while reading', path return None def get_name(archive_type): """Return a text representation of an archive type.""" return {ZIP: _('ZIP archive'), TAR: _('Tar archive'), GZIP: _('Gzip compressed tar archive'), BZIP2: _('Bzip2 compressed tar archive'), RAR: _('RAR archive')}[archive_type] def get_archive_info(path): """Return a tuple (mime, num_pages, size) with info about the archive at , or None if doesn't point to a supported archive. """ image_re = re.compile(r'\.(jpg|jpeg|png|gif|tif|tiff)\s*$', re.I) extractor = Extractor() extractor.setup(path, None) mime = extractor.get_mime_type() if mime is None: return None files = extractor.get_files() extractor.close() num_pages = len(filter(image_re.search, files)) size = os.stat(path).st_size return (mime, num_pages, size) def _get_rar_exec(): """Return the name of the RAR file extractor executable, or None if no such executable is found. """ for command in ('unrar', 'rar'): if process.Process([command]).spawn() is not None: return command return None comix-4.0.4/src/event.py0000644000175000001440000004051111120465730014015 0ustar sorkusers"""event.py - Event handling (keyboard, mouse, etc.) for the main window. Logically this isn't really a separate module from main.py, but it is given its own file for the sake of readability. """ import urllib import gtk import gobject import cursor import preferences from preferences import prefs class EventHandler: def __init__(self, window): self._window = window self._last_pointer_pos_x = 0 self._last_pointer_pos_y = 0 self._pressed_pointer_pos_x = 0 self._pressed_pointer_pos_y = 0 self._extra_scroll_events = 0 # For scrolling "off the page". def resize_event(self, widget, event): """Handle events from resizing and moving the main window.""" if not self._window.is_fullscreen: prefs['window x'], prefs['window y'] = self._window.get_position() if (event.width != self._window.width or event.height != self._window.height): if not self._window.is_fullscreen: prefs['window width'] = event.width prefs['window height'] = event.height self._window.width = event.width self._window.height = event.height self._window.draw_image(scroll=False) def key_press_event(self, widget, event, *args): """Handle key press events on the main window.""" # ---------------------------------------------------------------- # Some navigation keys that work as well as the accelerators in # ui.py. # ---------------------------------------------------------------- if event.keyval in (gtk.keysyms.KP_Page_Up, gtk.keysyms.BackSpace): self._window.previous_page() elif event.keyval == gtk.keysyms.KP_Page_Down: self._window.next_page() # ---------------------------------------------------------------- # Numpad (without numlock) aligns the image depending on the key. # ---------------------------------------------------------------- elif event.keyval == gtk.keysyms.KP_1: self._window.scroll_to_fixed(horiz='left', vert='bottom') elif event.keyval == gtk.keysyms.KP_2: self._window.scroll_to_fixed(horiz='middle', vert='bottom') elif event.keyval == gtk.keysyms.KP_3: self._window.scroll_to_fixed(horiz='right', vert='bottom') elif event.keyval == gtk.keysyms.KP_4: self._window.scroll_to_fixed(horiz='left', vert='middle') elif event.keyval == gtk.keysyms.KP_5: self._window.scroll_to_fixed(horiz='middle', vert='middle') elif event.keyval == gtk.keysyms.KP_6: self._window.scroll_to_fixed(horiz='right', vert='middle') elif event.keyval == gtk.keysyms.KP_7: self._window.scroll_to_fixed(horiz='left', vert='top') elif event.keyval == gtk.keysyms.KP_8: self._window.scroll_to_fixed(horiz='middle', vert='top') elif event.keyval == gtk.keysyms.KP_9: self._window.scroll_to_fixed(horiz='right', vert='top') # ---------------------------------------------------------------- # Enter/exit fullscreen. 'f' is also a valid key, defined as an # accelerator elsewhere. # ---------------------------------------------------------------- elif event.keyval == gtk.keysyms.Escape: self._window.actiongroup.get_action('fullscreen').set_active(False) elif event.keyval == gtk.keysyms.F11: self._window.actiongroup.get_action('fullscreen').activate() # ---------------------------------------------------------------- # Zooming commands for manual zoom mode. These keys complement # others (with the same action) defined as accelerators. # ---------------------------------------------------------------- elif event.keyval in (gtk.keysyms.plus, gtk.keysyms.equal): self._window.actiongroup.get_action('zoom_in').activate() elif event.keyval == gtk.keysyms.minus: self._window.actiongroup.get_action('zoom_out').activate() elif (event.keyval in (gtk.keysyms._0, gtk.keysyms.KP_0) and 'GDK_CONTROL_MASK' in event.state.value_names): self._window.actiongroup.get_action('zoom_original').activate() # ---------------------------------------------------------------- # Arrow keys scroll the image, except in best fit mode where # they flip pages instead. # ---------------------------------------------------------------- elif event.keyval in (gtk.keysyms.Down, gtk.keysyms.KP_Down): if not self._window.zoom_mode == preferences.ZOOM_MODE_BEST: self._scroll_with_flipping(0, 50) else: self._window.next_page() elif event.keyval in (gtk.keysyms.Up, gtk.keysyms.KP_Up): if not self._window.zoom_mode == preferences.ZOOM_MODE_BEST: self._scroll_with_flipping(0, -50) else: self._window.previous_page() elif event.keyval in (gtk.keysyms.Right, gtk.keysyms.KP_Right): if not self._window.zoom_mode == preferences.ZOOM_MODE_BEST: self._scroll_with_flipping(50, 0) else: self._window.next_page() elif event.keyval in (gtk.keysyms.Left, gtk.keysyms.KP_Left): if not self._window.zoom_mode == preferences.ZOOM_MODE_BEST: self._scroll_with_flipping(-50, 0) else: self._window.previous_page() # ---------------------------------------------------------------- # Space key scrolls down a percentage of the window height or the # image height at a time. When at the bottom it flips to the next # page. # # It also has a "smart scrolling mode" in which we try to follow # the flow of the comic. # # If Shift is pressed we should backtrack instead. # ---------------------------------------------------------------- elif event.keyval in [gtk.keysyms.space, gtk.keysyms.KP_Home, gtk.keysyms.KP_End]: x_step, y_step = self._window.get_visible_area_size() x_step = int(x_step * 0.9) y_step = int(y_step * 0.9) if self._window.is_manga_mode: x_step *= -1 if ('GDK_SHIFT_MASK' in event.state.value_names or event.keyval == gtk.keysyms.KP_Home): if prefs['smart space scroll']: if self._window.displayed_double(): if self._window.is_on_first_page(): if not self._window.scroll(-x_step, 0, 'first'): if not self._window.scroll(0, -y_step): self._window.previous_page() else: self._window.scroll_to_fixed( horiz='endfirst') else: if not self._window.scroll(-x_step, 0, 'second'): if not self._window.scroll(0, -y_step): if not self._window.scroll_to_fixed( horiz='endfirst'): self._window.previous_page() else: self._window.scroll_to_fixed( vert='bottom') else: self._window.scroll_to_fixed( horiz='endsecond') else: if not self._window.scroll(-x_step, 0): if not self._window.scroll(0, -y_step): self._window.previous_page() else: self._window.scroll_to_fixed(horiz='endfirst') else: if (self._window.zoom_mode == preferences.ZOOM_MODE_BEST or not self._window.scroll(0, -y_step)): self._window.previous_page() else: if prefs['smart space scroll']: if self._window.displayed_double(): if self._window.is_on_first_page(): if not self._window.scroll(x_step, 0, 'first'): if not self._window.scroll(0, y_step): if not self._window.scroll_to_fixed( horiz='startsecond'): self._window.next_page() else: self._window.scroll_to_fixed( vert='top') else: self._window.scroll_to_fixed( horiz='startfirst') else: if not self._window.scroll(x_step, 0, 'second'): if not self._window.scroll(0, y_step): self._window.next_page() else: self._window.scroll_to_fixed( horiz='startsecond') else: if not self._window.scroll(x_step, 0): if not self._window.scroll(0, y_step): self._window.next_page() else: self._window.scroll_to_fixed( horiz='startfirst') else: if (self._window.zoom_mode == preferences.ZOOM_MODE_BEST or not self._window.scroll(0, y_step)): self._window.next_page() # ---------------------------------------------------------------- # We kill the signals here for the Up, Down, Space and Enter keys, # or they will start fiddling with the thumbnail selector (bad). # ---------------------------------------------------------------- if (event.keyval in (gtk.keysyms.Up, gtk.keysyms.Down, gtk.keysyms.space, gtk.keysyms.KP_Enter, gtk.keysyms.KP_Up, gtk.keysyms.KP_Down, gtk.keysyms.KP_Home, gtk.keysyms.KP_End, gtk.keysyms.KP_Page_Up, gtk.keysyms.KP_Page_Down) or (event.keyval == gtk.keysyms.Return and not 'GDK_MOD1_MASK' in event.state.value_names)): self._window.emit_stop_by_name('key_press_event') return True def scroll_wheel_event(self, widget, event, *args): """Handle scroll wheel events on the maon layout area. The scroll wheel flips pages in best fit mode and scrolls the scrollbars otherwise. """ if 'GDK_BUTTON2_MASK' in event.state.value_names: return if event.direction == gtk.gdk.SCROLL_UP: if self._window.zoom_mode == preferences.ZOOM_MODE_BEST: self._window.previous_page() elif self._window.zoom_mode == preferences.ZOOM_MODE_HEIGHT: if self._window.is_manga_mode: self._scroll_with_flipping(70, 0) else: self._scroll_with_flipping(-70, 0) else: self._scroll_with_flipping(0, -70) elif event.direction == gtk.gdk.SCROLL_DOWN: if self._window.zoom_mode == preferences.ZOOM_MODE_BEST: self._window.next_page() elif self._window.zoom_mode == preferences.ZOOM_MODE_HEIGHT: if self._window.is_manga_mode: self._scroll_with_flipping(-70, 0) else: self._scroll_with_flipping(70, 0) else: self._scroll_with_flipping(0, 70) elif event.direction == gtk.gdk.SCROLL_RIGHT: self._window.next_page() elif event.direction == gtk.gdk.SCROLL_LEFT: self._window.previous_page() def mouse_press_event(self, widget, event): """Handle mouse click events on the main layout area.""" if event.button == 1: self._pressed_pointer_pos_x = event.x_root self._pressed_pointer_pos_y = event.y_root self._last_pointer_pos_x = event.x_root self._last_pointer_pos_y = event.y_root elif event.button == 2: self._window.actiongroup.get_action('lens').set_active(True) elif event.button == 3: self._window.cursor_handler.set_cursor_type(cursor.NORMAL) self._window.popup.popup(None, None, None, event.button, event.time) def mouse_release_event(self, widget, event): """Handle mouse button release events on the main layout area.""" self._window.cursor_handler.set_cursor_type(cursor.NORMAL) if (event.button == 1 and event.x_root == self._pressed_pointer_pos_x and event.y_root == self._pressed_pointer_pos_y): self._window.next_page() if event.button == 2: self._window.actiongroup.get_action('lens').set_active(False) def mouse_move_event(self, widget, event): """Handle mouse pointer movement events.""" event = _get_latest_event_of_same_type(event) if 'GDK_BUTTON1_MASK' in event.state.value_names: self._window.cursor_handler.set_cursor_type(cursor.GRAB) self._window.scroll(self._last_pointer_pos_x - event.x_root, self._last_pointer_pos_y - event.y_root) self._last_pointer_pos_x = event.x_root self._last_pointer_pos_y = event.y_root self._drag_timer = event.time elif self._window.actiongroup.get_action('lens').get_active(): self._window.glass.set_lens_cursor(event.x, event.y) else: self._window.cursor_handler.refresh() def drag_n_drop_event(self, widget, context, x, y, selection, drag_id, eventtime): """Handle drag-n-drop events on the main layout area.""" # The drag source is inside Comix itself, so we ignore. if (context.get_source_widget() is not None): return uris = selection.get_uris() if not uris: return uri = uris[0] # Open only one file. if uri.startswith('file://localhost/'): # Correctly formatted. uri = uri[16:] elif uri.startswith('file:///'): # Nautilus etc. uri = uri[7:] elif uri.startswith('file:/'): # Xffm etc. uri = uri[5:] path = urllib.url2pathname(uri) self._window.file_handler.open_file(path) def _scroll_with_flipping(self, x, y): """Handle scrolling with the scroll wheel or the arow keys, for which the pages might be flipped depending on the preferences. """ if self._window.scroll(x, y) or not prefs['flip with wheel']: self._extra_scroll_events = 0 return if y > 0 or (self._window.is_manga_mode and x < 0) or ( not self._window.is_manga_mode and x > 0): forwards_scroll = True else: forwards_scroll = False if forwards_scroll: self._extra_scroll_events = max(1, self._extra_scroll_events + 1) if self._extra_scroll_events >= 3: self._extra_scroll_events = 0 self._window.next_page() else: self._extra_scroll_events = min(-1, self._extra_scroll_events - 1) if self._extra_scroll_events <= -3: self._extra_scroll_events = 0 self._window.previous_page() def _get_latest_event_of_same_type(event): """Return the latest event in the event queue that is of the same type as , or itself if no such events are in the queue. All events of that type will be removed from the event queue. """ events = [] while gtk.gdk.events_pending(): queued_event = gtk.gdk.event_get() if queued_event is not None: if queued_event.type == event.type: event = queued_event else: events.append(queued_event) for queued_event in events: queued_event.put() return event comix-4.0.4/src/comix.py0000755000175000001440000001177611154252451014032 0ustar sorkusers#!/usr/bin/env python """Comix - GTK Comic Book Viewer Copyright (C) 2005-2009 Pontus Ekberg """ # ------------------------------------------------------------------------- # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # ------------------------------------------------------------------------- import os import sys import gettext import getopt #Check for PyGTK and PIL dependencies. try: import pygtk pygtk.require('2.0') import gtk assert gtk.gtk_version >= (2, 12, 0) assert gtk.pygtk_version >= (2, 12, 0) except AssertionError: print "You don't have the required versions of GTK+ and/or PyGTK", print 'installed.' print 'Installed GTK+ version is: %s' % ( '.'.join([str(n) for n in gtk.gtk_version])) print 'Required GTK+ version is: 2.12.0 or higher\n' print 'Installed PyGTK version is: %s' % ( '.'.join([str(n) for n in gtk.pygtk_version])) print 'Required PyGTK version is: 2.12.0 or higher' sys.exit(1) except ImportError: print 'PyGTK version 2.12.0 or higher is required to run Comix.' print 'No version of PyGTK was found on your system.' sys.exit(1) try: import Image assert Image.VERSION >= '1.1.5' except AssertionError: print "You don't have the required version of the Python Imaging", print 'Library (PIL) installed.' print 'Installed PIL version is: %s' % Image.VERSION print 'Required PIL version is: 1.1.5 or higher' sys.exit(1) except ImportError: print 'Python Imaging Library (PIL) 1.1.5 or higher is required.' print 'No version of the Python Imaging Library was found on your', print 'system.' sys.exit(1) import constants import deprecated import filehandler import locale import main import icons import preferences def print_help(): """Print the command-line help text and exit.""" print 'Usage:' print ' comix [OPTION...] [PATH]' print '\nView images and comic book archives.\n' print 'Options:' print ' -h, --help Show this help and exit.' print ' -f, --fullscreen Start the application in fullscreen mode.' print ' -l, --library Show the library on startup.' sys.exit(1) def run(): """Run the program.""" # Use gettext translations as found in the source dir, otherwise based on # the install path. exec_path = os.path.abspath(sys.argv[0]) base_dir = os.path.dirname(os.path.dirname(exec_path)) if os.path.isdir(os.path.join(base_dir, 'messages')): gettext.install('comix', os.path.join(base_dir, 'messages'), unicode=True) else: gettext.install('comix', os.path.join(base_dir, 'share/locale'), unicode=True) fullscreen = False show_library = False open_path = None open_page = 1 try: opts, args = getopt.gnu_getopt(sys.argv[1:], 'fhl', ['fullscreen', 'help', 'library']) except getopt.GetoptError: print_help() for opt, value in opts: if opt in ('-h', '--help'): print_help() elif opt in ('-f', '--fullscreen'): fullscreen = True elif opt in ('-l', '--library'): show_library = True if not os.path.exists(constants.DATA_DIR): os.makedirs(constants.DATA_DIR, 0700) if not os.path.exists(constants.CONFIG_DIR): os.makedirs(constants.CONFIG_DIR, 0700) deprecated.move_files_to_xdg_dirs() preferences.read_preferences_file() icons.load_icons() if len(args) >= 1: param_path = os.path.abspath(args[0]) if os.path.isdir(param_path): dir_files = os.listdir(param_path) dir_files.sort(locale.strcoll) for filename in dir_files: full_path = os.path.join(param_path, filename) if filehandler.is_image_file(full_path): open_path = full_path break else: open_path = param_path elif preferences.prefs['auto load last file']: open_path = preferences.prefs['path to last file'] open_page = preferences.prefs['page of last file'] window = main.MainWindow(fullscreen=fullscreen, show_library=show_library, open_path=open_path, open_page=open_page) deprecated.check_for_deprecated_files(window) try: gtk.main() except KeyboardInterrupt: # Will not always work because of threading. window.terminate_program() if __name__ == '__main__': run() comix-4.0.4/src/thumbremover.py0000644000175000001440000002111511132453536015416 0ustar sorkusers"""thumbremover.py - Thumbnail maintenance module for Comix. Removes and cleans up outdated and orphaned thumbnails. """ import os import urllib import gtk import pango import Image import encoding import labels import constants _dialog = None _thumb_base = os.path.join(constants.HOME_DIR, '.thumbnails') class _ThumbnailMaintenanceDialog(gtk.Dialog): def __init__(self, window): self._num_thumbs = 0 gtk.Dialog.__init__(self, _('Thumbnail maintenance'), window, 0, (gtk.STOCK_CLOSE, gtk.RESPONSE_CLOSE)) button = self.add_button(_('Cleanup'), gtk.RESPONSE_OK) button.set_image(gtk.image_new_from_stock( gtk.STOCK_CLEAR, gtk.ICON_SIZE_BUTTON)) self.set_has_separator(False) self.set_resizable(False) self.set_border_width(4) self.connect('response', self._response) self.set_default_response(gtk.RESPONSE_OK) main_box = gtk.VBox(False, 5) main_box.set_border_width(6) self.vbox.pack_start(main_box, False, False) label = labels.BoldLabel(_('Cleanup thumbnails')) label.set_alignment(0, 0.5) attrlist = label.get_attributes() attrlist.insert(pango.AttrScale(pango.SCALE_LARGE, 0, len(label.get_text()))) label.set_attributes(attrlist) main_box.pack_start(label, False, False, 2) main_box.pack_start(gtk.HSeparator(), False, False, 5) label = labels.ItalicLabel( _('Thumbnails for files (such as image files and comic book archives) are stored in your home directory. Many different applications use and create these thumbnails, but sometimes thumbnails remain even though the original files have been removed - wasting space. This dialog can cleanup your stored thumbnails by removing orphaned and outdated thumbnails.')) label.set_alignment(0, 0.5) label.set_line_wrap(True) main_box.pack_start(label, False, False, 10) hbox = gtk.HBox(False, 10) main_box.pack_start(hbox, False, False) left_box = gtk.VBox(True, 5) right_box = gtk.VBox(True, 5) hbox.pack_start(left_box, False, False) hbox.pack_start(right_box, False, False) label = labels.BoldLabel('%s:' % _('Thumbnail directory')) label.set_alignment(1.0, 1.0) left_box.pack_start(label, True, True) label = gtk.Label('%s' % encoding.to_unicode(_thumb_base)) label.set_alignment(0, 1.0) right_box.pack_start(label, True, True) label = labels.BoldLabel('%s:' % _('Total number of thumbnails')) label.set_alignment(1.0, 1.0) left_box.pack_start(label, True, True) self._num_thumbs_label = gtk.Label(_('Calculating...')) self._num_thumbs_label.set_alignment(0, 1.0) right_box.pack_start(self._num_thumbs_label, True, True) label = labels.BoldLabel('%s:' % _('Total size of thumbnails')) label.set_alignment(1.0, 1.0) left_box.pack_start(label, True, True) self._size_thumbs_label = gtk.Label(_('Calculating...')) self._size_thumbs_label.set_alignment(0, 1.0) right_box.pack_start(self._size_thumbs_label, True, True) label = labels.ItalicLabel( _('Do you want to cleanup orphaned and outdated thumbnails now?')) label.set_alignment(0, 0.5) main_box.pack_start(label, False, False, 10) self.show_all() while gtk.events_pending(): gtk.main_iteration(False) self._update_num_and_size() def _update_num_and_size(self): self._num_thumbs = 0 size_thumbs = 0 for subdir in ('normal', 'large'): dir_path = os.path.join(_thumb_base, subdir) if os.path.isdir(dir_path): for entry in os.listdir(dir_path): entry_path = os.path.join(dir_path, entry) if os.path.isfile(entry_path): self._num_thumbs += 1 size_thumbs += os.stat(entry_path).st_size self._num_thumbs_label.set_text('%d' % self._num_thumbs) self._size_thumbs_label.set_text('%.1f MiB' % (size_thumbs / 1048576.0)) def _response(self, dialog, response): if response == gtk.RESPONSE_OK: _ThumbnailRemover(self, self._num_thumbs) self._update_num_and_size() else: _close_dialog() class _ThumbnailRemover(gtk.Dialog): def __init__(self, parent, total_thumbs): self._total_thumbs = total_thumbs self._destroy = False gtk.Dialog.__init__(self, _('Removing thumbnails'), parent, 0, (gtk.STOCK_STOP, gtk.RESPONSE_CLOSE)) self.set_size_request(400, -1) self.set_has_separator(False) self.set_resizable(False) self.set_border_width(4) self.connect('response', self._response) self.set_default_response(gtk.RESPONSE_CLOSE) main_box = gtk.VBox(False, 5) main_box.set_border_width(6) self.vbox.pack_start(main_box, False, False) hbox = gtk.HBox(False, 10) main_box.pack_start(hbox, False, False, 5) left_box = gtk.VBox(True, 5) right_box = gtk.VBox(True, 5) hbox.pack_start(left_box, False, False) hbox.pack_start(right_box, False, False) label = labels.BoldLabel('%s:' % _('Number of removed thumbnails')) label.set_alignment(1.0, 1.0) left_box.pack_start(label, True, True) number_label = gtk.Label('0') number_label.set_alignment(0, 1.0) right_box.pack_start(number_label, True, True) label = labels.BoldLabel('%s:' % _('Total size of removed thumbnails')) label.set_alignment(1.0, 1.0) left_box.pack_start(label, True, True) size_label = gtk.Label('0.0 MiB') size_label.set_alignment(0, 1.0) right_box.pack_start(size_label, True, True) bar = gtk.ProgressBar() main_box.pack_start(bar, False, False) removing_label = labels.ItalicLabel() removing_label.set_alignment(0, 0.5) removing_label.set_ellipsize(pango.ELLIPSIZE_MIDDLE) main_box.pack_start(removing_label, False, False) self.show_all() iteration = 0.0 removed_thumbs = 0 size_thumbs = 0 for subdir in ('normal', 'large'): dir_path = os.path.join(_thumb_base, subdir) if not os.path.isdir(dir_path): continue for entry in os.listdir(dir_path): if self._destroy: return iteration += 1 entry_path = os.path.join(dir_path, entry) if not os.path.isfile(entry_path): continue broken = False try: stats = os.stat(entry_path) info = Image.open(entry_path).info orig_path = _uri_to_path(info['Thumb::URI']) thumb_mtime = int(info['Thumb::MTime']) src_mtime = os.stat(orig_path).st_mtime except Exception: broken = True # Thumb is orphaned or outdated if (broken or not os.path.isfile(orig_path) or src_mtime != thumb_mtime): try: os.remove(entry_path) except Exception: continue removed_thumbs += 1 size_thumbs += stats.st_size number_label.set_text('%d' % removed_thumbs) size_label.set_text('%.1f MiB' % (size_thumbs / 1048576.0)) removing_label.set_text(_("Removed thumbnail for '%s'") % encoding.to_unicode(orig_path)) if iteration % 50 == 0: bar.set_fraction(iteration / self._total_thumbs) while gtk.events_pending(): gtk.main_iteration(False) self._response() def _response(self, *args): self._destroy = True self.destroy() def _uri_to_path(uri): """Return the path corresponding to the URI , unless it is a non-local resource in which case we return the pathname with the type identifier intact. """ if uri.startswith('file://'): return urllib.url2pathname(uri[7:]) else: return urllib.url2pathname(uri) def open_dialog(action, window): global _dialog if _dialog is None: _dialog = _ThumbnailMaintenanceDialog(window) else: _dialog.present() def _close_dialog(*args): global _dialog if _dialog is not None: _dialog.destroy() _dialog = None comix-4.0.4/src/process.py0000644000175000001440000000310011105660612014342 0ustar sorkusers"""process.py - Process spawning module.""" import gc import subprocess class Process: """The subprocess and popen2 modules in Python are broken (see issue #1336). The problem (i.e. complete crash) they can cause happen fairly often (once is too often) in Comix when calling "rar" or "unrar" to extract specific files from archives. We roll our own very simple process spawning module here instead. """ # TODO: I can no longer reproduce the issue. Check if this version of # process.py still solves it. def __init__(self, args): """Setup a Process where is a sequence of arguments that defines the process, e.g. ['ls', '-a']. """ self._args = args self._proc = None def _exec(self): """Spawns the process, and returns its stdout. (NOTE: separate function to make python2.4 exception syntax happy) """ try: self._proc = subprocess.Popen(self._args, stdout=subprocess.PIPE) return self._proc.stdout except Exception: return None def spawn(self): """Spawn the process defined by the args in __init__(). Return a file-like object linked to the spawned process' stdout. """ try: gc.disable() # Avoid Python issue #1336! return self._exec() finally: gc.enable() def wait(self): """Wait for the process to terminate.""" if self._proc is None: raise Exception('Process not spawned.') return self._proc.wait() comix-4.0.4/src/cursor.py0000644000175000001440000000430311066135112014205 0ustar sorkusers"""cursor.py - Cursor handler.""" import gobject import gtk NORMAL, GRAB, WAIT = range(3) class CursorHandler: def __init__(self, window): self._window = window self._timer_id = None self._auto_hide = False self._current_cursor = NORMAL def set_cursor_type(self, cursor): """Set the cursor to type . Supported cursor types are available as constants in this module. If is not one of the cursor constants above, it must be a gtk.gdk.Cursor. """ if cursor == NORMAL: mode = None elif cursor == GRAB: mode = gtk.gdk.Cursor(gtk.gdk.FLEUR) elif cursor == WAIT: mode = gtk.gdk.Cursor(gtk.gdk.WATCH) else: mode = cursor self._window.set_cursor(mode) self._current_cursor = cursor if self._auto_hide: if cursor == NORMAL: self._set_hide_timer() else: self._kill_timer() def auto_hide_on(self): """Signal that the cursor should auto-hide from now on (e.g. that we are entering fullscreen). """ self._auto_hide = True if self._current_cursor == NORMAL: self._set_hide_timer() def auto_hide_off(self): """Signal that the cursor should *not* auto-hide from now on.""" self._auto_hide = False self._kill_timer() if self._current_cursor == NORMAL: self.set_cursor_type(NORMAL) def refresh(self): """Refresh the current cursor (i.e. display it and set a new timer in fullscreen). Used when we move the cursor. """ if self._auto_hide: self.set_cursor_type(self._current_cursor) def _set_hide_timer(self): self._kill_timer() self._timer_id = gobject.timeout_add(2000, self._window.set_cursor, self._get_hidden_cursor()) def _kill_timer(self): if self._timer_id is not None: gobject.source_remove(self._timer_id) def _get_hidden_cursor(self): pixmap = gtk.gdk.Pixmap(None, 1, 1, 1) color = gtk.gdk.Color() return gtk.gdk.Cursor(pixmap, pixmap, color, color, 0, 0) comix-4.0.4/src/constants.py0000644000175000001440000000035011165454703014714 0ustar sorkusers"""constants.py - Miscellaneous constants.""" import os import portability VERSION = '4.0.4' HOME_DIR = portability.get_home_directory() CONFIG_DIR = portability.get_config_directory() DATA_DIR = portability.get_data_directory() comix-4.0.4/src/librarybackend.py0000644000175000001440000003062611150272120015646 0ustar sorkusers"""librarybackend.py - Comic book library backend using sqlite.""" import os try: from sqlite3 import dbapi2 except ImportError: try: from pysqlite2 import dbapi2 except ImportError: print '! Could neither find pysqlite2 nor sqlite3.' dbapi2 = None import archive import constants import encoding import thumbnail _db_path = os.path.join(constants.DATA_DIR, 'library.db') _cover_dir = os.path.join(constants.DATA_DIR, 'library_covers') class LibraryBackend: """The LibraryBackend handles the storing and retrieval of library data to and from disk. """ def __init__(self): def row_factory(cursor, row): """Return rows as sequences only when they have more than one element. """ if len(row) == 1: return row[0] return row self._con = dbapi2.connect(_db_path) self._con.row_factory = row_factory self._con.text_factory = str if not self._con.execute('pragma table_info(Book)').fetchall(): self._create_table_book() if not self._con.execute('pragma table_info(Collection)').fetchall(): self._create_table_collection() if not self._con.execute('pragma table_info(Contain)').fetchall(): self._create_table_contain() def get_books_in_collection(self, collection=None, filter_string=None): """Return a sequence with all the books in , or *ALL* books if is None. If is not None, we only return books where the occurs in the path. """ if collection is None: if filter_string is None: cur = self._con.execute('''select id from Book order by path''') else: cur = self._con.execute('''select id from Book where path like ? order by path''', ("%%%s%%" % filter_string,)) else: if filter_string is None: cur = self._con.execute('''select id from Book where id in (select book from Contain where collection = ?) order by path''', (collection,)) else: cur = self._con.execute('''select id from Book where id in (select book from Contain where collection = ?) and path like ? order by path''', (collection, "%%%s%%" % filter_string)) return cur.fetchall() def get_book_cover(self, book): """Return a pixbuf with a thumbnail of the cover of , or None if the cover can not be fetched. """ try: path = self._con.execute('''select path from Book where id = ?''', (book,)).fetchone() except Exception: print '! Non-existant book #%d' % book return None thumb = thumbnail.get_thumbnail(path, create=True, dst_dir=_cover_dir) if thumb is None: print '! Could not get cover for %s' % path return thumb def get_book_path(self, book): """Return the filesystem path to , or None if isn't in the library. """ cur = self._con.execute('''select path from Book where id = ?''', (book,)) return cur.fetchone() def get_book_name(self, book): """Return the name of , or None if isn't in the library. """ cur = self._con.execute('''select name from Book where id = ?''', (book,)) name = cur.fetchone() if name is None: return None return encoding.to_unicode(name) def get_book_pages(self, book): """Return the number of pages in , or None if isn't in the library. """ cur = self._con.execute('''select pages from Book where id = ?''', (book,)) return cur.fetchone() def get_book_format(self, book): """Return the archive format of , or None if isn't in the library. """ cur = self._con.execute('''select format from Book where id = ?''', (book,)) return cur.fetchone() def get_book_size(self, book): """Return the size of in bytes, or None if isn't in the library. """ cur = self._con.execute('''select size from Book where id = ?''', (book,)) return cur.fetchone() def get_collections_in_collection(self, collection=None): """Return a sequence with all the subcollections in , or all top-level collections if is None. """ if collection is None: cur = self._con.execute('''select id from Collection where supercollection isnull order by name''') else: cur = self._con.execute('''select id from Collection where supercollection = ? order by name''', (collection,)) return cur.fetchall() def get_all_collections(self): """Return a sequence with all collections (flattened hierarchy). The sequence is sorted alphabetically by collection name. """ cur = self._con.execute('''select id from Collection order by name''') return cur.fetchall() def get_collection_name(self, collection): """Return the name field of the , or None if the collection does not exist. """ cur = self._con.execute('''select name from Collection where id = ?''', (collection,)) name = cur.fetchone() if name is None: return None return unicode(name) def get_collection_by_name(self, name): """Return the collection called , or None if no such collection exists. Names are unique, so at most one such collection can exist. """ cur = self._con.execute('''select id from Collection where name = ?''', (name,)) return cur.fetchone() def get_supercollection(self, collection): """Return the supercollection of .""" cur = self._con.execute('''select supercollection from Collection where id = ?''', (collection,)) return cur.fetchone() def add_book(self, path, collection=None): """Add the archive at to the library. If is not None, it is the collection that the books should be put in. Return True if the book was successfully added (or was already added). """ path = os.path.abspath(path) name = os.path.basename(path) info = archive.get_archive_info(path) if info is None: return False format, pages, size = info thumbnail.get_thumbnail(path, create=True, dst_dir=_cover_dir) old = self._con.execute('''select id from Book where path = ?''', (path,)).fetchone() try: if old is not None: self._con.execute('''update Book set name = ?, pages = ?, format = ?, size = ? where path = ?''', (name, pages, format, size, path)) else: self._con.execute('''insert into Book (name, path, pages, format, size) values (?, ?, ?, ?, ?)''', (name, path, pages, format, size)) except dbapi2.Error: print '! Could not add book %s to the library' % path return False if collection is not None: book = self._con.execute('''select id from Book where path = ?''', (path,)).fetchone() self.add_book_to_collection(book, collection) return True def add_collection(self, name): """Add a new collection with to the library. Return True if the collection was successfully added. """ try: self._con.execute('''insert into Collection (name) values (?)''', (name,)) return True except dbapi2.Error: print '! Could not add collection %s' % name return False def add_book_to_collection(self, book, collection): """Put into .""" try: self._con.execute('''insert into Contain (collection, book) values (?, ?)''', (collection, book)) except dbapi2.DatabaseError: # E.g. book already in collection. pass except dbapi2.Error: print '! Could not add book %s to collection %s' % (book, collection) def add_collection_to_collection(self, subcollection, supercollection): """Put into , or put in the root if is None. """ if supercollection is None: self._con.execute('''update Collection set supercollection = NULL where id = ?''', (subcollection,)) else: self._con.execute('''update Collection set supercollection = ? where id = ?''', (supercollection, subcollection)) def rename_collection(self, collection, name): """Rename the to . Return True if the renaming was successful. """ try: self._con.execute('''update Collection set name = ? where id = ?''', (name, collection)) return True except dbapi2.DatabaseError: # E.g. name taken. pass except dbapi2.Error: print '! Could not rename collection to %s' % name return False def duplicate_collection(self, collection): """Duplicate the by creating a new collection containing the same books. Return True if the duplication was successful. """ name = self.get_collection_name(collection) if name is None: # Original collection does not exist. return False copy_name = name + ' ' + _('(Copy)') while self.get_collection_by_name(copy_name): copy_name = copy_name + ' ' + _('(Copy)') if self.add_collection(copy_name) is None: # Could not create the new. return False copy_collection = self._con.execute('''select id from Collection where name = ?''', (copy_name,)).fetchone() self._con.execute('''insert or ignore into Contain (collection, book) select ?, book from Contain where collection = ?''', (copy_collection, collection)) return True def remove_book(self, book): """Remove the from the library.""" path = self.get_book_path(book) if path is not None: thumbnail.delete_thumbnail(path, dst_dir=_cover_dir) self._con.execute('delete from Book where id = ?', (book,)) self._con.execute('delete from Contain where book = ?', (book,)) def remove_collection(self, collection): """Remove the (sans books) from the library.""" self._con.execute('delete from Collection where id = ?', (collection,)) self._con.execute('delete from Contain where collection = ?', (collection,)) self._con.execute('''update Collection set supercollection = NULL where supercollection = ?''', (collection,)) def remove_book_from_collection(self, book, collection): """Remove from .""" self._con.execute('''delete from Contain where book = ? and collection = ?''', (book, collection)) def close(self): """Commit changes and close cleanly.""" self._con.commit() self._con.close() def _create_table_book(self): self._con.execute('''create table book ( id integer primary key, name string, path string unique, pages integer, format integer, size integer, added date default current_date)''') def _create_table_collection(self): self._con.execute('''create table collection ( id integer primary key, name string unique, supercollection integer)''') def _create_table_contain(self): self._con.execute('''create table contain ( collection integer not null, book integer not null, primary key (collection, book))''') comix-4.0.4/src/about.py0000644000175000001440000001240611145523141014006 0ustar sorkusers# -*- coding: utf-8 -*- """about.py - About dialog.""" import os import sys import gtk import pango import constants import labels _dialog = None class _AboutDialog(gtk.Dialog): def __init__(self, window): gtk.Dialog.__init__(self, _('About'), window, 0, (gtk.STOCK_CLOSE, gtk.RESPONSE_CLOSE)) self.set_has_separator(False) self.set_resizable(False) self.connect('response', _close_dialog) self.set_default_response(gtk.RESPONSE_CLOSE) notebook = gtk.Notebook() self.vbox.pack_start(notebook, False, False, 0) self.set_border_width(4) notebook.set_border_width(6) # ---------------------------------------------------------------- # About tab. # ---------------------------------------------------------------- box = gtk.VBox(False, 0) box.set_border_width(5) base = os.path.dirname(os.path.dirname(os.path.realpath(sys.argv[0]))) icon_path = os.path.join(base, 'images/comix.svg') if not os.path.isfile(icon_path): for prefix in [base, '/usr', '/usr/local', '/usr/X11R6']: icon_path = os.path.join(prefix, 'share/comix/images/comix.svg') if os.path.isfile(icon_path): break try: pixbuf = gtk.gdk.pixbuf_new_from_file_at_size(icon_path, 200, 200) icon = gtk.Image() icon.set_from_pixbuf(pixbuf) box.pack_start(icon, False, False, 10) except Exception: print '! Could not find the icon file "comix.svg"\n' label = gtk.Label() label.set_markup( 'Com' + 'ix ' + constants.VERSION + '\n\n' + _('Comix is an image viewer specifically designed to handle comic books.') + '\n' + _('It reads ZIP, RAR and tar archives, as well as plain image files.') + '\n\n' + _('Comix is licensed under the GNU General Public License.') + '\n\n' + 'Copyright © 2005-2009 Pontus Ekberg\n\n' + 'herrekberg@users.sourceforge.net\n' + 'http://comix.sourceforge.net\n') box.pack_start(label, True, True, 0) label.set_justify(gtk.JUSTIFY_CENTER) label.set_selectable(True) notebook.insert_page(box, gtk.Label(_('About'))) # ---------------------------------------------------------------- # Credits tab. # ---------------------------------------------------------------- scrolled = gtk.ScrolledWindow() scrolled.set_policy(gtk.POLICY_NEVER, gtk.POLICY_AUTOMATIC) hbox = gtk.HBox(False, 5) hbox.set_border_width(5) scrolled.add_with_viewport(hbox) left_box = gtk.VBox(True, 8) right_box = gtk.VBox(True, 8) hbox.pack_start(left_box, False, False) hbox.pack_start(right_box, False, False) for nice_person, description in ( ('Pontus Ekberg', _('Developer')), ('Emfox Zhou', _('Simplified Chinese translation')), ('Xie Yanbo', _('Simplified Chinese translation')), ('Manuel Quiñones', _('Spanish translation')), ('Marcelo Góes', _('Brazilian Portuguese translation')), ('Christoph Wolk', _('German translation and Nautilus thumbnailer')), ('Raimondo Giammanco', _('Italian translation')), ('GhePeU', _('Italian translation')), ('Arthur Nieuwland', _('Dutch translation')), ('Achraf Cherti', _('French translation')), ('Benoît H.', _('French translation')), ('Kamil Leduchowski', _('Polish translation')), ('Darek Jakoniuk', _('Polish translation')), ('Paul Chatzidimitriou', _('Greek translation')), ('Carles Escrig Royo', _('Catalan translation')), ('Hsin-Lin Cheng', _('Traditional Chinese translation')), ('Wayne Su', _('Traditional Chinese translation')), ('Mamoru Tasaka', _('Japanese translation')), ('Ernő Drabik', _('Hungarian translation')), ('Artyom Smirnov', _('Russian translation')), ('Adrian C.', _('Croatian translation')), ('김민기', _('Korean translation')), ('Maryam Sanaat', _('Persian translation')), ('Andhika Padmawan', _('Indonesian translation')), ('Jan Nekvasil', _('Czech translation')), ('Victor Castillejo', _('Icon design'))): name_label = labels.BoldLabel('%s:' % nice_person) name_label.set_alignment(1.0, 1.0) left_box.pack_start(name_label, True, True) desc_label = gtk.Label(description) desc_label.set_alignment(0, 1.0) right_box.pack_start(desc_label, True, True) notebook.insert_page(scrolled, gtk.Label(_('Credits'))) self.show_all() def open_dialog(action, window): """Create and display the about dialog.""" global _dialog if _dialog is None: _dialog = _AboutDialog(window) else: _dialog.present() def _close_dialog(*args): """Destroy the about dialog.""" global _dialog if _dialog is not None: _dialog.destroy() _dialog = None comix-4.0.4/src/bookmark.py0000644000175000001440000002751711150272120014504 0ustar sorkusers"""bookmark.py - Bookmarks handler (including menu and dialog).""" import os import cPickle import gtk import gobject import constants import constants _pickle_path = os.path.join(constants.DATA_DIR, 'bookmarks.pickle') class BookmarksMenu(gtk.Menu): """BookmarksMenu extends gtk.Menu with convenience methods relating to bookmarks. It contains fixed items for adding bookmarks etc. as well as dynamic items corresponding to the current bookmarks. """ def __init__(self, ui, window): gtk.Menu.__init__(self) self._window = window self._actiongroup = gtk.ActionGroup('comix-bookmarks') self._actiongroup.add_actions([ ('add_bookmark', 'comix-add-bookmark', _('_Add bookmark'), 'd', None, self._add_current_to_bookmarks), ('edit_bookmarks', None, _('_Edit bookmarks...'), 'b', None, self._edit_bookmarks), ('clear_bookmarks', gtk.STOCK_CLEAR, _('_Clear bookmarks...'), None, None, self._clear_bookmarks)]) self._separator = gtk.SeparatorMenuItem() action = self._actiongroup.get_action('add_bookmark') action.set_accel_group(ui.get_accel_group()) self.append(action.create_menu_item()) action = self._actiongroup.get_action('edit_bookmarks') action.set_accel_group(ui.get_accel_group()) self.append(action.create_menu_item()) self.append(self._separator) self.append(gtk.SeparatorMenuItem()) action = self._actiongroup.get_action('clear_bookmarks') action.set_accel_group(ui.get_accel_group()) self.append(action.create_menu_item()) self.show_all() self._separator.hide() self._bookmarks_store = _BookmarksStore(self, window.file_handler) def add_bookmark(self, bookmark): """Add to the menu.""" self.insert(bookmark, 3) bookmark.show() self._separator.show() def remove_bookmark(self, bookmark): """Remove from the menu.""" self.remove(bookmark) if self._bookmarks_store.is_empty(): self._separator.hide() def _add_current_to_bookmarks(self, *args): """Add the currently viewed file to the bookmarks.""" self._bookmarks_store.add_current_to_bookmarks() def _edit_bookmarks(self, *args): """Open the bookmarks dialog.""" _BookmarksDialog(self._window, self._bookmarks_store) def _clear_bookmarks(self, *args): """Remove all bookmarks, if the user presses 'Yes' in a confirmation dialog. """ choice_dialog = gtk.MessageDialog(self._window, 0, gtk.MESSAGE_QUESTION, gtk.BUTTONS_YES_NO, _('Clear all bookmarks?')) choice_dialog.format_secondary_text( _('All stored bookmarks will be removed. Are you sure that you want to continue?')) response = choice_dialog.run() choice_dialog.destroy() if response == gtk.RESPONSE_YES: self._bookmarks_store.clear_bookmarks() def set_sensitive(self, loaded): """Set the sensitivities of menu items as appropriate if represents whether a file is currently loaded in the main program or not. """ self._actiongroup.get_action('add_bookmark').set_sensitive(loaded) def write_bookmarks_file(self): """Store relevant bookmark info in the comix directory.""" self._bookmarks_store.write_bookmarks_file() class _Bookmark(gtk.ImageMenuItem): """_Bookmark represents one bookmark. It extends the gtk.ImageMenuItem and is thus put directly in the bookmarks menu. """ def __init__(self, file_handler, name, path, page, numpages, archive_type): self._name = name self._path = path self._page = page self._numpages = numpages self._archive_type = archive_type self._file_handler = file_handler gtk.MenuItem.__init__(self, str(self), False) if self._archive_type is not None: im = gtk.image_new_from_stock('comix-archive', gtk.ICON_SIZE_MENU) else: im = gtk.image_new_from_stock('comix-image', gtk.ICON_SIZE_MENU) self.set_image(im) self.connect('activate', self._load) def __str__(self): return '%s, (%d / %d)' % (self._name, self._page, self._numpages) def _load(self, *args): """Open the file and page the bookmark represents.""" self._file_handler.open_file(self._path, self._page) def same_path(self, path): """Return True if the bookmark is for the file .""" return path == self._path def to_row(self): """Return a tuple corresponding to one row in the _BookmarkDialog's ListStore. """ stock = self.get_image().get_stock() pixbuf = self.render_icon(*stock) page = '%d / %d' % (self._page, self._numpages) return (pixbuf, self._name, page, self) def pack(self): """Return a tuple suitable for pickling. The bookmark can be fully re-created using the values in the tuple. """ return (self._name, self._path, self._page, self._numpages, self._archive_type) class _BookmarksStore: """The _BookmarksStore is a backend for both the bookmarks menu and dialog. Changes in the _BookmarksStore is mirrored in both. """ def __init__(self, menu, file_handler): self._menu = menu self._file_handler = file_handler self._bookmarks = [] if os.path.isfile(_pickle_path): try: fd = open(_pickle_path, 'rb') version = cPickle.load(fd) packs = cPickle.load(fd) for pack in packs: self.add_bookmark_by_values(*pack) fd.close() except Exception: print '! bookmark.py: Could not parse', _pickle_path print '! bookmark.py: Deleting corrupt bookmarks file.\n' os.remove(_pickle_path) self.clear_bookmarks() def add_bookmark_by_values(self, name, path, page, numpages, archive_type): """Create a bookmark and add it to the store and the menu.""" bookmark = _Bookmark(self._file_handler, name, path, page, numpages, archive_type) self._bookmarks.append(bookmark) self._menu.add_bookmark(bookmark) def add_bookmark(self, bookmark): """Add the to the store and the menu.""" self._bookmarks.append(bookmark) self._menu.add_bookmark(bookmark) def remove_bookmark(self, bookmark): """Remove the from the store and the menu.""" self._bookmarks.remove(bookmark) self._menu.remove_bookmark(bookmark) def add_current_to_bookmarks(self): """Add the currently viewed file to the store and the menu.""" name = self._file_handler.get_pretty_current_filename() path = self._file_handler.get_real_path() page = self._file_handler.get_current_page() numpages = self._file_handler.get_number_of_pages() archive_type = self._file_handler.archive_type for bookmark in self._bookmarks: if bookmark.same_path(path): self.remove_bookmark(bookmark) break return self.add_bookmark_by_values(name, path, page, numpages, archive_type) def clear_bookmarks(self): """Remove all bookmarks from the store and the menu.""" for bookmark in self._bookmarks[:]: self.remove_bookmark(bookmark) def get_bookmarks(self): """Return all the bookmarks in the store.""" return self._bookmarks def is_empty(self): """Return True if the store is currently empty.""" return len(self._bookmarks) == 0 def write_bookmarks_file(self): """Store relevant bookmark info in the comix directory.""" fd = open(_pickle_path, 'wb') cPickle.dump(constants.VERSION, fd, cPickle.HIGHEST_PROTOCOL) packs = [bookmark.pack() for bookmark in self._bookmarks] cPickle.dump(packs, fd, cPickle.HIGHEST_PROTOCOL) fd.close() class _BookmarksDialog(gtk.Dialog): """_BookmarksDialog lets the user remove and/or rearrange bookmarks.""" def __init__(self, window, bookmarks_store): gtk.Dialog.__init__(self, _('Edit bookmarks'), window, gtk.DIALOG_MODAL, (gtk.STOCK_REMOVE, gtk.RESPONSE_NO, gtk.STOCK_CLOSE, gtk.RESPONSE_CLOSE)) self._bookmarks_store = bookmarks_store self.set_has_separator(False) self.set_resizable(True) self.set_default_response(gtk.RESPONSE_CLOSE) scrolled = gtk.ScrolledWindow() self.set_border_width(4) scrolled.set_border_width(6) scrolled.set_shadow_type(gtk.SHADOW_IN) scrolled.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC) self.vbox.pack_start(scrolled) self._liststore = gtk.ListStore(gtk.gdk.Pixbuf, gobject.TYPE_STRING, gobject.TYPE_STRING, _Bookmark) self._treeview = gtk.TreeView(self._liststore) self._treeview.set_rules_hint(True) self._treeview.set_reorderable(True) self._selection = self._treeview.get_selection() scrolled.add(self._treeview) cellrenderer_text = gtk.CellRendererText() cellrenderer_pbuf = gtk.CellRendererPixbuf() self._icon_col = gtk.TreeViewColumn(None, cellrenderer_pbuf) self._name_col = gtk.TreeViewColumn(_('Name'), cellrenderer_text) self._page_col = gtk.TreeViewColumn(_('Page'), cellrenderer_text) self._treeview.append_column(self._icon_col) self._treeview.append_column(self._name_col) self._treeview.append_column(self._page_col) self._icon_col.set_attributes(cellrenderer_pbuf, pixbuf=0) self._name_col.set_attributes(cellrenderer_text, text=1) self._page_col.set_attributes(cellrenderer_text, text=2) self._name_col.set_expand(True) self._icon_col.set_sizing(gtk.TREE_VIEW_COLUMN_AUTOSIZE) self._name_col.set_sizing(gtk.TREE_VIEW_COLUMN_AUTOSIZE) self._page_col.set_sizing(gtk.TREE_VIEW_COLUMN_AUTOSIZE) self.resize(450, 450) self.connect('response', self._response) self.connect('delete_event', self._close) self._treeview.connect('key_press_event', self._key_press_event) for bookmark in self._bookmarks_store.get_bookmarks(): self._add_bookmark(bookmark) self.show_all() def _add_bookmark(self, bookmark): """Add the to the dialog.""" self._liststore.prepend(bookmark.to_row()) def _remove_selected(self): """Remove the currently selected bookmark from the dialog and from the store.""" treeiter = self._selection.get_selected()[1] if treeiter is not None: bookmark = self._liststore.get_value(treeiter, 3) self._liststore.remove(treeiter) self._bookmarks_store.remove_bookmark(bookmark) def _response(self, dialog, response): if response == gtk.RESPONSE_CLOSE: self._close() elif response == gtk.RESPONSE_NO: self._remove_selected() def _key_press_event(self, dialog, event, *args): if event.keyval == gtk.keysyms.Delete: self._remove_selected() def _close(self, *args): """Close the dialog and update the _BookmarksStore with the new ordering.""" ordering = [] treeiter = self._liststore.get_iter_root() while treeiter is not None: bookmark = self._liststore.get_value(treeiter, 3) ordering.insert(0, bookmark) treeiter = self._liststore.iter_next(treeiter) for bookmark in ordering: self._bookmarks_store.remove_bookmark(bookmark) self._bookmarks_store.add_bookmark(bookmark) self.destroy() comix-4.0.4/src/labels.py0000644000175000001440000000260011111122130014113 0ustar sorkusers"""labels.py - gtk.Label convenience classes.""" import gtk import pango class FormattedLabel(gtk.Label): """FormattedLabel keeps a label always formatted with some pango weight, style and scale, even when new text is set using set_text(). """ def __init__(self, text='', weight=pango.WEIGHT_NORMAL, style=pango.STYLE_NORMAL, scale=pango.SCALE_MEDIUM): gtk.Label.__init__(self, text) self._weight = weight self._style = style self._scale = scale self._format() def set_text(self, text): gtk.Label.set_text(self, text) self._format() def _format(self): text_len = len(self.get_text()) attrlist = pango.AttrList() attrlist.insert(pango.AttrWeight(self._weight, 0, text_len)) attrlist.insert(pango.AttrStyle(self._style, 0, text_len)) attrlist.insert(pango.AttrScale(self._scale, 0, text_len)) self.set_attributes(attrlist) class BoldLabel(FormattedLabel): """A FormattedLabel that is always bold and otherwise normal.""" def __init__(self, text=''): FormattedLabel.__init__(self, text, weight=pango.WEIGHT_BOLD) class ItalicLabel(FormattedLabel): """A FormattedLabel that is always italic and otherwise normal.""" def __init__(self, text=''): FormattedLabel.__init__(self, text, style=pango.STYLE_ITALIC) comix-4.0.4/src/comment.py0000644000175000001440000000514711104127251014337 0ustar sorkusers"""comment.py - Comments dialog.""" import os import gtk import pango import encoding _dialog = None class _CommentsDialog(gtk.Dialog): def __init__(self, window): gtk.Dialog.__init__(self, _('Comments'), window, 0, (gtk.STOCK_CLOSE, gtk.RESPONSE_CLOSE)) self.set_has_separator(False) self.set_resizable(True) self.connect('response', _close_dialog) self.set_default_response(gtk.RESPONSE_CLOSE) self.set_default_size(600, 550) notebook = gtk.Notebook() notebook.set_scrollable(True) self.set_border_width(4) notebook.set_border_width(6) self.vbox.pack_start(notebook) tag = gtk.TextTag() tag.set_property('editable', False) tag.set_property('editable-set', True) tag.set_property('family', 'Monospace') tag.set_property('family-set', True) tag.set_property('scale', 0.9) tag.set_property('scale-set', True) tag_table = gtk.TextTagTable() tag_table.add(tag) for num in xrange(1, window.file_handler.get_number_of_comments() + 1): page = gtk.VBox(False) page.set_border_width(8) scrolled = gtk.ScrolledWindow() scrolled.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC) page.pack_start(scrolled) outbox = gtk.EventBox() scrolled.add_with_viewport(outbox) inbox = gtk.EventBox() inbox.set_border_width(6) outbox.add(inbox) name = os.path.basename(window.file_handler.get_comment_name(num)) text = window.file_handler.get_comment_text(num) if text is None: text = _('Could not read %s') % path text_buffer = gtk.TextBuffer(tag_table) text_buffer.set_text(encoding.to_unicode(text)) text_buffer.apply_tag(tag, *text_buffer.get_bounds()) text_view = gtk.TextView(text_buffer) inbox.add(text_view) bg_color = text_view.get_default_attributes().bg_color outbox.modify_bg(gtk.STATE_NORMAL, bg_color) tab_label = gtk.Label(encoding.to_unicode(name)) notebook.insert_page(page, tab_label) self.show_all() def open_dialog(action, window): """Create and display the (singleton) comments dialog.""" global _dialog if _dialog is None: _dialog = _CommentsDialog(window) else: _dialog.present() def _close_dialog(*args): """Destroy the comments dialog.""" global _dialog if _dialog is not None: _dialog.destroy() _dialog = None comix-4.0.4/src/slideshow.py0000644000175000001440000000254211063253652014703 0ustar sorkusers"""slideshow.py - Slideshow handler.""" import gobject from preferences import prefs class Slideshow: """Slideshow handler that manages starting and stopping of slideshows.""" def __init__(self, window): self._window = window self._running = False self._id = None def _start(self): if not self._running: self._id = gobject.timeout_add(prefs['slideshow delay'], self._next) self._running = True self._window.update_title() def _stop(self): if self._running: gobject.source_remove(self._id) self._running = False self._window.update_title() def _next(self): if self._window.file_handler.is_last_page(): self._window.actiongroup.get_action('slideshow').set_active(False) return False self._window.next_page() return True def toggle(self, action): """Toggle a slideshow on or off.""" if action.get_active(): self._start() else: self._stop() def is_running(self): """Return True if a slideshow is currently running.""" return self._running def update_delay(self): """Update the delay time a started slideshow is using.""" if self.is_running(): self._stop() self._start() comix-4.0.4/src/enhance.py0000644000175000001440000001724411112303030014265 0ustar sorkusers"""enhance.py - Image enhancement handler and dialog (e.g. contrast, brightness etc.) """ import gtk import histogram import image _dialog = None class ImageEnhancer: """The ImageEnhancer keeps track of the "enhancement" values and performs these enhancements on pixbufs. Changes to the ImageEnhancer's values can be made using an _EnhanceImageDialog. """ def __init__(self, window): self._window = window self.brightness = 1.0 self.contrast = 1.0 self.saturation = 1.0 self.sharpness = 1.0 self.autocontrast = False def enhance(self, pixbuf): """Return an "enhanced" version of .""" if (self.brightness != 1.0 or self.contrast != 1.0 or self.saturation != 1.0 or self.sharpness != 1.0 or self.autocontrast): return image.enhance(pixbuf, self.brightness, self.contrast, self.saturation, self.sharpness, self.autocontrast) return pixbuf def signal_update(self): """Signal to the main window that a change in the enhancement values has been made. """ self._window.draw_image(scroll=False) class _EnhanceImageDialog(gtk.Dialog): """A gtk.Dialog which allows modification of the values belonging to an ImageEnhancer. """ def __init__(self, window): gtk.Dialog.__init__(self, _('Enhance image'), window, 0) self.add_buttons(_('Defaults'), gtk.RESPONSE_NO, gtk.STOCK_OK, gtk.RESPONSE_OK) self.set_has_separator(False) self.set_resizable(False) self.connect('response', self._response) self.set_default_response(gtk.RESPONSE_OK) self._enhancer = window.enhancer self._block = False vbox = gtk.VBox(False, 10) self.set_border_width(4) vbox.set_border_width(6) self.vbox.add(vbox) self._hist_image = gtk.Image() self._hist_image.set_size_request(262, 170) vbox.pack_start(self._hist_image) vbox.pack_start(gtk.HSeparator()) hbox = gtk.HBox(False, 4) vbox.pack_start(hbox, False, False, 2) vbox_left = gtk.VBox(False, 4) vbox_right = gtk.VBox(False, 4) hbox.pack_start(vbox_left, False, False, 2) hbox.pack_start(vbox_right, True, True, 2) label = gtk.Label(_('Brightness') + ':') label.set_alignment(1, 0.5) vbox_left.pack_start(label, True, False, 2) adj = gtk.Adjustment(0.0, -1.0, 1.0, 0.01, 0.1) self._brightness_scale = gtk.HScale(adj) self._brightness_scale.set_digits(2) self._brightness_scale.set_value_pos(gtk.POS_RIGHT) self._brightness_scale.connect('value-changed', self._change_values) self._brightness_scale.set_update_policy(gtk.UPDATE_DELAYED) vbox_right.pack_start(self._brightness_scale, True, False, 2) label = gtk.Label(_('Contrast') + ':') label.set_alignment(1, 0.5) vbox_left.pack_start(label, True, False, 2) adj = gtk.Adjustment(0.0, -1.0, 1.0, 0.01, 0.1) self._contrast_scale = gtk.HScale(adj) self._contrast_scale.set_digits(2) self._contrast_scale.set_value_pos(gtk.POS_RIGHT) self._contrast_scale.connect('value-changed', self._change_values) self._contrast_scale.set_update_policy(gtk.UPDATE_DELAYED) vbox_right.pack_start(self._contrast_scale, True, False, 2) label = gtk.Label(_('Saturation') + ':') label.set_alignment(1, 0.5) vbox_left.pack_start(label, True, False, 2) adj = gtk.Adjustment(0.0, -1.0, 1.0, 0.01, 0.1) self._saturation_scale = gtk.HScale(adj) self._saturation_scale.set_digits(2) self._saturation_scale.set_value_pos(gtk.POS_RIGHT) self._saturation_scale.connect('value-changed', self._change_values) self._saturation_scale.set_update_policy(gtk.UPDATE_DELAYED) vbox_right.pack_start(self._saturation_scale, True, False, 2) label = gtk.Label(_('Sharpness') + ':') label.set_alignment(1, 0.5) vbox_left.pack_start(label, True, False, 2) adj = gtk.Adjustment(0.0, -1.0, 1.0, 0.01, 0.1) self._sharpness_scale = gtk.HScale(adj) self._sharpness_scale.set_digits(2) self._sharpness_scale.set_value_pos(gtk.POS_RIGHT) self._sharpness_scale.connect('value-changed', self._change_values) self._sharpness_scale.set_update_policy(gtk.UPDATE_DELAYED) vbox_right.pack_start(self._sharpness_scale, True, False, 2) vbox.pack_start(gtk.HSeparator()) self._autocontrast_button = \ gtk.CheckButton(_('Automatically adjust contrast.')) self._autocontrast_button.set_tooltip_text( _('Automatically adjust contrast (both lightness and darkness), separately for each colour band.')) vbox.pack_start(self._autocontrast_button, False, False, 2) self._autocontrast_button.connect('toggled', self._change_values) self._block = True self._brightness_scale.set_value(self._enhancer.brightness - 1) self._contrast_scale.set_value(self._enhancer.contrast - 1) self._saturation_scale.set_value(self._enhancer.saturation - 1) self._sharpness_scale.set_value(self._enhancer.sharpness - 1) self._autocontrast_button.set_active(self._enhancer.autocontrast) self._block = False self._contrast_scale.set_sensitive( not self._autocontrast_button.get_active()) self.show_all() def draw_histogram(self, image): """Draw a histogram representing in the dialog.""" pixbuf = image.get_pixbuf() if pixbuf is not None: self._hist_image.set_from_pixbuf(histogram.draw_histogram(pixbuf, text=False)) def clear_histogram(self): """Clear the histogram in the dialog.""" self._hist_image.clear() def _change_values(self, *args): if self._block: return self._enhancer.brightness = self._brightness_scale.get_value() + 1 self._enhancer.contrast = self._contrast_scale.get_value() + 1 self._enhancer.saturation = self._saturation_scale.get_value() + 1 self._enhancer.sharpness = self._sharpness_scale.get_value() + 1 self._enhancer.autocontrast = self._autocontrast_button.get_active() self._contrast_scale.set_sensitive( not self._autocontrast_button.get_active()) self._enhancer.signal_update() def _response(self, dialog, response): if response in [gtk.RESPONSE_OK, gtk.RESPONSE_DELETE_EVENT]: _close_dialog() elif response == gtk.RESPONSE_NO: self._block = True self._brightness_scale.set_value(0.0) self._contrast_scale.set_value(0.0) self._saturation_scale.set_value(0.0) self._sharpness_scale.set_value(0.0) self._autocontrast_button.set_active(False) self._block = False self._change_values(self) def draw_histogram(image): """Draw a histogram of in the dialog, if there is one.""" if _dialog is not None: _dialog.draw_histogram(image) def clear_histogram(): """Clear the histogram in the dialog, if there is one.""" if _dialog is not None: _dialog.clear_histogram() def open_dialog(action, window): """Create and display the (singleton) image enhancement dialog.""" global _dialog if _dialog is None: _dialog = _EnhanceImageDialog(window) draw_histogram(window.left_image) else: _dialog.present() def _close_dialog(*args): """Destroy the image enhancement dialog.""" global _dialog if _dialog is not None: _dialog.destroy() _dialog = None comix-4.0.4/src/deprecated.py0000644000175000001440000000474711150272120014777 0ustar sorkusers"""deprecated.py - Clean up deprecated Comix files.""" import os import shutil import gtk import constants class _CleanerDialog(gtk.MessageDialog): def __init__(self, window, paths): gtk.MessageDialog.__init__(self, window, 0, gtk.MESSAGE_QUESTION, gtk.BUTTONS_YES_NO, _('There are deprecated files left on your computer.')) self._paths = paths self.connect('response', self._response) self.format_secondary_text( _('Some old files (that were used for storing preferences, the library, bookmarks etc. for older versions of Comix) were found on your computer. If you do not plan on using the older versions of Comix again, you should remove these files in order to save some disk space. Do you want these files to be removed for you now?')) def _response(self, dialog, response): if response == gtk.RESPONSE_YES: for path in self._paths: try: if os.path.isdir(path): shutil.rmtree(path) else: os.remove(path) except Exception: print '! Could not remove', path self.destroy() def move_files_to_xdg_dirs(): """Move config and data files from the old Comix directory (~/.comix/) to the XDG config and data directories. """ old_dir = os.path.join(constants.HOME_DIR, '.comix') to_be_moved = ( ('preferences.pickle', constants.CONFIG_DIR), ('bookmarks.pickle', constants.DATA_DIR), ('library.db', constants.DATA_DIR), ('library_covers', constants.DATA_DIR)) for name, new_dir in to_be_moved: if os.path.exists(os.path.join(old_dir, name)) and not os.path.exists( os.path.join(new_dir, name)): try: os.rename(os.path.join(old_dir, name), os.path.join(new_dir, name)) except Exception: pass def check_for_deprecated_files(window): """Check for a number of deprecated files created by older versions of Comix. If any are found, we ask the user through a dilaog if they should be removed. """ deprecated = ( os.path.join(constants.HOME_DIR, '.comixrc'), os.path.join(constants.HOME_DIR, '.comix')) found = [] for path in deprecated: if os.path.exists(path): found.append(path) if found: dialog = _CleanerDialog(window, found) dialog.show_all() comix-4.0.4/src/properties.py0000644000175000001440000001545711115322327015101 0ustar sorkusers"""properties.py - Properties dialog.""" import os import time import stat try: import pwd except ImportError: # Running on non-Unix machine. pass import gtk import pango import archive import encoding import image import labels _dialog = None class _Page(gtk.VBox): """A page to put in the gtk.Notebook. Contains info about a file (an image or an archive.) """ def __init__(self): gtk.VBox.__init__(self, False, 12) self.set_border_width(12) topbox = gtk.HBox(False, 12) self.pack_start(topbox, False) self._thumb = gtk.Image() topbox.pack_start(self._thumb, False, False) borderbox = gtk.EventBox() borderbox.modify_bg(gtk.STATE_NORMAL, gtk.gdk.color_parse('#333')) borderbox.set_size_request(-1, 130) topbox.pack_start(borderbox) insidebox = gtk.EventBox() insidebox.set_border_width(1) insidebox.modify_bg(gtk.STATE_NORMAL, gtk.gdk.color_parse('#ddb')) borderbox.add(insidebox) self._mainbox = gtk.VBox(False, 5) self._mainbox.set_border_width(10) insidebox.add(self._mainbox) def set_thumbnail(self, pixbuf): pixbuf = image.add_border(pixbuf, 1) self._thumb.set_from_pixbuf(pixbuf) def set_filename(self, filename): """Set the filename to be displayed to . Call this before set_main_info(). """ label = labels.BoldLabel(encoding.to_unicode(filename)) label.set_alignment(0, 0.5) self._mainbox.pack_start(label, False, False) self._mainbox.pack_start(gtk.VBox()) # Just to add space (better way?) def set_main_info(self, info): """Set the information in the main info box (below the filename) to the values in the sequence . """ for text in info: label = gtk.Label(text) label.set_alignment(0, 0.5) self._mainbox.pack_start(label, False, False) def set_secondary_info(self, info): """Set the information below the main info box to the values in the sequence . Each entry in info should be a tuple (desc, value). """ hbox = gtk.HBox(False, 10) self.pack_start(hbox, False, False) left_box = gtk.VBox(True, 8) right_box = gtk.VBox(True, 8) hbox.pack_start(left_box, False, False) hbox.pack_start(right_box, False, False) for desc, value in info: desc_label = labels.BoldLabel('%s:' % desc) desc_label.set_alignment(1.0, 1.0) left_box.pack_start(desc_label, True, True) value_label = gtk.Label(value) value_label.set_alignment(0, 1.0) right_box.pack_start(value_label, True, True) class _PropertiesDialog(gtk.Dialog): def __init__(self, window): gtk.Dialog.__init__(self, _('Properties'), window, 0, (gtk.STOCK_CLOSE, gtk.RESPONSE_CLOSE)) self.set_resizable(False) self.set_has_separator(False) self.connect('response', _close_dialog) self.set_default_response(gtk.RESPONSE_CLOSE) notebook = gtk.Notebook() self.set_border_width(4) notebook.set_border_width(6) self.vbox.pack_start(notebook, False, False, 0) if window.file_handler.archive_type is not None: # ------------------------------------------------------------ # Archive tab # ------------------------------------------------------------ page = _Page() thumb = window.file_handler.get_thumbnail(1, width=200, height=128) page.set_thumbnail(thumb) filename = window.file_handler.get_pretty_current_filename() page.set_filename(filename) try: stats = os.stat(window.file_handler.get_path_to_base()) main_info = ( _('%d pages') % window.file_handler.get_number_of_pages(), _('%d comments') % window.file_handler.get_number_of_comments(), archive.get_name(window.file_handler.archive_type), '%.1f MiB' % (stats.st_size / 1048576.0)) page.set_main_info(main_info) try: uid = pwd.getpwuid(stats.st_uid)[0] except Exception: uid = str(stats.st_uid) secondary_info = ( (_('Location'), encoding.to_unicode(os.path.dirname( window.file_handler.get_path_to_base()))), (_('Accessed'), time.strftime('%Y-%m-%d, %H:%M:%S', time.localtime(stats.st_atime))), (_('Modified'), time.strftime('%Y-%m-%d, %H:%M:%S', time.localtime(stats.st_mtime))), (_('Permissions'), oct(stat.S_IMODE(stats.st_mode))), (_('Owner'), uid)) page.set_secondary_info(secondary_info) except Exception: pass notebook.append_page(page, gtk.Label(_('Archive'))) # ---------------------------------------------------------------- # Image tab # ---------------------------------------------------------------- path = window.file_handler.get_path_to_page() page = _Page() thumb = window.file_handler.get_thumbnail(width=200, height=128) page.set_thumbnail(thumb) filename = os.path.basename(path) page.set_filename(filename) try: stats = os.stat(path) width, height = window.file_handler.get_size() main_info = ( '%dx%d px' % (width, height), window.file_handler.get_mime_name(), '%.1f KiB' % (stats.st_size / 1024.0)) page.set_main_info(main_info) try: uid = pwd.getpwuid(stats.st_uid)[0] except Exception: uid = str(stats.st_uid) secondary_info = ( (_('Location'), encoding.to_unicode(os.path.dirname(path))), (_('Accessed'), time.strftime('%Y-%m-%d, %H:%M:%S', time.localtime(stats.st_atime))), (_('Modified'), time.strftime('%Y-%m-%d, %H:%M:%S', time.localtime(stats.st_mtime))), (_('Permissions'), oct(stat.S_IMODE(stats.st_mode))), (_('Owner'), uid)) page.set_secondary_info(secondary_info) except Exception: pass notebook.append_page(page, gtk.Label(_('Image'))) self.show_all() def open_dialog(action, window): global _dialog if _dialog is None: _dialog = _PropertiesDialog(window) else: _dialog.present() def _close_dialog(*args): global _dialog if _dialog is not None: _dialog.destroy() _dialog = None comix-4.0.4/src/main.py0000644000175000001440000007717711150272120013632 0ustar sorkusers"""main.py - Main window.""" import sys import os import shutil import threading import gtk import gobject import constants import cursor import encoding import enhance import event import filehandler import image import lens import preferences from preferences import prefs import ui import slideshow import status import thumbbar class MainWindow(gtk.Window): """The Comix main window, is created at start and terminates the program when closed. """ def __init__(self, fullscreen=False, show_library=False, open_path=None, open_page=1): gtk.Window.__init__(self, gtk.WINDOW_TOPLEVEL) # ---------------------------------------------------------------- # Attributes # ---------------------------------------------------------------- self.is_fullscreen = False self.is_double_page = False self.is_manga_mode = False self.is_virtual_double_page = False # I.e. a wide image is displayed self.zoom_mode = preferences.ZOOM_MODE_BEST self.width = None self.height = None self._manual_zoom = 100 # In percent of original image size self._waiting_for_redraw = False self.file_handler = filehandler.FileHandler(self) self.thumbnailsidebar = thumbbar.ThumbnailSidebar(self) self.statusbar = status.Statusbar() self.slideshow = slideshow.Slideshow(self) self.cursor_handler = cursor.CursorHandler(self) self.enhancer = enhance.ImageEnhancer(self) self.glass = lens.MagnifyingGlass(self) self.ui_manager = ui.MainUI(self) self.menubar = self.ui_manager.get_widget('/Menu') self.toolbar = self.ui_manager.get_widget('/Tool') self.popup = self.ui_manager.get_widget('/Popup') self.actiongroup = self.ui_manager.get_action_groups()[0] self.left_image = gtk.Image() self.right_image = gtk.Image() self._image_box = gtk.HBox(False, 2) self._main_layout = gtk.Layout() self._event_handler = event.EventHandler(self) self._vadjust = self._main_layout.get_vadjustment() self._hadjust = self._main_layout.get_hadjustment() self._vscroll = gtk.VScrollbar(self._vadjust) self._hscroll = gtk.HScrollbar(self._hadjust) # ---------------------------------------------------------------- # Setup # ---------------------------------------------------------------- self.set_title('Comix') self.set_size_request(300, 300) # Avoid making the window *too* small self.resize(prefs['window width'], prefs['window height']) # This is a hack to get the focus away from the toolbar so that # we don't activate it with space or some other key (alternative?) self.toolbar.set_focus_child( self.ui_manager.get_widget('/Tool/expander')) self.toolbar.set_style(gtk.TOOLBAR_ICONS) self._image_box.add(self.left_image) self._image_box.add(self.right_image) self._image_box.show_all() self._main_layout.put(self._image_box, 0, 0) self.set_bg_colour(prefs['bg colour']) self._vadjust.step_increment = 15 self._vadjust.page_increment = 1 self._hadjust.step_increment = 15 self._hadjust.page_increment = 1 table = gtk.Table(2, 2, False) table.attach(self.thumbnailsidebar, 0, 1, 2, 5, gtk.FILL, gtk.FILL|gtk.EXPAND, 0, 0) table.attach(self._main_layout, 1, 2, 2, 3, gtk.FILL|gtk.EXPAND, gtk.FILL|gtk.EXPAND, 0, 0) table.attach(self._vscroll, 2, 3, 2, 3, gtk.FILL|gtk.SHRINK, gtk.FILL|gtk.SHRINK, 0, 0) table.attach(self._hscroll, 1, 2, 4, 5, gtk.FILL|gtk.SHRINK, gtk.FILL, 0, 0) table.attach(self.menubar, 0, 3, 0, 1, gtk.FILL|gtk.SHRINK, gtk.FILL, 0, 0) table.attach(self.toolbar, 0, 3, 1, 2, gtk.FILL|gtk.SHRINK, gtk.FILL, 0, 0) table.attach(self.statusbar, 0, 3, 5, 6, gtk.FILL|gtk.SHRINK, gtk.FILL, 0, 0) if prefs['default double page']: self.actiongroup.get_action('double_page').activate() if prefs['default fullscreen'] or fullscreen: self.actiongroup.get_action('fullscreen').activate() if prefs['default manga mode']: self.actiongroup.get_action('manga_mode').activate() if prefs['default zoom mode'] == preferences.ZOOM_MODE_BEST: self.actiongroup.get_action('best_fit_mode').activate() elif prefs['default zoom mode'] == preferences.ZOOM_MODE_WIDTH: self.actiongroup.get_action('fit_width_mode').activate() elif prefs['default zoom mode'] == preferences.ZOOM_MODE_HEIGHT: self.actiongroup.get_action('fit_height_mode').activate() elif prefs['default zoom mode'] == preferences.ZOOM_MODE_MANUAL: # This little ugly hack is to get the activate call on # 'fit_manual_mode' to actually create an event (and callback). # Since manual mode is the default selected radio button action # it won't send an event if we activate it when it is already # the selected one. self.actiongroup.get_action('best_fit_mode').activate() self.actiongroup.get_action('fit_manual_mode').activate() if prefs['show toolbar']: prefs['show toolbar'] = False self.actiongroup.get_action('toolbar').activate() if prefs['show menubar']: prefs['show menubar'] = False self.actiongroup.get_action('menubar').activate() if prefs['show statusbar']: prefs['show statusbar'] = False self.actiongroup.get_action('statusbar').activate() if prefs['show scrollbar']: prefs['show scrollbar'] = False self.actiongroup.get_action('scrollbar').activate() if prefs['show thumbnails']: prefs['show thumbnails'] = False self.actiongroup.get_action('thumbnails').activate() if prefs['hide all']: prefs['hide all'] = False self.actiongroup.get_action('hide all').activate() if prefs['keep transformation']: prefs['keep transformation'] = False self.actiongroup.get_action('keep_transformation').activate() else: prefs['rotation'] = 0 prefs['vertical flip'] = False prefs['horizontal flip'] = False self.add(table) table.show() self._main_layout.show() self._display_active_widgets() self._main_layout.set_events(gtk.gdk.BUTTON1_MOTION_MASK | gtk.gdk.BUTTON2_MOTION_MASK | gtk.gdk.BUTTON_PRESS_MASK | gtk.gdk.BUTTON_RELEASE_MASK | gtk.gdk.POINTER_MOTION_MASK) self._main_layout.drag_dest_set(gtk.DEST_DEFAULT_ALL, [('text/uri-list', 0, 0)], gtk.gdk.ACTION_COPY | gtk.gdk.ACTION_MOVE) self.connect('delete_event', self.terminate_program) self.connect('key_press_event', self._event_handler.key_press_event) self.connect('configure_event', self._event_handler.resize_event) self._main_layout.connect('button_release_event', self._event_handler.mouse_release_event) self._main_layout.connect('scroll_event', self._event_handler.scroll_wheel_event) self._main_layout.connect('button_press_event', self._event_handler.mouse_press_event) self._main_layout.connect('motion_notify_event', self._event_handler.mouse_move_event) self._main_layout.connect('drag_data_received', self._event_handler.drag_n_drop_event) self.ui_manager.set_sensitivities() self.show() if open_path is not None: self.file_handler.open_file(open_path, open_page) if show_library: self.actiongroup.get_action('library').activate() def draw_image(self, at_bottom=False, scroll=True): """Draw the current page(s) and update the titlebar and statusbar. """ if not self._waiting_for_redraw: # Don't stack up redraws. self._waiting_for_redraw = True gobject.idle_add(self._draw_image, at_bottom, scroll, priority=gobject.PRIORITY_HIGH_IDLE) def _draw_image(self, at_bottom, scroll): self._waiting_for_redraw = False self._display_active_widgets() if not self.file_handler.file_loaded: return False area_width, area_height = self.get_visible_area_size() if self.zoom_mode == preferences.ZOOM_MODE_HEIGHT: scaled_width = -1 else: scaled_width = area_width if self.zoom_mode == preferences.ZOOM_MODE_WIDTH: scaled_height = -1 else: scaled_height = area_height scale_up = prefs['stretch'] self.is_virtual_double_page = \ self.file_handler.get_virtual_double_page() if self.displayed_double(): left_pixbuf, right_pixbuf = self.file_handler.get_pixbufs() if self.is_manga_mode: right_pixbuf, left_pixbuf = left_pixbuf, right_pixbuf left_unscaled_x = left_pixbuf.get_width() left_unscaled_y = left_pixbuf.get_height() right_unscaled_x = right_pixbuf.get_width() right_unscaled_y = right_pixbuf.get_height() left_rotation = prefs['rotation'] right_rotation = prefs['rotation'] if prefs['auto rotate from exif']: left_rotation += image.get_implied_rotation(left_pixbuf) left_rotation = left_rotation % 360 right_rotation += image.get_implied_rotation(right_pixbuf) right_rotation = right_rotation % 360 if self.zoom_mode == preferences.ZOOM_MODE_MANUAL: if left_rotation in (90, 270): total_width = left_unscaled_x total_height = left_unscaled_y else: total_width = left_unscaled_y total_height = left_unscaled_x if right_rotation in (90, 270): total_width += right_unscaled_x total_height += right_unscaled_y else: total_width += right_unscaled_y total_height += right_unscaled_x scaled_width = int(self._manual_zoom * total_width / 100) scaled_height = int(self._manual_zoom * total_height / 100) scale_up = True left_pixbuf, right_pixbuf = image.fit_2_in_rectangle( left_pixbuf, right_pixbuf, scaled_width, scaled_height, scale_up=scale_up, rotation1=left_rotation, rotation2=right_rotation) if prefs['horizontal flip']: left_pixbuf = left_pixbuf.flip(horizontal=True) right_pixbuf = right_pixbuf.flip(horizontal=True) if prefs['vertical flip']: left_pixbuf = left_pixbuf.flip(horizontal=False) right_pixbuf = right_pixbuf.flip(horizontal=False) left_pixbuf = self.enhancer.enhance(left_pixbuf) right_pixbuf = self.enhancer.enhance(right_pixbuf) self.left_image.set_from_pixbuf(left_pixbuf) self.right_image.set_from_pixbuf(right_pixbuf) x_padding = (area_width - left_pixbuf.get_width() - right_pixbuf.get_width()) / 2 y_padding = (area_height - max(left_pixbuf.get_height(), right_pixbuf.get_height())) / 2 if left_rotation in (90, 270): left_scale_percent = (100.0 * left_pixbuf.get_width() / left_unscaled_y) else: left_scale_percent = (100.0 * left_pixbuf.get_width() / left_unscaled_x) if right_rotation in (90, 270): right_scale_percent = (100.0 * right_pixbuf.get_width() / right_unscaled_y) else: right_scale_percent = (100.0 * right_pixbuf.get_width() / right_unscaled_x) self.statusbar.set_page_number( self.file_handler.get_current_page(), self.file_handler.get_number_of_pages(), double_page=True) self.statusbar.set_resolution( (left_unscaled_x, left_unscaled_y, left_scale_percent), (right_unscaled_x, right_unscaled_y, right_scale_percent)) else: pixbuf = self.file_handler.get_pixbufs(single=True) unscaled_x = pixbuf.get_width() unscaled_y = pixbuf.get_height() rotation = prefs['rotation'] if prefs['auto rotate from exif']: rotation += image.get_implied_rotation(pixbuf) rotation = rotation % 360 if self.zoom_mode == preferences.ZOOM_MODE_MANUAL: scaled_width = int(self._manual_zoom * unscaled_x / 100) scaled_height = int(self._manual_zoom * unscaled_y / 100) if rotation in (90, 270): scaled_width, scaled_height = scaled_height, scaled_width scale_up = True pixbuf = image.fit_in_rectangle(pixbuf, scaled_width, scaled_height, scale_up=scale_up, rotation=rotation) if prefs['horizontal flip']: pixbuf = pixbuf.flip(horizontal=True) if prefs['vertical flip']: pixbuf = pixbuf.flip(horizontal=False) pixbuf = self.enhancer.enhance(pixbuf) self.left_image.set_from_pixbuf(pixbuf) self.right_image.clear() x_padding = (area_width - pixbuf.get_width()) / 2 y_padding = (area_height - pixbuf.get_height()) / 2 if rotation in (90, 270): scale_percent = 100.0 * pixbuf.get_width() / unscaled_y else: scale_percent = 100.0 * pixbuf.get_width() / unscaled_x self.statusbar.set_page_number( self.file_handler.get_current_page(), self.file_handler.get_number_of_pages()) self.statusbar.set_resolution((unscaled_x, unscaled_y, scale_percent)) if prefs['smart bg']: bg_colour = image.get_most_common_edge_colour( self.left_image.get_pixbuf()) self.set_bg_colour(bg_colour) self._image_box.window.freeze_updates() self._main_layout.move(self._image_box, max(0, x_padding), max(0, y_padding)) self.left_image.show() if self.displayed_double(): self.right_image.show() else: self.right_image.hide() self._main_layout.set_size(*self._image_box.size_request()) if scroll: if at_bottom: self.scroll_to_fixed(horiz='endsecond', vert='bottom') else: self.scroll_to_fixed(horiz='startfirst', vert='top') self._image_box.window.thaw_updates() self.statusbar.set_filename( self.file_handler.get_pretty_current_filename()) self.statusbar.update() self.update_title() while gtk.events_pending(): gtk.main_iteration(False) enhance.draw_histogram(self.left_image) self.file_handler.do_cacheing() self.thumbnailsidebar.load_thumbnails() return False def new_page(self, at_bottom=False): """Draw a *new* page correctly (as opposed to redrawing the same image with a new size or whatever). """ if not prefs['keep transformation']: prefs['rotation'] = 0 prefs['horizontal flip'] = False prefs['vertical flip'] = False self.thumbnailsidebar.update_select() self.draw_image(at_bottom=at_bottom) def next_page(self, *args): if self.file_handler.next_page(): self.new_page() def previous_page(self, *args): if self.file_handler.previous_page(): self.new_page(at_bottom=True) def first_page(self, *args): if self.file_handler.first_page(): self.new_page() def last_page(self, *args): if self.file_handler.last_page(): self.new_page() def set_page(self, num): if self.file_handler.set_page(num): self.new_page() def rotate_90(self, *args): prefs['rotation'] = (prefs['rotation'] + 90) % 360 self.draw_image() def rotate_180(self, *args): prefs['rotation'] = (prefs['rotation'] + 180) % 360 self.draw_image() def rotate_270(self, *args): prefs['rotation'] = (prefs['rotation'] + 270) % 360 self.draw_image() def flip_horizontally(self, *args): prefs['horizontal flip'] = not prefs['horizontal flip'] self.draw_image() def flip_vertically(self, *args): prefs['vertical flip'] = not prefs['vertical flip'] self.draw_image() def change_double_page(self, toggleaction): self.is_double_page = toggleaction.get_active() self.draw_image() def change_manga_mode(self, toggleaction): self.is_manga_mode = toggleaction.get_active() self.draw_image() def change_fullscreen(self, toggleaction): self.is_fullscreen = toggleaction.get_active() if self.is_fullscreen: self.fullscreen() self.cursor_handler.auto_hide_on() else: self.unfullscreen() self.cursor_handler.auto_hide_off() def change_zoom_mode(self, radioaction, *args): old_mode = self.zoom_mode self.zoom_mode = radioaction.get_current_value() sensitive = (self.zoom_mode == preferences.ZOOM_MODE_MANUAL) self.actiongroup.get_action('zoom_in').set_sensitive(sensitive) self.actiongroup.get_action('zoom_out').set_sensitive(sensitive) self.actiongroup.get_action('zoom_original').set_sensitive(sensitive) if old_mode != self.zoom_mode: self.draw_image() def change_toolbar_visibility(self, *args): prefs['show toolbar'] = not prefs['show toolbar'] self.draw_image() def change_menubar_visibility(self, *args): prefs['show menubar'] = not prefs['show menubar'] self.draw_image() def change_statusbar_visibility(self, *args): prefs['show statusbar'] = not prefs['show statusbar'] self.draw_image() def change_scrollbar_visibility(self, *args): prefs['show scrollbar'] = not prefs['show scrollbar'] self.draw_image() def change_thumbnails_visibility(self, *args): prefs['show thumbnails'] = not prefs['show thumbnails'] self.draw_image() def change_hide_all(self, *args): prefs['hide all'] = not prefs['hide all'] sensitive = not prefs['hide all'] self.actiongroup.get_action('toolbar').set_sensitive(sensitive) self.actiongroup.get_action('menubar').set_sensitive(sensitive) self.actiongroup.get_action('statusbar').set_sensitive(sensitive) self.actiongroup.get_action('scrollbar').set_sensitive(sensitive) self.actiongroup.get_action('thumbnails').set_sensitive(sensitive) self.draw_image() def change_keep_transformation(self, *args): prefs['keep transformation'] = not prefs['keep transformation'] def manual_zoom_in(self, *args): new_zoom = self._manual_zoom * 1.15 if 95 < new_zoom < 105: # To compensate for rounding errors new_zoom = 100 if new_zoom > 1000: return self._manual_zoom = new_zoom self.draw_image() def manual_zoom_out(self, *args): new_zoom = self._manual_zoom / 1.15 if 95 < new_zoom < 105: # To compensate for rounding errors new_zoom = 100 if new_zoom < 10: return self._manual_zoom = new_zoom self.draw_image() def manual_zoom_original(self, *args): self._manual_zoom = 100 self.draw_image() def scroll(self, x, y, bound=None): """Scroll px horizontally and px vertically. If is 'first' or 'second', we will not scroll out of the first or second page respectively (dependent on manga mode). The argument only makes sense in double page mode. Return True if call resulted in new adjustment values, False otherwise. """ old_hadjust = self._hadjust.get_value() old_vadjust = self._vadjust.get_value() visible_width, visible_height = self.get_visible_area_size() hadjust_upper = max(0, self._hadjust.upper - visible_width) vadjust_upper = max(0, self._vadjust.upper - visible_height) hadjust_lower = 0 if bound is not None and self.is_manga_mode: bound = {'first': 'second', 'second': 'first'}[bound] if bound == 'first': hadjust_upper = max(0, hadjust_upper - self.right_image.size_request()[0] - 2) elif bound == 'second': hadjust_lower = self.left_image.size_request()[0] + 2 new_hadjust = old_hadjust + x new_vadjust = old_vadjust + y new_hadjust = max(hadjust_lower, new_hadjust) new_vadjust = max(0, new_vadjust) new_hadjust = min(hadjust_upper, new_hadjust) new_vadjust = min(vadjust_upper, new_vadjust) self._vadjust.set_value(new_vadjust) self._hadjust.set_value(new_hadjust) return old_vadjust != new_vadjust or old_hadjust != new_hadjust def scroll_to_fixed(self, horiz=None, vert=None): """Scroll using one of several fixed values. If either or is as below, the display is scrolled as follows: horiz: 'left' = left end of display 'middle' = middle of the display 'right' = right end of display 'startfirst' = start of first page 'endfirst' = end of first page 'startsecond' = start of second page 'endsecond' = end of second page vert: 'top' = top of display 'middle' = middle of display 'bottom' = bottom of display What is considered "start" and "end" depends on whether we are using manga mode or not. Return True if call resulted in new adjustment values. """ old_hadjust = self._hadjust.get_value() old_vadjust = self._vadjust.get_value() new_vadjust = old_vadjust new_hadjust = old_hadjust visible_width, visible_height = self.get_visible_area_size() vadjust_upper = self._vadjust.upper - visible_height hadjust_upper = self._hadjust.upper - visible_width if vert == 'top': new_vadjust = 0 elif vert == 'middle': new_vadjust = vadjust_upper / 2 elif vert == 'bottom': new_vadjust = vadjust_upper if not self.displayed_double(): horiz = {'startsecond': 'endfirst', 'endsecond': 'endfirst'}.get(horiz, horiz) # Manga transformations. if self.is_manga_mode and self.displayed_double() and horiz is not None: horiz = {'left': 'left', 'middle': 'middle', 'right': 'right', 'startfirst': 'endsecond', 'endfirst': 'startsecond', 'startsecond': 'endfirst', 'endsecond': 'startfirst'}[horiz] elif self.is_manga_mode and horiz is not None: horiz = {'left': 'left', 'middle': 'middle', 'right': 'right', 'startfirst': 'endfirst', 'endfirst': 'startfirst'}[horiz] if horiz == 'left': new_hadjust = 0 elif horiz == 'middle': new_hadjust = hadjust_upper / 2 elif horiz == 'right': new_hadjust = hadjust_upper elif horiz == 'startfirst': new_hadjust = 0 elif horiz == 'endfirst': if self.displayed_double(): new_hadjust = self.left_image.size_request()[0] - visible_width else: new_hadjust = hadjust_upper elif horiz == 'startsecond': new_hadjust = self.left_image.size_request()[0] + 2 elif horiz == 'endsecond': new_hadjust = hadjust_upper new_hadjust = max(0, new_hadjust) new_vadjust = max(0, new_vadjust) new_hadjust = min(hadjust_upper, new_hadjust) new_vadjust = min(vadjust_upper, new_vadjust) self._vadjust.set_value(new_vadjust) self._hadjust.set_value(new_hadjust) return old_vadjust != new_vadjust or old_hadjust != new_hadjust def is_on_first_page(self): """Return True if we are currently viewing the first page, i.e. if we are scrolled as far to the left as possible, or if only the left page is visible on the main layout. In manga mode it is the other way around. """ if not self.displayed_double(): return True width, height = self.get_visible_area_size() if self.is_manga_mode: return (self._hadjust.get_value() >= self._hadjust.upper - width or self._hadjust.get_value() > self.left_image.size_request()[0]) else: return (self._hadjust.get_value() == 0 or self._hadjust.get_value() + width <= self.left_image.size_request()[0]) def clear(self): """Clear the currently displayed data (i.e. "close" the file).""" self.left_image.clear() self.right_image.clear() self.thumbnailsidebar.clear() self.set_title('Comix') self.statusbar.set_message('') self.set_bg_colour(prefs['bg colour']) enhance.clear_histogram() def displayed_double(self): """Return True if two pages are currently displayed.""" return (self.is_double_page and not self.is_virtual_double_page and self.file_handler.get_current_page() != self.file_handler.get_number_of_pages()) def get_visible_area_size(self): """Return a 2-tuple with the width and height of the visible part of the main layout area. """ width, height = self.get_size() if not prefs['hide all'] and not (self.is_fullscreen and prefs['hide all in fullscreen']): if prefs['show toolbar']: height -= self.toolbar.size_request()[1] if prefs['show statusbar']: height -= self.statusbar.size_request()[1] if prefs['show thumbnails']: width -= self.thumbnailsidebar.get_width() if prefs['show menubar']: height -= self.menubar.size_request()[1] if prefs['show scrollbar']: if self.zoom_mode == preferences.ZOOM_MODE_WIDTH: width -= self._vscroll.size_request()[0] elif self.zoom_mode == preferences.ZOOM_MODE_HEIGHT: height -= self._hscroll.size_request()[1] elif self.zoom_mode == preferences.ZOOM_MODE_MANUAL: width -= self._vscroll.size_request()[0] height -= self._hscroll.size_request()[1] return width, height def get_layout_pointer_position(self): """Return a 2-tuple with the x and y coordinates of the pointer on the main layout area, relative to the layout. """ x, y = self._main_layout.get_pointer() x += self._hadjust.get_value() y += self._vadjust.get_value() return (x, y) def set_cursor(self, mode): """Set the cursor on the main layout area to . You should probably use the cursor_handler instead of using this method directly. """ self._main_layout.window.set_cursor(mode) return False def update_title(self): """Set the title acording to current state.""" if self.displayed_double(): title = encoding.to_unicode('[%d,%d / %d] %s - Comix' % ( self.file_handler.get_current_page(), self.file_handler.get_current_page() + 1, self.file_handler.get_number_of_pages(), self.file_handler.get_pretty_current_filename())) else: title = encoding.to_unicode('[%d / %d] %s - Comix' % ( self.file_handler.get_current_page(), self.file_handler.get_number_of_pages(), self.file_handler.get_pretty_current_filename())) if self.slideshow.is_running(): title = '[%s] %s' % (_('SLIDESHOW'), title) self.set_title(title) def set_bg_colour(self, colour): """Set the background colour to . Colour is a sequence in the format (r, g, b). Values are 16-bit. """ self._main_layout.modify_bg(gtk.STATE_NORMAL, gtk.gdk.colormap_get_system().alloc_color(gtk.gdk.Color( *colour), False, True)) def _display_active_widgets(self): """Hide and/or show main window widgets depending on the current state. """ if not prefs['hide all'] and not (self.is_fullscreen and prefs['hide all in fullscreen']): if prefs['show toolbar']: self.toolbar.show_all() else: self.toolbar.hide_all() if prefs['show statusbar']: self.statusbar.show_all() else: self.statusbar.hide_all() if prefs['show menubar']: self.menubar.show_all() else: self.menubar.hide_all() if (prefs['show scrollbar'] and self.zoom_mode == preferences.ZOOM_MODE_WIDTH): self._vscroll.show_all() self._hscroll.hide_all() elif (prefs['show scrollbar'] and self.zoom_mode == preferences.ZOOM_MODE_HEIGHT): self._vscroll.hide_all() self._hscroll.show_all() elif (prefs['show scrollbar'] and self.zoom_mode == preferences.ZOOM_MODE_MANUAL): self._vscroll.show_all() self._hscroll.show_all() else: self._vscroll.hide_all() self._hscroll.hide_all() if prefs['show thumbnails']: self.thumbnailsidebar.show() else: self.thumbnailsidebar.hide() else: self.toolbar.hide_all() self.menubar.hide_all() self.statusbar.hide_all() self.thumbnailsidebar.hide() self._vscroll.hide_all() self._hscroll.hide_all() def terminate_program(self, *args): """Run clean-up tasks and exit the program.""" self.hide() if gtk.main_level() > 0: gtk.main_quit() if prefs['auto load last file'] and self.file_handler.file_loaded: prefs['path to last file'] = self.file_handler.get_real_path() prefs['page of last file'] = self.file_handler.get_current_page() else: prefs['path to last file'] = '' prefs['page of last file'] = 1 self.file_handler.cleanup() preferences.write_preferences_file() self.ui_manager.bookmarks.write_bookmarks_file() # This hack is to avoid Python issue #1856. for thread in threading.enumerate(): if thread is not threading.currentThread(): thread.join() print 'Bye!' sys.exit(0) comix-4.0.4/src/status.py0000644000175000001440000000314011042206447014215 0ustar sorkusers"""status.py - Statusbar for main window.""" import gtk import encoding class Statusbar(gtk.Statusbar): def __init__(self): gtk.Statusbar.__init__(self) self.set_has_resize_grip(True) self._page_info = '' self._resolution = '' self._filename = '' def set_message(self, message): """Set a specific message (such as an error message) on the statusbar, replacing whatever was there earlier. """ self.pop(0) self.push(0, ' %s' % encoding.to_unicode(message)) def set_page_number(self, page, total, double_page=False): """Update the page number.""" if double_page: self._page_info = '%d,%d / %d' % (page, page + 1, total) else: self._page_info = '%d / %d' % (page, total) def set_resolution(self, left_dimensions, right_dimensions=None): """Update the resolution data. Takes one or two tuples, (x, y, scale), describing the original resolution of an image as well as the currently displayed scale in percent. """ self._resolution = '%dx%d (%.1f%%)' % left_dimensions if right_dimensions is not None: self._resolution += ', %dx%d (%.1f%%)' % right_dimensions def set_filename(self, filename): """Update the filename.""" self._filename = encoding.to_unicode(filename) def update(self): """Set the statusbar to display the current state.""" self.pop(0) self.push(0, ' %s | %s | %s' % (self._page_info, self._resolution, self._filename)) comix-4.0.4/src/thumbnail.py0000644000175000001440000001443211120505614014656 0ustar sorkusers"""thumbnail.py - Thumbnail module for Comix implementing (most of) the freedesktop.org "standard" at http://jens.triq.net/thumbnail-spec/ Only normal size (i.e. 128x128 px) thumbnails are supported. """ import os from urllib import pathname2url, url2pathname try: # The md5 module is deprecated as of Python 2.5, replaced by hashlib. from hashlib import md5 except ImportError: from md5 import new as md5 import re import shutil import tempfile import gtk import Image import archive import constants import filehandler _thumbdir = os.path.join(constants.HOME_DIR, '.thumbnails/normal') def get_thumbnail(path, create=True, dst_dir=_thumbdir): """Return a thumbnail pixbuf for the file at by looking in the directory of stored thumbnails. If a thumbnail for the file doesn't exist we create a thumbnail pixbuf from the original. If is True we also save this new thumbnail in the thumbnail directory. If no thumbnail for can be produced (for whatever reason), return None. Images and archives are handled transparently. Note though that None is always returned for archives where no thumbnail already exist if is False, since re-creating the thumbnail on the fly each time would be too costly. If is set it is the base thumbnail directory, if not we use the default .thumbnails/normal/. """ thumbpath = _path_to_thumbpath(path, dst_dir) if not os.path.exists(thumbpath): return _get_new_thumbnail(path, create, dst_dir) try: info = Image.open(thumbpath).info try: mtime = int(info['Thumb::MTime']) except Exception: mtime = -1 if os.stat(path).st_mtime != mtime: return _get_new_thumbnail(path, create, dst_dir) return gtk.gdk.pixbuf_new_from_file(thumbpath) except Exception: return None def delete_thumbnail(path, dst_dir=_thumbdir): """Delete the thumbnail (if it exists) for the file at . If is set it is the base thumbnail directory, if not we use the default .thumbnails/normal/. """ thumbpath = _path_to_thumbpath(path, dst_dir) if os.path.isfile(thumbpath): try: os.remove(thumbpath) except Exception: pass def _get_new_thumbnail(path, create, dst_dir): """Return a new thumbnail pixbuf for the file at . If is True we also save it to disk with as the base thumbnail directory. """ if archive.archive_mime_type(path) is not None: if create: return _get_new_archive_thumbnail(path, dst_dir) return None if create: return _create_thumbnail(path, dst_dir) return _get_pixbuf128(path) def _get_new_archive_thumbnail(path, dst_dir): """Return a new thumbnail pixbuf for the archive at , and save it to disk; is the base thumbnail directory. """ extractor = archive.Extractor() tmpdir = tempfile.mkdtemp(prefix='comix_archive_thumb.') condition = extractor.setup(path, tmpdir) files = extractor.get_files() wanted = _guess_cover(files) if wanted is None: return None extractor.set_files([wanted]) extractor.extract() image_path = os.path.join(tmpdir, wanted) condition.acquire() while not extractor.is_ready(wanted): condition.wait() condition.release() pixbuf = _create_thumbnail(path, dst_dir, image_path=image_path) shutil.rmtree(tmpdir) return pixbuf def _create_thumbnail(path, dst_dir, image_path=None): """Create a thumbnail from the file at and store it if it is larger than 128x128 px. A pixbuf for the thumbnail is returned. is the base thumbnail directory (usually ~/.thumbnails/normal). If is not None it is used as the path to the image file actually used to create the thumbnail image, although the created thumbnail will still be saved as if for . """ if image_path is None: image_path = path pixbuf = _get_pixbuf128(image_path) if pixbuf is None: return None mime, width, height = gtk.gdk.pixbuf_get_file_info(image_path) if width <= 128 and height <= 128: return pixbuf mime = mime['mime_types'][0] uri = 'file://' + pathname2url(os.path.normpath(path)) thumbpath = _uri_to_thumbpath(uri, dst_dir) stat = os.stat(path) mtime = str(int(stat.st_mtime)) size = str(stat.st_size) width = str(width) height = str(height) tEXt_data = { 'tEXt::Thumb::URI': uri, 'tEXt::Thumb::MTime': mtime, 'tEXt::Thumb::Size': size, 'tEXt::Thumb::Mimetype': mime, 'tEXt::Thumb::Image::Width': width, 'tEXt::Thumb::Image::Height': height, 'tEXt::Software': 'Comix %s' % constants.VERSION } try: if not os.path.isdir(dst_dir): os.makedirs(dst_dir, 0700) pixbuf.save(thumbpath + '-comixtemp', 'png', tEXt_data) os.rename(thumbpath + '-comixtemp', thumbpath) os.chmod(thumbpath, 0600) except Exception: print '! thumbnail.py: Could not write', thumbpath, '\n' return pixbuf def _path_to_thumbpath(path, dst_dir): uri = 'file://' + pathname2url(os.path.normpath(path)) return _uri_to_thumbpath(uri, dst_dir) def _uri_to_thumbpath(uri, dst_dir): """Return the full path to the thumbnail for when the base thumbnail directory. """ md5hash = md5(uri).hexdigest() thumbpath = os.path.join(dst_dir, md5hash + '.png') return thumbpath def _get_pixbuf128(path): try: return gtk.gdk.pixbuf_new_from_file_at_size(path, 128, 128) except Exception: return None def _guess_cover(files): """Return the filename within that is the most likely to be the cover of an archive using some simple heuristics. """ filehandler.alphanumeric_sort(files) ext_re = re.compile(r'\.(jpg|jpeg|png|gif|tif|tiff)\s*$', re.I) front_re = re.compile('(cover|front)', re.I) images = filter(ext_re.search, files) candidates = filter(front_re.search, images) candidates = [c for c in candidates if 'back' not in c.lower()] if candidates: return candidates[0] if images: return images[0] return None comix-4.0.4/src/recent.py0000644000175000001440000000253611042125600014151 0ustar sorkusers"""recent.py - Recent files handler.""" import urllib import gtk import preferences class RecentFilesMenu(gtk.RecentChooserMenu): def __init__(self, ui, window): self._window = window self._manager = gtk.recent_manager_get_default() gtk.RecentChooserMenu.__init__(self, self._manager) self.set_sort_type(gtk.RECENT_SORT_MRU) self.set_show_tips(True) rfilter = gtk.RecentFilter() rfilter.add_pixbuf_formats() rfilter.add_mime_type('application/x-zip') rfilter.add_mime_type('application/zip') rfilter.add_mime_type('application/x-rar') rfilter.add_mime_type('application/x-tar') rfilter.add_mime_type('application/x-gzip') rfilter.add_mime_type('application/x-bzip2') rfilter.add_mime_type('application/x-cbz') rfilter.add_mime_type('application/x-cbr') rfilter.add_mime_type('application/x-cbt') self.add_filter(rfilter) self.connect('item_activated', self._load) def _load(self, *args): uri = self.get_current_uri() path = urllib.url2pathname(uri[7:]) self._window.file_handler.open_file(path) def add(self, path): if not preferences.prefs['store recent file info']: return uri = 'file://' + urllib.pathname2url(path) self._manager.add_item(uri) comix-4.0.4/src/filehandler.py0000644000175000001440000005156211132456222015160 0ustar sorkusers"""filehandler.py - File handler.""" import os import sys import shutil import locale import tempfile import gc import shutil import threading import re import gtk import archive import cursor import encoding import image from preferences import prefs import thumbnail class FileHandler: """The FileHandler keeps track of images, pages, caches and reads files. When the Filehandler's methods refer to pages, they are indexed from 1, i.e. the first page is page 1 etc. Other modules should *never* read directly from the files pointed to by paths given by the FileHandler's methods. The files are not even guaranteed to exist at all times since the extraction of archives is threaded. """ def __init__(self, window): self.file_loaded = False self.archive_type = None self._window = window self._base_path = None self._tmp_dir = tempfile.mkdtemp(prefix='comix.', suffix=os.sep) self._image_files = [] self._current_image_index = None self._comment_files = [] self._raw_pixbufs = {} self._name_table = {} self._extractor = archive.Extractor() self._condition = None self._image_re = re.compile(r'\.(jpg|jpeg|png|gif|tif|tiff)\s*$', re.I) self.update_comment_extensions() def _get_pixbuf(self, index): """Return the pixbuf indexed by from cache. Pixbufs not found in cache are fetched from disk first. """ if index not in self._raw_pixbufs: self._wait_on_page(index + 1) try: self._raw_pixbufs[index] = gtk.gdk.pixbuf_new_from_file( self._image_files[index]) except Exception: self._raw_pixbufs[index] = self._get_missing_image() return self._raw_pixbufs[index] def get_pixbufs(self, single=False): """Return the pixbuf(s) for the image(s) that should be currently displayed, from cache. Return two pixbufs in double-page mode unless is True. Pixbufs not found in cache are fetched from disk first. """ if not self._window.displayed_double() or single: return self._get_pixbuf(self._current_image_index) return (self._get_pixbuf(self._current_image_index), self._get_pixbuf(self._current_image_index + 1)) def do_cacheing(self): """Make sure that the correct pixbufs are stored in cache. These are (in the current implementation) the current image(s), and if cacheing is enabled, also the one or two pixbufs before and after them. All other pixbufs are deleted and garbage collected directly in order to save memory. """ # Get list of wanted pixbufs. first_wanted = self._current_image_index last_wanted = first_wanted + 1 if self._window.is_double_page: last_wanted += 1 if prefs['cache']: first_wanted -= self._get_backward_step_length() last_wanted += self._get_forward_step_length() first_wanted = max(0, first_wanted) last_wanted = min(self.get_number_of_pages(), last_wanted) wanted_pixbufs = range(first_wanted, last_wanted) # Remove old pixbufs. for page in set(self._raw_pixbufs) - set(wanted_pixbufs): del self._raw_pixbufs[page] if sys.version_info[:3] >= (2, 5, 0): gc.collect(0) else: gc.collect() # Cache new pixbufs if they are not already cached. for wanted in wanted_pixbufs: self._get_pixbuf(wanted) def next_page(self): """Set up filehandler to the next page. Return True if this results in a new page. """ if not self.file_loaded: return False old_page = self.get_current_page() viewed = self._window.displayed_double() and 2 or 1 if self.get_current_page() + viewed > self.get_number_of_pages(): if (prefs['auto open next archive'] and self.archive_type is not None): self._open_next_archive() return False self._current_image_index += self._get_forward_step_length() return old_page != self.get_current_page() def previous_page(self): """Set up filehandler to the previous page. Return True if this results in a new page. """ if not self.file_loaded: return False if self.get_current_page() == 1: if (prefs['auto open next archive'] and self.archive_type is not None): self._open_previous_archive() return False old_page = self.get_current_page() step = self._get_backward_step_length() step = min(self._current_image_index, step) self._current_image_index -= step if (step == 2 and self.get_virtual_double_page()): self._current_image_index += 1 return old_page != self.get_current_page() def first_page(self): """Set up filehandler to the first page. Return True if this results in a new page. """ if not self.file_loaded: return False old_page = self.get_current_page() self._current_image_index = 0 return old_page != self.get_current_page() def last_page(self): """Set up filehandler to the last page. Return True if this results in a new page. """ if not self.file_loaded: return False old_page = self.get_current_page() offset = self._window.is_double_page and 2 or 1 offset = min(self.get_number_of_pages(), offset) self._current_image_index = self.get_number_of_pages() - offset if (offset == 2 and self.get_virtual_double_page()): self._current_image_index += 1 return old_page != self.get_current_page() def set_page(self, page_num): """Set up filehandler to the page . Return True if this results in a new page. """ if not 0 < page_num <= self.get_number_of_pages(): return False old_page = self.get_current_page() self._current_image_index = page_num - 1 return old_page != self.get_current_page() def get_virtual_double_page(self): """Return True if the current state warrants use of virtual double page mode (i.e. if double page mode is on, the corresponding preference is set, and one of the two images that should normally be displayed has a width that exceeds its height). """ if (not self._window.is_double_page or not prefs['no double page for wide images'] or self.get_current_page() == self.get_number_of_pages()): return False page1 = self._get_pixbuf(self._current_image_index) if page1.get_width() > page1.get_height(): return True page2 = self._get_pixbuf(self._current_image_index + 1) if page2.get_width() > page2.get_height(): return True return False def open_file(self, path, start_page=1): """Open the file pointed to by . If is not set we set the current page to 1 (first page), if it is set we set the current page to the value of . If is non-positive it means the last image. Return True if the file is successfully loaded. """ # If the given is invalid we update the statusbar. if os.path.isdir(path): self._window.statusbar.set_message( _('Could not open %s: Is a directory.') % path) return False if not os.path.isfile(path): self._window.statusbar.set_message( _('Could not open %s: No such file.') % path) return False if not os.access(path, os.R_OK): self._window.statusbar.set_message( _('Could not open %s: Permission denied.') % path) return False self.archive_type = archive.archive_mime_type(path) if self.archive_type is None and not is_image_file(path): self._window.statusbar.set_message( _('Could not open %s: Unknown file type.') % path) return False # We close the previously opened file. self._window.cursor_handler.set_cursor_type(cursor.WAIT) if self.file_loaded: self.close_file() while gtk.events_pending(): gtk.main_iteration(False) # If is an archive we create an Extractor for it and set the # files in it with file endings indicating image files or comments # as the ones to be extracted. if self.archive_type is not None: self._base_path = path self._condition = self._extractor.setup(path, self._tmp_dir) files = self._extractor.get_files() image_files = filter(self._image_re.search, files) alphanumeric_sort(image_files) self._image_files = \ [os.path.join(self._tmp_dir, f) for f in image_files] comment_files = filter(self._comment_re.search, files) self._comment_files = \ [os.path.join(self._tmp_dir, f) for f in comment_files] for name, full_path in zip(image_files, self._image_files): self._name_table[full_path] = name for name, full_path in zip(comment_files, self._comment_files): self._name_table[full_path] = name if start_page <= 0: if self._window.is_double_page: self._current_image_index = self.get_number_of_pages() - 2 else: self._current_image_index = self.get_number_of_pages() - 1 else: self._current_image_index = start_page - 1 self._current_image_index = max(0, self._current_image_index) depth = self._window.is_double_page and 2 or 1 priority_ordering = ( range(self._current_image_index, self._current_image_index + depth * 2) + range(self._current_image_index - depth, self._current_image_index)[::-1]) priority_ordering = [image_files[p] for p in priority_ordering if 0 <= p <= self.get_number_of_pages() - 1] for i, name in enumerate(priority_ordering): image_files.remove(name) image_files.insert(i, name) self._extractor.set_files(image_files + comment_files) self._extractor.extract() # If is an image we scan its directory for more images. else: self._base_path = os.path.dirname(path) for f in os.listdir(self._base_path): fpath = os.path.join(self._base_path, f) if is_image_file(fpath): self._image_files.append(fpath) self._image_files.sort(locale.strcoll) self._current_image_index = self._image_files.index(path) if not self._image_files: self._window.statusbar.set_message(_("No images in '%s'") % os.path.basename(path)) self.file_loaded = False else: self.file_loaded = True alphanumeric_sort(self._comment_files) self._window.cursor_handler.set_cursor_type(cursor.NORMAL) self._window.ui_manager.set_sensitivities() self._window.new_page() self._window.ui_manager.recent.add(path) def close_file(self, *args): """Run tasks for "closing" the currently opened file(s).""" self.file_loaded = False self._base_path = None self._image_files = [] self._current_image_index = None self._comment_files = [] self._name_table.clear() self._raw_pixbufs.clear() self._window.clear() self._window.ui_manager.set_sensitivities() self._extractor.stop() thread_delete(self._tmp_dir) self._tmp_dir = tempfile.mkdtemp(prefix='comix.', suffix=os.sep) gc.collect() def cleanup(self): """Run clean-up tasks. Should be called prior to exit.""" self._extractor.stop() thread_delete(self._tmp_dir) def is_last_page(self): """Return True if at the last page.""" if self._window.displayed_double(): return self.get_current_page() + 1 >= self.get_number_of_pages() else: return self.get_current_page() == self.get_number_of_pages() def get_number_of_pages(self): """Return the number of pages in the current archive/directory.""" return len(self._image_files) def get_current_page(self): """Return the current page number.""" return self._current_image_index + 1 def get_number_of_comments(self): """Return the number of comments in the current archive.""" return len(self._comment_files) def get_comment_text(self, num): """Return the text in comment or None if comment is not readable. """ self._wait_on_comment(num) try: fd = open(self._comment_files[num - 1], 'rb') text = fd.read() fd.close() except Exception: text = None return text def get_comment_name(self, num): """Return the filename of comment .""" return self._comment_files[num - 1] def update_comment_extensions(self): """Update the regular expression used to filter out comments in archives by their filename. """ exts = '|'.join(prefs['comment extensions']) self._comment_re = re.compile(r'\.(%s)\s*$' % exts, re.I) def get_pretty_current_filename(self): """Return a string with the name of the currently viewed file that is suitable for printing. """ if self.archive_type is not None: name = os.path.basename(self._base_path) else: name = os.path.join(os.path.basename(self._base_path), os.path.basename(self._image_files[self._current_image_index])) return encoding.to_unicode(name) def get_path_to_page(self, page=None): """Return the full path to the image file for , or the current page if is None. """ if page is None: return self._image_files[self._current_image_index] return self._image_files[page - 1] def get_path_to_base(self): """Return the full path to the current base (path to archive or image directory.) """ return self._base_path def get_real_path(self): """Return the "real" path to the currently viewed file, i.e. the full path to the archive or the full path to the currently viewed image. """ if self.archive_type is not None: return self.get_path_to_base() return self._image_files[self._current_image_index] def get_size(self, page=None): """Return a tuple (width, height) with the size of . If is None, return the size of the current page. """ self._wait_on_page(page) info = gtk.gdk.pixbuf_get_file_info(self.get_path_to_page(page)) if info is not None: return (info[1], info[2]) return (0, 0) def get_mime_name(self, page=None): """Return a string with the name of the mime type of . If is None, return the mime type name of the current page. """ self._wait_on_page(page) info = gtk.gdk.pixbuf_get_file_info(self.get_path_to_page(page)) if info is not None: return info[0]['name'].upper() return _('Unknown filetype') def get_thumbnail(self, page=None, width=128, height=128, create=False): """Return a thumbnail pixbuf of that fit in a box with dimensions x. Return a thumbnail for the current page if is None. If is True, and x <= 128x128, the thumbnail is also stored on disk. """ self._wait_on_page(page) path = self.get_path_to_page(page) if width <= 128 and height <= 128: thumb = thumbnail.get_thumbnail(path, create) else: try: thumb = gtk.gdk.pixbuf_new_from_file_at_size(path, width, height) except Exception: thumb = None if thumb is None: thumb = self._get_missing_image() thumb = image.fit_in_rectangle(thumb, width, height) return thumb def get_stats(self, page=None): """Return a stat object, as used by the stat module, for . If is None, return a stat object for the current page. Return None if the stat object can not be produced (e.g. broken file). """ self._wait_on_page(page) try: stats = os.stat(self.get_path_to_page(page)) except Exception: stats = None return stats def _get_forward_step_length(self): """Return the step length for switching pages forwards.""" if (self._window.displayed_double() and prefs['double step in double page mode']): return 2 return 1 def _get_backward_step_length(self): """Return the step length for switching pages backwards.""" if (self._window.is_double_page and prefs['double step in double page mode']): return 2 return 1 def _open_next_archive(self): """Open the archive that comes directly after the currently loaded archive in that archive's directory listing, sorted alphabetically. """ arch_dir = os.path.dirname(self._base_path) files = os.listdir(arch_dir) files.sort(locale.strcoll) try: current_index = files.index(os.path.basename(self._base_path)) except ValueError: return for f in files[current_index + 1:]: path = os.path.join(arch_dir, f) if archive.archive_mime_type(path) is not None: self.open_file(path) return def _open_previous_archive(self): """Open the archive that comes directly before the currently loaded archive in that archive's directory listing, sorted alphabetically. """ arch_dir = os.path.dirname(self._base_path) files = os.listdir(arch_dir) files.sort(locale.strcoll) try: current_index = files.index(os.path.basename(self._base_path)) except ValueError: return for f in reversed(files[:current_index]): path = os.path.join(arch_dir, f) if archive.archive_mime_type(path) is not None: self.open_file(path, 0) return def _get_missing_image(self): """Return a pixbuf depicting a missing/broken image.""" return self._window.render_icon(gtk.STOCK_MISSING_IMAGE, gtk.ICON_SIZE_DIALOG) def _wait_on_page(self, page): """Block the running (main) thread until the file corresponding to image has been fully extracted. """ path = self.get_path_to_page(page) self._wait_on_file(path) def _wait_on_comment(self, num): """Block the running (main) thread until the file corresponding to comment has been fully extracted. """ path = self._comment_files[num - 1] self._wait_on_file(path) def _wait_on_file(self, path): """Block the running (main) thread if the file is from an archive and has not yet been extracted. Return when the file is ready. """ if self.archive_type is None: return name = self._name_table[path] self._condition.acquire() while not self._extractor.is_ready(name): self._condition.wait() self._condition.release() def thread_delete(path): """Start a threaded removal of the directory tree rooted at . This is to avoid long blockings when removing large temporary dirs. """ del_thread = threading.Thread(target=shutil.rmtree, args=(path,)) del_thread.setDaemon(False) del_thread.start() def is_image_file(path): """Return True if the file at is an image file recognized by PyGTK. """ if os.path.isfile(path): info = gtk.gdk.pixbuf_get_file_info(path) return info is not None return False def alphanumeric_sort(filenames): """Do an in-place alphanumeric sort of the strings in , such that for an example "1.jpg", "2.jpg", "10.jpg" is a sorted ordering. """ def _format_substring(s): if s.isdigit(): return int(s) return s.lower() rec = re.compile("\d+|\D+") filenames.sort(key=lambda s: map(_format_substring, rec.findall(s))) comix-4.0.4/src/ui.py0000644000175000001440000003521511137114632013316 0ustar sorkusers"""ui.py - UI definitions for main window. Logically this isn't really a separate module from main.py, but it is given it's own file for the sake of readability. """ import gtk import about import bookmark import comment import edit import enhance import filechooser import filehandler import library import preferences import properties import recent import thumbremover class MainUI(gtk.UIManager): def __init__(self, window): gtk.UIManager.__init__(self) self._window = window # ---------------------------------------------------------------- # Create actions for the menus. # ---------------------------------------------------------------- self._actiongroup = gtk.ActionGroup('comix-main') self._actiongroup.add_actions([ ('next_page', gtk.STOCK_GO_FORWARD, _('_Next page'), 'Page_Down', None, window.next_page), ('previous_page', gtk.STOCK_GO_BACK, _('_Previous page'), 'Page_Up', None, window.previous_page), ('first_page', gtk.STOCK_GOTO_FIRST, _('_First page'), 'Home', None, window.first_page), ('last_page', gtk.STOCK_GOTO_LAST, _('_Last page'), 'End', None, window.last_page), ('zoom_in', gtk.STOCK_ZOOM_IN, _('_Zoom in'), 'KP_Add', None, window.manual_zoom_in), ('zoom_out', gtk.STOCK_ZOOM_OUT, _('Zoom _out'), 'KP_Subtract', None, window.manual_zoom_out), ('zoom_original', gtk.STOCK_ZOOM_100, _('O_riginal size'), '0', None, window.manual_zoom_original), ('close', gtk.STOCK_CLOSE, _('_Close'), 'w', None, window.file_handler.close_file), ('quit', gtk.STOCK_QUIT, _('_Quit'), 'q', None, window.terminate_program), ('rotate_90', 'comix-rotate-90', _('_Rotate 90 degrees CW'), 'r', None, window.rotate_90), ('rotate_180','comix-rotate-180', _('Rotate 180 de_grees'), None, None, window.rotate_180), ('rotate_270', 'comix-rotate-270', _('Rotat_e 90 degrees CCW'), 'r', None, window.rotate_270), ('flip_horiz', 'comix-flip-horizontal', _('Fli_p horizontally'), None, None, window.flip_horizontally), ('flip_vert', 'comix-flip-vertical', _('Flip _vertically'), None, None, window.flip_vertically), ('menu_zoom', 'comix-zoom', _('Manual _Zoom')), ('menu_recent', None, _('Open _recent')), ('menu_bookmarks', None, _('_Bookmarks')), ('menu_toolbars', None, _('T_oolbars')), ('menu_edit', None, _('_Edit')), ('menu_file', None, _('_File')), ('menu_view', None, _('_View')), ('menu_go', None, _('_Go')), ('menu_help', None, _('_Help')), ('menu_transform', 'comix-transform', _('_Transform')), ('expander', None, None, None, None, None)]) self._actiongroup.add_toggle_actions([ ('fullscreen', None, _('_Fullscreen'), 'f', None, window.change_fullscreen), ('double_page', 'comix-double-page', _('_Double page mode'), 'd', None, window.change_double_page), ('toolbar', None, _('_Toolbar'), None, None, window.change_toolbar_visibility), ('menubar', None, _('_Menubar'), None, None, window.change_menubar_visibility), ('statusbar', None, _('St_atusbar'), None, None, window.change_statusbar_visibility), ('scrollbar', None, _('S_crollbars'), None, None, window.change_scrollbar_visibility), ('thumbnails', None, _('Th_umbnails'), 'F9', None, window.change_thumbnails_visibility), ('hide all', None, _('H_ide all'), 'i', None, window.change_hide_all), ('manga_mode', 'comix-manga', _('_Manga mode'), 'm', None, window.change_manga_mode), ('keep_transformation', None, _('_Keep transformation'), 'k', None, window.change_keep_transformation), ('slideshow', gtk.STOCK_MEDIA_PLAY, _('Run _slideshow'), 'S', None, window.slideshow.toggle), ('lens', 'comix-lens', _('Magnifying _glass'), 'g', None, window.glass.toggle)]) # Note: Don't change the default value for the radio buttons unless # also fixing the code for setting the correct one on start-up. self._actiongroup.add_radio_actions([ ('best_fit_mode', 'comix-fitbest', _('_Best fit mode'), 'b', None, preferences.ZOOM_MODE_BEST), ('fit_width_mode', 'comix-fitwidth', _('Fit _width mode'), 'w', None, preferences.ZOOM_MODE_WIDTH), ('fit_height_mode', 'comix-fitheight', _('Fit _height mode'), 'h', None, preferences.ZOOM_MODE_HEIGHT), ('fit_manual_mode', 'comix-fitmanual', _('M_anual zoom mode'), 'a', None, preferences.ZOOM_MODE_MANUAL)], 3, window.change_zoom_mode) # Some actions added separately since they need extra arguments. self._actiongroup.add_actions([ ('about', gtk.STOCK_ABOUT, _('_About'), None, None, about.open_dialog), ('comments', 'comix-comments', _('_View comments...'), 'c', None, comment.open_dialog), ('edit_archive', gtk.STOCK_EDIT, _('_Edit archive...'), None, None, edit.open_dialog), ('open', gtk.STOCK_OPEN, _('_Open...'), 'o', None, filechooser.open_main_filechooser_dialog), ('properties', gtk.STOCK_PROPERTIES, _('_Properties'), 'Return', None, properties.open_dialog), ('enhance_image', 'comix-enhance-image', _('_Enhance image...'), 'e', None, enhance.open_dialog), ('thumbnail_maintenance', 'comix-thumbnails', _('_Thumbnail maintenance...'), None, None, thumbremover.open_dialog), ('preferences', gtk.STOCK_PREFERENCES, _('Pr_eferences'), None, None, preferences.open_dialog)], window) self._actiongroup.add_actions([ ('library', 'comix-library', _('_Library...'), 'l', None, library.open_dialog)], window.file_handler) ui_description = """ """ self.add_ui_from_string(ui_description) self.insert_action_group(self._actiongroup, 0) self.bookmarks = bookmark.BookmarksMenu(self, window) self.get_widget('/Menu/menu_bookmarks').set_submenu(self.bookmarks) self.get_widget('/Menu/menu_bookmarks').show() self.recent = recent.RecentFilesMenu(self, window) self.get_widget('/Menu/menu_file/menu_recent').set_submenu(self.recent) self.get_widget('/Menu/menu_file/menu_recent').show() window.add_accel_group(self.get_accel_group()) # Is there no built-in way to do this? self.get_widget('/Tool/expander').set_expand(True) self.get_widget('/Tool/expander').set_sensitive(False) self.get_widget('/Tool/first_page').set_tooltip_text(_('First page')) self.get_widget('/Tool/previous_page').set_tooltip_text( _('Previous page')) self.get_widget('/Tool/next_page').set_tooltip_text(_('Next page')) self.get_widget('/Tool/last_page').set_tooltip_text(_('Last page')) self.get_widget('/Tool/best_fit_mode').set_tooltip_text( _('Best fit mode')) self.get_widget('/Tool/fit_width_mode').set_tooltip_text( _('Fit width mode')) self.get_widget('/Tool/fit_height_mode').set_tooltip_text( _('Fit height mode')) self.get_widget('/Tool/fit_manual_mode').set_tooltip_text( _('Manual zoom mode')) self.get_widget('/Tool/double_page').set_tooltip_text( _('Double page mode')) self.get_widget('/Tool/manga_mode').set_tooltip_text(_('Manga mode')) self.get_widget('/Tool/lens').set_tooltip_text(_('Magnifying glass')) def set_sensitivities(self): """Sets the main UI's widget's sensitivities appropriately.""" general = ('properties', 'edit_archive', 'close', 'slideshow', 'rotate_90', 'rotate_180', 'rotate_270', 'flip_horiz', 'flip_vert', 'next_page', 'previous_page', 'first_page', 'last_page') comment = ('comments',) general_sensitive = False comment_sensitive = False if self._window.file_handler.file_loaded: general_sensitive = True if self._window.file_handler.get_number_of_comments(): comment_sensitive = True for name in general: self._actiongroup.get_action(name).set_sensitive(general_sensitive) for name in comment: self._actiongroup.get_action(name).set_sensitive(comment_sensitive) self.bookmarks.set_sensitive(general_sensitive) comix-4.0.4/src/icons.py0000644000175000001440000000523111112303030013770 0ustar sorkusers"""icons.py - Load Comix specific icons.""" import os import sys import gtk def load_icons(): _icons = (('gimp-flip-horizontal.png', 'comix-flip-horizontal'), ('gimp-flip-vertical.png', 'comix-flip-vertical'), ('gimp-rotate-180.png', 'comix-rotate-180'), ('gimp-rotate-270.png', 'comix-rotate-270'), ('gimp-rotate-90.png', 'comix-rotate-90'), ('gimp-thumbnails.png', 'comix-thumbnails'), ('gimp-transform.png', 'comix-transform'), ('tango-enhance-image.png', 'comix-enhance-image'), ('tango-add-bookmark.png', 'comix-add-bookmark'), ('tango-archive.png', 'comix-archive'), ('tango-image.png', 'comix-image'), ('library.png', 'comix-library'), ('comments.png', 'comix-comments'), ('zoom.png', 'comix-zoom'), ('lens.png', 'comix-lens'), ('double-page.png', 'comix-double-page'), ('manga.png', 'comix-manga'), ('fitbest.png', 'comix-fitbest'), ('fitwidth.png', 'comix-fitwidth'), ('fitheight.png', 'comix-fitheight'), ('fitmanual.png', 'comix-fitmanual')) icon_path = None # Some heuristics to find the path to the icon image files. base = os.path.dirname(os.path.dirname(os.path.realpath(sys.argv[0]))) # Try source directory. if os.path.isfile(os.path.join(base, 'images/16x16/comix.png')): icon_path = os.path.join(base, 'images') else: # Try system directories. for prefix in [base, '/usr', '/usr/local', '/usr/X11R6']: if os.path.isfile(os.path.join(prefix, 'share/comix/images/16x16/comix.png')): # Try one icon_path = os.path.join(prefix, 'share/comix/images') break if icon_path is None: return # Load window title icon. pixbuf = gtk.gdk.pixbuf_new_from_file(os.path.join(icon_path, '16x16/comix.png')) gtk.window_set_default_icon(pixbuf) # Load application icons. factory = gtk.IconFactory() for filename, stockid in _icons: try: filename = os.path.join(icon_path, filename) pixbuf = gtk.gdk.pixbuf_new_from_file(filename) iconset = gtk.IconSet(pixbuf) factory.add(stockid, iconset) except Exception: print '! Could not load icon "%s".' % filename factory.add_default() comix-4.0.4/src/thumbbar.py0000644000175000001440000001747311111362064014507 0ustar sorkusers"""thumbbar.py - Thumbnail sidebar for main window.""" import urllib import gtk import gobject import Image import ImageDraw import image from preferences import prefs import thumbnail class ThumbnailSidebar(gtk.HBox): """A thumbnail sidebar including scrollbar for the main window.""" def __init__(self, window): gtk.HBox.__init__(self, False, 0) self._window = window self._loaded = False self._load_task = None self._height = 0 self._liststore = gtk.ListStore(gtk.gdk.Pixbuf) self._treeview = gtk.TreeView(self._liststore) self._treeview.enable_model_drag_source(gtk.gdk.BUTTON1_MASK, [('text/uri-list', 0, 0)], gtk.gdk.ACTION_COPY) self._column = gtk.TreeViewColumn(None) cellrenderer = gtk.CellRendererPixbuf() self._layout = gtk.Layout() self._layout.put(self._treeview, 0, 0) self._column.set_sizing(gtk.TREE_VIEW_COLUMN_FIXED) self._treeview.append_column(self._column) self._column.pack_start(cellrenderer, True) self._column.set_attributes(cellrenderer, pixbuf=0) self._column.set_fixed_width(prefs['thumbnail size'] + 7) self._layout.set_size_request(prefs['thumbnail size'] + 7, 0) self._treeview.set_headers_visible(False) self._vadjust = self._layout.get_vadjustment() self._vadjust.step_increment = 15 self._vadjust.page_increment = 1 self._scroll = gtk.VScrollbar(None) self._scroll.set_adjustment(self._vadjust) self._selection = self._treeview.get_selection() self.pack_start(self._layout) self.pack_start(self._scroll) self._treeview.connect_after('drag_begin', self._drag_begin) self._treeview.connect('drag_data_get', self._drag_data_get) self._selection.connect('changed', self._selection_event) self._layout.connect('scroll_event', self._scroll_event) def get_width(self): """Return the width in pixels of the ThumbnailSidebar.""" return self._layout.size_request()[0] + self._scroll.size_request()[0] def show(self, *args): """Show the ThumbnailSidebar.""" self.show_all() def hide(self): """Hide the ThumbnailSidebar.""" self.hide_all() def clear(self): """Clear the ThumbnailSidebar of any loaded thumbnails.""" self._liststore.clear() self._layout.set_size(0, 0) self._height = 0 self._loaded = False self._stop_update = True def resize(self): """Reload the thumbnails with the size specified by in the preferences. """ self._column.set_fixed_width(prefs['thumbnail size'] + 7) self._layout.set_size_request(prefs['thumbnail size'] + 7, 0) self.clear() self.load_thumbnails() def load_thumbnails(self): """Load the thumbnails, if it is appropriate to do so.""" if (self._loaded or not self._window.file_handler.file_loaded or not prefs['show thumbnails'] or prefs['hide all'] or (self._window.is_fullscreen and prefs['hide all in fullscreen'])): return self._loaded = True if self._load_task is not None: gobject.source_remove(self._load_task) self._load_task = gobject.idle_add(self._load) def update_select(self): """Select the thumbnail for the currently viewed page and make sure that the thumbbar is scrolled so that the selected thumb is in view. """ if not self._loaded: return self._selection.select_path( self._window.file_handler.get_current_page() - 1) rect = self._treeview.get_background_area( self._window.file_handler.get_current_page() - 1, self._column) if (rect.y < self._vadjust.get_value() or rect.y + rect.height > self._vadjust.get_value() + self._vadjust.page_size): value = rect.y + (rect.height // 2) - (self._vadjust.page_size // 2) value = max(0, value) value = min(self._vadjust.upper - self._vadjust.page_size, value) self._vadjust.set_value(value) def _load(self): if self._window.file_handler.archive_type is not None: create = False else: create = prefs['create thumbnails'] self._stop_update = False for i in xrange(1, self._window.file_handler.get_number_of_pages() + 1): pixbuf = self._window.file_handler.get_thumbnail(i, prefs['thumbnail size'], prefs['thumbnail size'], create) if prefs['show page numbers on thumbnails']: _add_page_number(pixbuf, i) pixbuf = image.add_border(pixbuf, 1) self._liststore.append([pixbuf]) while gtk.events_pending(): gtk.main_iteration(False) if self._stop_update: return self._height += self._treeview.get_background_area(i - 1, self._column).height self._layout.set_size(0, self._height) self._stop_update = True self.update_select() def _get_selected_row(self): """Return the index of the currently selected row.""" try: return self._selection.get_selected_rows()[1][0][0] except Exception: return None def _selection_event(self, tree_selection): """Handle events due to changed thumbnail selection.""" try: self._window.set_page(self._get_selected_row() + 1) except Exception: pass def _scroll_event(self, widget, event): """Handle scroll events on the thumbnail sidebar.""" if event.direction == gtk.gdk.SCROLL_UP: self._vadjust.set_value(self._vadjust.get_value() - 60) elif event.direction == gtk.gdk.SCROLL_DOWN: upper = self._vadjust.upper - self._vadjust.page_size self._vadjust.set_value(min(self._vadjust.get_value() + 60, upper)) def _drag_data_get(self, treeview, context, selection, *args): """Put the URI of the selected file into the SelectionData, so that the file can be copied (e.g. to a file manager). """ try: selected = self._get_selected_row() path = self._window.file_handler.get_path_to_page(selected + 1) uri = 'file://localhost' + urllib.pathname2url(path) selection.set_uris([uri]) except Exception: pass def _drag_begin(self, treeview, context): """We hook up on drag_begin events so that we can set the hotspot for the cursor at the top left corner of the thumbnail (so that we might actually see where we are dropping!). """ path = treeview.get_cursor()[0] pixmap = treeview.create_row_drag_icon(path) # context.set_icon_pixmap() seems to cause crashes, so we do a # quick and dirty conversion to pixbuf. pointer = gtk.gdk.Pixbuf(gtk.gdk.COLORSPACE_RGB, True, 8, *pixmap.get_size()) pointer = pointer.get_from_drawable(pixmap, treeview.get_colormap(), 0, 0, 0, 0, *pixmap.get_size()) context.set_icon_pixbuf(pointer, -5, -5) def _add_page_number(pixbuf, page): """Add page number in a black rectangle in the top left corner of . This is highly dependent on the dimensions of the built-in font in PIL (bad). If the PIL font was changed, this function would likely produce badly positioned numbers on the pixbuf. """ text = str(page) width = min(6 * len(text) + 2, pixbuf.get_width()) height = min(10, pixbuf.get_height()) im = Image.new('RGB', (width, height), (0, 0, 0)) draw = ImageDraw.Draw(im) draw.text((1, -1), text, fill=(255, 255, 255)) num_pixbuf = image.pil_to_pixbuf(im) num_pixbuf.copy_area(0, 0, width, height, pixbuf, 0, 0) comix-4.0.4/src/library.py0000644000175000001440000012372511132456222014350 0ustar sorkusers"""library.py - Comic book library.""" import os import gc import urllib from xml.sax.saxutils import escape as xmlescape import gtk import gobject import pango import Image import ImageDraw import archive import encoding import filechooser import labels import librarybackend from preferences import prefs import image _dialog = None # The "All books" collection is not a real collection stored in the library, # but is represented by this ID in the library's TreeModels. _COLLECTION_ALL = -1 _DRAG_EXTERNAL_ID, _DRAG_BOOK_ID, _DRAG_COLLECTION_ID = range(3) class _LibraryDialog(gtk.Window): """The library window. Automatically creates and uses a new librarybackend.LibraryBackend when opened. """ def __init__(self, file_handler): gtk.Window.__init__(self, gtk.WINDOW_TOPLEVEL) self.resize(prefs['lib window width'], prefs['lib window height']) self.set_title(_('Library')) self.connect('delete_event', self.close) self.filter_string = None self._file_handler = file_handler self._statusbar = gtk.Statusbar() self._statusbar.set_has_resize_grip(True) self.backend = librarybackend.LibraryBackend() self.book_area = _BookArea(self) self.control_area = _ControlArea(self) self.collection_area = _CollectionArea(self) table = gtk.Table(2, 2, False) table.attach(self.collection_area, 0, 1, 0, 1, gtk.FILL, gtk.EXPAND|gtk.FILL) table.attach(self.book_area, 1, 2, 0, 1, gtk.EXPAND|gtk.FILL, gtk.EXPAND|gtk.FILL) table.attach(self.control_area, 0, 2, 1, 2, gtk.EXPAND|gtk.FILL, gtk.FILL) table.attach(self._statusbar, 0, 2, 2, 3, gtk.FILL, gtk.FILL) self.add(table) self.show_all() def open_book(self, book): """Open the book with ID .""" path = self.backend.get_book_path(book) if path is None: return self.close() self._file_handler.open_file(path) def set_status_message(self, message): """Set a specific message on the statusbar, replacing whatever was there earlier. """ self._statusbar.pop(0) self._statusbar.push(0, ' %s' % encoding.to_unicode(message)) def close(self, *args): """Close the library and do required cleanup tasks.""" prefs['lib window width'], prefs['lib window height'] = self.get_size() self.book_area.stop_update() self.backend.close() self.book_area.close() filechooser.close_library_filechooser_dialog() _close_dialog() def add_books(self, paths, collection_name=None): """Add the books at to the library. If is not None, it is the name of a (new or existing) collection the books should be put in. """ if collection_name is None: collection = None else: collection = self.backend.get_collection_by_name(collection_name) if collection is None: # Collection by that name doesn't exist. self.backend.add_collection(collection_name) collection = self.backend.get_collection_by_name( collection_name) _AddBooksProgressDialog(self, paths, collection) if collection is not None: prefs['last library collection'] = collection self.collection_area.display_collections() class _CollectionArea(gtk.ScrolledWindow): """The _CollectionArea is the sidebar area in the library where different collections are displayed in a tree. """ def __init__(self, library): gtk.ScrolledWindow.__init__(self) self._library = library self.set_policy(gtk.POLICY_NEVER, gtk.POLICY_AUTOMATIC) self._treestore = gtk.TreeStore(str, int) # (Name, ID) of collections. self._treeview = gtk.TreeView(self._treestore) self._treeview.connect('cursor_changed', self._collection_selected) self._treeview.connect('drag_data_received', self._drag_data_received) self._treeview.connect('drag_motion', self._drag_motion) self._treeview.connect_after('drag_begin', self._drag_begin) self._treeview.connect('button_press_event', self._button_press) self._treeview.connect('key_press_event', self._key_press) self._treeview.connect('row_activated', self._expand_or_collapse_row) self._treeview.set_headers_visible(False) self._treeview.set_rules_hint(True) self._set_acceptable_drop(True) self._treeview.enable_model_drag_source(gtk.gdk.BUTTON1_MASK, [('collection', gtk.TARGET_SAME_WIDGET, _DRAG_COLLECTION_ID)], gtk.gdk.ACTION_MOVE) cellrenderer = gtk.CellRendererText() column = gtk.TreeViewColumn(None, cellrenderer, markup=0) self._treeview.append_column(column) self.add(self._treeview) self._ui_manager = gtk.UIManager() ui_description = """ """ self._ui_manager.add_ui_from_string(ui_description) actiongroup = gtk.ActionGroup('comix-library-collection-area') actiongroup.add_actions([ ('rename', None, _('Rename...'), None, None, self._rename_collection), ('duplicate', gtk.STOCK_COPY, _('Duplicate collection'), None, None, self._duplicate_collection), ('remove', gtk.STOCK_REMOVE, _('Remove collection...'), None, None, self._remove_collection)]) self._ui_manager.insert_action_group(actiongroup, 0) self.display_collections() def get_current_collection(self): """Return the collection ID for the currently selected collection, or None if no collection is selected. """ cursor = self._treeview.get_cursor() if cursor is None: return return self._get_collection_at_path(cursor[0]) def display_collections(self): """Display the library collections by redrawing them from the backend data. Should be called on startup or when the collections hierarchy has been changed (e.g. after moving, adding, renaming). Any row that was expanded before the call will have it's corresponding new row also expanded after the call. """ def _recursive_add(parent_iter, supercoll): for coll in self._library.backend.get_collections_in_collection( supercoll): name = self._library.backend.get_collection_name(coll) child_iter = self._treestore.append(parent_iter, [xmlescape(name), coll]) _recursive_add(child_iter, coll) def _expand_and_select(treestore, path, iterator): collection = treestore.get_value(iterator, 1) if collection == prefs['last library collection']: # Reset to trigger update of book area. prefs['last library collection'] = None self._treeview.expand_to_path(path) self._treeview.set_cursor(path) elif collection in expanded_collections: self._treeview.expand_to_path(path) def _expanded_rows_accumulator(treeview, path): collection = self._get_collection_at_path(path) expanded_collections.append(collection) expanded_collections = [] self._treeview.map_expanded_rows(_expanded_rows_accumulator) self._treestore.clear() self._treestore.append(None, ['%s' % xmlescape(_('All books')), _COLLECTION_ALL]) _recursive_add(None, None) self._treestore.foreach(_expand_and_select) def _get_collection_at_path(self, path): """Return the collection ID of the collection at the (TreeView) . """ iterator = self._treestore.get_iter(path) return self._treestore.get_value(iterator, 1) def _collection_selected(self, treeview): """Change the viewed collection (in the _BookArea) to the currently selected one in the sidebar, if it has been changed. """ collection = self.get_current_collection() if (collection is None or collection == prefs['last library collection']): return prefs['last library collection'] = collection gobject.idle_add(self._library.book_area.display_covers, collection) def _remove_collection(self, action=None): """Remove the currently selected collection from the library, if the user answers 'Yes' in a dialog. """ choice_dialog = gtk.MessageDialog(self._library, 0, gtk.MESSAGE_QUESTION, gtk.BUTTONS_YES_NO, _('Remove collection from the library?')) choice_dialog.format_secondary_text( _('The selected collection will be removed from the library (but the books and subcollections in it will remain). Are you sure that you want to continue?')) response = choice_dialog.run() choice_dialog.destroy() if response == gtk.RESPONSE_YES: collection = self.get_current_collection() self._library.backend.remove_collection(collection) prefs['last library collection'] = _COLLECTION_ALL self.display_collections() def _rename_collection(self, action): """Rename the currently selected collection, using a dialog.""" collection = self.get_current_collection() try: old_name = self._library.backend.get_collection_name(collection) except Exception: return rename_dialog = gtk.MessageDialog(self._library, 0, gtk.MESSAGE_QUESTION, gtk.BUTTONS_OK_CANCEL, _('Rename collection?')) rename_dialog.format_secondary_text( _('Please enter a new name for the selected collection.')) rename_dialog.set_default_response(gtk.RESPONSE_OK) box = gtk.HBox() # To get nice line-ups with the padding. rename_dialog.vbox.pack_start(box) entry = gtk.Entry() entry.set_text(old_name) entry.set_activates_default(True) box.pack_start(entry, True, True, 6) box.show_all() response = rename_dialog.run() new_name = entry.get_text() rename_dialog.destroy() if response == gtk.RESPONSE_OK and new_name: if self._library.backend.rename_collection(collection, new_name): self.display_collections() else: message = _("Could not change the name to '%s'.") % new_name if (self._library.backend.get_collection_by_name(new_name) is not None): message = '%s %s' % (message, _('A collection by that name already exists.')) self._library.set_status_message(message) def _duplicate_collection(self, action): """Duplicate the currently selected collection.""" collection = self.get_current_collection() if self._library.backend.duplicate_collection(collection): self.display_collections() else: self._library.set_status_message( _('Could not duplicate collection.')) def _button_press(self, treeview, event): """Handle mouse button presses on the _CollectionArea.""" row = treeview.get_path_at_pos(int(event.x), int(event.y)) if row is None: return path = row[0] if event.button == 3: if self._get_collection_at_path(path) == _COLLECTION_ALL: sens = False else: sens = True self._ui_manager.get_action('/Popup/rename').set_sensitive(sens) self._ui_manager.get_action('/Popup/duplicate').set_sensitive(sens) self._ui_manager.get_action('/Popup/remove').set_sensitive(sens) self._ui_manager.get_widget('/Popup').popup(None, None, None, event.button, event.time) def _key_press(self, treeview, event): """Handle key presses on the _CollectionArea.""" if event.keyval == gtk.keysyms.Delete: self._remove_collection() def _expand_or_collapse_row(self, treeview, path, column): """Expand or collapse the activated row.""" if treeview.row_expanded(path): treeview.collapse_row(path) else: treeview.expand_to_path(path) def _drag_data_received(self, treeview, context, x, y, selection, drag_id, eventtime): """Move books dragged from the _BookArea to the target collection, or move some collection into another collection. """ self._library.set_status_message('') drop_row = treeview.get_dest_row_at_pos(x, y) if drop_row is None: # Drop "after" the last row. dest_path, pos = ((len(self._treestore) - 1,), gtk.TREE_VIEW_DROP_AFTER) else: dest_path, pos = drop_row src_collection = self.get_current_collection() dest_collection = self._get_collection_at_path(dest_path) if drag_id == _DRAG_COLLECTION_ID: if pos in (gtk.TREE_VIEW_DROP_BEFORE, gtk.TREE_VIEW_DROP_AFTER): dest_collection = self._library.backend.get_supercollection( dest_collection) self._library.backend.add_collection_to_collection( src_collection, dest_collection) self.display_collections() elif drag_id == _DRAG_BOOK_ID: for path_str in selection.get_text().split(','): # IconView path book = self._library.book_area.get_book_at_path(int(path_str)) self._library.backend.add_book_to_collection(book, dest_collection) if src_collection != _COLLECTION_ALL: self._library.backend.remove_book_from_collection(book, src_collection) self._library.book_area.remove_book_at_path(int(path_str)) def _drag_motion(self, treeview, context, x, y, *args): """Set the library statusbar text when hovering a drag-n-drop over a collection (either books or from the collection area itself). Also set the TreeView to accept drops only when we are hovering over a valid drop position for the current drop type. This isn't pretty, but the details of treeviews and drag-n-drops are not pretty to begin with. """ drop_row = treeview.get_dest_row_at_pos(x, y) src_collection = self.get_current_collection() # Why isn't the drag ID passed along with drag-motion events? if context.get_source_widget() is self._treeview: # Moving collection. model, src_iter = treeview.get_selection().get_selected() if drop_row is None: # Drop "after" the last row. dest_path, pos = (len(model) - 1,), gtk.TREE_VIEW_DROP_AFTER else: dest_path, pos = drop_row dest_iter = model.get_iter(dest_path) if model.is_ancestor(src_iter, dest_iter): # No cycles! self._set_acceptable_drop(False) self._library.set_status_message('') return dest_collection = self._get_collection_at_path(dest_path) if pos in (gtk.TREE_VIEW_DROP_BEFORE, gtk.TREE_VIEW_DROP_AFTER): dest_collection = self._library.backend.get_supercollection( dest_collection) if (_COLLECTION_ALL in (src_collection, dest_collection) or src_collection == dest_collection): self._set_acceptable_drop(False) self._library.set_status_message('') return src_name = self._library.backend.get_collection_name( src_collection) if dest_collection is None: dest_name = _('Root') else: dest_name = self._library.backend.get_collection_name( dest_collection) message = (_("Put the collection '%(subcollection)s' in the collection '%(supercollection)s'.") % {'subcollection': src_name, 'supercollection': dest_name}) else: # Moving book(s). if drop_row is None: self._set_acceptable_drop(False) self._library.set_status_message('') return dest_path, pos = drop_row if pos in (gtk.TREE_VIEW_DROP_BEFORE, gtk.TREE_VIEW_DROP_AFTER): self._set_acceptable_drop(False) self._library.set_status_message('') return dest_collection = self._get_collection_at_path(dest_path) if (src_collection == dest_collection or dest_collection == _COLLECTION_ALL): self._set_acceptable_drop(False) self._library.set_status_message('') return dest_name = self._library.backend.get_collection_name( dest_collection) if src_collection == _COLLECTION_ALL: message = _("Add books to '%s'.") % dest_name else: src_name = self._library.backend.get_collection_name( src_collection) message = (_("Move books from '%(source collection)s' to '%(destination collection)s'.") % {'source collection': src_name, 'destination collection': dest_name}) self._set_acceptable_drop(True) self._library.set_status_message(message) def _set_acceptable_drop(self, acceptable): """Set the TreeView to accept drops if is True.""" if acceptable: self._treeview.enable_model_drag_dest( [('book', gtk.TARGET_SAME_APP, _DRAG_BOOK_ID), ('collection', gtk.TARGET_SAME_WIDGET, _DRAG_COLLECTION_ID)], gtk.gdk.ACTION_MOVE) else: self._treeview.enable_model_drag_dest([], gtk.gdk.ACTION_MOVE) def _drag_begin(self, treeview, context): """Create a cursor image for drag-n-drop of collections. We use the default one (i.e. the row with text), but put the hotspot in the top left corner so that one can actually see where one is dropping, which unfortunately isn't the default case. """ path = treeview.get_cursor()[0] pixmap = treeview.create_row_drag_icon(path) # context.set_icon_pixmap() seems to cause crashes, so we do a # quick and dirty conversion to pixbuf. pointer = gtk.gdk.Pixbuf(gtk.gdk.COLORSPACE_RGB, True, 8, *pixmap.get_size()) pointer = pointer.get_from_drawable(pixmap, treeview.get_colormap(), 0, 0, 0, 0, *pixmap.get_size()) context.set_icon_pixbuf(pointer, -5, -5) class _BookArea(gtk.ScrolledWindow): """The _BookArea is the central area in the library where the book covers are displayed. """ def __init__(self, library): gtk.ScrolledWindow.__init__(self) self._library = library self._stop_update = False self.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC) self._liststore = gtk.ListStore(gtk.gdk.Pixbuf, int) # (Cover, ID). self._iconview = gtk.IconView(self._liststore) self._iconview.set_pixbuf_column(0) self._iconview.connect('item_activated', self._book_activated) self._iconview.connect('selection_changed', self._selection_changed) self._iconview.connect_after('drag_begin', self._drag_begin) self._iconview.connect('drag_data_get', self._drag_data_get) self._iconview.connect('drag_data_received', self._drag_data_received) self._iconview.connect('button_press_event', self._button_press) self._iconview.connect('key_press_event', self._key_press) self._iconview.modify_base(gtk.STATE_NORMAL, gtk.gdk.Color()) # Black. self._iconview.enable_model_drag_source(0, [('book', gtk.TARGET_SAME_APP, _DRAG_BOOK_ID)], gtk.gdk.ACTION_MOVE) self._iconview.drag_dest_set(gtk.DEST_DEFAULT_ALL, [('text/uri-list', 0, _DRAG_EXTERNAL_ID)], gtk.gdk.ACTION_COPY | gtk.gdk.ACTION_MOVE) self._iconview.set_selection_mode(gtk.SELECTION_MULTIPLE) self.add(self._iconview) self._ui_manager = gtk.UIManager() ui_description = """ """ self._ui_manager.add_ui_from_string(ui_description) actiongroup = gtk.ActionGroup('comix-library-book-area') actiongroup.add_actions([ ('open', gtk.STOCK_OPEN, _('Open'), None, None, self.open_selected_book), ('remove from collection', gtk.STOCK_REMOVE, _('Remove from this collection'), None, None, self._remove_books_from_collection), ('remove from library', gtk.STOCK_DELETE, _('Remove from the library...'), None, None, self._remove_books_from_library)]) self._ui_manager.insert_action_group(actiongroup, 0) def close(self): """Run clean-up tasks for the _BookArea prior to closing.""" # We must unselect all or we will trigger selection_changed events # when closing with multiple books selected. self._iconview.unselect_all() # We must (for some reason) explicitly clear the ListStore in # order to not leak memory. self._liststore.clear() def display_covers(self, collection): """Display the books in in the IconView.""" self._stop_update = False # To handle new re-entry during update. self._liststore.clear() if collection == _COLLECTION_ALL: # The "All" collection is virtual. collection = None for i, book in enumerate(self._library.backend.get_books_in_collection( collection, self._library.filter_string)): self._add_book(book) if i % 15 == 0: # Don't update GUI for every cover for efficiency. while gtk.events_pending(): gtk.main_iteration(False) if self._stop_update: return self._stop_update = True def stop_update(self): """Signal that the updating of book covers should stop.""" self._stop_update = True def remove_book_at_path(self, path): """Remove the book at from the ListStore (and thus from the _BookArea). """ iterator = self._liststore.get_iter(path) self._liststore.remove(iterator) def get_book_at_path(self, path): """Return the book ID corresponding to the IconView .""" iterator = self._liststore.get_iter(path) return self._liststore.get_value(iterator, 1) def open_selected_book(self, *args): """Open the currently selected book.""" selected = self._iconview.get_selected_items() if not selected: return path = selected[0] self._book_activated(self._iconview, path) def _add_book(self, book): """Add the to the ListStore (and thus to the _BookArea).""" pixbuf = self._library.backend.get_book_cover(book) if pixbuf is None: pixbuf = self._library.render_icon(gtk.STOCK_MISSING_IMAGE, gtk.ICON_SIZE_DIALOG) # The ratio (0.67) is just above the normal aspect ratio for books. pixbuf = image.fit_in_rectangle(pixbuf, int(0.67 * prefs['library cover size']), prefs['library cover size']) pixbuf = image.add_border(pixbuf, 1, 0xFFFFFFFF) self._liststore.append([pixbuf, book]) def _book_activated(self, iconview, path): """Open the book at the (liststore) .""" book = self.get_book_at_path(path) self._library.open_book(book) def _selection_changed(self, iconview): """Update the displayed info in the _ControlArea when a new book is selected. """ selected = iconview.get_selected_items() self._library.control_area.update_info(selected) def _remove_books_from_collection(self, *args): """Remove the currently selected book(s) from the current collection, and thus also from the _BookArea. """ collection = self._library.collection_area.get_current_collection() if collection == _COLLECTION_ALL: return selected = self._iconview.get_selected_items() for path in selected: book = self.get_book_at_path(path) self._library.backend.remove_book_from_collection(book, collection) self.remove_book_at_path(path) coll_name = self._library.backend.get_collection_name(collection) self._library.set_status_message( _("Removed %(num)d book(s) from '%(collection)s'.") % {'num': len(selected), 'collection': coll_name}) def _remove_books_from_library(self, *args): """Remove the currently selected book(s) from the library, and thus also from the _BookArea, if the user clicks 'Yes' in a dialog. """ choice_dialog = gtk.MessageDialog(self._library, 0, gtk.MESSAGE_QUESTION, gtk.BUTTONS_YES_NO, _('Remove books from the library?')) choice_dialog.format_secondary_text( _('The selected books will be removed from the library (but the original files will be untouched). Are you sure that you want to continue?')) response = choice_dialog.run() choice_dialog.destroy() if response == gtk.RESPONSE_YES: selected = self._iconview.get_selected_items() for path in selected: book = self.get_book_at_path(path) self._library.backend.remove_book(book) self.remove_book_at_path(path) self._library.set_status_message( _('Removed %d book(s) from the library.') % len(selected)) def _button_press(self, iconview, event): """Handle mouse button presses on the _BookArea.""" path = iconview.get_path_at_pos(int(event.x), int(event.y)) if path is None: return # For some reason we don't always get an item_activated event when # double-clicking on an icon, so we handle it explicitly here. if event.type == gtk.gdk._2BUTTON_PRESS: self._book_activated(iconview, path) if event.button == 3: if not iconview.path_is_selected(path): iconview.unselect_all() iconview.select_path(path) if len(iconview.get_selected_items()) > 1: self._ui_manager.get_action('/Popup/open').set_sensitive(False) else: self._ui_manager.get_action('/Popup/open').set_sensitive(True) if (self._library.collection_area.get_current_collection() == _COLLECTION_ALL): self._ui_manager.get_action( '/Popup/remove from collection').set_sensitive(False) else: self._ui_manager.get_action( '/Popup/remove from collection').set_sensitive(True) self._ui_manager.get_widget('/Popup').popup(None, None, None, event.button, event.time) def _key_press(self, iconview, event): """Handle key presses on the _BookArea.""" if event.keyval == gtk.keysyms.Delete: self._remove_books_from_collection() def _drag_begin(self, iconview, context): """Create a cursor image for drag-n-drop from the library. This method relies on implementation details regarding PIL's drawing functions and default font to produce good looking results. If those are changed in a future release of PIL, this method might produce bad looking output (e.g. non-centered text). It's also used with connect_after() to overwrite the cursor automatically created when using enable_model_drag_source(), so in essence it's a hack, but at least it works. """ icon_path = iconview.get_cursor()[0] num_books = len(iconview.get_selected_items()) book = self.get_book_at_path(icon_path) cover = self._library.backend.get_book_cover(book) if cover is None: cover = self._library.render_icon(gtk.STOCK_MISSING_IMAGE, gtk.ICON_SIZE_DIALOG) cover = cover.scale_simple(max(0, cover.get_width() // 2), max(0, cover.get_height() // 2), gtk.gdk.INTERP_TILES) cover = image.add_border(cover, 1, 0xFFFFFFFF) cover = image.add_border(cover, 1) if num_books > 1: cover_width = cover.get_width() cover_height = cover.get_height() pointer = gtk.gdk.Pixbuf(gtk.gdk.COLORSPACE_RGB, True, 8, max(30, cover_width + 15), max(30, cover_height + 10)) pointer.fill(0x00000000) cover.composite(pointer, 0, 0, cover_width, cover_height, 0, 0, 1, 1, gtk.gdk.INTERP_TILES, 255) im = Image.new('RGBA', (30, 30), 0x00000000) draw = ImageDraw.Draw(im) draw.polygon( (8, 0, 20, 0, 28, 8, 28, 20, 20, 28, 8, 28, 0, 20, 0, 8), fill=(0, 0, 0), outline=(0, 0, 0)) draw.polygon( (8, 1, 20, 1, 27, 8, 27, 20, 20, 27, 8, 27, 1, 20, 1, 8), fill=(128, 0, 0), outline=(255, 255, 255)) text = str(num_books) draw.text((15 - (6 * len(text) // 2), 9), text, fill=(255, 255, 255)) circle = image.pil_to_pixbuf(im) circle.composite(pointer, max(0, cover_width - 15), max(0, cover_height - 20), 30, 30, max(0, cover_width - 15), max(0, cover_height - 20), 1, 1, gtk.gdk.INTERP_TILES, 255) else: pointer = cover context.set_icon_pixbuf(pointer, -5, -5) def _drag_data_get(self, iconview, context, selection, *args): """Fill the SelectionData with (iconview) paths for the dragged books formatted as a string with each path separated by a comma. """ paths = iconview.get_selected_items() text = ','.join([str(path[0]) for path in paths]) selection.set('text/plain', 8, text) def _drag_data_received(self, widget, context, x, y, data, *args): """Handle drag-n-drop events ending on the book area (i.e. from external apps like the file manager). """ uris = data.get_uris() if not uris: return paths = [] for uri in uris: if uri.startswith('file://localhost/'): # Correctly formatted. uri = uri[16:] elif uri.startswith('file:///'): # Nautilus etc. uri = uri[7:] elif uri.startswith('file:/'): # Xffm etc. uri = uri[5:] path = urllib.url2pathname(uri) paths.append(path) collection = self._library.collection_area.get_current_collection() collection_name = self._library.backend.get_collection_name(collection) self._library.add_books(paths, collection_name) class _ControlArea(gtk.HBox): """The _ControlArea is the bottom area of the library window where information is displayed and controls such as buttons resides. """ def __init__(self, library): self._library = library gtk.HBox.__init__(self, False, 12) self.set_border_width(10) borderbox = gtk.EventBox() borderbox.modify_bg(gtk.STATE_NORMAL, gtk.gdk.color_parse('#333')) borderbox.set_size_request(350, -1) insidebox = gtk.EventBox() insidebox.set_border_width(1) insidebox.modify_bg(gtk.STATE_NORMAL, gtk.gdk.color_parse('#ddb')) infobox = gtk.VBox(False, 5) infobox.set_border_width(10) self.pack_start(borderbox, False, False) borderbox.add(insidebox) insidebox.add(infobox) self._namelabel = labels.BoldLabel() self._namelabel.set_ellipsize(pango.ELLIPSIZE_MIDDLE) self._namelabel.set_alignment(0, 0.5) infobox.pack_start(self._namelabel, False, False) self._pageslabel = gtk.Label() self._pageslabel.set_ellipsize(pango.ELLIPSIZE_MIDDLE) self._pageslabel.set_alignment(0, 0.5) infobox.pack_start(self._pageslabel, False, False) self._filelabel = gtk.Label() self._filelabel.set_ellipsize(pango.ELLIPSIZE_MIDDLE) self._filelabel.set_alignment(0, 0.5) infobox.pack_start(self._filelabel, False, False) self._dirlabel = gtk.Label() self._dirlabel.set_ellipsize(pango.ELLIPSIZE_MIDDLE) self._dirlabel.set_alignment(0, 0.5) infobox.pack_start(self._dirlabel, False, False) vbox = gtk.VBox(False, 10) self.pack_start(vbox, True, True) hbox = gtk.HBox(False) vbox.pack_start(hbox, False, False) label = gtk.Label('%s:' % _('Search')) hbox.pack_start(label, False, False) search_entry = gtk.Entry() search_entry.connect('activate', self._filter_books) search_entry.set_tooltip_text( _('Display only those books that have the specified text string in their full path. The search is not case sensitive.')) hbox.pack_start(search_entry, True, True, 6) label = gtk.Label('%s:' % _('Cover size')) hbox.pack_start(label, False, False, 6) adjustment = gtk.Adjustment(prefs['library cover size'], 50, 128, 1, 10, 0) cover_size_scale = gtk.HScale(adjustment) cover_size_scale.set_size_request(150, -1) cover_size_scale.set_draw_value(False) cover_size_scale.connect('value_changed', self._change_cover_size) hbox.pack_start(cover_size_scale, False, False) vbox.pack_start(gtk.HBox(), True, True) hbox = gtk.HBox(False, 10) vbox.pack_start(hbox, False, False) add_book_button = gtk.Button(_('Add books')) add_book_button.set_image(gtk.image_new_from_stock( gtk.STOCK_ADD, gtk.ICON_SIZE_BUTTON)) add_book_button.connect('clicked', self._add_books) add_book_button.set_tooltip_text(_('Add more books to the library.')) hbox.pack_start(add_book_button, False, False) add_collection_button = gtk.Button(_('Add collection')) add_collection_button.connect('clicked', self._add_collection) add_collection_button.set_image(gtk.image_new_from_stock( gtk.STOCK_ADD, gtk.ICON_SIZE_BUTTON)) add_collection_button.set_tooltip_text( _('Add a new empty collection.')) hbox.pack_start(add_collection_button, False, False) hbox.pack_start(gtk.HBox(), True, True) self._open_button = gtk.Button(None, gtk.STOCK_OPEN) self._open_button.connect('clicked', self._library.book_area.open_selected_book) self._open_button.set_tooltip_text(_('Open the selected book.')) self._open_button.set_sensitive(False) hbox.pack_start(self._open_button, False, False) def update_info(self, selected): """Update the info box using the currently books from the _BookArea. """ self._open_button.set_sensitive(False) if selected: book = self._library.book_area.get_book_at_path(selected[0]) name = self._library.backend.get_book_name(book) dir_path = os.path.dirname( self._library.backend.get_book_path(book)) format = self._library.backend.get_book_format(book) pages = self._library.backend.get_book_pages(book) size = self._library.backend.get_book_size(book) else: name = dir_path = format = pages = size = None if len(selected) == 1: self._open_button.set_sensitive(True) if name is not None: self._namelabel.set_text(encoding.to_unicode(name)) else: self._namelabel.set_text('') if pages is not None: self._pageslabel.set_text(_('%d pages') % pages) else: self._pageslabel.set_text('') if format is not None and size is not None: self._filelabel.set_text('%s, %s' % (archive.get_name(format), '%.1f MiB' % (size / 1048576.0))) else: self._filelabel.set_text('') if dir_path is not None: self._dirlabel.set_text(encoding.to_unicode(dir_path)) else: self._dirlabel.set_text('') def _add_books(self, *args): """Open up a filechooser dialog from which books can be added to the library. """ filechooser.open_library_filechooser_dialog(self._library) def _add_collection(self, *args): """Add a new collection to the library, through a dialog.""" add_dialog = gtk.MessageDialog(None, 0, gtk.MESSAGE_QUESTION, gtk.BUTTONS_OK_CANCEL, _('Add new collection?')) add_dialog.format_secondary_text( _('Please enter a name for the new collection.')) add_dialog.set_default_response(gtk.RESPONSE_OK) box = gtk.HBox() # To get nice line-ups with the padding. add_dialog.vbox.pack_start(box) entry = gtk.Entry() entry.set_text(_('New collection')) entry.set_activates_default(True) box.pack_start(entry, True, True, 6) box.show_all() response = add_dialog.run() name = entry.get_text() add_dialog.destroy() if response == gtk.RESPONSE_OK and name: if self._library.backend.add_collection(name): collection = self._library.backend.get_collection_by_name(name) prefs['last library collection'] = collection self._library.collection_area.display_collections() else: message = _("Could not add a new collection called '%s'.") % ( name) if (self._library.backend.get_collection_by_name(name) is not None): message = '%s %s' % (message, _('A collection by that name already exists.')) self._library.set_status_message(message) def _filter_books(self, entry, *args): """Display only the books in the current collection whose paths contain the string in the gtk.Entry. The string is not case-sensitive. """ self._library.filter_string = entry.get_text() if not self._library.filter_string: self._library.filter_string = None collection = self._library.collection_area.get_current_collection() gobject.idle_add(self._library.book_area.display_covers, collection) def _change_cover_size(self, scale): """Change the size of the covers in the _BookArea.""" prefs['library cover size'] = int(scale.get_value()) collection = self._library.collection_area.get_current_collection() gobject.idle_add(self._library.book_area.display_covers, collection) class _AddBooksProgressDialog(gtk.Dialog): """Dialog with a ProgressBar that adds books to the library.""" def __init__(self, library, paths, collection): """Adds the books at to the library, and also to the , unless it is None. """ gtk.Dialog.__init__(self, _('Adding books'), library, gtk.DIALOG_MODAL, (gtk.STOCK_STOP, gtk.RESPONSE_CLOSE)) self._destroy = False self.set_size_request(400, -1) self.set_has_separator(False) self.set_resizable(False) self.set_border_width(4) self.connect('response', self._response) self.set_default_response(gtk.RESPONSE_CLOSE) main_box = gtk.VBox(False, 5) main_box.set_border_width(6) self.vbox.pack_start(main_box, False, False) hbox = gtk.HBox(False, 10) main_box.pack_start(hbox, False, False, 5) left_box = gtk.VBox(True, 5) right_box = gtk.VBox(True, 5) hbox.pack_start(left_box, False, False) hbox.pack_start(right_box, False, False) label = labels.BoldLabel('%s:' % _('Added books')) label.set_alignment(1.0, 1.0) left_box.pack_start(label, True, True) number_label = gtk.Label('0') number_label.set_alignment(0, 1.0) right_box.pack_start(number_label, True, True) bar = gtk.ProgressBar() main_box.pack_start(bar, False, False) added_label = labels.ItalicLabel() added_label.set_alignment(0, 0.5) added_label.set_ellipsize(pango.ELLIPSIZE_MIDDLE) main_box.pack_start(added_label, False, False) self.show_all() total_paths = float(len(paths)) total_added = 0 for i, path in enumerate(paths): if library.backend.add_book(path, collection): total_added += 1 number_label.set_text('%d' % total_added) added_label.set_text(_("Adding '%s'...") % encoding.to_unicode(path)) bar.set_fraction((i + 1) / total_paths) while gtk.events_pending(): gtk.main_iteration(False) if self._destroy: return self._response() def _response(self, *args): self._destroy = True self.destroy() def open_dialog(action, window): global _dialog if _dialog is None: if librarybackend.dbapi2 is None: print '! You need an sqlite wrapper to use the library.' else: _dialog = _LibraryDialog(window) else: _dialog.present() def _close_dialog(*args): global _dialog if _dialog is not None: _dialog.destroy() _dialog = None gc.collect() comix-4.0.4/src/portability.py0000644000175000001440000000311011150272120015220 0ustar sorkusers"""Portability functions for Comix.""" import os import sys def get_home_directory(): """On UNIX-like systems, this method will return the path of the home directory, e.g. /home/username. On Windows, it will return a Comix sub-directory of . """ if sys.platform == 'win32': return os.path.join(os.path.expanduser('~'), 'Comix') else: return os.path.expanduser('~') def get_config_directory(): """Return the path to the Comix config directory. On UNIX, this will be $XDG_CONFIG_HOME/comix, on Windows it will be the same directory as get_home_directory(). See http://standards.freedesktop.org/basedir-spec/latest/ for more information on the $XDG_CONFIG_HOME environmental variable. """ if sys.platform == 'win32': return get_home_directory() else: base_path = os.getenv('XDG_CONFIG_HOME', os.path.join(get_home_directory(), '.config')) return os.path.join(base_path, 'comix') def get_data_directory(): """Return the path to the Comix data directory. On UNIX, this will be $XDG_DATA_HOME/comix, on Windows it will be the same directory as get_home_directory(). See http://standards.freedesktop.org/basedir-spec/latest/ for more information on the $XDG_DATA_HOME environmental variable. """ if sys.platform == 'win32': return get_home_directory() else: base_path = os.getenv('XDG_DATA_HOME', os.path.join(get_home_directory(), '.local/share')) return os.path.join(base_path, 'comix') comix-4.0.4/src/filechooser.py0000644000175000001440000003376711165441005015213 0ustar sorkusers"""filechooser.py - Custom FileChooserDialog implementations.""" import os import gtk import pango import encoding import image import labels from preferences import prefs import thumbnail _main_filechooser_dialog = None _library_filechooser_dialog = None class _ComicFileChooserDialog(gtk.Dialog): """We roll our own FileChooserDialog because the one in GTK seems buggy with the preview widget. The argument dictates what type of filechooser dialog we want (i.e. it is gtk.FILE_CHOOSER_ACTION_OPEN or gtk.FILE_CHOOSER_ACTION_SAVE). This is a base class for the _MainFileChooserDialog, the _LibraryFileChooserDialog and the StandAloneFileChooserDialog. Subclasses should implement a method files_chosen(paths) that will be called once the filechooser has done its job and selected some files. If the dialog was closed or Cancel was pressed, is the empty list. """ _last_activated_file = None def __init__(self, action=gtk.FILE_CHOOSER_ACTION_OPEN): self._action = action if action == gtk.FILE_CHOOSER_ACTION_OPEN: title = _('Open') buttons = (gtk.STOCK_CANCEL, gtk.RESPONSE_CANCEL, gtk.STOCK_OPEN, gtk.RESPONSE_OK) else: title = _('Save') buttons = (gtk.STOCK_CANCEL, gtk.RESPONSE_CANCEL, gtk.STOCK_SAVE, gtk.RESPONSE_OK) gtk.Dialog.__init__(self, title, None, 0, buttons) self.set_default_response(gtk.RESPONSE_OK) self.set_has_separator(False) self.filechooser = gtk.FileChooserWidget(action=action) self.filechooser.set_size_request(680, 420) self.vbox.pack_start(self.filechooser) self.set_border_width(4) self.filechooser.set_border_width(6) self.connect('response', self._response) self.filechooser.connect('file_activated', self._response, gtk.RESPONSE_OK) preview_box = gtk.VBox(False, 10) preview_box.set_size_request(130, 0) self._preview_image = gtk.Image() self._preview_image.set_size_request(130, 130) preview_box.pack_start(self._preview_image, False, False) self.filechooser.set_preview_widget(preview_box) self._namelabel = labels.FormattedLabel(weight=pango.WEIGHT_BOLD, scale=pango.SCALE_SMALL) self._namelabel.set_ellipsize(pango.ELLIPSIZE_MIDDLE) preview_box.pack_start(self._namelabel, False, False) self._sizelabel = labels.FormattedLabel(scale=pango.SCALE_SMALL) self._sizelabel.set_ellipsize(pango.ELLIPSIZE_MIDDLE) preview_box.pack_start(self._sizelabel, False, False) self.filechooser.set_use_preview_label(False) preview_box.show_all() self.filechooser.connect('update-preview', self._update_preview) ffilter = gtk.FileFilter() ffilter.add_pattern('*') ffilter.set_name(_('All files')) self.filechooser.add_filter(ffilter) self.add_filter(_('All Archives'), ('application/x-zip', 'application/zip', 'application/x-rar', 'application/x-tar', 'application/x-gzip', 'application/x-bzip2', 'application/x-cbz', 'application/x-cbr', 'application/x-cbt')) self.add_filter(_('ZIP archives'), ('application/x-zip', 'application/zip', 'application/x-cbz')) self.add_filter(_('RAR archives'), ('application/x-rar', 'application/x-cbr')) self.add_filter(_('Tar archives'), ('application/x-tar', 'application/x-gzip', 'application/x-bzip2', 'application/x-cbt')) try: if (self.__class__._last_activated_file is not None and os.path.isfile(self.__class__._last_activated_file)): self.filechooser.set_filename( self.__class__._last_activated_file) elif os.path.isdir(prefs['path of last browsed in filechooser']): self.filechooser.set_current_folder( prefs['path of last browsed in filechooser']) except Exception: # E.g. broken prefs values. pass self.show_all() def add_filter(self, name, mimes): """Add a filter, called , for each mime type in to the filechooser. """ ffilter = gtk.FileFilter() for mime in mimes: ffilter.add_mime_type(mime) ffilter.set_name(name) self.filechooser.add_filter(ffilter) def set_save_name(self, name): self.filechooser.set_current_name(name) def set_current_directory(self, path): self.filechooser.set_current_folder(path) def _response(self, widget, response): """Return a list of the paths of the chosen files, or None if the event only changed the current directory. """ if response == gtk.RESPONSE_OK: paths = self.filechooser.get_filenames() if len(paths) == 1 and os.path.isdir(paths[0]): self.filechooser.set_current_folder(paths[0]) self.emit_stop_by_name('response') return if not paths: return # FileChooser.set_do_overwrite_confirmation() doesn't seem to # work on our custom dialog, so we use a simple alternative. if (self._action == gtk.FILE_CHOOSER_ACTION_SAVE and os.path.exists(paths[0])): overwrite_dialog = gtk.MessageDialog(None, 0, gtk.MESSAGE_QUESTION, gtk.BUTTONS_OK_CANCEL, _("A file named '%s' already exists. Do you want to replace it?") % os.path.basename(paths[0])) overwrite_dialog.format_secondary_text( _('Replacing it will overwrite its contents.')) response = overwrite_dialog.run() overwrite_dialog.destroy() if response != gtk.RESPONSE_OK: self.emit_stop_by_name('response') return prefs['path of last browsed in filechooser'] = \ self.filechooser.get_current_folder() self.__class__._last_activated_file = paths[0] self.files_chosen(paths) else: self.files_chosen([]) def _update_preview(self, *args): path = self.filechooser.get_preview_filename() if path and os.path.isfile(path): pixbuf = thumbnail.get_thumbnail(path, prefs['create thumbnails']) if pixbuf is None: self._preview_image.clear() self._namelabel.set_text('') self._sizelabel.set_text('') else: pixbuf = image.add_border(pixbuf, 1) self._preview_image.set_from_pixbuf(pixbuf) self._namelabel.set_text(encoding.to_unicode( os.path.basename(path))) self._sizelabel.set_text( '%.1f KiB' % (os.stat(path).st_size / 1024.0)) else: self._preview_image.clear() self._namelabel.set_text('') self._sizelabel.set_text('') class _MainFileChooserDialog(_ComicFileChooserDialog): """The normal filechooser dialog used with the "Open" menu item.""" def __init__(self, window): _ComicFileChooserDialog.__init__(self) self._window = window self.set_transient_for(window) ffilter = gtk.FileFilter() ffilter.add_pixbuf_formats() ffilter.set_name(_('All images')) self.filechooser.add_filter(ffilter) self.add_filter(_('JPEG images'), ('image/jpeg',)) self.add_filter(_('PNG images'), ('image/png',)) filters = self.filechooser.list_filters() try: # When setting this to the first filter ("All files"), this # fails on some GTK+ versions and sets the filter to "blank". # The effect is the same though (i.e. display all files), and # there is no solution that I know of, so we'll have to live # with it. It only happens the second time a dialog is created # though, which is very strange. self.filechooser.set_filter(filters[ prefs['last filter in main filechooser']]) except: self.filechooser.set_filter(filters[0]) def files_chosen(self, paths): if paths: try: # For some reason this fails sometimes (GTK+ bug?) filter_index = self.filechooser.list_filters().index( self.filechooser.get_filter()) prefs['last filter in main filechooser'] = filter_index except: pass _close_main_filechooser_dialog() self._window.file_handler.open_file(paths[0]) else: _close_main_filechooser_dialog() class _LibraryFileChooserDialog(_ComicFileChooserDialog): """The filechooser dialog used when adding books to the library.""" def __init__(self, library): _ComicFileChooserDialog.__init__(self) self._library = library self.set_transient_for(library) self.filechooser.set_select_multiple(True) self.filechooser.connect('current_folder_changed', self._set_collection_name) self._collection_button = gtk.CheckButton( '%s:' % _('Automatically add the books to this collection'), False) self._collection_button.set_active( prefs['auto add books into collections']) self._comboentry = gtk.combo_box_entry_new_text() self._comboentry.child.set_activates_default(True) for collection in self._library.backend.get_all_collections(): name = self._library.backend.get_collection_name(collection) self._comboentry.append_text(name) collection_box = gtk.HBox(False, 6) collection_box.pack_start(self._collection_button, False, False) collection_box.pack_start(self._comboentry, True, True) collection_box.show_all() self.filechooser.set_extra_widget(collection_box) filters = self.filechooser.list_filters() try: # When setting this to the first filter ("All files"), this # fails on some GTK+ versions and sets the filter to "blank". # The effect is the same though (i.e. display all files), and # there is no solution that I know of, so we'll have to live # with it. It only happens the second time a dialog is created # though, which is very strange. self.filechooser.set_filter(filters[ prefs['last filter in library filechooser']]) except Exception: self.filechooser.set_filter(filters[1]) def _set_collection_name(self, *args): """Set the text in the ComboBoxEntry to the name of the current directory. """ name = os.path.basename(self.filechooser.get_current_folder()) self._comboentry.child.set_text(name) def files_chosen(self, paths): if paths: if self._collection_button.get_active(): prefs['auto add books into collections'] = True collection_name = self._comboentry.get_active_text() if not collection_name: # No empty-string names. collection_name = None else: prefs['auto add books into collections'] = False collection_name = None try: # For some reason this fails sometimes (GTK+ bug?) filter_index = self.filechooser.list_filters().index( self.filechooser.get_filter()) prefs['last filter in library filechooser'] = filter_index except Exception: pass close_library_filechooser_dialog() self._library.add_books(paths, collection_name) else: close_library_filechooser_dialog() class StandAloneFileChooserDialog(_ComicFileChooserDialog): """A simple filechooser dialog that is designed to be used with the gtk.Dialog.run() method. The dictates what type of filechooser dialog we want (i.e. save or open). If the type is an open-dialog, we use multiple selection by default. """ def __init__(self, action=gtk.FILE_CHOOSER_ACTION_OPEN): _ComicFileChooserDialog.__init__(self, action) if action == gtk.FILE_CHOOSER_ACTION_OPEN: self.filechooser.set_select_multiple(True) self._paths = None ffilter = gtk.FileFilter() ffilter.add_pixbuf_formats() ffilter.set_name(_('All images')) self.filechooser.add_filter(ffilter) self.add_filter(_('JPEG images'), ('image/jpeg',)) self.add_filter(_('PNG images'), ('image/png',)) def get_paths(self): """Return the selected paths. To be called after run() has returned a response. """ return self._paths def files_chosen(self, paths): self._paths = paths def open_main_filechooser_dialog(action, window): """Open the main filechooser dialog.""" global _main_filechooser_dialog if _main_filechooser_dialog is None: _main_filechooser_dialog = _MainFileChooserDialog(window) else: _main_filechooser_dialog.present() def _close_main_filechooser_dialog(*args): """Close the main filechooser dialog.""" global _main_filechooser_dialog if _main_filechooser_dialog is not None: _main_filechooser_dialog.destroy() _main_filechooser_dialog = None def open_library_filechooser_dialog(library): """Open the library filechooser dialog.""" global _library_filechooser_dialog if _library_filechooser_dialog is None: _library_filechooser_dialog = _LibraryFileChooserDialog(library) else: _library_filechooser_dialog.present() def close_library_filechooser_dialog(*args): """Close the library filechooser dialog.""" global _library_filechooser_dialog if _library_filechooser_dialog is not None: _library_filechooser_dialog.destroy() _library_filechooser_dialog = None comix-4.0.4/src/lens.py0000644000175000001440000001555711132453536013655 0ustar sorkusers"""lens.py - Magnifying glass.""" import math import gtk import cursor from preferences import prefs import image class MagnifyingGlass: """The MagnifyingGlass creates cursors from the raw pixbufs containing the unscaled data for the currently displayed images. It does this by looking at the cursor position and calculating what image data to put in the "lens" cursor. Note: The mapping is highly dependent on the exact layout of the main window images, thus this module isn't really independent from the main module as it uses implementation details not in the interface. """ def __init__(self, window): self._window = window def set_lens_cursor(self, x, y): """Calculate what image data to put in the lens and update the cursor with it; and are the positions of the cursor within the main window layout area. """ if not self._window.file_handler.file_loaded: return pixbuf = self._get_lens_pixbuf(x, y) cursor = gtk.gdk.Cursor(gtk.gdk.display_get_default(), pixbuf, prefs['lens size'] // 2, prefs['lens size'] // 2) self._window.cursor_handler.set_cursor_type(cursor) def toggle(self, action): """Toggle on or off the lens depending on the state of .""" if action.get_active(): x, y = self._window.get_layout_pointer_position() self.set_lens_cursor(x, y) else: self._window.cursor_handler.set_cursor_type(cursor.NORMAL) def _get_lens_pixbuf(self, x, y): """Get a pixbuf containing the appropiate image data for the lens where and are the positions of the cursor. """ canvas = gtk.gdk.Pixbuf(gtk.gdk.COLORSPACE_RGB, True, 8, prefs['lens size'], prefs['lens size']) canvas.fill(0x000000bb) if self._window.displayed_double(): if self._window.is_manga_mode: r_source_pixbuf, l_source_pixbuf = \ self._window.file_handler.get_pixbufs() else: l_source_pixbuf, r_source_pixbuf = \ self._window.file_handler.get_pixbufs() l_image_size = self._window.left_image.size_request() r_image_size = self._window.right_image.size_request() self._add_subpixbuf(canvas, x, y, l_image_size, l_source_pixbuf, r_image_size[0], left=True) self._add_subpixbuf(canvas, x, y, r_image_size, r_source_pixbuf, l_image_size[0], left=False) else: source_pixbuf = self._window.file_handler.get_pixbufs() image_size = self._window.left_image.size_request() self._add_subpixbuf(canvas, x, y, image_size, source_pixbuf) return image.add_border(canvas, 1) def _add_subpixbuf(self, canvas, x, y, image_size, source_pixbuf, other_image_width=0, left=True): """Copy a subpixbuf from to as it should be in the lens if the coordinates , are the mouse pointer position on the main window layout area. The displayed image (scaled from the ) must have size . If is given, it is the width of the "other" image in double page mode. The image we are getting the coordinates for is the left one unless is False. """ area_x, area_y = self._window.get_visible_area_size() if left: padding_x = max(0, (area_x - other_image_width - image_size[0]) // 2) else: padding_x = \ (max(0, (area_x - other_image_width - image_size[0]) // 2) + other_image_width + 2) padding_y = max(0, (area_y - image_size[1]) // 2) x -= padding_x y -= padding_y rotation = prefs['rotation'] if prefs['auto rotate from exif']: rotation += image.get_implied_rotation(source_pixbuf) rotation = rotation % 360 if rotation in [90, 270]: scale = float(source_pixbuf.get_height()) / image_size[0] else: scale = float(source_pixbuf.get_width()) / image_size[0] x *= scale y *= scale source_mag = prefs['lens magnification'] / scale width = prefs['lens size'] / source_mag height = width paste_left = x > width / 2 paste_top = y > height / 2 dest_x = max(0, int(math.ceil((width / 2 - x) * source_mag))) dest_y = max(0, int(math.ceil((height / 2 - y) * source_mag))) if rotation == 90: x, y = y, source_pixbuf.get_height() - x elif rotation == 180: x = source_pixbuf.get_width() - x y = source_pixbuf.get_height() - y elif rotation == 270: x, y = source_pixbuf.get_width() - y, x if prefs['horizontal flip']: if rotation in (90, 270): y = source_pixbuf.get_height() - y else: x = source_pixbuf.get_width() - x if prefs['vertical flip']: if rotation in (90, 270): x = source_pixbuf.get_width() - x else: y = source_pixbuf.get_height() - y src_x = x - width / 2 src_y = y - height / 2 if src_x < 0: width += src_x src_x = 0 if src_y < 0: height += src_y src_y = 0 width = max(0, min(source_pixbuf.get_width() - src_x, width)) height = max(0, min(source_pixbuf.get_height() - src_y, height)) if width < 1 or height < 1: return subpixbuf = source_pixbuf.subpixbuf(int(src_x), int(src_y), int(width), int(height)) subpixbuf = subpixbuf.scale_simple( int(math.ceil(source_mag * subpixbuf.get_width())), int(math.ceil(source_mag * subpixbuf.get_height())), gtk.gdk.INTERP_TILES) if rotation == 90: subpixbuf = subpixbuf.rotate_simple( gtk.gdk.PIXBUF_ROTATE_CLOCKWISE) elif rotation == 180: subpixbuf = subpixbuf.rotate_simple( gtk.gdk.PIXBUF_ROTATE_UPSIDEDOWN) elif rotation == 270: subpixbuf = subpixbuf.rotate_simple( gtk.gdk.PIXBUF_ROTATE_COUNTERCLOCKWISE) if prefs['horizontal flip']: subpixbuf = subpixbuf.flip(horizontal=True) if prefs['vertical flip']: subpixbuf = subpixbuf.flip(horizontal=False) if paste_left: dest_x = 0 else: dest_x = min(canvas.get_width() - subpixbuf.get_width(), dest_x) if paste_top: dest_y = 0 else: dest_y = min(canvas.get_height() - subpixbuf.get_height(), dest_y) subpixbuf.copy_area(0, 0, subpixbuf.get_width(), subpixbuf.get_height(), canvas, dest_x, dest_y) comix-4.0.4/src/preferences.py0000644000175000001440000005430711150272120015175 0ustar sorkusers"""preferences.py - Preference handler.""" import os import cPickle import gtk import pango import constants import labels ZOOM_MODE_BEST = 0 ZOOM_MODE_WIDTH = 1 ZOOM_MODE_HEIGHT = 2 ZOOM_MODE_MANUAL = 3 # All the preferences are stored here. prefs = { 'comment extensions': ['txt', 'nfo'], 'auto load last file': False, 'page of last file': 1, 'path to last file': '', 'auto open next archive': True, 'bg colour': (5000, 5000, 5000), 'checkered bg for transparent images': True, 'cache': True, 'stretch': False, 'default double page': False, 'default fullscreen': False, 'default zoom mode': ZOOM_MODE_BEST, 'default manga mode': False, 'lens magnification': 2, 'lens size': 200, 'no double page for wide images': False, 'double step in double page mode': True, 'show page numbers on thumbnails': True, 'thumbnail size': 80, 'create thumbnails': True, 'slideshow delay': 3000, 'smart space scroll': True, 'flip with wheel': False, 'smart bg': False, 'store recent file info': True, 'hide all': False, 'hide all in fullscreen': True, 'stored hide all values': (True, True, True, True, True), 'path of last browsed in filechooser': constants.HOME_DIR, 'last filter in main filechooser': 0, 'last filter in library filechooser': 1, 'show menubar': True, 'show scrollbar': True, 'show statusbar': True, 'show toolbar': True, 'show thumbnails': True, 'rotation': 0, 'auto rotate from exif': True, 'vertical flip': False, 'horizontal flip': False, 'keep transformation': False, 'window height': gtk.gdk.screen_get_default().get_height() * 3 // 4, 'window width': min(gtk.gdk.screen_get_default().get_width() * 3 // 4, gtk.gdk.screen_get_default().get_height() * 5 // 8), 'library cover size': 128, 'auto add books into collections': True, 'last library collection': None, 'lib window height': gtk.gdk.screen_get_default().get_height() * 3 // 4, 'lib window width': gtk.gdk.screen_get_default().get_width() * 3 // 4 } _config_path = os.path.join(constants.CONFIG_DIR, 'preferences.pickle') _dialog = None class _PreferencesDialog(gtk.Dialog): """The preferences dialog where most (but not all) settings that are saved between sessions are presented to the user. """ def __init__(self, window): self._window = window gtk.Dialog.__init__(self, _('Preferences'), window, 0, (gtk.STOCK_CLOSE, gtk.RESPONSE_CLOSE)) self.connect('response', self._response) self.set_has_separator(False) self.set_resizable(True) self.set_default_response(gtk.RESPONSE_CLOSE) notebook = gtk.Notebook() self.vbox.pack_start(notebook) self.set_border_width(4) notebook.set_border_width(6) # ---------------------------------------------------------------- # The "Appearance" tab. # ---------------------------------------------------------------- page = _PreferencePage(80) page.new_section(_('Background')) fixed_bg_button = gtk.RadioButton(None, '%s:' % _('Use this colour as background')) fixed_bg_button.set_tooltip_text( _('Always use this selected colour as the background colour.')) color_button = gtk.ColorButton(gtk.gdk.Color(*prefs['bg colour'])) color_button.connect('color_set', self._color_button_cb) page.add_row(fixed_bg_button, color_button) dynamic_bg_button = gtk.RadioButton(fixed_bg_button, _('Use dynamic background colour.')) dynamic_bg_button.set_active(prefs['smart bg']) dynamic_bg_button.connect('toggled', self._check_button_cb, 'smart bg') dynamic_bg_button.set_tooltip_text( _('Automatically pick a background colour that fits the viewed image.')) page.add_row(dynamic_bg_button) page.new_section(_('Thumbnails')) label = gtk.Label('%s:' % _('Thumbnail size (in pixels)')) adjustment = gtk.Adjustment(prefs['thumbnail size'], 20, 128, 1, 10) thumb_size_spinner = gtk.SpinButton(adjustment) thumb_size_spinner.connect('value_changed', self._spinner_cb, 'thumbnail size') page.add_row(label, thumb_size_spinner) thumb_number_button = gtk.CheckButton( _('Show page numbers on thumbnails.')) thumb_number_button.set_active( prefs['show page numbers on thumbnails']) thumb_number_button.connect('toggled', self._check_button_cb, 'show page numbers on thumbnails') page.add_row(thumb_number_button) page.new_section(_('Magnifying Glass')) label = gtk.Label('%s:' % _('Magnifying glass size (in pixels)')) adjustment = gtk.Adjustment(prefs['lens size'], 50, 400, 1, 10) glass_size_spinner = gtk.SpinButton(adjustment) glass_size_spinner.connect('value_changed', self._spinner_cb, 'lens size') glass_size_spinner.set_tooltip_text( _('Set the size of the magnifying glass. It is a square with a side of this many pixels.')) page.add_row(label, glass_size_spinner) label = gtk.Label('%s:' % _('Magnification factor')) adjustment = gtk.Adjustment(prefs['lens magnification'], 1.1, 10.0, 0.1, 1.0) glass_magnification_spinner = gtk.SpinButton(adjustment, digits=1) glass_magnification_spinner.connect('value_changed', self._spinner_cb, 'lens magnification') glass_magnification_spinner.set_tooltip_text( _('Set the magnification factor of the magnifying glass.')) page.add_row(label, glass_magnification_spinner) page.new_section(_('Image scaling')) stretch_button = gtk.CheckButton(_('Stretch small images.')) stretch_button.set_active(prefs['stretch']) stretch_button.connect('toggled', self._check_button_cb, 'stretch') stretch_button.set_tooltip_text( _('Stretch images to a size that is larger than their original size if the current zoom mode requests it. If this preference is unset, images are never scaled to be larger than their original size.')) page.add_row(stretch_button) page.new_section(_('Transparency')) checkered_bg_button = gtk.CheckButton( _('Use checkered background for transparent images.')) checkered_bg_button.set_active( prefs['checkered bg for transparent images']) checkered_bg_button.connect('toggled', self._check_button_cb, 'checkered bg for transparent images') checkered_bg_button.set_tooltip_text( _('Use a grey checkered background for transparent images. If this preference is unset, the background is plain white instead.')) page.add_row(checkered_bg_button) notebook.append_page(page, gtk.Label(_('Appearance'))) # ---------------------------------------------------------------- # The "Behaviour" tab. # ---------------------------------------------------------------- page = _PreferencePage(150) page.new_section(_('Scroll')) smart_space_button = gtk.CheckButton( _('Use smart space key scrolling.')) smart_space_button.set_active(prefs['smart space scroll']) smart_space_button.connect('toggled', self._check_button_cb, 'smart space scroll') smart_space_button.set_tooltip_text( _('Use smart scrolling with the space key. Normally the space key scrolls only right down (or up when shift is pressed), but with this preference set it also scrolls sideways and so tries to follow the natural reading order of the comic book.')) page.add_row(smart_space_button) flip_with_wheel_button = gtk.CheckButton( _('Flip pages when scrolling off the edges of the page.')) flip_with_wheel_button.set_active(prefs['flip with wheel']) flip_with_wheel_button.connect('toggled', self._check_button_cb, 'flip with wheel') flip_with_wheel_button.set_tooltip_text( _('Flip pages when scrolling "off the page" with the scroll wheel or with the arrow keys. It takes three consecutive "steps" with the scroll wheel or the arrow keys for the pages to be flipped.')) page.add_row(flip_with_wheel_button) page.new_section(_('Double page mode')) step_length_button = gtk.CheckButton( _('Flip two pages in double page mode.')) step_length_button.set_active(prefs['double step in double page mode']) step_length_button.connect('toggled', self._check_button_cb, 'double step in double page mode') step_length_button.set_tooltip_text( _('Flip two pages, instead of one, each time we flip pages in double page mode.')) page.add_row(step_length_button) virtual_double_button = gtk.CheckButton( _('Show only one wide image in double page mode.')) virtual_double_button.set_active( prefs['no double page for wide images']) virtual_double_button.connect('toggled', self._check_button_cb, 'no double page for wide images') virtual_double_button.set_tooltip_text( _("Display only one image in double page mode, if the image's width exceeds its height. The result of this is that scans that span two pages are displayed properly (i.e. alone) also in double page mode.")) page.add_row(virtual_double_button) page.new_section(_('Files')) auto_open_next_button = gtk.CheckButton( _('Automatically open the next archive.')) auto_open_next_button.set_active(prefs['auto open next archive']) auto_open_next_button.connect('toggled', self._check_button_cb, 'auto open next archive') auto_open_next_button.set_tooltip_text( _('Automatically open the next archive in the directory when flipping past the last page, or the previous archive when flipping past the first page.')) page.add_row(auto_open_next_button) auto_open_last_button = gtk.CheckButton( _('Automatically open the last viewed file on startup.')) auto_open_last_button.set_active(prefs['auto load last file']) auto_open_last_button.connect('toggled', self._check_button_cb, 'auto load last file') auto_open_last_button.set_tooltip_text( _('Automatically open, on startup, the file that was open when Comix was last closed.')) page.add_row(auto_open_last_button) store_recent_button = gtk.CheckButton( _('Store information about recently opened files.')) store_recent_button.set_active(prefs['store recent file info']) store_recent_button.connect('toggled', self._check_button_cb, 'store recent file info') store_recent_button.set_tooltip_text( _('Add information about all files opened from within Comix to the shared recent files list.')) page.add_row(store_recent_button) create_thumbs_button = gtk.CheckButton( _('Store thumbnails for opened files.')) create_thumbs_button.set_active(prefs['create thumbnails']) create_thumbs_button.connect('toggled', self._check_button_cb, 'create thumbnails') create_thumbs_button.set_tooltip_text( _('Store thumbnails for opened files according to the freedesktop.org specification. These thumbnails are shared by many other applications, such as most file managers.')) page.add_row(create_thumbs_button) page.new_section(_('Cache')) cache_button = gtk.CheckButton(_('Use a cache to speed up browsing.')) cache_button.set_active(prefs['cache']) cache_button.connect('toggled', self._check_button_cb, 'cache') cache_button.set_tooltip_text( _('Cache the images that are next to the currently viewed image in order to speed up browsing. Since the speed improvements are quite big, it is recommended that you have this preference set, unless you are running short on free RAM.')) page.add_row(cache_button) notebook.append_page(page, gtk.Label(_('Behaviour'))) # ---------------------------------------------------------------- # The "Display" tab. # ---------------------------------------------------------------- page = _PreferencePage(180) page.new_section(_('Default modes')) double_page_button = gtk.CheckButton( _('Use double page mode by default.')) double_page_button.set_active(prefs['default double page']) double_page_button.connect('toggled', self._check_button_cb, 'default double page') page.add_row(double_page_button) fullscreen_button = gtk.CheckButton(_('Use fullscreen by default.')) fullscreen_button.set_active(prefs['default fullscreen']) fullscreen_button.connect('toggled', self._check_button_cb, 'default fullscreen') page.add_row(fullscreen_button) manga_button = gtk.CheckButton(_('Use manga mode by default.')) manga_button.set_active(prefs['default manga mode']) manga_button.connect('toggled', self._check_button_cb, 'default manga mode') page.add_row(manga_button) label = gtk.Label('%s:' % _('Default zoom mode')) zoom_combo = gtk.combo_box_new_text() zoom_combo.append_text(_('Best fit mode')) zoom_combo.append_text(_('Fit width mode')) zoom_combo.append_text(_('Fit height mode')) zoom_combo.append_text(_('Manual zoom mode')) # Change this if the combobox entries are reordered. zoom_combo.set_active(prefs['default zoom mode']) zoom_combo.connect('changed', self._combo_box_cb) page.add_row(label, zoom_combo) page.new_section(_('Fullscreen')) hide_in_fullscreen_button = gtk.CheckButton( _('Automatically hide all toolbars in fullscreen.')) hide_in_fullscreen_button.set_active(prefs['hide all in fullscreen']) hide_in_fullscreen_button.connect('toggled', self._check_button_cb, 'hide all in fullscreen') page.add_row(hide_in_fullscreen_button) page.new_section(_('Slideshow')) label = gtk.Label('%s:' % _('Slideshow delay (in seconds)')) adjustment = gtk.Adjustment(prefs['slideshow delay'] / 1000.0, 0.5, 3600.0, 0.1, 1) delay_spinner = gtk.SpinButton(adjustment, digits=1) delay_spinner.connect('value_changed', self._spinner_cb, 'slideshow delay') page.add_row(label, delay_spinner) page.new_section(_('Comments')) label = gtk.Label('%s:' % _('Comment extensions')) extensions_entry = gtk.Entry() extensions_entry.set_text(', '.join(prefs['comment extensions'])) extensions_entry.connect('activate', self._entry_cb) extensions_entry.connect('focus_out_event', self._entry_cb) extensions_entry.set_tooltip_text( _('Treat all files found within archives, that have one of these file endings, as comments.')) page.add_row(label, extensions_entry) page.new_section(_('Rotation')) auto_rotate_button = gtk.CheckButton( _('Automatically rotate images according to their metadata.')) auto_rotate_button.set_active(prefs['auto rotate from exif']) auto_rotate_button.connect('toggled', self._check_button_cb, 'auto rotate from exif') auto_rotate_button.set_tooltip_text( _('Automatically rotate images when an orientation is specified in the image metadata, such as in an Exif tag.')) page.add_row(auto_rotate_button) notebook.append_page(page, gtk.Label(_('Display'))) self.show_all() def _check_button_cb(self, button, preference): """Callback for all checkbutton-type preferences.""" prefs[preference] = button.get_active() if preference == 'smart bg': if not prefs[preference]: self._window.set_bg_colour(prefs['bg colour']) else: self._window.draw_image(scroll=False) elif preference in ('stretch', 'checkered bg for transparent images', 'no double page for wide images', 'auto rotate from exif'): self._window.draw_image(scroll=False) elif (preference == 'hide all in fullscreen' and self._window.is_fullscreen): self._window.draw_image(scroll=False) elif preference == 'show page numbers on thumbnails': self._window.thumbnailsidebar.clear() self._window.thumbnailsidebar.load_thumbnails() def _color_button_cb(self, colorbutton): """Callback for the background colour selection button.""" colour = colorbutton.get_color() prefs['bg colour'] = colour.red, colour.green, colour.blue if not prefs['smart bg'] or not self._window.file_handler.file_loaded: self._window.set_bg_colour(prefs['bg colour']) def _spinner_cb(self, spinbutton, preference): """Callback for spinner-type preferences.""" value = spinbutton.get_value() if preference == 'lens size': prefs[preference] = int(value) elif preference == 'lens magnification': prefs[preference] = value elif preference == 'slideshow delay': prefs[preference] = int(value * 1000) self._window.slideshow.update_delay() elif preference == 'thumbnail size': prefs[preference] = int(value) self._window.thumbnailsidebar.resize() self._window.draw_image(scroll=False) def _combo_box_cb(self, combobox): """Callback for combobox-type preferences.""" zoom_mode = combobox.get_active() prefs['default zoom mode'] = zoom_mode def _entry_cb(self, entry, event=None): """Callback for entry-type preferences.""" text = entry.get_text() extensions = [e.strip() for e in text.split(',')] prefs['comment extensions'] = [e for e in extensions if e] self._window.file_handler.update_comment_extensions() def _response(self, dialog, response): _close_dialog() class _PreferencePage(gtk.VBox): """The _PreferencePage is a conveniece class for making one "page" in a preferences-style dialog that contains one or more _PreferenceSections. """ def __init__(self, right_column_width): """Create a new page where any possible right columns have the width request . """ gtk.VBox.__init__(self, False, 12) self.set_border_width(12) self._right_column_width = right_column_width self._section = None def new_section(self, header): """Start a new section in the page, with the header text from
. """ self._section = _PreferenceSection(header, self._right_column_width) self.pack_start(self._section, False, False) def add_row(self, left_item, right_item=None): """Add a row to the page (in the latest section), containing one or two items. If the left item is a label it is automatically aligned properly. """ if isinstance(left_item, gtk.Label): left_item.set_alignment(0, 0.5) if right_item is None: self._section.contentbox.pack_start(left_item) else: left_box, right_box = self._section.new_split_vboxes() left_box.pack_start(left_item) right_box.pack_start(right_item) class _PreferenceSection(gtk.VBox): """The _PreferenceSection is a convenience class for making one "section" of a preference-style dialog, e.g. it has a bold header and a number of rows which are indented with respect to that header. """ def __init__(self, header, right_column_width=150): """Contruct a new section with the header set to the text in
, and the width request of the (possible) right columns set to that of . """ gtk.VBox.__init__(self, False, 0) self._right_column_width = right_column_width self.contentbox = gtk.VBox(False, 6) label = labels.BoldLabel(header) label.set_alignment(0, 0.5) hbox = gtk.HBox(False, 0) hbox.pack_start(gtk.HBox(), False, False, 6) hbox.pack_start(self.contentbox) self.pack_start(label, False, False) self.pack_start(hbox, False, False, 6) def new_split_vboxes(self): """Return two new VBoxes that are automatically put in the section after the previously added items. The right one has a width request equal to the right_column_width value passed to the class contructor, in order to make it easy for all "right column items" in a page to line up nicely. """ left_box = gtk.VBox(False, 6) right_box = gtk.VBox(False, 6) right_box.set_size_request(self._right_column_width, -1) hbox = gtk.HBox(False, 12) hbox.pack_start(left_box) hbox.pack_start(right_box, False, False) self.contentbox.pack_start(hbox) return left_box, right_box def open_dialog(action, window): global _dialog if _dialog is None: _dialog = _PreferencesDialog(window) else: _dialog.present() def _close_dialog(*args): global _dialog if _dialog is not None: _dialog.destroy() _dialog = None def read_preferences_file(): """Read preferences data from disk.""" if os.path.isfile(_config_path): config = None try: config = open(_config_path, 'rb') version = cPickle.load(config) old_prefs = cPickle.load(config) config.close() except Exception: print '! Corrupt preferences file "%s", deleting...' % _config_path if config is not None: config.close() os.remove(_config_path) else: for key in old_prefs: if key in prefs: prefs[key] = old_prefs[key] def write_preferences_file(): """Write preference data to disk.""" config = open(_config_path, 'wb') cPickle.dump(constants.VERSION, config, cPickle.HIGHEST_PROTOCOL) cPickle.dump(prefs, config, cPickle.HIGHEST_PROTOCOL) config.close() comix-4.0.4/src/histogram.py0000644000175000001440000000544511055775505014713 0ustar sorkusers"""histogram.py - Draw histograms (RGB) from pixbufs.""" import gtk import Image import ImageDraw import ImageOps import image def draw_histogram(pixbuf, height=170, fill=170, text=True): """Draw a histogram from and return it as another pixbuf. The returned prixbuf will be 262x px. The value of determines the colour intensity of the filled graphs, valid values are between 0 and 255. If is True a label with the maximum pixel value will be added to one corner. """ im = Image.new('RGB', (258, height - 4), (30, 30, 30)) hist_data = image.pixbuf_to_pil(pixbuf).histogram() maximum = max(hist_data[:768] + [1]) y_scale = float(height - 6) / maximum r = [int(hist_data[n] * y_scale) for n in xrange(256)] g = [int(hist_data[n] * y_scale) for n in xrange(256, 512)] b = [int(hist_data[n] * y_scale) for n in xrange(512, 768)] im_data = im.getdata() # Draw the filling colours for x in xrange(256): for y in xrange(1, max(r[x], g[x], b[x]) + 1): r_px = y <= r[x] and fill or 0 g_px = y <= g[x] and fill or 0 b_px = y <= b[x] and fill or 0 im_data.putpixel((x + 1, height - 5 - y), (r_px, g_px, b_px)) # Draw the outlines for x in xrange(1, 256): for y in range(r[x-1] + 1, r[x] + 1) + [r[x]] * (r[x] != 0): r_px, g_px, b_px = im_data.getpixel((x + 1, height - 5 - y)) im_data.putpixel((x + 1, height - 5 - y), (255, g_px, b_px)) for y in range(r[x] + 1, r[x-1] + 1): r_px, g_px, b_px = im_data.getpixel((x, height - 5 - y)) im_data.putpixel((x, height - 5 - y), (255, g_px, b_px)) for y in range(g[x-1] + 1, g[x] + 1) + [g[x]] * (g[x] != 0): r_px, g_px, b_px = im_data.getpixel((x + 1, height - 5 - y)) im_data.putpixel((x + 1, height - 5 - y), (r_px, 255, b_px)) for y in range(g[x] + 1, g[x-1] + 1): r_px, g_px, b_px = im_data.getpixel((x, height - 5 - y)) im_data.putpixel((x, height - 5 - y), (r_px, 255, b_px)) for y in range(b[x-1] + 1, b[x] + 1) + [b[x]] * (b[x] != 0): r_px, g_px, b_px = im_data.getpixel((x + 1, height - 5 - y)) im_data.putpixel((x + 1, height - 5 - y), (r_px, g_px, 255)) for y in range(b[x] + 1, b[x-1] + 1): r_px, g_px, b_px = im_data.getpixel((x, height - 5 - y)) im_data.putpixel((x, height - 5 - y), (r_px, g_px, 255)) if text: maxstr = 'max: ' + str(maximum) draw = ImageDraw.Draw(im) draw.rectangle((0, 0, len(maxstr) * 6 + 2, 10), fill=(30, 30, 30)) draw.text((2, 0), maxstr, fill=(255, 255, 255)) im = ImageOps.expand(im, 1, (80, 80, 80)) im = ImageOps.expand(im, 1, (0, 0, 0)) return image.pil_to_pixbuf(im) comix-4.0.4/mime/comix.xml0000644000175000001440000000161510744234654014337 0ustar sorkusers Comic Book Archive (Zip compressed) Comic Book Archive (RAR compressed) Comic Book Archive (tar, possibly compressed) comix-4.0.4/mime/comicthumb0000755000175000001440000001474211105660612014550 0ustar sorkusers#!/usr/bin/env python """comicthumb - Thumbnailer for comic book archives, bundled with Comix. comicthumb is dependent on the Python Imaging Library (PIL). comicthumb was originally written by Christoph Wolk, this version was re-written from scratch for Comix 4 by Pontus Ekberg. Supported formats: ZIP, RAR and tar (.cbz, .cbr, .cbt) Usage: comicthumb INFILE OUTFILE [SIZE] """ import os import sys import gc import re import cStringIO import zipfile import tarfile import subprocess try: import Image except ImportError: print '! Could not import the Image module (PIL).' print __doc__ sys.exit(1) ZIP, RAR, TAR, GZIP, BZIP2 = range(5) class Process: """The subprocess and popen2 modules in Python are broken (see issue #1336). The problem (i.e. complete crash) they can cause happen fairly often (once is too often) in Comix when calling "rar" or "unrar" to extract specific files from archives. We roll our own very simple process spawning module here instead. """ # TODO: I can no longer reproduce the issue. Check if this version of # process.py still solves it. def __init__(self, args): """Setup a Process where is a sequence of arguments that defines the process, e.g. ['ls', '-a']. """ self._args = args self._proc = None def _exec(self): """Spawns the process, and returns its stdout. (NOTE: separate function to make python2.4 exception syntax happy) """ try: self._proc = subprocess.Popen(self._args, stdout=subprocess.PIPE) return self._proc.stdout except Exception: return None def spawn(self): """Spawn the process defined by the args in __init__(). Return a file-like object linked to the spawned process' stdout. """ try: gc.disable() # Avoid Python issue #1336! return self._exec() finally: gc.enable() def wait(self): """Wait for the process to terminate.""" if self._proc is None: raise Exception('Process not spawned.') return self._proc.wait() class Extractor: """Extractor is a class for extracting different archive formats. This is a much simplified version of the Extractor class from Comix. """ def __init__(self, src): """Setup the extractor with archive .""" self._src = src self._type = archive_mime_type(src) self._files = [] if self._type == ZIP: self._zfile = zipfile.ZipFile(src, 'r') self._files = self._zfile.namelist() elif self._type in [TAR, GZIP, BZIP2]: self._tfile = tarfile.open(src, 'r') self._files = self._tfile.getnames() elif self._type == RAR: self._rar = None for command in ('unrar', 'rar'): if Process([command]).spawn() is not None: self._rar = command if self._rar == None: print '! Could not find the "rar" or "unrar" executable.' sys.exit(1) proc = Process([self._rar, 'vb', src]) fobj = proc.spawn() self._files = fobj.readlines() proc.wait() self._files = [name.rstrip('\n') for name in self._files] def get_files(self): """Return a list of the files in the archive.""" return self._files def extract(self, chosen): """Extract the file and return it as a cStringIO.StringIO object. The file must be one of the files in the list returned by the get_files() method. """ if self._type == ZIP: return cStringIO.StringIO(self._zfile.read(chosen)) elif self._type in [TAR, GZIP, BZIP2]: return cStringIO.StringIO(self._tfile.extractfile(chosen).read()) elif self._type == RAR: proc = Process([self._rar, 'p', '-inul', '-p-', '--', self._src, chosen]) fobj = proc.spawn() return cStringIO.StringIO(fobj.read()) def archive_mime_type(path): """Return the archive type of or None for non-archives.""" try: if os.path.isfile(path): if not os.access(path, os.R_OK): return None if zipfile.is_zipfile(path): return ZIP fd = open(path, 'rb') magic = fd.read(4) fd.close() if tarfile.is_tarfile(path) and os.path.getsize(path) > 0: if magic.startswith('BZh'): return BZIP2 if magic.startswith('\037\213'): return GZIP return TAR if magic == 'Rar!': return RAR except Exception: print '! Error while reading', path return None def guess_cover(files): """Return the filename within that is the most likely to be the cover of an archive. """ alphanumeric_sort(files) ext_re = re.compile(r'\.(jpg|jpeg|png|gif|tif|tiff)\s*$', re.I) front_re = re.compile('(cover|front)', re.I) images = filter(ext_re.search, files) candidates = filter(front_re.search, images) candidates = [c for c in candidates if not 'back' in c.lower()] if candidates: return candidates[0] if images: return images[0] return None def alphanumeric_sort(filenames): """Do an in-place alphanumeric sort of the strings in , such that for an example "1.jpg", "2.jpg", "10.jpg" is a sorted ordering. """ def _format_substring(s): if s.isdigit(): return int(s) return s.lower() rec = re.compile("\d+|\D+") filenames.sort(key=lambda s: map(_format_substring, rec.findall(s))) if __name__ == '__main__': try: in_path = sys.argv[1] out_path = sys.argv[2] if len(sys.argv) == 4: size = int(sys.argv[3]) else: size = 128 except: print __doc__ sys.exit(1) extractor = Extractor(in_path) files = extractor.get_files() chosen = guess_cover(files) fd = extractor.extract(chosen) im = Image.open(fd) if im.size[0] > im.size[1]: x = size y = size * im.size[1] / im.size[0] else: x = size * im.size[0] / im.size[1] y = size x = max(1, x) y = max(1, y) im.thumbnail((x, y), Image.ANTIALIAS) im = im.convert('RGB') im.save(out_path, 'PNG') sys.exit(0) comix-4.0.4/mime/comicthumb.1.gz0000644000175000001440000000074710745472340015333 0ustar sorkusersqGcomicthumb.1eAo0sLR{CUv!(U ؑm4~ǐ+b?xЗpϗFNfpEZ-Hc* Z,]AتUGt|u'9Z~d+y/XnWOi?"O_ƥp?ydEN*£Fd&AyL<(D}F9kPh 3%A '#A"3(ozU5X8Z4h̐7R٢$KNeӂ*2H_p$[&, ;.9ZPnNyj/f$;΃'+#_|&ΊroK5)#'[e}¨FH/Nzp`d?0zP'Q.Իqb[,Z9f=ܻ#-`'^C,n)x_mEkqԏ43~?0qcomix-4.0.4/mime/comicbook.schemas0000644000175000001440000000513710474312233016001 0ustar sorkusers /schemas/desktop/gnome/thumbnailers/application@x-cbr/enable /desktop/gnome/thumbnailers/application@x-cbr/enable comicthumb bool true /schemas/desktop/gnome/thumbnailers/application@x-cbr/command /desktop/gnome/thumbnailers/application@x-cbr/command comicthumb string comicthumb %i %o %s /schemas/desktop/gnome/thumbnailers/application@x-cbz/enable /desktop/gnome/thumbnailers/application@x-cbz/enable comicthumb bool true /schemas/desktop/gnome/thumbnailers/application@x-cbz/command /desktop/gnome/thumbnailers/application@x-cbz/command comicthumb string comicthumb %i %o %s /schemas/desktop/gnome/thumbnailers/application@x-cbt/enable /desktop/gnome/thumbnailers/application@x-cbt/enable comicthumb bool true /schemas/desktop/gnome/thumbnailers/application@x-cbt/command /desktop/gnome/thumbnailers/application@x-cbt/command comicthumb string comicthumb %i %o %s comix-4.0.4/images/gimp-flip-vertical.png0000644000175000001440000000067610742512425017214 0ustar sorkusersPNG  IHDRabKGDC pHYs  ~tIME &SuKIDAT8˭JQ?k4`v l]>@Q4 szp!Y AAAL Z!Sش*c]s *iZ" "PJ{M*rրz%&20-i e\mG29ޕ 5,W7Đ$ gs3trc)(ޜR8>gjLS [6QsҏhLk#I~)^^#8xQ"o$h,W~q!Yq|,Bv.?2ǴĆi!2-{*`"v_Rr2^sW]IENDB`comix-4.0.4/images/comix.svg0000644000175000001440000014645611107075037014661 0ustar sorkusers image/svg+xml comix-4.0.4/images/tango-image.png0000644000175000001440000000105610743161313015677 0ustar sorkusersPNG  IHDRabKGD pHYs B(xtIME 6IDAT8˝MkA4ݘॅ\ĢSɃ@g(1 z @ ՞TD*C"&nٙab !{fgDQ[3ZyBQ3ZjQ31nKVWpf,µM4(HakM0؂33sZ$(l~{?CR@4yò,.1SrzoD'S@)_@JNh'-\̟.@:} b}x{_ʧ|=({hmh9%_}z=oj%1@usIo?GN7.nքaQN&x3iv$ĉqǨLdk&|[Z? Ƚk^CrB0EJXᖋBIENDB`comix-4.0.4/images/tango-enhance-image.png0000644000175000001440000000163010746212557017306 0ustar sorkusersPNG  IHDRabKGD pHYs  tIME 2P5.tEXtCommentid logow IDAT8mQh[uMn%AlSivI ѹو1|8'DA}`騵CFFP6vOeiҮ5k99;RJ[[mqU*BO 82u1x'F8&zAárWT@xKIujMGWHG|wΎd+؎E&3= ;G@ AuNqX,b>z7@J\\Uj[+%ξwuHi@v;ہ !B*y(X&2S(oKT&Vx(s=|!xtFԮ>C !$y쪍.JH!hjjeaS[&{ CW$0W,Gw[s4dYBk$0~%mG!"@@ } wAK83BeEmPO)64{,q3 KK歑*:~Q̪IBss377BiBHfs|3y^_>uEClXwhPI >jqA,ˤZ4ɫ_?Ξ'^fW-?S7.PlXM7IENDB`comix-4.0.4/images/tango-archive.png0000644000175000001440000000103410743161313016232 0ustar sorkusersPNG  IHDRabKGDC pHYs B(xtIME IDAT8˭1hTAww=b A I#MR (X( ;H) h,Ebl"*Q]۱x9#xQفٙ4h0lڑВF4ѳWc[6#H>/bJi"/3sV,1;ZEsSpZ8vKo[G-Cb 4ET }W(Pٲ ٰ|r@ UPmҏHV?1(>9! d Bj}Xk`<h~pb+@zP$3_F0׌Q3_Aszy]❇{ 3Al'2=֮G%J=.]q{ klf_o҇)IENDB`comix-4.0.4/images/comments.png0000644000175000001440000000105411127250216015330 0ustar sorkusersPNG  IHDRabKGD pHYs  tIME 4' MIDAT8˵KSq?ǝFs?&!RK zWiBB *'Bэy4Wb:ˣo7KƱ$|.<d$]S+Ng5H=8؋,h:`vi &y_.7Z;,Mhi4W:/S`4(YPS*mUڰIl/[OXO\ѠrJhzͨ.o ~ؠZLylHͅQǥY(Ao?X͔!!3b`";%sكI(ս< @ zkf慮k"2L̅bfY9O&rQ?kiܺ7C3%<~D`Ms98]׀ -Y<ߔ1z~IENDB`comix-4.0.4/images/zoom.png0000644000175000001440000000155311127250130014466 0ustar sorkusersPNG  IHDRasRGBbKGD pHYs B(xtIME PC;IDAT8˥[HSqǿsNwΜwtjd[PZv ](z!* zDBZAP)[QO֜Xe3rK3l;ߋư^~~W,[c:p\$fAB8a$ `D"><$|}ՔcZ!hkomEM{"CS Of(C'lbһ]+d9~4[B[My{ ]Զnjei]{p^aYnpaW1tL;32x?R\#Y0ɔv.*VU?zP[r؝ý>iPg$քW/(#eeY1i)NJ0=dT`j?2Zc44qSaaPxt e ~ZFI铀U4LBυNgoE&ˋ/s9TF |PT MAXhg zɖ{F4=|dt@ 'b022)TUgFnڼM$iR:nhzW3u y~WD -nC=_LAQ)*=9Km!"nݾ)m٧H;VI q>(e H`0Xq &_$$:^=:|%,>߷w^׮_ G`Y.3S_~!MPIENDB`comix-4.0.4/images/double-page.png0000644000175000001440000000115611105143456015675 0ustar sorkusersPNG  IHDRw=sRGBbKGD4e2E pHYs  tIME - m= tEXtCommentCreated with The GIMPd%nIDATHՕ=kQ{g!ڈ,Y҈`i 6 !肕l,үllKMfgN4}_w {9s7;w "v^]q5NϞ{WI\~~l}}LDK";?OAz.7yfFH0%L$ӂ[OsZ>Ʌ=$P8bk1H$P J:303Ós_Y}׾''l:=(y TG*5HYDV;2RV#5EH 2`6bG=3pMD%yݿPATpM2j6\J`7`㧕hb撙UrpΉ|+ٛ  Sizh^|$/Q _ ~g@IENDB`comix-4.0.4/images/manga.png0000644000175000001440000000170111105143456014570 0ustar sorkusersPNG  IHDRw=sRGBbKGD4e2E pHYs  tIME -tEXtCommentCreated with The GIMPd%nIDATHՕAh\U潾;T)kv 5TaEuKi*]L q HwJ$ݹPD*ՙ1 B $4o޽L2󒙸H6^8{ι\ރRL,0)Ƹj)_.V>fXɳO=ᦎ=e=#Y>3 mܓ+S ̞|I {ulvnQm/ ³'Nex hu k_C4bYΌ}'𙉳^l{x."4`v*0&Ȇ];[1FLGS!-2F" 4jyP#&83wǿޞ6 Vt+X?-m껶bv+rh `<@:xN$8j=" /W=i7F1i,f=Y5zTdY./wR I2Ɯ|uJo .fM_GC;gP͝R[CTAAYʣ0'ܹU 2)+pӈz(.&6Tee[{Nޟ8, ?XGNKԁc96'z4 b֭-s#5o>*"C# Q svWBX7,Jaf;gkmOHI y5Wl7!fcM r5JNFWɮ87NKF5~j}P߃Ԃ}IENDB`comix-4.0.4/images/fitwidth.png0000644000175000001440000000121211105143456015324 0ustar sorkusersPNG  IHDRw=sRGBbKGD4e2E pHYs  tIME ,9itEXtCommentCreated with The GIMPd%nIDATHՕkSQ|O."$:XE."@,ŭ(18sR__ڤ}3wsx|CDck0ƓW곷nDKQ:~Y_XZqE:jq(@2ܻzWΎ|-]8(cBG!qЗڞ4 cWL|vf>,f#C JO[+V*ZK$yz;}\lT%b;k$GMxWy>#fxtIKZeid%z4ȒawП3Cp%c/a,'cIRf*J&A./v͔`^zƴb0x/KәK@Lq۱X,+ l~ v02$IENDB`comix-4.0.4/images/fitmanual.png0000644000175000001440000000077511105143456015477 0ustar sorkusersPNG  IHDRw=sRGBbKGD4e2E pHYs  tIME +2cV&}IDATHǵ.DAg\JЈlBPPh6J ށ;h@DCD#JkQج%K;4}L|`fm0FmL ‡Ojbd#^zx:=-@|MquL'/Sl )N|#HظxSl`}~ M;]4I[1H4ڔz=PU "/c/ tpD޻2#Ҁ "\(=ЀA(_\y@1F ""BQdq!"±lԪ9LTyGPcEf98;?SB"wVkҾڟNeJ~\X $56m-!LXIENDB`comix-4.0.4/images/gimp-rotate-90.png0000644000175000001440000000072110742512425016166 0ustar sorkusersPNG  IHDRabKGD pHYs  tIME ^IDAT8œK@?Ŷ[("  '\*ѩdqSA *$j նRk$ [{>{࿇N8 5j僙*OM㕋z8oAa6icY,$( lKR6Mɤ8nE3F ]hUݻ*,~8@sQ+ !BݥXj2i#ehUyV?l?ns<]ņߝY+Uuֽrr(Hi?^GQ| U !5$=;ˇ/ |QIENDB`comix-4.0.4/images/fitheight.png0000644000175000001440000000122411105143456015460 0ustar sorkusersPNG  IHDRw=sRGBbKGD4e2E pHYs  tIME ,ntEXtCommentCreated with The GIMPd%nIDATHՕkQ?ݝwBu XppnJA @-A]]-8G\TPJJVRpqSmr^/]ܻ gb?Rz ݓW.V4nݼ/CkUZǩ ` _-ϲ~h xZe[j<\xW+]>=ƞk~8K{č <^t8RouL>zHb&n,EɈ%OУo. Vh6NDZ0MƥHrYW$ '=):i_6 _,Lz؁II}~=wG/-Wjkn6;vREi SK{=pc J0ЮtJeN9)%5Ez/4ws"RHA)e5_n='pb*R[/70q2U`dJ>( @PIENDB`comix-4.0.4/images/gimp-flip-horizontal.png0000644000175000001440000000064210742512425017565 0ustar sorkusersPNG  IHDRabKGDC pHYs  ~tIME (,/IDAT8Փ?K@I dk=K 4nukQH3n:(P[Ul̕"zps{ރ>%thHGY()満Y]?j XZKxFtLҩ.2̍eqBé^_ftײ}M%⎃8at%"N/lNefb``@tAYS OөQ?ej0Q.]%UJ>~u>~m:EIENDB`comix-4.0.4/images/gimp-transform.png0000644000175000001440000000110510742512425016452 0ustar sorkusersPNG  IHDRabKGD]]]H~ pHYs  tIME;}9IDAT8ˍMkSA93s) iJ&ڊnkwݸ ş ݨ]KAEt[vFE.(6565uѤֳ<9أb3A`DZZQR^`0_c87`Ky e&ݨEaP٨9F # +5-R(.d7}`[g/jZX-FF7jӈR-;L\7l)߽9 aOkhf`````+#s%]?~>{>?s& M/윬R W.=}%7_>x&(MW_XeIENDB`comix-4.0.4/images/tango-add-bookmark.png0000644000175000001440000000125610742512425017155 0ustar sorkusersPNG  IHDRabKGD pHYs  tIME 4A1=;IDAT8˕AHa}ݻr[#k-,/BE¨ A{СvCt%((+ЦA!xqS DZmv+]?k:s؈ "ݧ"&&.ݫr= ]5AV> P}T] [|䘜S01>8z}C:7KPYZ^f~a[p+E ]ܚ:2(g))jJJPrV(;+TVܲxP-1;eiPM0Kwց1FFM:c,;߄iѦlLv Ob`gn rU݁a( C R&q@ eY Ɨ0B fx`ϫ#MfDd{n'B||3yy2?@mp)\Iv7=NjcVV79g=}{{{{{{\\4I }c(,KKcsɓOΞ={3 zǎ;|@V$D"`iH$ n޼uMt:x^ NzS\@wwwwGGUAPxZ[[[T^n0 /ߺeG33~?߹rE Ol߮T&MMFV+SSSXr--\o:g2{w{{{{{{,>np[۾}?9MMn޽kkWܾ f{ JZ"d2LD&c1Щ/A~GWWwwGǡC:Ng0SO5446<~]< >ߋ/8P]Td2L&BFSX( FcUVb|:=]X=(`u@Ȉñ  |h4F?^[+-ݺU yfN#n\H$ "H"ǢQHR(t{{]0669 P$ gfڽ9dxYF9!blJz [j4*76qRT* B>*w_$eJ8L&ð,M$B65Õ$P:]_꫇MLp˦i骫/]r8޵GG;Φsۛ)?hdm-hl)*R(l6B.p8e* FD$xs}5`vvnn~> "peHgggggF#Dqѣfѣee:NWQp?*ϻ\Rk*U4=EIT....޹pŋ.XV՚Hl*qG}ȩcO?5t:uϞ{PJ WswPh}=hm=to/+nH&IM/ZGF69sd"I|0aa|>i~ee@`uJE"'Nx5\.(~ɍT*X Wn(6q,byBR.rرc^zI.h5z{ϟd2H&GD%Dd=wIYHHB!Z)*qZ^^ZXz^/((--++- fgO>ɾ^{@\;.;KKNg($uϷ9m۶mZmAEQEfl>_ ӓJRTn<ȥD:e(q=ULazw횜 N~{ffjjf_2p/y;~u"zTXtSoftwarex+//.NN,H/J6XS\IENDB`comix-4.0.4/images/gimp-thumbnails.png0000644000175000001440000000071010742512425016606 0ustar sorkusersPNG  IHDRabKGDC pHYs  tIME $PEUIDAT8˕1O@-5M c08_:bt3ƭ09.@BBq1i`a1:ܹ^ w/{ S?`czk5L擂67LG*(_Z r\YX0u~[Hm|u VpQe (]LlRBѲC ,xw;3梇޳pQcqc. $ O q 'g1s.~}H)6|VG\|R_-r6%0 Yc,QFfa_ЙWɰGIENDB`comix-4.0.4/images/fitbest.png0000644000175000001440000000133711112303030015132 0ustar sorkusersPNG  IHDRw=sRGBbKGD4e2E pHYs  tIME ,,,tEXtCommentCreated with The GIMPd%n6IDATHՕkSQ?|H$tS#@-ABV4("-%&\G%yIk9~= 77Z*E] r;_R~;)PZjZM˱Qw~hʇV7Bp=E̥$/<==2·`&ܱ0yU>{IT҃Ta?6}ALҝ,NٚZ:ԣ@zv|Ak>\uŁAsM(;!woPq\V!@rZ$1Hg1UZQVt%%ۨ7ޖ6KcƘJiRe?ps@$'bѨ,˿?@UI3k[ȽkiZ]*`:6. i{wQ* QĸbIENDB`comix-4.0.4/images/gimp-rotate-180.png0000644000175000001440000000107410742512425016250 0ustar sorkusersPNG  IHDRabKGD pHYs  tIME `XIDAT8˅kQ?W_BHneE<xYO7!C{BQZbI؍FIyl:`2̼51v 5˅^7/9#lw@2Ӿ {`*`.y+ȜlTlmoZzBlҹ SR1p{3ӯ͓|.%d`ٮlWf.`ٮTSXdƭXC!"̵<( H'ŭz n\|;ofj沘8暔ٖe(ݠ'{a?:<8)eWoChH_t 2td<>v"e9[ sK*"`H# Fo~ TʗɹjEWxgRQFRNzIENDB`comix-4.0.4/images/48x48/comix.png0000644000175000001440000000762611107075037015440 0ustar sorkusersPNG  IHDR00WsBIT|d pHYs B(xtEXtSoftwarewww.inkscape.org<IDATh՚}U}?3~;l|kkOR/yj욻[<ϻ5m(Y,Z)pVFD9`}M>~RG?GϹ?>B\.@D0Mݡm7]ᚮ ^KD_R،Q(pbeO퍏~e976?7R#"ex7]*WiE> ;vຏ߲r.I쫈A JO#LaB3jJ2K'W'S;]>8NP I}(:!"k΋@荶[[K8p&&&>""QTѹ\P7~n]#q?S0 <O+J:XCl qbpD௣Q5ħ/R*,JJXϙ¶h$r饗N{{3JO_{' kVѯ3Yݏ!rG>>9'\ |O{(,?AWYl/uٍl}z幍|~ߊ+n+MDa4Lg,> k~ \[g66ާGCh|x= J;rD sbhmc 6mҽ P\0|M0[2d! 쁖R]_;۰\.q\=|R=h&%pxh5F+1J+E prgVokGe}uoA8bu/ V]Ac?G+H[2J)t%mVZUTXĖ-[hjsP-㔺 nbK3qYThV'漢r E=A+Pb%C5JRR{ h;c{oHER5"KA&#*{^{ocx1ԗ\DGk[XBs\*P+hIժ$*M%RPIHD(~VgV&9yqVRոެEm;W022w.{}LD)Lv^Ws5)gV߽;V#P3=Vzt(*RO{e~JZm9<… ëtjRy&]C!{BFߡQ.X֊ڧQZ ,,!f5.y٘Ŗ?(SVf'RRh ,iiW'0 Šv0\f2qJ¦8|?\ p.{婬@k/Q1e#Ф_` OdTV+;E5b:I5sgsXpXWb8~NgI]6ӶZ&63Aso?wLk)9~"bZ㟛:<299$ aX1c] X&c5B [7 dc1[Tʱ`еefM;6cl}ZiU5~jcnnn`)޹xY{}ޱIL}(u5s7q@Ոgy\uɖZ 3p9t9{lB5PkL*Fd>ٓ,b]lr?hnH%Kpvt׏}ѿOJ$w>}ŨX,oWla9w|胷﹙Ukz$-u#k\ҹ %}.n{lH=455ԡ(1ɝa˧$`ߑhi9V]:ŷó^B{ c8&I J],&rF Ib,cp̷i_=1B.$o%1,)-zm١O:~ ˑ_d.yxm+VۉPZU6Z׌͖֞$^lg>4<4q%\-9TWtmz~SJ+zͬ3iLv:wvtn9x a\Rr?ixͅA Լ(6| 3Hً(v1U.'?RCC@DĞ |fo>{K[ZWX)W&S{G$I }aedgH4t,]‰S;lѣLJ(#P*Rx |!ks~[ ^~ucGq*dEQB6 8& s1{'}򩑟3@@%#R_x6mi[/V\\RLJUVբ c(Fe &,h=vE- mPȓ C|?181T*Ύ fF&&!מu'Q ,cU`JH} lf*,uJV@NX*c偣> 4X`o 4Q+wLTVgV{vԶ~\fYkvW&)25L m 4p7ʃ~IENDB`comix-4.0.4/images/16x16/comix.png0000644000175000001440000000162411107075037015416 0ustar sorkusersPNG  IHDRasBIT|d pHYs B(xtEXtSoftwarewww.inkscape.org<IDAT8Kh\uwL^$&cCqQԩV5ZIkQPU@AZ"ĺr)[-X5 `D*::I&3s>Dxևg=sscJTA c]@j53f9慹⽧R,yRg=Ox4~jthO+nܙ4NڳKc74T~^=Q;Mkv)E1JYOA|jU#UM ӏ02QXPH .ay!GL֭&x @&gƊ壷=R=Q *E){0Yv͍]I.IU]{"2@Xa66m"Yk1PNyhHADtdbCu!79IEcqVRީtLh|'"Nx!9d-prC4u2[,Aׂ' rKn-Ɓ]R~y0Q`IlBa9ܙI6SK{:JdU[zsL|qֹ%굌o5=V ue~\k`;g L8Jɪu~rI;~IENDB`comix-4.0.4/images/24x24/comix.png0000644000175000001440000000241611107075037015414 0ustar sorkusersPNG  IHDRw=sRGBbKGD pHYs B(xtIME F0.IDATHՕYlUEsR,RӠ"-. *Q F1o>h|5%@ ĠbsŸ KX,BsΜzR[11q/g&go7qFL;X aǩJUњ񼘔zւSԏg&L_|ᙥIUVx)OovvwOo0 liiYQ7\:~rc7>x=~ة}'-ݏ<ϳ#*5;<2yH̻2@yag~5AloT]T# 4غwWݗ Њ rlX=UBV- iO3-\i!ZdXd`cI $P,s_ Ҁ m#qLWBC$l[*gJiTp=ߗ,,3LbZL_<<^20sVttcb46(+"f{]QySǶg޽_ȉ@FA( s߂u΂2q;&Ox;שNv rn@ٷŁW g dtГ{y2ENmPxCOldHIENDB`comix-4.0.4/images/32x32/comix.png0000644000175000001440000000410011107075037015402 0ustar sorkusersPNG  IHDR szzsBIT|d pHYs B(xtEXtSoftwarewww.inkscape.org<IDATX͖k]U{ǽwΝG3-eҙZm-}A@bP(~CMh(&hAm DZZ0Si3}}sNiQ;g{rro_%"|K5ۜƹf_1{qb6|G#3t(8fk:/ޒj5 6_Fkn ZN08zJvی_/xۊ'y6`HDD+>f Ͽ{W/Iь(Z4v(7{xbl~a[JLfoRy9wӌ~Gokx1asQt_zץ}7KY2a@j!,1TJRI=P长{Oz~sSs{___sny>ҧ)/|8iO\Z?|wU#ʻH TH&&kJiҩ4T@ʏ)#[\wbO暵kֶ5*fwGvoF͛wخGnR3vd/}<4JW=i|#5Ħ}{Ɇ P ~'6 ?]W`kLG+ j^{<-h%y `:c:򟟞cc!ؾRԀkQ%ZzRgkq ΡE^>0 O}/X7c?[_brݾ8b,JDXSALleљ2b"IBC.;ᆍl|} hb95$ILI26*$$.2q\&Ib8Ŕ94|VSs0Y0"ɐIPZN?|:2K牜""$! J[ <:pҤR)sq\Ubk%]SZtl*1q0>{`܋kV,_[Ci>Oi]o"sT7 .oǞן jWHm k'^ ĽǓBҙ oėtAun]XÒ yVx@RjLD&/XThZڽ3.XֽnQV4ZX 9uBc4y{G.20ፋcÎym*b8"1 IPA@AH89,䃽g_FjG S1ۮ\W\4{Q6KgR)ı\932!'~O?Ԯv>E\ЄJ 0hk1Z.V.T"1D&?4:;f@q`8 Ւ7Y2@  @ (SqL[3L tMsnq-F5h}*787qՄ3IENDB`comix-4.0.4/images/22x22/comix.png0000644000175000001440000000243311107075037015407 0ustar sorkusersPNG  IHDRĴl;sBIT|d pHYs B(xtEXtSoftwarewww.inkscape.org<IDAT8YlTUwҖjeBAEʢM*ĸqII|j"b &AQ D@RLT0 -3]3s3J(/Mn}\1,ʶ/-g+nqi{^zeY䂠C)g-eee |"o\=v݋Ϫ/S7: R:f>85|Ϯ0zLZDn2<<mJ7=P>\dKnk_ı`$"3׽[·v>4pNtanRɳjW]`-f$w|\ dI$nc'M:f'`Oo`'DaWܸemx_z?Ė!J<ảsc=G2ֿ^&kT3bs-1++dsxƖ 118bXt[]G }Yh boVTE1l&"D &c6 554pԡf`i7Z{ aݐޮ/HkVO4CC p˲ZJ2C8zh_/"qcL~ ," @,]珛[`gGTHGDpffGz׾ TEcLk(ʓƕ%Ӫ ׻+'H K?tS_ΞBc/x|YV[XQcߘqz:aVR}Aw>~0X c扈[DR`P !9 [/YS$"Rh1P@p 3ƨ3T =IENDB`comix-4.0.4/messages/hu/LC_MESSAGES/comix.po0000644000175000001440000007402011137627234017233 0ustar sorkusersmsgid "" msgstr "" "Project-Id-Version: Comix 4.0.3\n" "POT-Creation-Date: \n" "PO-Revision-Date: 2009-01-26 19:34+0100\n" "Last-Translator: Ernő Drabik \n" "Language-Team: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" #: src/about.py:19 #: src/about.py:68 msgid "About" msgstr "Névjegy" #: src/about.py:56 msgid "Comix is an image viewer specifically designed to handle comic books." msgstr "A Comix egy képnézegető alkalmazás, melyet kimondottan a képregények megjelenítéséhez terveztek." #: src/about.py:58 msgid "It reads ZIP, RAR and tar archives, as well as plain image files." msgstr "A program a szokásos képfájlok mellett megnyitja a ZIP, RAR és tar arhívumokat is." #: src/about.py:60 msgid "Comix is licensed under the GNU General Public License." msgstr "A Comix a GNU General Public License (GNU Általános Nyilvános Licenc) alapján kerül terjesztésre." #: src/about.py:83 msgid "Developer" msgstr "Fejlesztő" #: src/about.py:84 #: src/about.py:85 msgid "Simplified Chinese translation" msgstr "Egyszerűsített kínai fordítás" #: src/about.py:86 msgid "Spanish translation" msgstr "Spanyol fordítás" #: src/about.py:87 msgid "Brazilian Portuguese translation" msgstr "Brazíliai portugál fordítás" #: src/about.py:88 msgid "German translation and Nautilus thumbnailer" msgstr "Német fordítás, Nautilus bélyegkép modul" #: src/about.py:89 #: src/about.py:90 msgid "Italian translation" msgstr "Olasz fordítás" #: src/about.py:91 msgid "Dutch translation" msgstr "Holland fordítás" #: src/about.py:92 msgid "French translation" msgstr "Francia fordítás" #: src/about.py:93 #: src/about.py:94 msgid "Polish translation" msgstr "Lengyel fordítás" #: src/about.py:95 msgid "Greek translation" msgstr "Görög fordítás" #: src/about.py:96 msgid "Catalan translation" msgstr "Katalán fordítás" #: src/about.py:97 #: src/about.py:98 msgid "Traditional Chinese translation" msgstr "Hagyományos kínai fordítás" #: src/about.py:99 msgid "Japanese translation" msgstr "Japán fordítás" #: src/about.py:100 msgid "Hungarian translation" msgstr "Magyar fordítás" #: src/about.py:101 msgid "Russian translation" msgstr "Orosz fordítás" #: src/about.py:102 msgid "Croatian translation" msgstr "Horvát fordítás" #: src/about.py:103 msgid "Korean translation" msgstr "Koreai fordítás" #: src/about.py:104 msgid "Persian translation" msgstr "Perzsa fordítás" #: src/about.py:105 msgid "Indonesian translation" msgstr "Indonéz fordítás" #: src/about.py:106 msgid "Czech translation" msgstr "Cseh fordítás" #: src/about.py:107 msgid "Icon design" msgstr "Ikonok kivitelezése" #: src/about.py:114 msgid "Credits" msgstr "Közreműködők" #: src/archive.py:66 msgid "Could not find RAR file extractor!" msgstr "Nem található a RAR fájlokat kicsomagoló alkalmazás!" #: src/archive.py:68 msgid "You need either the rar or the unrar program installed in order to read RAR (.cbr) files." msgstr "A RAR (.cbr) fájlok megnyitásához a rar, vagy az unrar alkalmazást telepítenie kell." #: src/archive.py:305 msgid "ZIP archive" msgstr "Zip archívum" #: src/archive.py:306 msgid "Tar archive" msgstr "Tar archívum" #: src/archive.py:307 msgid "Gzip compressed tar archive" msgstr "tar archívum (gzip-pel tömörített)" #: src/archive.py:308 msgid "Bzip2 compressed tar archive" msgstr "tar archívum (bzip2-vel tömörített)" #: src/archive.py:309 msgid "RAR archive" msgstr "RAR archívum" #: src/bookmark.py:28 msgid "_Add bookmark" msgstr "Könyvjelző hozzá_adása" #: src/bookmark.py:30 msgid "_Edit bookmarks..." msgstr "Könyvjelzők sz_erkesztése..." #: src/bookmark.py:32 msgid "_Clear bookmarks..." msgstr "Könyvjelzők _törlése..." #: src/bookmark.py:78 msgid "Clear all bookmarks?" msgstr "Törli az összes könyvjelzőt?" #: src/bookmark.py:80 msgid "All stored bookmarks will be removed. Are you sure that you want to continue?" msgstr "Az összes eltárolt könyvjelző eltávolítására készül. Biztosan folytatja?" #: src/bookmark.py:230 msgid "Edit bookmarks" msgstr "Könyvjelzők szerkesztése" #: src/bookmark.py:256 #: src/edit.py:270 msgid "Name" msgstr "Név" #: src/bookmark.py:257 msgid "Page" msgstr "Oldal" #: src/comment.py:16 #: src/preferences.py:299 msgid "Comments" msgstr "Megjegyzések" #: src/comment.py:53 #, python-format msgid "Could not read %s" msgstr "Nem olvasható a(z) %s" #: src/deprecated.py:16 msgid "There are deprecated files left on your computer." msgstr "Érvénytelenített fájlok találhatók a számítógépén." #: src/deprecated.py:22 msgid "Some old files (that were used for storing preferences, the library, bookmarks etc. for older versions of Comix) were found on your computer. If you do not plan on using the older versions of Comix again, you should remove these files in order to save some disk space. Do you want these files to be removed for you now?" msgstr "Néhány régi fájl (amiket a régebbi Comix verziók használtak beállítások, könyvtárak könyvjelzők, stb. tárolására) található a számítógépén. Ha már nem fog régebbi Comix verziókat használni, akkor tanácsos ezeket eltávolítani helymegtakarítás miatt. Szeretné eltávolítani őket most?" #: src/edit.py:29 msgid "Edit archive" msgstr "Archívum szerkesztése" #: src/edit.py:37 msgid "Import" msgstr "Importálás" #: src/edit.py:51 msgid "Images" msgstr "Képek" #: src/edit.py:52 msgid "Other files" msgstr "Egyéb állományok" #: src/edit.py:101 msgid "The new archive could not be saved!" msgstr "Nem lehet elmenteni az új arhívumot!" #: src/edit.py:103 msgid "The original files have not been removed." msgstr "Az eredeti fájlok megmaradtak." #: src/edit.py:117 msgid "Archives are stored as ZIP files." msgstr "Az arhívumok ZIP állományként lesznek tárolva." #: src/edit.py:170 #: src/edit.py:288 msgid "Remove from archive" msgstr "Törlés a gyűjteményből." #: src/edit.py:258 msgid "Please note that the only files that are automatically added to this list are those files in archives that Comix recognizes as comments." msgstr "Vegye figyelembe, hogy itt csak azon arhívumbeli fájlok jelennek meg automatikusan, melyeket a Comix megjegyzésfájlként ismer fel." #: src/edit.py:273 msgid "Size" msgstr "Méret" #: src/enhance.py:51 msgid "Enhance image" msgstr "Kép kiemelése" #: src/enhance.py:52 msgid "Defaults" msgstr "Alapértelmezések" #: src/enhance.py:79 msgid "Brightness" msgstr "Fényerő" #: src/enhance.py:90 msgid "Contrast" msgstr "Kontraszt" #: src/enhance.py:101 msgid "Saturation" msgstr "Telítettség" #: src/enhance.py:112 msgid "Sharpness" msgstr "Élesség" #: src/enhance.py:126 msgid "Automatically adjust contrast." msgstr "Kontraszt automatikus beállítása." #: src/enhance.py:128 msgid "Automatically adjust contrast (both lightness and darkness), separately for each colour band." msgstr "A kontraszt automatikus beállítása (mind a világosságot és a sötétséget is) minden egyes színsávhoz." #: src/filechooser.py:38 #: src/library.py:490 msgid "Open" msgstr "Megnyitás" #: src/filechooser.py:42 msgid "Save" msgstr "Mentés" #: src/filechooser.py:78 msgid "All files" msgstr "Minden fájl" #: src/filechooser.py:81 msgid "All Archives" msgstr "Minden archívum" #: src/filechooser.py:85 msgid "ZIP archives" msgstr "ZIP archívumok" #: src/filechooser.py:87 msgid "RAR archives" msgstr "RAR archívumok" #: src/filechooser.py:89 msgid "Tar archives" msgstr "Tar archívumok" #: src/filechooser.py:134 #, python-format msgid "A file named '%s' already exists. Do you want to replace it?" msgstr "A megadott nevű állomány már létezik: '%s'. Akarja a cserét?" #: src/filechooser.py:137 msgid "Replacing it will overwrite its contents." msgstr "A csere felülírja az eredeti tartalmat." #: src/filechooser.py:182 #: src/filechooser.py:260 msgid "All images" msgstr "Minden kép" #: src/filechooser.py:184 #: src/filechooser.py:262 msgid "JPEG images" msgstr "JPEG képek" #: src/filechooser.py:185 #: src/filechooser.py:263 msgid "PNG images" msgstr "PNG képek" #: src/filechooser.py:206 msgid "Automatically add the books to this collection" msgstr "A könyveket automatikusan adja hozzá az aktuális gyűjteményhez." #: src/filehandler.py:209 #, python-format msgid "Could not open %s: Is a directory." msgstr "%s-t nem lehet megnyitni: Ez egy könyvtár." #: src/filehandler.py:213 #, python-format msgid "Could not open %s: No such file." msgstr "%s-t nem lehet megnyitni: Nincs ilyen fájl." #: src/filehandler.py:217 #, python-format msgid "Could not open %s: Permission denied." msgstr "%s-t nem lehet megnyitni: Hozzáférés megtagadva." #: src/filehandler.py:222 #, python-format msgid "Could not open %s: Unknown file type." msgstr "%s-t nem lehet megnyitni: Ismeretlen fájltípus." #: src/filehandler.py:285 #, python-format msgid "No images in '%s'" msgstr "Nincsenek képek a következő helyen: '%s'" #: src/filehandler.py:413 msgid "Unknown filetype" msgstr "Ismeretlen fájltípus" #: src/librarybackend.py:273 #: src/librarybackend.py:275 msgid "(Copy)" msgstr "(Másolás)" #: src/library.py:38 msgid "Library" msgstr "Könyvtár" #: src/library.py:150 msgid "Rename..." msgstr "Átnevezés..." #: src/library.py:152 msgid "Duplicate collection" msgstr "Gyűjtemény duplikálása" #: src/library.py:154 msgid "Remove collection..." msgstr "Gyűjtemény eltávolítása..." #: src/library.py:202 msgid "All books" msgstr "Minden könyv" #: src/library.py:231 msgid "Remove collection from the library?" msgstr "Törli a gyűjteményt a könyvtárból?" #: src/library.py:233 msgid "The selected collection will be removed from the library (but the books and subcollections in it will remain). Are you sure that you want to continue?" msgstr "A kiválasztott gyűjtemény kikerül a könyvtárból (de a benne lévő könyvek és algyűjtemények megmaradnak). Biztosan folytatja?" #: src/library.py:251 msgid "Rename collection?" msgstr "Átnevezi a gyűjteményt?" #: src/library.py:253 msgid "Please enter a new name for the selected collection." msgstr "Adja meg a kiválasztott gyűjtemény új nevét." #: src/library.py:271 #, python-format msgid "Could not change the name to '%s'." msgstr "A nevet nem lehet megváltoztatni a következőre: '%s'." #: src/library.py:275 #: src/library.py:882 msgid "A collection by that name already exists." msgstr "A megadott nevű gyűjtemény már létezik." #: src/library.py:285 msgid "Could not duplicate collection." msgstr "A gyűjteményt nem lehet duplikálni." #: src/library.py:382 msgid "Root" msgstr "Alapkönyvtár" #: src/library.py:386 #, python-format msgid "Put the collection '%(subcollection)s' in the collection '%(supercollection)s'." msgstr "A '%(subcollection)s' gyűjtemény áthelyezése a következőbe: '%(supercollection)s'." #: src/library.py:407 #, python-format msgid "Add books to '%s'." msgstr "Könyvek hozzáadása a következőhöz: '%s'." #: src/library.py:411 #, python-format msgid "Move books from '%(source collection)s' to '%(destination collection)s'." msgstr "Könyvek mozgatása innen: '%(source collection)s' ide: '%(destination collection)s'." #: src/library.py:493 msgid "Remove from this collection" msgstr "Eltávolítás az aktuális gyűjteményből." #: src/library.py:496 msgid "Remove from the library..." msgstr "Eltávolítás a könyvtárból." #: src/library.py:589 #, python-format msgid "Removed %(num)d book(s) from '%(collection)s'." msgstr "Removed %(num)d book(s) from '%(collection)s'." #: src/library.py:598 msgid "Remove books from the library?" msgstr "Eltávolítja a könyveket a könyvtárból?" #: src/library.py:600 msgid "The selected books will be removed from the library (but the original files will be untouched). Are you sure that you want to continue?" msgstr "A kiválasztott könyvek a könyvtárból eltávolításra kerülnek (az eredeti fájlok természetesen a helyükön maradnak). Biztosan folytatja?" #: src/library.py:610 #, python-format msgid "Removed %d book(s) from the library." msgstr "A könyvtárból eltávolítva a következő(k): %d." #: src/library.py:770 msgid "Search" msgstr "Keresés" #: src/library.py:775 msgid "Display only those books that have the specified text string in their full path. The search is not case sensitive." msgstr "Csak azokat a könyveket jeleníti meg, melyek a teljes elérési útvonalukban tartalmazzák a megadott szövegrészt. A keresés nem kisbetű/nagybetű érzékeny." #: src/library.py:777 msgid "Cover size" msgstr "Borító mérete" #: src/library.py:790 msgid "Add books" msgstr "Könyvek hozzáadása" #: src/library.py:794 msgid "Add more books to the library." msgstr "Több könyv hozzáadása a könyvtárhoz." #: src/library.py:796 msgid "Add collection" msgstr "Gyűjtemény hozzáadása" #: src/library.py:801 msgid "Add a new empty collection." msgstr "Új, üres gyűjtemény hozzáadása." #: src/library.py:807 msgid "Open the selected book." msgstr "A kiválasztott könyv megnyitása." #: src/library.py:833 #: src/properties.py:118 #, python-format msgid "%d pages" msgstr "%d lapok" #: src/library.py:855 msgid "Add new collection?" msgstr "Új gyűjtemény hozzáadása?" #: src/library.py:857 msgid "Please enter a name for the new collection." msgstr "Adja meg az új gyűjtemény nevét." #: src/library.py:863 msgid "New collection" msgstr "Új gyűjtemény." #: src/library.py:877 #, python-format msgid "Could not add a new collection called '%s'." msgstr "Nem lehetett hozzáadni a '%s' nevű gyűjteményt." #: src/library.py:911 msgid "Adding books" msgstr "Könyvek hozzáadása" #: src/library.py:931 msgid "Added books" msgstr "Hozzáadott könyvek" #: src/library.py:953 #, python-format msgid "Adding '%s'..." msgstr "Hozzáadás '%s'..." #: src/main.py:699 msgid "SLIDESHOW" msgstr "Diavetítés" #: src/preferences.py:80 msgid "Preferences" msgstr "Beállítások" #: src/preferences.py:95 msgid "Background" msgstr "Háttér" #: src/preferences.py:97 msgid "Use this colour as background" msgstr "A következő szín legyen a háttérszín" #: src/preferences.py:99 msgid "Always use this selected colour as the background colour." msgstr "Mindig a kiválasztott szín legyen a háttérszín." #: src/preferences.py:104 msgid "Use dynamic background colour." msgstr "Változó háttérszín használata" #: src/preferences.py:108 msgid "Automatically pick a background colour that fits the viewed image." msgstr "A program magától válasszon egy háttérszínt, ami az aktuális képhez illik." #: src/preferences.py:111 msgid "Thumbnails" msgstr "Bélyegképek" #: src/preferences.py:112 msgid "Thumbnail size (in pixels)" msgstr "Bélyegkép mérete (pixelben megadva)" #: src/preferences.py:119 msgid "Show page numbers on thumbnails." msgstr "A lapok sorszáma legyen rajta a bélyegképen." #: src/preferences.py:126 msgid "Magnifying Glass" msgstr "Nagyító" #: src/preferences.py:127 msgid "Magnifying glass size (in pixels)" msgstr "Nagyító mérete (pixelben)" #: src/preferences.py:133 msgid "Set the size of the magnifying glass. It is a square with a side of this many pixels." msgstr "A nagyító lencse méreteinek megadása. Ez egy négyzet, aminek az oldalai megadott pixelszámúak." #: src/preferences.py:135 msgid "Magnification factor" msgstr "Nagyítási tényező" #: src/preferences.py:142 msgid "Set the magnification factor of the magnifying glass." msgstr "A nagyító nagyítási tényezőjének beállítása." #: src/preferences.py:145 msgid "Image scaling" msgstr "Kép méretezése" #: src/preferences.py:146 msgid "Stretch small images." msgstr "Kisméretű képek kinyújtása." #: src/preferences.py:150 msgid "Stretch images to a size that is larger than their original size if the current zoom mode requests it. If this preference is unset, images are never scaled to be larger than their original size." msgstr "Ha az aktuális nagyítási mód igényli, akkor a program nyújtsa ki az eredetinél nagyobb méretűre a képeket. Amennyiben ez az opció nincs kiválasztva, akkor a képek ez eredeti nagyságuknál nem fognak nagyobbra nyúlni." #: src/preferences.py:153 msgid "Transparency" msgstr "Átlátszóság" #: src/preferences.py:155 msgid "Use checkered background for transparent images." msgstr "Az átlátszó képek háttere tarka legyen." #: src/preferences.py:161 msgid "Use a grey checkered background for transparent images. If this preference is unset, the background is plain white instead." msgstr "Az átlátszó képek háttere tarka legyen (szürke). Ha ez a beállítás nem aktív, akkor a háttérszín teljesen fehér lesz." #: src/preferences.py:163 msgid "Appearance" msgstr "Megjelenés" #: src/preferences.py:169 msgid "Scroll" msgstr "Gördítés" #: src/preferences.py:171 msgid "Use smart space key scrolling." msgstr "A szóköz billentyű intelligens gördítést végez." #: src/preferences.py:176 msgid "Use smart scrolling with the space key. Normally the space key scrolls only right down (or up when shift is pressed), but with this preference set it also scrolls sideways and so tries to follow the natural reading order of the comic book." msgstr "Intelligens gördítés használata a szóköz billentyűvel. Alapértelmezés szerint a szóköz csak lefelé gördít (vagy a váltó/shift gombot lenyomva felfelé), de ezt a beállítást használva oldalirányba is gördíti a képet, megpróbálva a képregényes könyv természetes olvasási sorrendjét követni." #: src/preferences.py:180 msgid "Flip pages when scrolling off the edges of the page." msgstr "Lapozás a lap alján vagy tetején történő kigördítéskor." #: src/preferences.py:185 msgid "Flip pages when scrolling \"off the page\" with the scroll wheel or with the arrow keys. It takes three consecutive \"steps\" with the scroll wheel or the arrow keys for the pages to be flipped." msgstr "Az egérgörgővel, vagy a nyílbillentyűkkel a lapról való \"átgördítéskor\" lapozás fog történni. Három egymást követő \"lépés - gördítés\" szükséges ehhez." #: src/preferences.py:188 #: src/ui.py:298 msgid "Double page mode" msgstr "Dupla lapos mód" #: src/preferences.py:190 msgid "Flip two pages in double page mode." msgstr "Dupla lapos megjelenítési módban két oldal lapozása." #: src/preferences.py:195 msgid "Flip two pages, instead of one, each time we flip pages in double page mode." msgstr "Két lapot lapozzon a program egy helyett, amikor a dupla lapos megjelenítési mód az aktív." #: src/preferences.py:198 msgid "Show only one wide image in double page mode." msgstr "Csak a széles kép megjelenítése dupla lapos módban." #: src/preferences.py:204 msgid "Display only one image in double page mode, if the image's width exceeds its height. The result of this is that scans that span two pages are displayed properly (i.e. alone) also in double page mode." msgstr "A dupla lapos megjelenítési módban csak egy képet jelenít meg a program akkor, ha a kép szélessége eléri a magasságát. Tehát ha egy kép két lapból tevődik össze, akkor még dupla lapos módban is csak a széles kép lesz egyedül megjelenítve." #: src/preferences.py:207 msgid "Files" msgstr "Fájlok" #: src/preferences.py:209 msgid "Automatically open the next archive." msgstr "A következő arhívum automatikus megnyitása." #: src/preferences.py:214 msgid "Automatically open the next archive in the directory when flipping past the last page, or the previous archive when flipping past the first page." msgstr "Automatikusan megnyitja a következő arhívumot, ha az aktuális utolsó lapját elhagyjuk, illetve az előzőt, ha az első kép elé lépünk." #: src/preferences.py:217 msgid "Automatically open the last viewed file on startup." msgstr "Programindításkor az utoljára megjelenített állomány betöltése." #: src/preferences.py:222 msgid "Automatically open, on startup, the file that was open when Comix was last closed." msgstr "A program automatikusan nyissa meg induláskor a Comix bezárásakor megjelenített állományt." #: src/preferences.py:225 msgid "Store information about recently opened files." msgstr "Az aktuálisan megnyitott állományok adatainak tárolása." #: src/preferences.py:230 msgid "Add information about all files opened from within Comix to the shared recent files list." msgstr "A program a Comix-ban megnyitott állományok adatát hozzáadja majd a megosztott, utoljára használt fájlok listájához." #: src/preferences.py:233 msgid "Store thumbnails for opened files." msgstr "A megnyitott fájlok bélyegképeinek eltárolása." #: src/preferences.py:238 msgid "Store thumbnails for opened files according to the freedesktop.org specification. These thumbnails are shared by many other applications, such as most file managers." msgstr "A megnyitott fájlok bélyegképei legyenek eltárolva a freedesktop.org előírásainak megfelelően. Ezen bélyegképeket más alkalmazások, például a legtöbb fájlkezelő is használhatja majd." #: src/preferences.py:241 msgid "Cache" msgstr "Gyorsítótár" #: src/preferences.py:242 msgid "Use a cache to speed up browsing." msgstr "A program használjon gyorsítótárat a gyorsabb böngészés eléréséhez." #: src/preferences.py:246 msgid "Cache the images that are next to the currently viewed image in order to speed up browsing. Since the speed improvements are quite big, it is recommended that you have this preference set, unless you are running short on free RAM." msgstr "A Comix a gyorsabb böngészés eléréséhez az aktuálisan megjelenített kép melletti fájlokat gyorstárazza. Ajánlott ezt az opciót bekapcsolni, mivel nagy sebességjavuláshoz vezet, kivéve ha kevés a memória." #: src/preferences.py:248 msgid "Behaviour" msgstr "Viselkedés" #: src/preferences.py:254 msgid "Default modes" msgstr "Alapértelmezett módok" #: src/preferences.py:256 msgid "Use double page mode by default." msgstr "A kétlapos megjelenítési mód legyen az alapértelmezett." #: src/preferences.py:261 msgid "Use fullscreen by default." msgstr "A teljes képernyős megjelenítési mód legyen az alapértelmezett." #: src/preferences.py:266 msgid "Use manga mode by default." msgstr "A manga mód legyen az alapértelmezett." #: src/preferences.py:271 msgid "Default zoom mode" msgstr "Alapértelmezett nagyítási mód" #: src/preferences.py:273 #: src/ui.py:290 msgid "Best fit mode" msgstr "Legjobb illeszkedés" #: src/preferences.py:274 #: src/ui.py:292 msgid "Fit width mode" msgstr "Szélességhez igazítás" #: src/preferences.py:275 #: src/ui.py:294 msgid "Fit height mode" msgstr "Magassághoz igazítás" #: src/preferences.py:276 #: src/ui.py:296 msgid "Manual zoom mode" msgstr "Kézi nagyítás" #: src/preferences.py:282 msgid "Fullscreen" msgstr "Teljes képernyő" #: src/preferences.py:284 msgid "Automatically hide all toolbars in fullscreen." msgstr "Teljes képernyős módban az összes eszköztár automatikusan legyen elrejtve." #: src/preferences.py:290 msgid "Slideshow" msgstr "Diavetítés" #: src/preferences.py:291 msgid "Slideshow delay (in seconds)" msgstr "Diavetítés késleltetése (másodpercben megadva)" #: src/preferences.py:300 msgid "Comment extensions" msgstr "Megjegyzésfájlok kiterjesztése" #: src/preferences.py:306 msgid "Treat all files found within archives, that have one of these file endings, as comments." msgstr "Az itt megadott kiterjesztésű állományokat az arhívumokban megjegyzésfájlként kezeli majd a program." #: src/preferences.py:309 msgid "Rotation" msgstr "Elforgatás" #: src/preferences.py:311 msgid "Automatically rotate images according to their metadata." msgstr "A képek automatikus elforgatása a metaadatának megfelelően." #: src/preferences.py:316 msgid "Automatically rotate images when an orientation is specified in the image metadata, such as in an Exif tag." msgstr "Ha a képek metaadatában meghatározott megjelenítési irány található (például: egy EXIF cimkében), akkor a program automatikusan elvégzi az elforgatást." #: src/preferences.py:318 msgid "Display" msgstr "Képernyő" #: src/properties.py:94 msgid "Properties" msgstr "Tulajdonságok" #: src/properties.py:119 #, python-format msgid "%d comments" msgstr "Megjegyzések: %d" #: src/properties.py:129 #: src/properties.py:164 msgid "Location" msgstr "Hely" #: src/properties.py:131 #: src/properties.py:165 msgid "Accessed" msgstr "Utolsó elérés" #: src/properties.py:133 #: src/properties.py:167 msgid "Modified" msgstr "Módosítva" #: src/properties.py:135 #: src/properties.py:169 msgid "Permissions" msgstr "Jogosultságok" #: src/properties.py:136 #: src/properties.py:170 msgid "Owner" msgstr "Tulajdonos" #: src/properties.py:140 msgid "Archive" msgstr "Archívum" #: src/properties.py:174 msgid "Image" msgstr "Kép" #: src/thumbremover.py:24 msgid "Thumbnail maintenance" msgstr "Bélyegképek karbantartása" #: src/thumbremover.py:26 msgid "Cleanup" msgstr "Tisztítás" #: src/thumbremover.py:38 msgid "Cleanup thumbnails" msgstr "Bélyegképek törlése" #: src/thumbremover.py:48 msgid "Thumbnails for files (such as image files and comic book archives) are stored in your home directory. Many different applications use and create these thumbnails, but sometimes thumbnails remain even though the original files have been removed - wasting space. This dialog can cleanup your stored thumbnails by removing orphaned and outdated thumbnails." msgstr "A fájlok bélyegképei (például képek és képregény könyv arhívumok) a felhasználói könyvtárban tárolódnak. Több különböző alkalmazás használja és hoz létre ilyen bélyegképeket, de ezek néha még az eredeti fájl törlése után is megmaradnak helypazarló módon. Ez a párbeszédablak segít az efféle árva és elavult bélyegképek törlésében." #: src/thumbremover.py:60 msgid "Thumbnail directory" msgstr "Bélyegképek könyvtára" #: src/thumbremover.py:67 msgid "Total number of thumbnails" msgstr "Bélyegképek száma" #: src/thumbremover.py:70 #: src/thumbremover.py:77 msgid "Calculating..." msgstr "Számolás..." #: src/thumbremover.py:74 msgid "Total size of thumbnails" msgstr "Bélyegképek mérete" #: src/thumbremover.py:82 msgid "Do you want to cleanup orphaned and outdated thumbnails now?" msgstr "Szeretné eltávolítani az árva és elavult bélyegképeket?" #: src/thumbremover.py:118 msgid "Removing thumbnails" msgstr "Bélyegképek eltávolítása" #: src/thumbremover.py:137 msgid "Number of removed thumbnails" msgstr "Eltávolított bélyegképek száma" #: src/thumbremover.py:144 msgid "Total size of removed thumbnails" msgstr "Az eltávolított bélyegképek mérete" #: src/thumbremover.py:195 #, python-format msgid "Removed thumbnail for '%s'" msgstr "'%s' - eltávolított bélyegképek" #: src/ui.py:34 msgid "_Next page" msgstr "_Következő oldal" #: src/ui.py:36 msgid "_Previous page" msgstr "Előző _oldal" #: src/ui.py:38 msgid "_First page" msgstr "_Első oldal" #: src/ui.py:40 msgid "_Last page" msgstr "_Utolsó oldal" #: src/ui.py:42 msgid "_Zoom in" msgstr "_Nagyítás" #: src/ui.py:44 msgid "Zoom _out" msgstr "_Kicsinyítés" #: src/ui.py:46 msgid "O_riginal size" msgstr "E_redei méret" #: src/ui.py:48 msgid "_Close" msgstr "_Bezárás" #: src/ui.py:50 msgid "_Quit" msgstr "_Kilépés" #: src/ui.py:52 msgid "_Rotate 90 degrees CW" msgstr "A kép elfo_rgatása 90 fokkal" #: src/ui.py:54 msgid "Rotate 180 de_grees" msgstr "A kép e_lforgatása 180 fokkal" #: src/ui.py:56 msgid "Rotat_e 90 degrees CCW" msgstr "A kép _elforgatása -90 fokkal" #: src/ui.py:58 msgid "Fli_p horizontally" msgstr "Tükrözés _vízszintesen" #: src/ui.py:60 msgid "Flip _vertically" msgstr "Tükrözés _függőlegesen" #: src/ui.py:62 msgid "Manual _Zoom" msgstr "_Kézi nagyítás" #: src/ui.py:63 msgid "Open _recent" msgstr "_Legutóbbi fájlok" #: src/ui.py:64 msgid "_Bookmarks" msgstr "_Könyvjelzők" #: src/ui.py:65 msgid "T_oolbars" msgstr "_Eszköztárak" #: src/ui.py:66 msgid "_Edit" msgstr "S_zerkesztés" #: src/ui.py:67 msgid "_File" msgstr "_Fájl" #: src/ui.py:68 msgid "_View" msgstr "_Nézet" #: src/ui.py:69 msgid "_Go" msgstr "_Ugrás" #: src/ui.py:70 msgid "_Help" msgstr "_Súgó" #: src/ui.py:71 msgid "_Transform" msgstr "Áta_lakítás" #: src/ui.py:75 msgid "_Fullscreen" msgstr "_Teljes képernyő" #: src/ui.py:77 msgid "_Double page mode" msgstr "_Dupla lapos mód" #: src/ui.py:79 msgid "_Toolbar" msgstr "_Eszköztár" #: src/ui.py:81 msgid "_Menubar" msgstr "_Menüsor" #: src/ui.py:83 msgid "St_atusbar" msgstr "Állap_otsor" #: src/ui.py:85 msgid "S_crollbars" msgstr "Gö_rdítősávok" #: src/ui.py:87 msgid "Th_umbnails" msgstr "_Bélyegképek" #: src/ui.py:89 msgid "H_ide all" msgstr "M_inden elrejtve" #: src/ui.py:91 msgid "_Manga mode" msgstr "_Manga mód" #: src/ui.py:93 msgid "_Keep transformation" msgstr "Á_talakítás megtartása" #: src/ui.py:95 msgid "Run _slideshow" msgstr "Diavetítés _indítása" #: src/ui.py:97 msgid "Magnifying _glass" msgstr "N_agyító" #: src/ui.py:103 msgid "_Best fit mode" msgstr "_Legjobb illeszkedés" #: src/ui.py:105 msgid "Fit _width mode" msgstr "_Szélességhez igazítás" #: src/ui.py:107 msgid "Fit _height mode" msgstr "Magasság_hoz igazítás" #: src/ui.py:109 msgid "M_anual zoom mode" msgstr "Ké_zi nagyítás" #: src/ui.py:115 msgid "_About" msgstr "_Névjegy" #: src/ui.py:117 msgid "_View comments..." msgstr "Megjegy_zések megtekintése" #: src/ui.py:119 msgid "_Edit archive..." msgstr "_Arhívum szerkesztése..." #: src/ui.py:121 msgid "_Open..." msgstr "_Megnyitás..." #: src/ui.py:123 msgid "_Properties" msgstr "_Tulajdonságok" #: src/ui.py:125 msgid "_Enhance image..." msgstr "Kép k_iemelése" #: src/ui.py:128 msgid "_Thumbnail maintenance..." msgstr "Bélyegképek kar_bantartása" #: src/ui.py:130 msgid "Pr_eferences" msgstr "B_eállítások" #: src/ui.py:134 msgid "_Library..." msgstr "_Gyűjtemény" #: src/ui.py:284 msgid "First page" msgstr "Első oldal" #: src/ui.py:286 msgid "Previous page" msgstr "Előző oldal" #: src/ui.py:287 msgid "Next page" msgstr "Következő oldal" #: src/ui.py:288 msgid "Last page" msgstr "Utolsó oldal" #: src/ui.py:299 msgid "Manga mode" msgstr "Manga mód" #: src/ui.py:300 msgid "Magnifying glass" msgstr "Nagyító" comix-4.0.4/messages/hu/LC_MESSAGES/comix.mo0000644000175000001440000006062611137627234017237 0ustar sorkusersTa &)-<W YEd x     M9 T_!g.].53d$*ROB8k     !E67|+"("H"k %%  5 GUg pzrJ <   ! ! 2!?! N!\! b!m!~!!!!!!4"#"L"6# I#+T### ## ## ####A$U$ i$u$$ $$$$$$$%!% 5% @%M%^%Hg%%% %%%% & && 6&B& H&S& X&d&+x&4&&b' u' ' ' 'O' ' ((#/(S(h(|((.($()")6) I))S)})))))) ) ) )))*5 *UC* *-* **+ + +?=+}, ,.,,"q--W. m. w. . .#.)..r/1 0;0O0e0 0a01 2)2B2 b2Xo22!2{20w3 333445-5gK5 5 5 55 55 566 62686I6\6n6 t6 6666 6 6 66 666 67 7"7<7 E7P7V7h7q7i8{8 8,8B89 9%9@9.V99}9*:H:g:|::: : : :R:41; f; r;3|;D;p;$f<P<G<$=/=`=RG>?>>? ??? ?'?? @ @@ AA .AiOAgA!!B CB QB3[B8B&B9B,)C,VC3C1CCDD"D5DED!]DD D DDE>TFFFFFFGG G*GCG^GvGGGG@wH9H_HRIeI-wII&IIIJJJ.J 5JBJWVJJ JJJ J JK KK 5K ?K JKTK qK|KK KUKLLL+*L#VLzL LL#LL L LLL M$M1BMtMMNN .Nk8 YdrS=c)Wt%TLD#l ^ aERy[ b}{ChJV]/no2x .,59Mg+(~v?O$`jI|4GzZXP"QeUNi_q&@ %d comments%d pages(Copy)A collection by that name already exists.A file named '%s' already exists. Do you want to replace it?AboutAccessedAdd a new empty collection.Add booksAdd books to '%s'.Add collectionAdd information about all files opened from within Comix to the shared recent files list.Add more books to the library.Add new collection?Added booksAdding '%s'...Adding booksAll ArchivesAll booksAll filesAll imagesAll stored bookmarks will be removed. Are you sure that you want to continue?Always use this selected colour as the background colour.AppearanceArchiveArchives are stored as ZIP files.Automatically add the books to this collectionAutomatically adjust contrast (both lightness and darkness), separately for each colour band.Automatically adjust contrast.Automatically hide all toolbars in fullscreen.Automatically open the last viewed file on startup.Automatically open the next archive in the directory when flipping past the last page, or the previous archive when flipping past the first page.Automatically open the next archive.Automatically open, on startup, the file that was open when Comix was last closed.Automatically pick a background colour that fits the viewed image.Automatically rotate images according to their metadata.Automatically rotate images when an orientation is specified in the image metadata, such as in an Exif tag.BackgroundBehaviourBest fit modeBrazilian Portuguese translationBrightnessBzip2 compressed tar archiveCacheCache the images that are next to the currently viewed image in order to speed up browsing. Since the speed improvements are quite big, it is recommended that you have this preference set, unless you are running short on free RAM.Calculating...Catalan translationCleanupCleanup thumbnailsClear all bookmarks?Comix is an image viewer specifically designed to handle comic books.Comix is licensed under the GNU General Public License.Comment extensionsCommentsContrastCould not add a new collection called '%s'.Could not change the name to '%s'.Could not duplicate collection.Could not find RAR file extractor!Could not open %s: Is a directory.Could not open %s: No such file.Could not open %s: Permission denied.Could not open %s: Unknown file type.Could not read %sCover sizeCreditsCroatian translationCzech translationDefault modesDefault zoom modeDefaultsDeveloperDisplayDisplay only one image in double page mode, if the image's width exceeds its height. The result of this is that scans that span two pages are displayed properly (i.e. alone) also in double page mode.Display only those books that have the specified text string in their full path. The search is not case sensitive.Do you want to cleanup orphaned and outdated thumbnails now?Double page modeDuplicate collectionDutch translationEdit archiveEdit bookmarksEnhance imageFilesFirst pageFit _height modeFit _width modeFit height modeFit width modeFli_p horizontallyFlip _verticallyFlip pages when scrolling "off the page" with the scroll wheel or with the arrow keys. It takes three consecutive "steps" with the scroll wheel or the arrow keys for the pages to be flipped.Flip pages when scrolling off the edges of the page.Flip two pages in double page mode.Flip two pages, instead of one, each time we flip pages in double page mode.French translationFullscreenGerman translation and Nautilus thumbnailerGreek translationGzip compressed tar archiveH_ide allHungarian translationIcon designImageImage scalingImagesImportIndonesian translationIt reads ZIP, RAR and tar archives, as well as plain image files.Italian translationJPEG imagesJapanese translationKorean translationLast pageLibraryLocationM_anual zoom modeMagnification factorMagnifying GlassMagnifying _glassMagnifying glassMagnifying glass size (in pixels)Manga modeManual _ZoomManual zoom modeModifiedMove books from '%(source collection)s' to '%(destination collection)s'.NameNew collectionNext pageNo images in '%s'Number of removed thumbnailsO_riginal sizeOpenOpen _recentOpen the selected book.Other filesOwnerPNG imagesPagePermissionsPersian translationPlease enter a name for the new collection.Please enter a new name for the selected collection.Please note that the only files that are automatically added to this list are those files in archives that Comix recognizes as comments.Polish translationPr_eferencesPreferencesPrevious pagePropertiesPut the collection '%(subcollection)s' in the collection '%(supercollection)s'.RAR archiveRAR archivesRemove books from the library?Remove collection from the library?Remove collection...Remove from archiveRemove from the library...Remove from this collectionRemoved %(num)d book(s) from '%(collection)s'.Removed %d book(s) from the library.Removed thumbnail for '%s'Removing thumbnailsRename collection?Rename...Replacing it will overwrite its contents.RootRotat_e 90 degrees CCWRotate 180 de_greesRotationRun _slideshowRussian translationSLIDESHOWS_crollbarsSaturationSaveScrollSearchSet the magnification factor of the magnifying glass.Set the size of the magnifying glass. It is a square with a side of this many pixels.SharpnessShow only one wide image in double page mode.Show page numbers on thumbnails.Simplified Chinese translationSizeSlideshowSlideshow delay (in seconds)Some old files (that were used for storing preferences, the library, bookmarks etc. for older versions of Comix) were found on your computer. If you do not plan on using the older versions of Comix again, you should remove these files in order to save some disk space. Do you want these files to be removed for you now?Spanish translationSt_atusbarStore information about recently opened files.Store thumbnails for opened files according to the freedesktop.org specification. These thumbnails are shared by many other applications, such as most file managers.Store thumbnails for opened files.Stretch images to a size that is larger than their original size if the current zoom mode requests it. If this preference is unset, images are never scaled to be larger than their original size.Stretch small images.T_oolbarsTar archiveTar archivesTh_umbnailsThe new archive could not be saved!The original files have not been removed.The selected books will be removed from the library (but the original files will be untouched). Are you sure that you want to continue?The selected collection will be removed from the library (but the books and subcollections in it will remain). Are you sure that you want to continue?There are deprecated files left on your computer.Thumbnail directoryThumbnail maintenanceThumbnail size (in pixels)ThumbnailsThumbnails for files (such as image files and comic book archives) are stored in your home directory. Many different applications use and create these thumbnails, but sometimes thumbnails remain even though the original files have been removed - wasting space. This dialog can cleanup your stored thumbnails by removing orphaned and outdated thumbnails.Total number of thumbnailsTotal size of removed thumbnailsTotal size of thumbnailsTraditional Chinese translationTransparencyTreat all files found within archives, that have one of these file endings, as comments.Unknown filetypeUse a cache to speed up browsing.Use a grey checkered background for transparent images. If this preference is unset, the background is plain white instead.Use checkered background for transparent images.Use double page mode by default.Use dynamic background colour.Use fullscreen by default.Use manga mode by default.Use smart scrolling with the space key. Normally the space key scrolls only right down (or up when shift is pressed), but with this preference set it also scrolls sideways and so tries to follow the natural reading order of the comic book.Use smart space key scrolling.Use this colour as backgroundYou need either the rar or the unrar program installed in order to read RAR (.cbr) files.ZIP archiveZIP archivesZoom _out_About_Add bookmark_Best fit mode_Bookmarks_Clear bookmarks..._Close_Double page mode_Edit_Edit archive..._Edit bookmarks..._Enhance image..._File_First page_Fullscreen_Go_Help_Keep transformation_Last page_Library..._Manga mode_Menubar_Next page_Open..._Previous page_Properties_Quit_Rotate 90 degrees CW_Thumbnail maintenance..._Toolbar_Transform_View_View comments..._Zoom inProject-Id-Version: Comix 4.0.3 POT-Creation-Date: PO-Revision-Date: 2009-01-26 19:34+0100 Last-Translator: Ernő Drabik Language-Team: MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit Megjegyzések: %d%d lapok(Másolás)A megadott nevű gyűjtemény már létezik.A megadott nevű állomány már létezik: '%s'. Akarja a cserét?NévjegyUtolsó elérésÚj, üres gyűjtemény hozzáadása.Könyvek hozzáadásaKönyvek hozzáadása a következőhöz: '%s'.Gyűjtemény hozzáadásaA program a Comix-ban megnyitott állományok adatát hozzáadja majd a megosztott, utoljára használt fájlok listájához.Több könyv hozzáadása a könyvtárhoz.Új gyűjtemény hozzáadása?Hozzáadott könyvekHozzáadás '%s'...Könyvek hozzáadásaMinden archívumMinden könyvMinden fájlMinden képAz összes eltárolt könyvjelző eltávolítására készül. Biztosan folytatja?Mindig a kiválasztott szín legyen a háttérszín.MegjelenésArchívumAz arhívumok ZIP állományként lesznek tárolva.A könyveket automatikusan adja hozzá az aktuális gyűjteményhez.A kontraszt automatikus beállítása (mind a világosságot és a sötétséget is) minden egyes színsávhoz.Kontraszt automatikus beállítása.Teljes képernyős módban az összes eszköztár automatikusan legyen elrejtve.Programindításkor az utoljára megjelenített állomány betöltése.Automatikusan megnyitja a következő arhívumot, ha az aktuális utolsó lapját elhagyjuk, illetve az előzőt, ha az első kép elé lépünk.A következő arhívum automatikus megnyitása.A program automatikusan nyissa meg induláskor a Comix bezárásakor megjelenített állományt.A program magától válasszon egy háttérszínt, ami az aktuális képhez illik.A képek automatikus elforgatása a metaadatának megfelelően.Ha a képek metaadatában meghatározott megjelenítési irány található (például: egy EXIF cimkében), akkor a program automatikusan elvégzi az elforgatást.HáttérViselkedésLegjobb illeszkedésBrazíliai portugál fordításFényerőtar archívum (bzip2-vel tömörített)GyorsítótárA Comix a gyorsabb böngészés eléréséhez az aktuálisan megjelenített kép melletti fájlokat gyorstárazza. Ajánlott ezt az opciót bekapcsolni, mivel nagy sebességjavuláshoz vezet, kivéve ha kevés a memória.Számolás...Katalán fordításTisztításBélyegképek törléseTörli az összes könyvjelzőt?A Comix egy képnézegető alkalmazás, melyet kimondottan a képregények megjelenítéséhez terveztek.A Comix a GNU General Public License (GNU Általános Nyilvános Licenc) alapján kerül terjesztésre.Megjegyzésfájlok kiterjesztéseMegjegyzésekKontrasztNem lehetett hozzáadni a '%s' nevű gyűjteményt.A nevet nem lehet megváltoztatni a következőre: '%s'.A gyűjteményt nem lehet duplikálni.Nem található a RAR fájlokat kicsomagoló alkalmazás!%s-t nem lehet megnyitni: Ez egy könyvtár.%s-t nem lehet megnyitni: Nincs ilyen fájl.%s-t nem lehet megnyitni: Hozzáférés megtagadva.%s-t nem lehet megnyitni: Ismeretlen fájltípus.Nem olvasható a(z) %sBorító méreteKözreműködőkHorvát fordításCseh fordításAlapértelmezett módokAlapértelmezett nagyítási módAlapértelmezésekFejlesztőKépernyőA dupla lapos megjelenítési módban csak egy képet jelenít meg a program akkor, ha a kép szélessége eléri a magasságát. Tehát ha egy kép két lapból tevődik össze, akkor még dupla lapos módban is csak a széles kép lesz egyedül megjelenítve.Csak azokat a könyveket jeleníti meg, melyek a teljes elérési útvonalukban tartalmazzák a megadott szövegrészt. A keresés nem kisbetű/nagybetű érzékeny.Szeretné eltávolítani az árva és elavult bélyegképeket?Dupla lapos módGyűjtemény duplikálásaHolland fordításArchívum szerkesztéseKönyvjelzők szerkesztéseKép kiemeléseFájlokElső oldalMagasság_hoz igazítás_Szélességhez igazításMagassághoz igazításSzélességhez igazításTükrözés _vízszintesenTükrözés _függőlegesenAz egérgörgővel, vagy a nyílbillentyűkkel a lapról való "átgördítéskor" lapozás fog történni. Három egymást követő "lépés - gördítés" szükséges ehhez.Lapozás a lap alján vagy tetején történő kigördítéskor.Dupla lapos megjelenítési módban két oldal lapozása.Két lapot lapozzon a program egy helyett, amikor a dupla lapos megjelenítési mód az aktív.Francia fordításTeljes képernyőNémet fordítás, Nautilus bélyegkép modulGörög fordítástar archívum (gzip-pel tömörített)M_inden elrejtveMagyar fordításIkonok kivitelezéseKépKép méretezéseKépekImportálásIndonéz fordításA program a szokásos képfájlok mellett megnyitja a ZIP, RAR és tar arhívumokat is.Olasz fordításJPEG képekJapán fordításKoreai fordításUtolsó oldalKönyvtárHelyKé_zi nagyításNagyítási tényezőNagyítóN_agyítóNagyítóNagyító mérete (pixelben)Manga mód_Kézi nagyításKézi nagyításMódosítvaKönyvek mozgatása innen: '%(source collection)s' ide: '%(destination collection)s'.NévÚj gyűjtemény.Következő oldalNincsenek képek a következő helyen: '%s'Eltávolított bélyegképek számaE_redei méretMegnyitás_Legutóbbi fájlokA kiválasztott könyv megnyitása.Egyéb állományokTulajdonosPNG képekOldalJogosultságokPerzsa fordításAdja meg az új gyűjtemény nevét.Adja meg a kiválasztott gyűjtemény új nevét.Vegye figyelembe, hogy itt csak azon arhívumbeli fájlok jelennek meg automatikusan, melyeket a Comix megjegyzésfájlként ismer fel.Lengyel fordításB_eállításokBeállításokElőző oldalTulajdonságokA '%(subcollection)s' gyűjtemény áthelyezése a következőbe: '%(supercollection)s'.RAR archívumRAR archívumokEltávolítja a könyveket a könyvtárból?Törli a gyűjteményt a könyvtárból?Gyűjtemény eltávolítása...Törlés a gyűjteményből.Eltávolítás a könyvtárból.Eltávolítás az aktuális gyűjteményből.Removed %(num)d book(s) from '%(collection)s'.A könyvtárból eltávolítva a következő(k): %d.'%s' - eltávolított bélyegképekBélyegképek eltávolításaÁtnevezi a gyűjteményt?Átnevezés...A csere felülírja az eredeti tartalmat.AlapkönyvtárA kép _elforgatása -90 fokkalA kép e_lforgatása 180 fokkalElforgatásDiavetítés _indításaOrosz fordításDiavetítésGö_rdítősávokTelítettségMentésGördítésKeresésA nagyító nagyítási tényezőjének beállítása.A nagyító lencse méreteinek megadása. Ez egy négyzet, aminek az oldalai megadott pixelszámúak.ÉlességCsak a széles kép megjelenítése dupla lapos módban.A lapok sorszáma legyen rajta a bélyegképen.Egyszerűsített kínai fordításMéretDiavetítésDiavetítés késleltetése (másodpercben megadva)Néhány régi fájl (amiket a régebbi Comix verziók használtak beállítások, könyvtárak könyvjelzők, stb. tárolására) található a számítógépén. Ha már nem fog régebbi Comix verziókat használni, akkor tanácsos ezeket eltávolítani helymegtakarítás miatt. Szeretné eltávolítani őket most?Spanyol fordításÁllap_otsorAz aktuálisan megnyitott állományok adatainak tárolása.A megnyitott fájlok bélyegképei legyenek eltárolva a freedesktop.org előírásainak megfelelően. Ezen bélyegképeket más alkalmazások, például a legtöbb fájlkezelő is használhatja majd.A megnyitott fájlok bélyegképeinek eltárolása.Ha az aktuális nagyítási mód igényli, akkor a program nyújtsa ki az eredetinél nagyobb méretűre a képeket. Amennyiben ez az opció nincs kiválasztva, akkor a képek ez eredeti nagyságuknál nem fognak nagyobbra nyúlni.Kisméretű képek kinyújtása._EszköztárakTar archívumTar archívumok_BélyegképekNem lehet elmenteni az új arhívumot!Az eredeti fájlok megmaradtak.A kiválasztott könyvek a könyvtárból eltávolításra kerülnek (az eredeti fájlok természetesen a helyükön maradnak). Biztosan folytatja?A kiválasztott gyűjtemény kikerül a könyvtárból (de a benne lévő könyvek és algyűjtemények megmaradnak). Biztosan folytatja?Érvénytelenített fájlok találhatók a számítógépén.Bélyegképek könyvtáraBélyegképek karbantartásaBélyegkép mérete (pixelben megadva)BélyegképekA fájlok bélyegképei (például képek és képregény könyv arhívumok) a felhasználói könyvtárban tárolódnak. Több különböző alkalmazás használja és hoz létre ilyen bélyegképeket, de ezek néha még az eredeti fájl törlése után is megmaradnak helypazarló módon. Ez a párbeszédablak segít az efféle árva és elavult bélyegképek törlésében.Bélyegképek számaAz eltávolított bélyegképek méreteBélyegképek méreteHagyományos kínai fordításÁtlátszóságAz itt megadott kiterjesztésű állományokat az arhívumokban megjegyzésfájlként kezeli majd a program.Ismeretlen fájltípusA program használjon gyorsítótárat a gyorsabb böngészés eléréséhez.Az átlátszó képek háttere tarka legyen (szürke). Ha ez a beállítás nem aktív, akkor a háttérszín teljesen fehér lesz.Az átlátszó képek háttere tarka legyen.A kétlapos megjelenítési mód legyen az alapértelmezett.Változó háttérszín használataA teljes képernyős megjelenítési mód legyen az alapértelmezett.A manga mód legyen az alapértelmezett.Intelligens gördítés használata a szóköz billentyűvel. Alapértelmezés szerint a szóköz csak lefelé gördít (vagy a váltó/shift gombot lenyomva felfelé), de ezt a beállítást használva oldalirányba is gördíti a képet, megpróbálva a képregényes könyv természetes olvasási sorrendjét követni.A szóköz billentyű intelligens gördítést végez.A következő szín legyen a háttérszínA RAR (.cbr) fájlok megnyitásához a rar, vagy az unrar alkalmazást telepítenie kell.Zip archívumZIP archívumok_Kicsinyítés_NévjegyKönyvjelző hozzá_adása_Legjobb illeszkedés_KönyvjelzőkKönyvjelzők _törlése..._Bezárás_Dupla lapos módS_zerkesztés_Arhívum szerkesztése...Könyvjelzők sz_erkesztése...Kép k_iemelése_Fájl_Első oldal_Teljes képernyő_Ugrás_SúgóÁ_talakítás megtartása_Utolsó oldal_Gyűjtemény_Manga mód_Menüsor_Következő oldal_Megnyitás...Előző _oldal_Tulajdonságok_KilépésA kép elfo_rgatása 90 fokkalBélyegképek kar_bantartása_EszköztárÁta_lakítás_NézetMegjegy_zések megtekintése_Nagyításcomix-4.0.4/messages/pl/LC_MESSAGES/comix.po0000644000175000001440000011647011141572465017240 0ustar sorkusers# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR ORGANIZATION # FIRST AUTHOR , YEAR. # msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2008-11-22 02:42+0100\n" "PO-Revision-Date: 2009-02-02 14:19+0100\n" "Last-Translator: Dariusz Jakoniuk \n" "Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" "Generated-By: pygettext.py 1.5\n" # # File: src/about.py, line: 18 # File: src/about.py, line: 67 #: src/about.py:19 #: src/about.py:68 msgid "About" msgstr "O programie" # # File: src/about.py, line: 55 #: src/about.py:56 msgid "Comix is an image viewer specifically designed to handle comic books." msgstr "Comix jest przegladarką obrazów stworzoną specjalnie do ogladania komiksów." # # File: src/about.py, line: 57 #: src/about.py:58 msgid "It reads ZIP, RAR and tar archives, as well as plain image files." msgstr "Comix czyta archiwa ZIP, RAR i tar, jak również zwykłe obrazy." # # File: src/about.py, line: 59 #: src/about.py:60 msgid "Comix is licensed under the GNU General Public License." msgstr "Comix jest rozpowszechniany na licencji GNU General Public License." # # File: src/about.py, line: 75 #: src/about.py:83 msgid "Developer" msgstr "Programista" # # File: src/about.py, line: 77 #: src/about.py:84 #: src/about.py:85 msgid "Simplified Chinese translation" msgstr "Tłumaczenie na uproszczony chinski" # # File: src/about.py, line: 78 #: src/about.py:86 msgid "Spanish translation" msgstr "Tłumaczenie na hiszpański" # # File: src/about.py, line: 79 #: src/about.py:87 msgid "Brazilian Portuguese translation" msgstr "Tłumaczenie na portugalski brazylijski" # # File: src/about.py, line: 81 #: src/about.py:88 msgid "German translation and Nautilus thumbnailer" msgstr "Tłumaczenie na niemiecki i thumbnailer w Nautilusie" # # File: src/about.py, line: 82 #: src/about.py:89 #: src/about.py:90 msgid "Italian translation" msgstr "Tłumaczenie na włoski" # # File: src/about.py, line: 83 #: src/about.py:91 msgid "Dutch translation" msgstr "Tłumaczenie na holenderski" # # File: src/about.py, line: 84 #: src/about.py:92 msgid "French translation" msgstr "Tłumaczenie na francuski" # # File: src/about.py, line: 85 #: src/about.py:93 #: src/about.py:94 msgid "Polish translation" msgstr "Tłumaczenie na polski" # # File: src/about.py, line: 86 #: src/about.py:95 msgid "Greek translation" msgstr "Tłumaczenie na grecki" # # File: src/about.py, line: 87 #: src/about.py:96 msgid "Catalan translation" msgstr "Tłumaczenie na kataloński" # # File: src/about.py, line: 88 #: src/about.py:97 #: src/about.py:98 msgid "Traditional Chinese translation" msgstr "Tłumaczenie na tradycyjny chiński" # # File: src/about.py, line: 89 #: src/about.py:99 msgid "Japanese translation" msgstr "Tłumaczenie na japoński" # # File: src/about.py, line: 90 #: src/about.py:100 msgid "Hungarian translation" msgstr "Tłumaczenie na węgierski" # # File: src/about.py, line: 91 #: src/about.py:101 msgid "Russian translation" msgstr "Tłumaczenie na rosyjski" # # File: src/about.py, line: 92 #: src/about.py:102 msgid "Croatian translation" msgstr "Tłumaczenie na chorwacki" # # File: src/about.py, line: 93 #: src/about.py:103 msgid "Korean translation" msgstr "Tłumaczenie na kareański" # # File: src/about.py, line: 94 #: src/about.py:104 msgid "Persian translation" msgstr "Tłumaczenie na perski" # # File: src/about.py, line: 95 #: src/about.py:105 msgid "Indonesian translation" msgstr "Tłumaczenie na indonezyjski" # # File: src/about.py, line: 96 #: src/about.py:106 msgid "Czech translation" msgstr "Tłumaczenie na czeski" # # File: src/about.py, line: 97 #: src/about.py:107 msgid "Icon design" msgstr "Projekt ikon" # # File: src/about.py, line: 106 #: src/about.py:114 msgid "Credits" msgstr "Podziękowania" # # File: src/archive.py, line: 66 #: src/archive.py:66 msgid "Could not find RAR file extractor!" msgstr "Nie można znaleźć ekstraktora RAR!" # # File: src/archive.py, line: 68 #: src/archive.py:68 msgid "You need either the rar or the unrar program installed in order to read RAR (.cbr) files." msgstr "Do odczytu RAR (.cbr) potrzebujesz mieć zainstalowany program rar albo unrar." # # File: src/archive.py, line: 301 #: src/archive.py:305 msgid "ZIP archive" msgstr "Archiwum ZIP" # # File: src/archive.py, line: 302 #: src/archive.py:306 msgid "Tar archive" msgstr "Archiwum tar" # # File: src/archive.py, line: 303 #: src/archive.py:307 msgid "Gzip compressed tar archive" msgstr "Archiwum tar skopresowane przy użyciu gzip" # # File: src/archive.py, line: 304 #: src/archive.py:308 msgid "Bzip2 compressed tar archive" msgstr "Archiwum tar skopresowane przy użyciu bzip2" # # File: src/archive.py, line: 305 #: src/archive.py:309 msgid "RAR archive" msgstr "Archiwum RAR" # # File: src/bookmark.py, line: 27 #: src/bookmark.py:28 msgid "_Add bookmark" msgstr "_Dodaj zakładkę" # # File: src/bookmark.py, line: 29 #: src/bookmark.py:30 msgid "_Edit bookmarks..." msgstr "_Edytuj zakładki…" # # File: src/bookmark.py, line: 31 #: src/bookmark.py:32 msgid "_Clear bookmarks..." msgstr "_Usuń zakładki…" # # File: src/bookmark.py, line: 77 #: src/bookmark.py:78 msgid "Clear all bookmarks?" msgstr "Usunąć wszystkie zakładki?" # # File: src/bookmark.py, line: 79 #: src/bookmark.py:80 msgid "All stored bookmarks will be removed. Are you sure that you want to continue?" msgstr "Wszystkie zakładki zostaną usunięte. Czy jesteś pewien, że chcesz kontynuować?" # # File: src/bookmark.py, line: 229 #: src/bookmark.py:230 msgid "Edit bookmarks" msgstr "Edytuj zakładki" # # File: src/bookmark.py, line: 255 # File: src/edit.py, line: 267 #: src/bookmark.py:256 #: src/edit.py:270 msgid "Name" msgstr "Imię" # # File: src/bookmark.py, line: 256 #: src/bookmark.py:257 msgid "Page" msgstr "Strona" # # File: src/comment.py, line: 16 # File: src/preferences.py, line: 288 #: src/comment.py:16 #: src/preferences.py:299 msgid "Comments" msgstr "Uwagi" # # File: src/comment.py, line: 53 #: src/comment.py:53 #, python-format msgid "Could not read %s" msgstr "Nie mozna odczytać %s" # # File: src/deprecated.py, line: 16 #: src/deprecated.py:16 msgid "There are deprecated files left on your computer." msgstr "Na komputerze są przestarzałe pliki." # # File: src/deprecated.py, line: 22 #: src/deprecated.py:22 msgid "Some old files (that were used for storing preferences, the library, bookmarks etc. for older versions of Comix) were found on your computer. If you do not plan on using the older versions of Comix again, you should remove these files in order to save some disk space. Do you want these files to be removed for you now?" msgstr "Na komputerze znaleziono przestarzałe pliki (używane do przechowywania ustawień, biblioteki, ulubionych zakładek dla starszych wersji programu Comix). Jeżeli nie planujesz używać starszej wersji programu Comix, powinieneś usunąć te pliki, aby oszczędzić miejsce na dysku. Czy chcesz usunąć te pliki?" # # File: src/edit.py, line: 28 #: src/edit.py:29 msgid "Edit archive" msgstr "Edytuj archiwum" # # File: src/edit.py, line: 36 #: src/edit.py:37 msgid "Import" msgstr "Importuj" # # File: src/edit.py, line: 50 #: src/edit.py:51 msgid "Images" msgstr "Obrazki" # # File: src/edit.py, line: 51 #: src/edit.py:52 msgid "Other files" msgstr "Inne pliki" # # File: src/edit.py, line: 99 #: src/edit.py:101 msgid "The new archive could not be saved!" msgstr "Nowe archiwum nie może być zapisane!" # # File: src/edit.py, line: 101 #: src/edit.py:103 msgid "The original files have not been removed." msgstr "Oryginalne pliki nie zostały usunięte." # # File: src/edit.py, line: 115 #: src/edit.py:117 msgid "Archives are stored as ZIP files." msgstr "Archiwa są przechowywane jako pliki zip." # # File: src/edit.py, line: 168 # File: src/edit.py, line: 285 #: src/edit.py:170 #: src/edit.py:288 msgid "Remove from archive" msgstr "Usuń z archiwum" # # File: src/edit.py, line: 255 #: src/edit.py:258 msgid "Please note that the only files that are automatically added to this list are those files in archives that Comix recognizes as comments." msgstr "Należy zauwazyć, że jedynymi plikami jakie są automatycznie dodawane do tej listy, są pliki w archiwach, które Comix rozpoznaje jako komentarze." # # File: src/edit.py, line: 270 #: src/edit.py:273 msgid "Size" msgstr "Rozmiar" # # File: src/enhance.py, line: 51 #: src/enhance.py:51 msgid "Enhance image" msgstr "Popraw obrazek" # # File: src/enhance.py, line: 52 #: src/enhance.py:52 msgid "Defaults" msgstr "Ustawienia domyślne" # # File: src/enhance.py, line: 79 #: src/enhance.py:79 msgid "Brightness" msgstr "Jasność" # # File: src/enhance.py, line: 90 #: src/enhance.py:90 msgid "Contrast" msgstr "Kontrast" # # File: src/enhance.py, line: 101 #: src/enhance.py:101 msgid "Saturation" msgstr "Nasycenie" # # File: src/enhance.py, line: 112 #: src/enhance.py:112 msgid "Sharpness" msgstr "Ostrość" # # File: src/enhance.py, line: 126 #: src/enhance.py:126 msgid "Automatically adjust contrast." msgstr "Automatycznie dostosuj kontrast." # # File: src/enhance.py, line: 128 #: src/enhance.py:128 msgid "Automatically adjust contrast (both lightness and darkness), separately for each colour band." msgstr "Automatycznie dostosuj kontrast (jasość i ciemność), oddzielnie dla każdego koloru." # # File: src/filechooser.py, line: 35 # File: src/library.py, line: 489 #: src/filechooser.py:38 #: src/library.py:490 msgid "Open" msgstr "Otwórz" # # File: src/filechooser.py, line: 39 #: src/filechooser.py:42 msgid "Save" msgstr "Zapisz" # # File: src/filechooser.py, line: 75 #: src/filechooser.py:78 msgid "All files" msgstr "Wszystkie pliki" # # File: src/filechooser.py, line: 78 #: src/filechooser.py:81 msgid "All Archives" msgstr "Wszystkie archiwa" # # File: src/filechooser.py, line: 82 #: src/filechooser.py:85 msgid "ZIP archives" msgstr "Archiwa ZIP" # # File: src/filechooser.py, line: 84 #: src/filechooser.py:87 msgid "RAR archives" msgstr "Archiwa RAR" # # File: src/filechooser.py, line: 86 #: src/filechooser.py:89 msgid "Tar archives" msgstr "Archiwa TAR" # # File: src/filechooser.py, line: 125 #: src/filechooser.py:134 #, python-format msgid "A file named '%s' already exists. Do you want to replace it?" msgstr "Plik o nazwie „%s“ już istnieje. Czy chcesz go nadpisać?" # # File: src/filechooser.py, line: 128 #: src/filechooser.py:137 msgid "Replacing it will overwrite its contents." msgstr "Nadpisanie pliku zmieni jego zawartość." # # File: src/filechooser.py, line: 171 # File: src/filechooser.py, line: 249 #: src/filechooser.py:182 #: src/filechooser.py:260 msgid "All images" msgstr "Wszystkie obrazki" # # File: src/filechooser.py, line: 173 # File: src/filechooser.py, line: 251 #: src/filechooser.py:184 #: src/filechooser.py:262 msgid "JPEG images" msgstr "Obrazy JPEG" # # File: src/filechooser.py, line: 174 # File: src/filechooser.py, line: 252 #: src/filechooser.py:185 #: src/filechooser.py:263 msgid "PNG images" msgstr "Obrazy PNG" # # File: src/filechooser.py, line: 195 #: src/filechooser.py:206 msgid "Automatically add the books to this collection" msgstr "Automatycznie dodaj ksiązki do tej kolekcji" # # File: src/filehandler.py, line: 209 #: src/filehandler.py:209 #, python-format msgid "Could not open %s: Is a directory." msgstr "Nie można otworzyć %s: Jest katalogiem." # # File: src/filehandler.py, line: 213 #: src/filehandler.py:213 #, python-format msgid "Could not open %s: No such file." msgstr "Nie można otworzyć %s: Brak pliku." # # File: src/filehandler.py, line: 217 #: src/filehandler.py:217 #, python-format msgid "Could not open %s: Permission denied." msgstr "Nie można otworzyć %s: Brak dostępu." # # File: src/filehandler.py, line: 222 #: src/filehandler.py:222 #, python-format msgid "Could not open %s: Unknown file type." msgstr "Nie można otworzyć %s: Nieznany typ pliku." # # File: src/filehandler.py, line: 285 #: src/filehandler.py:285 #, python-format msgid "No images in '%s'" msgstr "Brak obrazów w „%s“" # # File: src/filehandler.py, line: 411 #: src/filehandler.py:413 msgid "Unknown filetype" msgstr "Nieznany typ pliku" # # File: src/librarybackend.py, line: 272 # File: src/librarybackend.py, line: 274 #: src/librarybackend.py:273 #: src/librarybackend.py:275 msgid "(Copy)" msgstr "(Kopia)" # # File: src/library.py, line: 38 #: src/library.py:38 msgid "Library" msgstr "Biblioteka" # # File: src/library.py, line: 150 #: src/library.py:150 msgid "Rename..." msgstr "Zmień nazwę…" # # File: src/library.py, line: 152 #: src/library.py:152 msgid "Duplicate collection" msgstr "Zduplikuj kolekcję" # # File: src/library.py, line: 154 #: src/library.py:154 msgid "Remove collection..." msgstr "Usuń kolekcję…" # # File: src/library.py, line: 202 #: src/library.py:202 msgid "All books" msgstr "Wszystkie książki" # # File: src/library.py, line: 231 #: src/library.py:231 msgid "Remove collection from the library?" msgstr "Czy usuńąć kolekcję z biblioteki?" # # File: src/library.py, line: 233 #: src/library.py:233 msgid "The selected collection will be removed from the library (but the books and subcollections in it will remain). Are you sure that you want to continue?" msgstr "Wybrana kolekcja zostanie usunięta z biblioteki (książki i podkolekcje w tej kolekcji pozostaną nadal w bibliotece). Czy jesteś pewny, że chcesz kontynuawać?" # # File: src/library.py, line: 251 #: src/library.py:251 msgid "Rename collection?" msgstr "Zmienić nazwę kolekcji?" # # File: src/library.py, line: 253 #: src/library.py:253 msgid "Please enter a new name for the selected collection." msgstr "Wpisz nową nazwę dla wybranej kolekcji. " # # File: src/library.py, line: 271 #: src/library.py:271 #, python-format msgid "Could not change the name to '%s'." msgstr "Nie można zmienić nazwy na „%s“." # # File: src/library.py, line: 275 # File: src/library.py, line: 881 #: src/library.py:275 #: src/library.py:882 msgid "A collection by that name already exists." msgstr "Kolekcja o tej nazwie już istnieje." # # File: src/library.py, line: 285 #: src/library.py:285 msgid "Could not duplicate collection." msgstr "Nie można zduplikować kolekcji." # # File: src/library.py, line: 382 #: src/library.py:382 msgid "Root" msgstr "Korzeń" # # File: src/library.py, line: 386 #: src/library.py:386 #, python-format msgid "Put the collection '%(subcollection)s' in the collection '%(supercollection)s'." msgstr "Umieść kolekcję „%(subcollection)s“ w kolekcji „%(supercollection)s“." # # File: src/library.py, line: 407 #: src/library.py:407 #, python-format msgid "Add books to '%s'." msgstr "Dodaj książki do „%s“." # # File: src/library.py, line: 411 #: src/library.py:411 #, python-format msgid "Move books from '%(source collection)s' to '%(destination collection)s'." msgstr "Przenieś książki z „%(source collection)s“ do „%(destination collection)s“." # # File: src/library.py, line: 492 #: src/library.py:493 msgid "Remove from this collection" msgstr "Usuń z tej kolekcji" # # File: src/library.py, line: 495 #: src/library.py:496 msgid "Remove from the library..." msgstr "Usuń z biblioteki…" # # File: src/library.py, line: 588 #: src/library.py:589 #, python-format msgid "Removed %(num)d book(s) from '%(collection)s'." msgstr "Usuń %(num)d książkę(książki) z „%(collection)s“." # # File: src/library.py, line: 597 #: src/library.py:598 msgid "Remove books from the library?" msgstr "Usuń książki z biblioteki?" # # File: src/library.py, line: 599 #: src/library.py:600 msgid "The selected books will be removed from the library (but the original files will be untouched). Are you sure that you want to continue?" msgstr "Wybrane książki zostaną usunięte z biblioteki (oryginalne pliki pozostaną nietknięte). Czy jesteś pewny, że chcesz kontynuować?" # # File: src/library.py, line: 609 #: src/library.py:610 #, python-format msgid "Removed %d book(s) from the library." msgstr "Usunięto %d książek z biblioteki." # # File: src/library.py, line: 769 #: src/library.py:770 msgid "Search" msgstr "Szukaj" # # File: src/library.py, line: 774 #: src/library.py:775 msgid "Display only those books that have the specified text string in their full path. The search is not case sensitive." msgstr "Wyświetlaj tylko te książki, które mają speczyficzny tekst w swojej pełnej ścieżce. Szukaj nie rozróżnia wielkich i małych liter." # # File: src/library.py, line: 776 #: src/library.py:777 msgid "Cover size" msgstr "Wielkość okładki" # # File: src/library.py, line: 789 #: src/library.py:790 msgid "Add books" msgstr "Dodaj książki" # # File: src/library.py, line: 793 #: src/library.py:794 msgid "Add more books to the library." msgstr "Dodaj więcej książek do biblioteki." # # File: src/library.py, line: 795 #: src/library.py:796 msgid "Add collection" msgstr "Dodaj kolekcję" # # File: src/library.py, line: 800 #: src/library.py:801 msgid "Add a new empty collection." msgstr "Dodaj nowa pustą kolekcję." # # File: src/library.py, line: 806 #: src/library.py:807 msgid "Open the selected book." msgstr "Otwórz zaznaczoną książkę." # # File: src/library.py, line: 832 # File: src/properties.py, line: 113 #: src/library.py:833 #: src/properties.py:118 #, python-format msgid "%d pages" msgstr "%d stron" # # File: src/library.py, line: 854 #: src/library.py:855 msgid "Add new collection?" msgstr "Dodać nową kolekcję?" # # File: src/library.py, line: 856 #: src/library.py:857 msgid "Please enter a name for the new collection." msgstr "Proszę wstawić nazwę nowej kolekcji." # # File: src/library.py, line: 862 #: src/library.py:863 msgid "New collection" msgstr "Nowa kolekcja" # # File: src/library.py, line: 876 #: src/library.py:877 #, python-format msgid "Could not add a new collection called '%s'." msgstr "Nie można dodać nowej kolekcji o nazwie „%s“." # # File: src/library.py, line: 910 #: src/library.py:911 msgid "Adding books" msgstr "Dodawanie książek" # # File: src/library.py, line: 930 #: src/library.py:931 msgid "Added books" msgstr "Dodane książki" # # File: src/library.py, line: 952 #: src/library.py:953 #, python-format msgid "Adding '%s'..." msgstr "Dodawanie „%s“…" # # File: src/main.py, line: 666 #: src/main.py:699 msgid "SLIDESHOW" msgstr "POKAZ SLAJDÓW" # # File: src/preferences.py, line: 78 #: src/preferences.py:80 msgid "Preferences" msgstr "Preferencje" # # File: src/preferences.py, line: 93 #: src/preferences.py:95 msgid "Background" msgstr "Tło" # # File: src/preferences.py, line: 95 #: src/preferences.py:97 msgid "Use this colour as background" msgstr "Użyj tego koloru jako tła" # # File: src/preferences.py, line: 97 #: src/preferences.py:99 msgid "Always use this selected colour as the background colour." msgstr "Zawsze używaj tego wybranego koloru, jako koloru tła." # # File: src/preferences.py, line: 102 #: src/preferences.py:104 msgid "Use dynamic background colour." msgstr "Używaj dynamicznego koloru tła." # # File: src/preferences.py, line: 106 #: src/preferences.py:108 msgid "Automatically pick a background colour that fits the viewed image." msgstr "Automatycznie wybierz kolor tła, który pasuje do ogladanego obrazka." # # File: src/preferences.py, line: 109 #: src/preferences.py:111 msgid "Thumbnails" msgstr "Miniatury" # # File: src/preferences.py, line: 110 #: src/preferences.py:112 msgid "Thumbnail size (in pixels)" msgstr "Wielkośc miniatury (w pikselach)" # # File: src/preferences.py, line: 117 #: src/preferences.py:119 msgid "Show page numbers on thumbnails." msgstr "Pokaż numery stron w miniaturach." # # File: src/preferences.py, line: 124 #: src/preferences.py:126 msgid "Magnifying Glass" msgstr "Lupa" # # File: src/preferences.py, line: 125 #: src/preferences.py:127 msgid "Magnifying glass size (in pixels)" msgstr "Wielkość lupy (w pikselach)" # # File: src/preferences.py, line: 131 #: src/preferences.py:133 msgid "Set the size of the magnifying glass. It is a square with a side of this many pixels." msgstr "Ustaw wielkość lupy. Lupa jest kwadratem z bokiem o tej ilości pikseli." # # File: src/preferences.py, line: 133 #: src/preferences.py:135 msgid "Magnification factor" msgstr "Współczynnik powiększenia" # # File: src/preferences.py, line: 140 #: src/preferences.py:142 msgid "Set the magnification factor of the magnifying glass." msgstr "Ustaw współczynnik lupy." # # File: src/preferences.py, line: 143 #: src/preferences.py:145 msgid "Image scaling" msgstr "Skalowanie obrazu." # # File: src/preferences.py, line: 144 #: src/preferences.py:146 msgid "Stretch small images." msgstr "Rozciągnij małe obrazy." # # File: src/preferences.py, line: 148 #: src/preferences.py:150 msgid "Stretch images to a size that is larger than their original size if the current zoom mode requests it. If this preference is unset, images are never scaled to be larger than their original size." msgstr "Rozciągnij obrazy do rozmiaru, który jest większy od ich oryginalnych wymiarów, jeżeli bieżący tryb zoomu tego wymaga. Jeśli ta opcja nie jest wybrana, obrazy nigdy nie są skalowane do rozmiaru większego, niż ich oryginalny rozmiar." # # File: src/preferences.py, line: 151 #: src/preferences.py:153 msgid "Transparency" msgstr "Przeźroczystość" # # File: src/preferences.py, line: 153 #: src/preferences.py:155 msgid "Use checkered background for transparent images." msgstr "Użyj szachownicy jako tła dla przeźroczystych obrazów." # # File: src/preferences.py, line: 159 #: src/preferences.py:161 msgid "Use a grey checkered background for transparent images. If this preference is unset, the background is plain white instead." msgstr "Użyj szarej szachownicy jako tła dla przeźroczystych obrazów. Jeśli ta opcja nie jest wybrana, tło jest białe." # # File: src/preferences.py, line: 161 #: src/preferences.py:163 msgid "Appearance" msgstr "Wygląd" # # File: src/preferences.py, line: 167 #: src/preferences.py:169 msgid "Scroll" msgstr "Przewiń" # # File: src/preferences.py, line: 169 #: src/preferences.py:171 msgid "Use smart space key scrolling." msgstr "Użyj sprytnego przewijania klawiszem spacji." # # File: src/preferences.py, line: 174 #: src/preferences.py:176 msgid "Use smart scrolling with the space key. Normally the space key scrolls only right down (or up when shift is pressed), but with this preference set it also scrolls sideways and so tries to follow the natural reading order of the comic book." msgstr "Użyj sprytnego przewijania klawiszem spacji. Normalnie klawisz spacji przewija tylko do dołu (albo w górę, kiedy klawisz shift jest wciśnięty), ale z ta opcją włączoną klawisz ten przesuwa obraz na bok, starając się podążać za naturalnym porządkiem czytania komiksów." #: src/preferences.py:180 msgid "Flip pages when scrolling off the edges of the page." msgstr "Przeskocz do nastepnej strony, kiedy zakończono przegladanie bieżącej " #: src/preferences.py:185 msgid "Flip pages when scrolling \"off the page\" with the scroll wheel or with the arrow keys. It takes three consecutive \"steps\" with the scroll wheel or the arrow keys for the pages to be flipped." msgstr "Przeskocz do nastepnej strony, kiedy przewijając myszką lub strzałkami natrafiono na koniec strony. Wymaga trzech kolejnych \"kroków\" kółkiem myszki lub klawiszami strzałek, aby przeskoczyć do nastepnej strony." # # File: src/preferences.py, line: 177 # File: src/ui.py, line: 296 #: src/preferences.py:188 #: src/ui.py:298 msgid "Double page mode" msgstr "Tryb dwóch stron" # # File: src/preferences.py, line: 179 #: src/preferences.py:190 msgid "Flip two pages in double page mode." msgstr "Przeglądaj po dwie strony na raz w trybie dwóch stron." # # File: src/preferences.py, line: 184 #: src/preferences.py:195 msgid "Flip two pages, instead of one, each time we flip pages in double page mode." msgstr "Przeglądaj po dwie strony, zamiast po jednej, za każdym razem, gdy przejdziesz do następnej strony, w trybie dwóch stron." # # File: src/preferences.py, line: 187 #: src/preferences.py:198 msgid "Show only one wide image in double page mode." msgstr "Pokazuj tylko jeden szeroki obraz w trybie dwóch stron." # # File: src/preferences.py, line: 193 #: src/preferences.py:204 msgid "Display only one image in double page mode, if the image's width exceeds its height. The result of this is that scans that span two pages are displayed properly (i.e. alone) also in double page mode." msgstr "Pokazuj tylko jeden obraz w trybie dwóch stron, jeśli szerokość obrazu przekracza jego wysokość. Skutkuje to tym, że obrazowania, które obejmują dwie strony, są wyświetlane poprawnie (t.j. jako jeden obraz), również w trybie dwóch stron." # # File: src/preferences.py, line: 196 #: src/preferences.py:207 msgid "Files" msgstr "Pliki" # # File: src/preferences.py, line: 198 #: src/preferences.py:209 msgid "Automatically open the next archive." msgstr "Automatycznie otwórz następne archiwum." # # File: src/preferences.py, line: 203 #: src/preferences.py:214 msgid "Automatically open the next archive in the directory when flipping past the last page, or the previous archive when flipping past the first page." msgstr "Automatycznie otwórz następne archiwum w katalogu, kiedy ukończono przeglądanie ostatniej strony, albo poprzednie archiwum, jeśli ukończono przeglądanie pierwszej ze stron." # # File: src/preferences.py, line: 206 #: src/preferences.py:217 msgid "Automatically open the last viewed file on startup." msgstr "Podczas startu automatycznie otwórz ostatnio ogladany plik." # # File: src/preferences.py, line: 211 #: src/preferences.py:222 msgid "Automatically open, on startup, the file that was open when Comix was last closed." msgstr "Automatycznie otwórz podczas startu plik, który był otwarty, kiedy zamknięto Comix" # # File: src/preferences.py, line: 214 #: src/preferences.py:225 msgid "Store information about recently opened files." msgstr "Przechowuj informację o ostatnio otwieranych plikach." # # File: src/preferences.py, line: 219 #: src/preferences.py:230 msgid "Add information about all files opened from within Comix to the shared recent files list." msgstr "Dodaj informację o wszystkich plikach otwieranych w Comix do listy ostatnio otwieranych plików." # # File: src/preferences.py, line: 222 #: src/preferences.py:233 msgid "Store thumbnails for opened files." msgstr "Przechowuj miniatury dla otwartych plików." # # File: src/preferences.py, line: 227 #: src/preferences.py:238 msgid "Store thumbnails for opened files according to the freedesktop.org specification. These thumbnails are shared by many other applications, such as most file managers." msgstr "Przechowuj miniatury dla otwartych plików zgodnie ze specyfikacją freedesktop.org. Te miniatury są współdzielone przez wiele innych programów, takich jak wiekszość menadżerów plików." # # File: src/preferences.py, line: 230 #: src/preferences.py:241 msgid "Cache" msgstr "Pamięć podręczna" # # File: src/preferences.py, line: 231 #: src/preferences.py:242 msgid "Use a cache to speed up browsing." msgstr "Użyj pamięci podręcznej, aby przyśpieszyć przeglądanie." # # File: src/preferences.py, line: 235 #: src/preferences.py:246 msgid "Cache the images that are next to the currently viewed image in order to speed up browsing. Since the speed improvements are quite big, it is recommended that you have this preference set, unless you are running short on free RAM." msgstr "Ładuj do pamięci obrazy, które będą wkrótce oglądane, aby przyśpieszyć ich przeglądanie. Odkąd poprawiono prędkości działania komputerów, rekomenduje się, aby zaznaczyć tę opcję, chybaże komputer jest wyposażony w małą ilość pamięci RAM." # # File: src/preferences.py, line: 237 #: src/preferences.py:248 msgid "Behaviour" msgstr "Zachowanie" # # File: src/preferences.py, line: 243 #: src/preferences.py:254 msgid "Default modes" msgstr "Domyślne tryby" # # File: src/preferences.py, line: 245 #: src/preferences.py:256 msgid "Use double page mode by default." msgstr "Użyj trybu dwóch stron jako domyślnego." # # File: src/preferences.py, line: 250 #: src/preferences.py:261 msgid "Use fullscreen by default." msgstr "Użyj trybu pełen ekran jako domyślnego." # # File: src/preferences.py, line: 255 #: src/preferences.py:266 msgid "Use manga mode by default." msgstr "Użyj trybu manga jako domyślnego." # # File: src/preferences.py, line: 260 #: src/preferences.py:271 msgid "Default zoom mode" msgstr "Domyślny tryb zoomu" # # File: src/preferences.py, line: 262 # File: src/ui.py, line: 288 #: src/preferences.py:273 #: src/ui.py:290 msgid "Best fit mode" msgstr "Tryb najlepszego dopasowania" # # File: src/preferences.py, line: 263 # File: src/ui.py, line: 290 #: src/preferences.py:274 #: src/ui.py:292 msgid "Fit width mode" msgstr "Tryb dopasowania szerokości" # # File: src/preferences.py, line: 264 # File: src/ui.py, line: 292 #: src/preferences.py:275 #: src/ui.py:294 msgid "Fit height mode" msgstr "Tryb dopasowania wysokości" # # File: src/preferences.py, line: 265 # File: src/ui.py, line: 294 #: src/preferences.py:276 #: src/ui.py:296 msgid "Manual zoom mode" msgstr "Ręczny tryb zoomu" # # File: src/preferences.py, line: 271 #: src/preferences.py:282 msgid "Fullscreen" msgstr "Pełen ekran" # # File: src/preferences.py, line: 273 #: src/preferences.py:284 msgid "Automatically hide all toolbars in fullscreen." msgstr "Automatycznie schowaj wszystkie paski narzędzi w trybie pełnego ekranu." # # File: src/preferences.py, line: 279 #: src/preferences.py:290 msgid "Slideshow" msgstr "Pokaz slajdów" # # File: src/preferences.py, line: 280 #: src/preferences.py:291 msgid "Slideshow delay (in seconds)" msgstr "Opóźnienie pokazu slajdów (w sekundach)" # # File: src/preferences.py, line: 289 #: src/preferences.py:300 msgid "Comment extensions" msgstr "Rozszerzenia komentarzy" # # File: src/preferences.py, line: 295 #: src/preferences.py:306 msgid "Treat all files found within archives, that have one of these file endings, as comments." msgstr "Traktuj wszystkie pliki znalezione wewnątrz archiwów, jeśli mają jedno z tych zakończeń, jako komentarze." #: src/preferences.py:309 msgid "Rotation" msgstr "Obrót" #: src/preferences.py:311 msgid "Automatically rotate images according to their metadata." msgstr "Automatycznie obróć obrazy, stosownie do informacji zawartych w oglądanym pliku grafiki." #: src/preferences.py:316 msgid "Automatically rotate images when an orientation is specified in the image metadata, such as in an Exif tag." msgstr "Automatycznie obróc obrazy, kiedy orjentacja jest określona w informacjach obrazu, takich jak tagi Exif." # # File: src/preferences.py, line: 297 #: src/preferences.py:318 msgid "Display" msgstr "Wyświetlanie" # # File: src/properties.py, line: 89 #: src/properties.py:94 msgid "Properties" msgstr "Właściwości" # # File: src/properties.py, line: 114 #: src/properties.py:119 #, python-format msgid "%d comments" msgstr "%d komentarze" # # File: src/properties.py, line: 124 # File: src/properties.py, line: 159 #: src/properties.py:129 #: src/properties.py:164 msgid "Location" msgstr "Umiejscowienie" # # File: src/properties.py, line: 126 # File: src/properties.py, line: 160 #: src/properties.py:131 #: src/properties.py:165 msgid "Accessed" msgstr "Użyty" # # File: src/properties.py, line: 128 # File: src/properties.py, line: 162 #: src/properties.py:133 #: src/properties.py:167 msgid "Modified" msgstr "Zmieniony" # # File: src/properties.py, line: 130 # File: src/properties.py, line: 164 #: src/properties.py:135 #: src/properties.py:169 msgid "Permissions" msgstr "Uprawnienia" # # File: src/properties.py, line: 131 # File: src/properties.py, line: 165 #: src/properties.py:136 #: src/properties.py:170 msgid "Owner" msgstr "Właściciel" # # File: src/properties.py, line: 135 #: src/properties.py:140 msgid "Archive" msgstr "Archiwum" # # File: src/properties.py, line: 169 #: src/properties.py:174 msgid "Image" msgstr "Obraz" # # File: src/thumbremover.py, line: 22 #: src/thumbremover.py:24 msgid "Thumbnail maintenance" msgstr "Zarządzanie miniaturami" # # File: src/thumbremover.py, line: 24 #: src/thumbremover.py:26 msgid "Cleanup" msgstr "Wyczyść" # # File: src/thumbremover.py, line: 36 #: src/thumbremover.py:38 msgid "Cleanup thumbnails" msgstr "Wyczyść miniatury" # # File: src/thumbremover.py, line: 46 #: src/thumbremover.py:48 msgid "Thumbnails for files (such as image files and comic book archives) are stored in your home directory. Many different applications use and create these thumbnails, but sometimes thumbnails remain even though the original files have been removed - wasting space. This dialog can cleanup your stored thumbnails by removing orphaned and outdated thumbnails." msgstr "Miniatury plików (takie jak pliki obrazów i archiwów komiksów) są przechowywane w Twoim katalogu domowym. Wiele róznych aplikacji używa i tworzy te miniatury, czasem pozostają mimo usunięcia oryginalnych plików - zajmując niepotrzebnie przestrzeń dysku. Można wyczyścić Twoje podglądy plików przez usunięcie osieroconych i porzuconych miniatur." # # File: src/thumbremover.py, line: 58 #: src/thumbremover.py:60 msgid "Thumbnail directory" msgstr "Katalog miniatur" # # File: src/thumbremover.py, line: 65 #: src/thumbremover.py:67 msgid "Total number of thumbnails" msgstr "Całkowita ilość miniatur" # # File: src/thumbremover.py, line: 68 # File: src/thumbremover.py, line: 75 #: src/thumbremover.py:70 #: src/thumbremover.py:77 msgid "Calculating..." msgstr "Obliczanie…" # # File: src/thumbremover.py, line: 72 #: src/thumbremover.py:74 msgid "Total size of thumbnails" msgstr "Całkowity rozmiar miniatur" # # File: src/thumbremover.py, line: 80 #: src/thumbremover.py:82 msgid "Do you want to cleanup orphaned and outdated thumbnails now?" msgstr "Czy chcesz usunąć teraz osierocone i przedawnione miniatury?" # # File: src/thumbremover.py, line: 116 #: src/thumbremover.py:118 msgid "Removing thumbnails" msgstr "Usuwanie miniatur" # # File: src/thumbremover.py, line: 135 #: src/thumbremover.py:137 msgid "Number of removed thumbnails" msgstr "Ilość usuniętych miniatur" # # File: src/thumbremover.py, line: 142 #: src/thumbremover.py:144 msgid "Total size of removed thumbnails" msgstr "Całkowita wielkość usuniętych miniatur" # # File: src/thumbremover.py, line: 193 #: src/thumbremover.py:195 #, python-format msgid "Removed thumbnail for '%s'" msgstr "Usunięta miniatura dla „%s“" # # File: src/ui.py, line: 34 #: src/ui.py:34 msgid "_Next page" msgstr "_Nastepna strona" # # File: src/ui.py, line: 36 #: src/ui.py:36 msgid "_Previous page" msgstr "_Poprzednia strona" # # File: src/ui.py, line: 38 #: src/ui.py:38 msgid "_First page" msgstr "Pierwsza strona" # # File: src/ui.py, line: 40 #: src/ui.py:40 msgid "_Last page" msgstr "Ostatnia strona" # # File: src/ui.py, line: 42 #: src/ui.py:42 msgid "_Zoom in" msgstr "_Przybliż" # # File: src/ui.py, line: 44 #: src/ui.py:44 msgid "Zoom _out" msgstr "_Oddal" # # File: src/ui.py, line: 46 #: src/ui.py:46 msgid "O_riginal size" msgstr "Rozmiar oryginalny" # # File: src/ui.py, line: 48 #: src/ui.py:48 msgid "_Close" msgstr "_Zamknij" # # File: src/ui.py, line: 50 #: src/ui.py:50 msgid "_Quit" msgstr "_Wyjdź" # # File: src/ui.py, line: 52 #: src/ui.py:52 msgid "_Rotate 90 degrees CW" msgstr "Obróć o 90° w kierunku ruchu wskazówek zegara" # # File: src/ui.py, line: 54 #: src/ui.py:54 msgid "Rotate 180 de_grees" msgstr "Obróć o 180°" # # File: src/ui.py, line: 56 #: src/ui.py:56 msgid "Rotat_e 90 degrees CCW" msgstr "Obróć o 90° przeciwnie do ruchu wskazówek zegara" # # File: src/ui.py, line: 58 #: src/ui.py:58 msgid "Fli_p horizontally" msgstr "Przewróć w poziomie" # # File: src/ui.py, line: 60 #: src/ui.py:60 msgid "Flip _vertically" msgstr "Przewróć w pionie" # # File: src/ui.py, line: 62 #: src/ui.py:62 msgid "Manual _Zoom" msgstr "_Ręczny zoom" # # File: src/ui.py, line: 63 #: src/ui.py:63 msgid "Open _recent" msgstr "Otwórz ostatnie" # # File: src/ui.py, line: 64 #: src/ui.py:64 msgid "_Bookmarks" msgstr "_Zakładki" # # File: src/ui.py, line: 65 #: src/ui.py:65 msgid "T_oolbars" msgstr "_Paski narzędziowe" # # File: src/ui.py, line: 66 #: src/ui.py:66 msgid "_Edit" msgstr "_Edycja" # # File: src/ui.py, line: 67 #: src/ui.py:67 msgid "_File" msgstr "_Plik" # # File: src/ui.py, line: 68 #: src/ui.py:68 msgid "_View" msgstr "_Widok" # # File: src/ui.py, line: 69 #: src/ui.py:69 msgid "_Go" msgstr "_Przejdź" # # File: src/ui.py, line: 70 #: src/ui.py:70 msgid "_Help" msgstr "_Pomoc" # # File: src/ui.py, line: 71 #: src/ui.py:71 msgid "_Transform" msgstr "_Przekształć" # # File: src/ui.py, line: 75 #: src/ui.py:75 msgid "_Fullscreen" msgstr "_Pełen ekran" # # File: src/ui.py, line: 77 #: src/ui.py:77 msgid "_Double page mode" msgstr "_Tryb podwójnej strony" # # File: src/ui.py, line: 79 #: src/ui.py:79 msgid "_Toolbar" msgstr "_Pasek narzędzi" # # File: src/ui.py, line: 81 #: src/ui.py:81 msgid "_Menubar" msgstr "Pasek menu" # # File: src/ui.py, line: 83 #: src/ui.py:83 msgid "St_atusbar" msgstr "_Pasek stanu" # # File: src/ui.py, line: 85 #: src/ui.py:85 msgid "S_crollbars" msgstr "_Paski przesuwania" # # File: src/ui.py, line: 87 #: src/ui.py:87 msgid "Th_umbnails" msgstr "_Miniatury" # # File: src/ui.py, line: 89 #: src/ui.py:89 msgid "H_ide all" msgstr "_Ukryj wszystkie" # # File: src/ui.py, line: 91 #: src/ui.py:91 msgid "_Manga mode" msgstr "_Tryb manga" # # File: src/ui.py, line: 93 #: src/ui.py:93 msgid "_Keep transformation" msgstr "_Utrzymaj transformację" # # File: src/ui.py, line: 95 #: src/ui.py:95 msgid "Run _slideshow" msgstr "_Uruchom pokaz" # # File: src/ui.py, line: 97 #: src/ui.py:97 msgid "Magnifying _glass" msgstr "_Lupa" # # File: src/ui.py, line: 101 #: src/ui.py:103 msgid "_Best fit mode" msgstr "_Tryb optymalnego przybliżenia" # # File: src/ui.py, line: 103 #: src/ui.py:105 msgid "Fit _width mode" msgstr "Dopasuj na szerokość" # # File: src/ui.py, line: 105 #: src/ui.py:107 msgid "Fit _height mode" msgstr "Dopasuj na wysokość" # # File: src/ui.py, line: 107 #: src/ui.py:109 msgid "M_anual zoom mode" msgstr "Tryb ręcznego przybliżenia" # # File: src/ui.py, line: 113 #: src/ui.py:115 msgid "_About" msgstr "_O programie" # # File: src/ui.py, line: 115 #: src/ui.py:117 msgid "_View comments..." msgstr "_Obejrzyj komentarze…" # # File: src/ui.py, line: 117 #: src/ui.py:119 msgid "_Edit archive..." msgstr "Edytuj archiwum" # # File: src/ui.py, line: 119 #: src/ui.py:121 msgid "_Open..." msgstr "_Otwórz…" # # File: src/ui.py, line: 121 #: src/ui.py:123 msgid "_Properties" msgstr "_Właściwości" # # File: src/ui.py, line: 123 #: src/ui.py:125 msgid "_Enhance image..." msgstr "_Ulepsz obraz" # # File: src/ui.py, line: 126 #: src/ui.py:128 msgid "_Thumbnail maintenance..." msgstr "_Zarządzanie podglądem" # # File: src/ui.py, line: 128 #: src/ui.py:130 msgid "Pr_eferences" msgstr "_Ustawienia" # # File: src/ui.py, line: 132 #: src/ui.py:134 msgid "_Library..." msgstr "_Biblioteka" # # File: src/ui.py, line: 282 #: src/ui.py:284 msgid "First page" msgstr "Pierwsza strona" # # File: src/ui.py, line: 284 #: src/ui.py:286 msgid "Previous page" msgstr "Poprzednia strona" # # File: src/ui.py, line: 285 #: src/ui.py:287 msgid "Next page" msgstr "Następna strona" # # File: src/ui.py, line: 286 #: src/ui.py:288 msgid "Last page" msgstr "Ostatnia strona" # # File: src/ui.py, line: 297 #: src/ui.py:299 msgid "Manga mode" msgstr "Tryb manga" # # File: src/ui.py, line: 298 #: src/ui.py:300 msgid "Magnifying glass" msgstr "Lupa" comix-4.0.4/messages/pl/LC_MESSAGES/comix.mo0000644000175000001440000005754311141572465017242 0ustar sorkusersTa &)-<W YEd x     M9 T_!g.].53d$*ROB8k     !E67|+"("H"k %%  5 GUg pzrJ <   ! ! 2!?! N!\! b!m!~!!!!!!4"#"L"6# I#+T### ## ## ####A$U$ i$u$$ $$$$$$$%!% 5% @%M%^%Hg%%% %%%% & && 6&B& H&S& X&d&+x&4&&b' u' ' ' 'O' ' ((#/(S(h(|((.($()")6) I))S)})))))) ) ) )))*5 *UC* *-* **+ + +?=+}, ,.,,"q--W. m. w. . .#.)..r/1 0;0O0e0 0a01 2)2B2 b2Xo22!2{20w3 333445-5gK5 5 5 55 55 566 62686I6\6n6 t6 6666 6 6 66 666 67 7"7<7 E7P7V7h7bq7 888$8>9 W9c9j9999a9&&:M:e:v::::::T:7=;u;};);,;X; 6<IW<<<<)=V=F>[Z>j>!? &?1?'N? v?,??? @@ @@AO/ACAAAA3A&B!EB%gB)B$B'B,C1CHC\CkCCCCC C CCD>yEEEEE FF*F0F@FVFmFFFFFJG8G}.HH H4HI+IKI\I wIIIIIIAI J %J1JKJfJ vJJJJJJJJ J KK $KV.KK KKKKKKK L ,L 7L DLOL VLbL'yL*LLcM zM MMMPM N NN%;NaNtNNN;N$N O2ODO^O)oOO4OOOOOP$P 7PAPHPQPXPJsP P8P"Q#$QHQPQ*_Q9QR R6R$S+STU U 4U AU MU&XU(UU2V&VVW!(W JWjTWX*XY#"YFYoYYY=YuZ:Z*Z!Z*[#C[g[-\\\\ +] 8]D] K]X]j] ]]]]]]] ]^ ^ ^ )^3^:^S^ c^ o^ {^^ ^^^^1^__*_9_@_ X_7H*0\;F:-pw6uKf'm<3ABs1!>k8 YdrS=c)Wt%TLD#l ^ aERy[ b}{ChJV]/no2x .,59Mg+(~v?O$`jI|4GzZXP"QeUNi_q&@ %d comments%d pages(Copy)A collection by that name already exists.A file named '%s' already exists. Do you want to replace it?AboutAccessedAdd a new empty collection.Add booksAdd books to '%s'.Add collectionAdd information about all files opened from within Comix to the shared recent files list.Add more books to the library.Add new collection?Added booksAdding '%s'...Adding booksAll ArchivesAll booksAll filesAll imagesAll stored bookmarks will be removed. Are you sure that you want to continue?Always use this selected colour as the background colour.AppearanceArchiveArchives are stored as ZIP files.Automatically add the books to this collectionAutomatically adjust contrast (both lightness and darkness), separately for each colour band.Automatically adjust contrast.Automatically hide all toolbars in fullscreen.Automatically open the last viewed file on startup.Automatically open the next archive in the directory when flipping past the last page, or the previous archive when flipping past the first page.Automatically open the next archive.Automatically open, on startup, the file that was open when Comix was last closed.Automatically pick a background colour that fits the viewed image.Automatically rotate images according to their metadata.Automatically rotate images when an orientation is specified in the image metadata, such as in an Exif tag.BackgroundBehaviourBest fit modeBrazilian Portuguese translationBrightnessBzip2 compressed tar archiveCacheCache the images that are next to the currently viewed image in order to speed up browsing. Since the speed improvements are quite big, it is recommended that you have this preference set, unless you are running short on free RAM.Calculating...Catalan translationCleanupCleanup thumbnailsClear all bookmarks?Comix is an image viewer specifically designed to handle comic books.Comix is licensed under the GNU General Public License.Comment extensionsCommentsContrastCould not add a new collection called '%s'.Could not change the name to '%s'.Could not duplicate collection.Could not find RAR file extractor!Could not open %s: Is a directory.Could not open %s: No such file.Could not open %s: Permission denied.Could not open %s: Unknown file type.Could not read %sCover sizeCreditsCroatian translationCzech translationDefault modesDefault zoom modeDefaultsDeveloperDisplayDisplay only one image in double page mode, if the image's width exceeds its height. The result of this is that scans that span two pages are displayed properly (i.e. alone) also in double page mode.Display only those books that have the specified text string in their full path. The search is not case sensitive.Do you want to cleanup orphaned and outdated thumbnails now?Double page modeDuplicate collectionDutch translationEdit archiveEdit bookmarksEnhance imageFilesFirst pageFit _height modeFit _width modeFit height modeFit width modeFli_p horizontallyFlip _verticallyFlip pages when scrolling "off the page" with the scroll wheel or with the arrow keys. It takes three consecutive "steps" with the scroll wheel or the arrow keys for the pages to be flipped.Flip pages when scrolling off the edges of the page.Flip two pages in double page mode.Flip two pages, instead of one, each time we flip pages in double page mode.French translationFullscreenGerman translation and Nautilus thumbnailerGreek translationGzip compressed tar archiveH_ide allHungarian translationIcon designImageImage scalingImagesImportIndonesian translationIt reads ZIP, RAR and tar archives, as well as plain image files.Italian translationJPEG imagesJapanese translationKorean translationLast pageLibraryLocationM_anual zoom modeMagnification factorMagnifying GlassMagnifying _glassMagnifying glassMagnifying glass size (in pixels)Manga modeManual _ZoomManual zoom modeModifiedMove books from '%(source collection)s' to '%(destination collection)s'.NameNew collectionNext pageNo images in '%s'Number of removed thumbnailsO_riginal sizeOpenOpen _recentOpen the selected book.Other filesOwnerPNG imagesPagePermissionsPersian translationPlease enter a name for the new collection.Please enter a new name for the selected collection.Please note that the only files that are automatically added to this list are those files in archives that Comix recognizes as comments.Polish translationPr_eferencesPreferencesPrevious pagePropertiesPut the collection '%(subcollection)s' in the collection '%(supercollection)s'.RAR archiveRAR archivesRemove books from the library?Remove collection from the library?Remove collection...Remove from archiveRemove from the library...Remove from this collectionRemoved %(num)d book(s) from '%(collection)s'.Removed %d book(s) from the library.Removed thumbnail for '%s'Removing thumbnailsRename collection?Rename...Replacing it will overwrite its contents.RootRotat_e 90 degrees CCWRotate 180 de_greesRotationRun _slideshowRussian translationSLIDESHOWS_crollbarsSaturationSaveScrollSearchSet the magnification factor of the magnifying glass.Set the size of the magnifying glass. It is a square with a side of this many pixels.SharpnessShow only one wide image in double page mode.Show page numbers on thumbnails.Simplified Chinese translationSizeSlideshowSlideshow delay (in seconds)Some old files (that were used for storing preferences, the library, bookmarks etc. for older versions of Comix) were found on your computer. If you do not plan on using the older versions of Comix again, you should remove these files in order to save some disk space. Do you want these files to be removed for you now?Spanish translationSt_atusbarStore information about recently opened files.Store thumbnails for opened files according to the freedesktop.org specification. These thumbnails are shared by many other applications, such as most file managers.Store thumbnails for opened files.Stretch images to a size that is larger than their original size if the current zoom mode requests it. If this preference is unset, images are never scaled to be larger than their original size.Stretch small images.T_oolbarsTar archiveTar archivesTh_umbnailsThe new archive could not be saved!The original files have not been removed.The selected books will be removed from the library (but the original files will be untouched). Are you sure that you want to continue?The selected collection will be removed from the library (but the books and subcollections in it will remain). Are you sure that you want to continue?There are deprecated files left on your computer.Thumbnail directoryThumbnail maintenanceThumbnail size (in pixels)ThumbnailsThumbnails for files (such as image files and comic book archives) are stored in your home directory. Many different applications use and create these thumbnails, but sometimes thumbnails remain even though the original files have been removed - wasting space. This dialog can cleanup your stored thumbnails by removing orphaned and outdated thumbnails.Total number of thumbnailsTotal size of removed thumbnailsTotal size of thumbnailsTraditional Chinese translationTransparencyTreat all files found within archives, that have one of these file endings, as comments.Unknown filetypeUse a cache to speed up browsing.Use a grey checkered background for transparent images. If this preference is unset, the background is plain white instead.Use checkered background for transparent images.Use double page mode by default.Use dynamic background colour.Use fullscreen by default.Use manga mode by default.Use smart scrolling with the space key. Normally the space key scrolls only right down (or up when shift is pressed), but with this preference set it also scrolls sideways and so tries to follow the natural reading order of the comic book.Use smart space key scrolling.Use this colour as backgroundYou need either the rar or the unrar program installed in order to read RAR (.cbr) files.ZIP archiveZIP archivesZoom _out_About_Add bookmark_Best fit mode_Bookmarks_Clear bookmarks..._Close_Double page mode_Edit_Edit archive..._Edit bookmarks..._Enhance image..._File_First page_Fullscreen_Go_Help_Keep transformation_Last page_Library..._Manga mode_Menubar_Next page_Open..._Previous page_Properties_Quit_Rotate 90 degrees CW_Thumbnail maintenance..._Toolbar_Transform_View_View comments..._Zoom inProject-Id-Version: PACKAGE VERSION Report-Msgid-Bugs-To: POT-Creation-Date: 2008-11-22 02:42+0100 PO-Revision-Date: 2009-02-02 14:19+0100 Last-Translator: Dariusz Jakoniuk Language-Team: LANGUAGE MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit Generated-By: pygettext.py 1.5 %d komentarze%d stron(Kopia)Kolekcja o tej nazwie już istnieje.Plik o nazwie „%s“ już istnieje. Czy chcesz go nadpisać?O programieUżytyDodaj nowa pustą kolekcję.Dodaj książkiDodaj książki do „%s“.Dodaj kolekcjęDodaj informację o wszystkich plikach otwieranych w Comix do listy ostatnio otwieranych plików.Dodaj więcej książek do biblioteki.Dodać nową kolekcję?Dodane książkiDodawanie „%s“…Dodawanie książekWszystkie archiwaWszystkie książkiWszystkie plikiWszystkie obrazkiWszystkie zakładki zostaną usunięte. Czy jesteś pewien, że chcesz kontynuować?Zawsze używaj tego wybranego koloru, jako koloru tła.WyglądArchiwumArchiwa są przechowywane jako pliki zip.Automatycznie dodaj ksiązki do tej kolekcjiAutomatycznie dostosuj kontrast (jasość i ciemność), oddzielnie dla każdego koloru.Automatycznie dostosuj kontrast.Automatycznie schowaj wszystkie paski narzędzi w trybie pełnego ekranu.Podczas startu automatycznie otwórz ostatnio ogladany plik.Automatycznie otwórz następne archiwum w katalogu, kiedy ukończono przeglądanie ostatniej strony, albo poprzednie archiwum, jeśli ukończono przeglądanie pierwszej ze stron.Automatycznie otwórz następne archiwum.Automatycznie otwórz podczas startu plik, który był otwarty, kiedy zamknięto ComixAutomatycznie wybierz kolor tła, który pasuje do ogladanego obrazka.Automatycznie obróć obrazy, stosownie do informacji zawartych w oglądanym pliku grafiki.Automatycznie obróc obrazy, kiedy orjentacja jest określona w informacjach obrazu, takich jak tagi Exif.TłoZachowanieTryb najlepszego dopasowaniaTłumaczenie na portugalski brazylijskiJasnośćArchiwum tar skopresowane przy użyciu bzip2Pamięć podręcznaŁaduj do pamięci obrazy, które będą wkrótce oglądane, aby przyśpieszyć ich przeglądanie. Odkąd poprawiono prędkości działania komputerów, rekomenduje się, aby zaznaczyć tę opcję, chybaże komputer jest wyposażony w małą ilość pamięci RAM.Obliczanie…Tłumaczenie na katalońskiWyczyśćWyczyść miniaturyUsunąć wszystkie zakładki?Comix jest przegladarką obrazów stworzoną specjalnie do ogladania komiksów.Comix jest rozpowszechniany na licencji GNU General Public License.Rozszerzenia komentarzyUwagiKontrastNie można dodać nowej kolekcji o nazwie „%s“.Nie można zmienić nazwy na „%s“.Nie można zduplikować kolekcji.Nie można znaleźć ekstraktora RAR!Nie można otworzyć %s: Jest katalogiem.Nie można otworzyć %s: Brak pliku.Nie można otworzyć %s: Brak dostępu.Nie można otworzyć %s: Nieznany typ pliku.Nie mozna odczytać %sWielkość okładkiPodziękowaniaTłumaczenie na chorwackiTłumaczenie na czeskiDomyślne trybyDomyślny tryb zoomuUstawienia domyślneProgramistaWyświetlaniePokazuj tylko jeden obraz w trybie dwóch stron, jeśli szerokość obrazu przekracza jego wysokość. Skutkuje to tym, że obrazowania, które obejmują dwie strony, są wyświetlane poprawnie (t.j. jako jeden obraz), również w trybie dwóch stron.Wyświetlaj tylko te książki, które mają speczyficzny tekst w swojej pełnej ścieżce. Szukaj nie rozróżnia wielkich i małych liter.Czy chcesz usunąć teraz osierocone i przedawnione miniatury?Tryb dwóch stronZduplikuj kolekcjęTłumaczenie na holenderskiEdytuj archiwumEdytuj zakładkiPopraw obrazekPlikiPierwsza stronaDopasuj na wysokośćDopasuj na szerokośćTryb dopasowania wysokościTryb dopasowania szerokościPrzewróć w poziomiePrzewróć w pioniePrzeskocz do nastepnej strony, kiedy przewijając myszką lub strzałkami natrafiono na koniec strony. Wymaga trzech kolejnych "kroków" kółkiem myszki lub klawiszami strzałek, aby przeskoczyć do nastepnej strony.Przeskocz do nastepnej strony, kiedy zakończono przegladanie bieżącej Przeglądaj po dwie strony na raz w trybie dwóch stron.Przeglądaj po dwie strony, zamiast po jednej, za każdym razem, gdy przejdziesz do następnej strony, w trybie dwóch stron.Tłumaczenie na francuskiPełen ekranTłumaczenie na niemiecki i thumbnailer w NautilusieTłumaczenie na greckiArchiwum tar skopresowane przy użyciu gzip_Ukryj wszystkieTłumaczenie na węgierskiProjekt ikonObrazSkalowanie obrazu.ObrazkiImportujTłumaczenie na indonezyjskiComix czyta archiwa ZIP, RAR i tar, jak również zwykłe obrazy.Tłumaczenie na włoskiObrazy JPEGTłumaczenie na japońskiTłumaczenie na kareańskiOstatnia stronaBibliotekaUmiejscowienieTryb ręcznego przybliżeniaWspółczynnik powiększeniaLupa_LupaLupaWielkość lupy (w pikselach)Tryb manga_Ręczny zoomRęczny tryb zoomuZmienionyPrzenieś książki z „%(source collection)s“ do „%(destination collection)s“.ImięNowa kolekcjaNastępna stronaBrak obrazów w „%s“Ilość usuniętych miniaturRozmiar oryginalnyOtwórzOtwórz ostatnieOtwórz zaznaczoną książkę.Inne plikiWłaścicielObrazy PNGStronaUprawnieniaTłumaczenie na perskiProszę wstawić nazwę nowej kolekcji.Wpisz nową nazwę dla wybranej kolekcji. Należy zauwazyć, że jedynymi plikami jakie są automatycznie dodawane do tej listy, są pliki w archiwach, które Comix rozpoznaje jako komentarze.Tłumaczenie na polski_UstawieniaPreferencjePoprzednia stronaWłaściwościUmieść kolekcję „%(subcollection)s“ w kolekcji „%(supercollection)s“.Archiwum RARArchiwa RARUsuń książki z biblioteki?Czy usuńąć kolekcję z biblioteki?Usuń kolekcję…Usuń z archiwumUsuń z biblioteki…Usuń z tej kolekcjiUsuń %(num)d książkę(książki) z „%(collection)s“.Usunięto %d książek z biblioteki.Usunięta miniatura dla „%s“Usuwanie miniaturZmienić nazwę kolekcji?Zmień nazwę…Nadpisanie pliku zmieni jego zawartość.KorzeńObróć o 90° przeciwnie do ruchu wskazówek zegaraObróć o 180°Obrót_Uruchom pokazTłumaczenie na rosyjskiPOKAZ SLAJDÓW_Paski przesuwaniaNasycenieZapiszPrzewińSzukajUstaw współczynnik lupy.Ustaw wielkość lupy. Lupa jest kwadratem z bokiem o tej ilości pikseli.OstrośćPokazuj tylko jeden szeroki obraz w trybie dwóch stron.Pokaż numery stron w miniaturach.Tłumaczenie na uproszczony chinskiRozmiarPokaz slajdówOpóźnienie pokazu slajdów (w sekundach)Na komputerze znaleziono przestarzałe pliki (używane do przechowywania ustawień, biblioteki, ulubionych zakładek dla starszych wersji programu Comix). Jeżeli nie planujesz używać starszej wersji programu Comix, powinieneś usunąć te pliki, aby oszczędzić miejsce na dysku. Czy chcesz usunąć te pliki?Tłumaczenie na hiszpański_Pasek stanuPrzechowuj informację o ostatnio otwieranych plikach.Przechowuj miniatury dla otwartych plików zgodnie ze specyfikacją freedesktop.org. Te miniatury są współdzielone przez wiele innych programów, takich jak wiekszość menadżerów plików.Przechowuj miniatury dla otwartych plików.Rozciągnij obrazy do rozmiaru, który jest większy od ich oryginalnych wymiarów, jeżeli bieżący tryb zoomu tego wymaga. Jeśli ta opcja nie jest wybrana, obrazy nigdy nie są skalowane do rozmiaru większego, niż ich oryginalny rozmiar.Rozciągnij małe obrazy._Paski narzędzioweArchiwum tarArchiwa TAR_MiniaturyNowe archiwum nie może być zapisane!Oryginalne pliki nie zostały usunięte.Wybrane książki zostaną usunięte z biblioteki (oryginalne pliki pozostaną nietknięte). Czy jesteś pewny, że chcesz kontynuować?Wybrana kolekcja zostanie usunięta z biblioteki (książki i podkolekcje w tej kolekcji pozostaną nadal w bibliotece). Czy jesteś pewny, że chcesz kontynuawać?Na komputerze są przestarzałe pliki.Katalog miniaturZarządzanie miniaturamiWielkośc miniatury (w pikselach)MiniaturyMiniatury plików (takie jak pliki obrazów i archiwów komiksów) są przechowywane w Twoim katalogu domowym. Wiele róznych aplikacji używa i tworzy te miniatury, czasem pozostają mimo usunięcia oryginalnych plików - zajmując niepotrzebnie przestrzeń dysku. Można wyczyścić Twoje podglądy plików przez usunięcie osieroconych i porzuconych miniatur.Całkowita ilość miniaturCałkowita wielkość usuniętych miniaturCałkowity rozmiar miniaturTłumaczenie na tradycyjny chińskiPrzeźroczystośćTraktuj wszystkie pliki znalezione wewnątrz archiwów, jeśli mają jedno z tych zakończeń, jako komentarze.Nieznany typ plikuUżyj pamięci podręcznej, aby przyśpieszyć przeglądanie.Użyj szarej szachownicy jako tła dla przeźroczystych obrazów. Jeśli ta opcja nie jest wybrana, tło jest białe.Użyj szachownicy jako tła dla przeźroczystych obrazów.Użyj trybu dwóch stron jako domyślnego.Używaj dynamicznego koloru tła.Użyj trybu pełen ekran jako domyślnego.Użyj trybu manga jako domyślnego.Użyj sprytnego przewijania klawiszem spacji. Normalnie klawisz spacji przewija tylko do dołu (albo w górę, kiedy klawisz shift jest wciśnięty), ale z ta opcją włączoną klawisz ten przesuwa obraz na bok, starając się podążać za naturalnym porządkiem czytania komiksów.Użyj sprytnego przewijania klawiszem spacji.Użyj tego koloru jako tłaDo odczytu RAR (.cbr) potrzebujesz mieć zainstalowany program rar albo unrar.Archiwum ZIPArchiwa ZIP_Oddal_O programie_Dodaj zakładkę_Tryb optymalnego przybliżenia_Zakładki_Usuń zakładki…_Zamknij_Tryb podwójnej strony_EdycjaEdytuj archiwum_Edytuj zakładki…_Ulepsz obraz_PlikPierwsza strona_Pełen ekran_Przejdź_Pomoc_Utrzymaj transformacjęOstatnia strona_Biblioteka_Tryb mangaPasek menu_Nastepna strona_Otwórz…_Poprzednia strona_Właściwości_WyjdźObróć o 90° w kierunku ruchu wskazówek zegara_Zarządzanie podglądem_Pasek narzędzi_Przekształć_Widok_Obejrzyj komentarze…_Przybliżcomix-4.0.4/messages/hr/LC_MESSAGES/comix.po0000644000175000001440000011511711137133373017227 0ustar sorkusers# Croatian translation for Comix. # Copyright (C) 2008 anrxc # This file is distributed under the same license as the comix package. # Adrian C. , 2008. # msgid "" msgstr "" "Project-Id-Version: comix 4.0.1\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2008-11-22 02:42+0100\n" "PO-Revision-Date: 2008-12-13 18:00+0100\n" "Last-Translator: Adrian C. \n" "Language-Team: Croatian\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" "Generated-By: pygettext.py 1.5\n" "Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%" "10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" # # File: src/about.py, line: 18 # File: src/about.py, line: 67 #: src/about.py:19 src/about.py:68 msgid "About" msgstr "O programu" # # File: src/about.py, line: 55 #: src/about.py:56 msgid "Comix is an image viewer specifically designed to handle comic books." msgstr "Comix je preglednik slika posebno dizajniran za rukovanje stripovima." # # File: src/about.py, line: 57 #: src/about.py:58 msgid "It reads ZIP, RAR and tar archives, as well as plain image files." msgstr "Čita ZIP, RAR i tar arhive, kao i obične grafičke datoteke." # # File: src/about.py, line: 59 #: src/about.py:60 msgid "Comix is licensed under the GNU General Public License." msgstr "Comix je licenciran pod uvjetima GNU opće javne licence" # # File: src/about.py, line: 75 #: src/about.py:83 msgid "Developer" msgstr "Razvojni Programer" # # File: src/about.py, line: 77 #: src/about.py:84 src/about.py:85 msgid "Simplified Chinese translation" msgstr "Pojednostavljeni kineski prijevod" # # File: src/about.py, line: 78 #: src/about.py:86 msgid "Spanish translation" msgstr "Španjolski prijevod" # # File: src/about.py, line: 79 #: src/about.py:87 msgid "Brazilian Portuguese translation" msgstr "Brazilsko portugalski prijevod" # # File: src/about.py, line: 81 #: src/about.py:88 msgid "German translation and Nautilus thumbnailer" msgstr "Njemački prijevod i Nautilus-ov program za prikazivanje sličica" # # File: src/about.py, line: 82 #: src/about.py:89 src/about.py:90 msgid "Italian translation" msgstr "Talijanski prijevod" # # File: src/about.py, line: 83 #: src/about.py:91 msgid "Dutch translation" msgstr "Nizozemski prijevod" # # File: src/about.py, line: 84 #: src/about.py:92 msgid "French translation" msgstr "Francuski prijevod" # # File: src/about.py, line: 85 #: src/about.py:93 src/about.py:94 msgid "Polish translation" msgstr "Poljski prijevod" # # File: src/about.py, line: 86 #: src/about.py:95 msgid "Greek translation" msgstr "Grčki prijevod" # # File: src/about.py, line: 87 #: src/about.py:96 msgid "Catalan translation" msgstr "Katalonski prijevod" # # File: src/about.py, line: 88 #: src/about.py:97 src/about.py:98 msgid "Traditional Chinese translation" msgstr "Tradicionalni kineski prijevod" # # File: src/about.py, line: 89 #: src/about.py:99 msgid "Japanese translation" msgstr "Japanski prijevod" # # File: src/about.py, line: 90 #: src/about.py:100 msgid "Hungarian translation" msgstr "Mađarski prijevod" # # File: src/about.py, line: 91 #: src/about.py:101 msgid "Russian translation" msgstr "Ruski prijevod" # # File: src/about.py, line: 92 #: src/about.py:102 msgid "Croatian translation" msgstr "Hrvatski prijevod" # # File: src/about.py, line: 93 #: src/about.py:103 msgid "Korean translation" msgstr "Korejski prijevod" # # File: src/about.py, line: 94 #: src/about.py:104 msgid "Persian translation" msgstr "Perzijski prijevod" # # File: src/about.py, line: 95 #: src/about.py:105 msgid "Indonesian translation" msgstr "Indoneški prijevod" # # File: src/about.py, line: 96 #: src/about.py:106 msgid "Czech translation" msgstr "Češki prijevod" # # File: src/about.py, line: 97 #: src/about.py:107 msgid "Icon design" msgstr "Dizajn ikona" # # File: src/about.py, line: 106 #: src/about.py:114 msgid "Credits" msgstr "Zahvale" # # File: src/archive.py, line: 66 #: src/archive.py:66 msgid "Could not find RAR file extractor!" msgstr "RAR program nije pronađen!" # # File: src/archive.py, line: 68 #: src/archive.py:68 msgid "" "You need either the rar or the unrar program installed in " "order to read RAR (.cbr) files." msgstr "" "Za čitanje RAR (.cbr) datoteka potreban je rar ili unrar " "program." # # File: src/archive.py, line: 301 #: src/archive.py:305 msgid "ZIP archive" msgstr "ZIP arhiva" # # File: src/archive.py, line: 302 #: src/archive.py:306 msgid "Tar archive" msgstr "Tar arhiva" # # File: src/archive.py, line: 303 #: src/archive.py:307 msgid "Gzip compressed tar archive" msgstr "Tar arhiva sažeta programom Gzip" # # File: src/archive.py, line: 304 #: src/archive.py:308 msgid "Bzip2 compressed tar archive" msgstr "Tar arhiva sažeta programom Bzip2" # # File: src/archive.py, line: 305 #: src/archive.py:309 msgid "RAR archive" msgstr "RAR arhiva" # # File: src/bookmark.py, line: 27 #: src/bookmark.py:28 msgid "_Add bookmark" msgstr "_Dodaj oznaku" # # File: src/bookmark.py, line: 29 #: src/bookmark.py:30 msgid "_Edit bookmarks..." msgstr "_Uredi oznake..." # # File: src/bookmark.py, line: 31 #: src/bookmark.py:32 msgid "_Clear bookmarks..." msgstr "_Očisti oznake..." # # File: src/bookmark.py, line: 77 #: src/bookmark.py:78 msgid "Clear all bookmarks?" msgstr "Očisti sve oznake?" # # File: src/bookmark.py, line: 79 #: src/bookmark.py:80 msgid "" "All stored bookmarks will be removed. Are you sure that you want to continue?" msgstr "Sve spremljene oznake će biti uklonjene. Sigurno želite nastaviti?" # # File: src/bookmark.py, line: 229 #: src/bookmark.py:230 msgid "Edit bookmarks" msgstr "Uredi oznake" # # File: src/bookmark.py, line: 255 # File: src/edit.py, line: 267 #: src/bookmark.py:256 src/edit.py:270 msgid "Name" msgstr "Ime" # # File: src/bookmark.py, line: 256 #: src/bookmark.py:257 msgid "Page" msgstr "Stranica" # # File: src/comment.py, line: 16 # File: src/preferences.py, line: 288 #: src/comment.py:16 src/preferences.py:299 msgid "Comments" msgstr "Komentari" # # File: src/comment.py, line: 53 #: src/comment.py:53 #, python-format msgid "Could not read %s" msgstr "Neuspješno čitanje %s" # # File: src/deprecated.py, line: 16 #: src/deprecated.py:16 msgid "There are deprecated files left on your computer." msgstr "Pronađene su zastarjele datoteke na vašem računalu." # # File: src/deprecated.py, line: 22 #: src/deprecated.py:22 msgid "" "Some old files (that were used for storing preferences, the library, " "bookmarks etc. for older versions of Comix) were found on your computer. If " "you do not plan on using the older versions of Comix again, you should " "remove these files in order to save some disk space. Do you want these files " "to be removed for you now?" msgstr "" "Neke stare datoteke (koje su korištene za spremanje postavki, biblioteke, " "oznaka itd. u starijim Comix inačicama) su pronađene na vašem računalu. " "Ukoliko više ne planirate koristiti starije Comix inačice, trebali bi " "obrisati te datoteke da sačuvate prostor na disku. Želite li da se te " "datoteke uklone za vas sada?" # # File: src/edit.py, line: 28 #: src/edit.py:29 msgid "Edit archive" msgstr "Uredi arhivu" # # File: src/edit.py, line: 36 #: src/edit.py:37 msgid "Import" msgstr "Uvoz" # # File: src/edit.py, line: 50 #: src/edit.py:51 msgid "Images" msgstr "Slike" # # File: src/edit.py, line: 51 #: src/edit.py:52 msgid "Other files" msgstr "Druge datoteke" # # File: src/edit.py, line: 99 #: src/edit.py:101 msgid "The new archive could not be saved!" msgstr "Neuspješna pohrana nove arhive!" # # File: src/edit.py, line: 101 #: src/edit.py:103 msgid "The original files have not been removed." msgstr "Izvorne datoteke nisu obrisane." # # File: src/edit.py, line: 115 #: src/edit.py:117 msgid "Archives are stored as ZIP files." msgstr "Arhive se spremaju kao ZIP datoteke." # # File: src/edit.py, line: 168 # File: src/edit.py, line: 285 #: src/edit.py:170 src/edit.py:288 msgid "Remove from archive" msgstr "Ukloni iz arhive" # # File: src/edit.py, line: 255 #: src/edit.py:258 msgid "" "Please note that the only files that are automatically added to this list " "are those files in archives that Comix recognizes as comments." msgstr "" "Imajte na umu da su jedine datoteke koje se automatski dodaju na listu one " "datoteke u arhivama koje Comix prepozna kao komentare." # # File: src/edit.py, line: 270 #: src/edit.py:273 msgid "Size" msgstr "Veličina" # # File: src/enhance.py, line: 51 #: src/enhance.py:51 msgid "Enhance image" msgstr "Poboljšaj sliku" # # File: src/enhance.py, line: 52 #: src/enhance.py:52 msgid "Defaults" msgstr "Predefinirano" # # File: src/enhance.py, line: 79 #: src/enhance.py:79 msgid "Brightness" msgstr "Svjetlina" # # File: src/enhance.py, line: 90 #: src/enhance.py:90 msgid "Contrast" msgstr "Kontrast" # # File: src/enhance.py, line: 101 #: src/enhance.py:101 msgid "Saturation" msgstr "Zasićenje" # # File: src/enhance.py, line: 112 #: src/enhance.py:112 msgid "Sharpness" msgstr "Oštrina" # # File: src/enhance.py, line: 126 #: src/enhance.py:126 msgid "Automatically adjust contrast." msgstr "Automatski prilagodi kontrast." # # File: src/enhance.py, line: 128 #: src/enhance.py:128 msgid "" "Automatically adjust contrast (both lightness and darkness), separately for " "each colour band." msgstr "" "Automatski prilagodi kontrast (osvjetljenje i crninu), posebno za svaki skup " "boja." # # File: src/filechooser.py, line: 35 # File: src/library.py, line: 489 #: src/filechooser.py:38 src/library.py:490 msgid "Open" msgstr "Otvori" # # File: src/filechooser.py, line: 39 #: src/filechooser.py:42 msgid "Save" msgstr "Spremi" # # File: src/filechooser.py, line: 75 #: src/filechooser.py:78 msgid "All files" msgstr "Sve datoteke" # # File: src/filechooser.py, line: 78 #: src/filechooser.py:81 msgid "All Archives" msgstr "Sve Arhive" # # File: src/filechooser.py, line: 82 #: src/filechooser.py:85 msgid "ZIP archives" msgstr "ZIP arhive" # # File: src/filechooser.py, line: 84 #: src/filechooser.py:87 msgid "RAR archives" msgstr "RAR arhive" # # File: src/filechooser.py, line: 86 #: src/filechooser.py:89 msgid "Tar archives" msgstr "Tar arhive" # # File: src/filechooser.py, line: 125 #: src/filechooser.py:134 #, python-format msgid "A file named '%s' already exists. Do you want to replace it?" msgstr "Datoteka imena '%s' već postoji. Želite je zamijeniti?" # # File: src/filechooser.py, line: 128 #: src/filechooser.py:137 msgid "Replacing it will overwrite its contents." msgstr "Zamjenom će sadržaj biti prepisan." # # File: src/filechooser.py, line: 171 # File: src/filechooser.py, line: 249 #: src/filechooser.py:182 src/filechooser.py:260 msgid "All images" msgstr "Sve slike" # # File: src/filechooser.py, line: 173 # File: src/filechooser.py, line: 251 #: src/filechooser.py:184 src/filechooser.py:262 msgid "JPEG images" msgstr "JPEG slike" # # File: src/filechooser.py, line: 174 # File: src/filechooser.py, line: 252 #: src/filechooser.py:185 src/filechooser.py:263 msgid "PNG images" msgstr "PNG slike" # # File: src/filechooser.py, line: 195 #: src/filechooser.py:206 msgid "Automatically add the books to this collection" msgstr "Automatski pridodaj knjige ovoj zbirci" # # File: src/filehandler.py, line: 209 #: src/filehandler.py:209 #, python-format msgid "Could not open %s: Is a directory." msgstr "Nemoguće otvoriti %s: To je direktorij." # # File: src/filehandler.py, line: 213 #: src/filehandler.py:213 #, python-format msgid "Could not open %s: No such file." msgstr "Nemoguće otvoriti %s: Datoteka ne postoji." # # File: src/filehandler.py, line: 217 #: src/filehandler.py:217 #, python-format msgid "Could not open %s: Permission denied." msgstr "Nemoguće otvoriti %s: Pristup odbijen." # # File: src/filehandler.py, line: 222 #: src/filehandler.py:222 #, python-format msgid "Could not open %s: Unknown file type." msgstr "Nemoguće otvoriti %s: Nepoznat tip datoteke." # # File: src/filehandler.py, line: 285 #: src/filehandler.py:285 #, python-format msgid "No images in '%s'" msgstr "Nema slika u '%s'" # # File: src/filehandler.py, line: 411 #: src/filehandler.py:413 msgid "Unknown filetype" msgstr "Nepoznat tip datoteke" # # File: src/librarybackend.py, line: 272 # File: src/librarybackend.py, line: 274 #: src/librarybackend.py:273 src/librarybackend.py:275 msgid "(Copy)" msgstr "(Kopiranje)" # # File: src/library.py, line: 38 #: src/library.py:38 msgid "Library" msgstr "Biblioteka" # # File: src/library.py, line: 150 #: src/library.py:150 msgid "Rename..." msgstr "Preimenuj..." # # File: src/library.py, line: 152 #: src/library.py:152 msgid "Duplicate collection" msgstr "Udvostruči kolekciju" # # File: src/library.py, line: 154 #: src/library.py:154 msgid "Remove collection..." msgstr "Obriši kolekciju..." # # File: src/library.py, line: 202 #: src/library.py:202 msgid "All books" msgstr "Sve knjige" # # File: src/library.py, line: 231 #: src/library.py:231 msgid "Remove collection from the library?" msgstr "Obriši kolekciju iz biblioteke?" # # File: src/library.py, line: 233 #: src/library.py:233 msgid "" "The selected collection will be removed from the library (but the books and " "subcollections in it will remain). Are you sure that you want to continue?" msgstr "" "Označena kolekcija će biti obrisana iz biblioteke (ali knjige i pod-" "kolekcije će ostati). Sigurni ste da želite nastaviti?" # # File: src/library.py, line: 251 #: src/library.py:251 msgid "Rename collection?" msgstr "Preimenuj kolekciju?" # # File: src/library.py, line: 253 #: src/library.py:253 msgid "Please enter a new name for the selected collection." msgstr "Unesite novo ime za označenu kolekciju." # # File: src/library.py, line: 271 #: src/library.py:271 #, python-format msgid "Could not change the name to '%s'." msgstr "Nemoguće promijeniti ime u '%s'." # # File: src/library.py, line: 275 # File: src/library.py, line: 881 #: src/library.py:275 src/library.py:882 msgid "A collection by that name already exists." msgstr "Kolekcija s tim imenom već postoji." # # File: src/library.py, line: 285 #: src/library.py:285 msgid "Could not duplicate collection." msgstr "Nemoguće udvostručiti kolekciju." # # File: src/library.py, line: 382 #: src/library.py:382 msgid "Root" msgstr "Korijen" # # File: src/library.py, line: 386 #: src/library.py:386 #, python-format msgid "" "Put the collection '%(subcollection)s' in the collection '%(supercollection)" "s'." msgstr "Stavi kolekciju '%(subcollection)s' u kolekciju '%(supercollection)s'." # # File: src/library.py, line: 407 #: src/library.py:407 #, python-format msgid "Add books to '%s'." msgstr "Dodaj knjige u '%s'." # # File: src/library.py, line: 411 #: src/library.py:411 #, python-format msgid "" "Move books from '%(source collection)s' to '%(destination collection)s'." msgstr "" "Premjesti knjige iz '%(source collection)s' u '%(destination collection)s'." # # File: src/library.py, line: 492 #: src/library.py:493 msgid "Remove from this collection" msgstr "Obriši iz ove kolekcije" # # File: src/library.py, line: 495 #: src/library.py:496 msgid "Remove from the library..." msgstr "Obriši iz biblioteke..." # # File: src/library.py, line: 588 #: src/library.py:589 #, python-format msgid "Removed %(num)d book(s) from '%(collection)s'." msgstr "Obrisano %(num)d knjiga iz '%(collection)s'." # # File: src/library.py, line: 597 #: src/library.py:598 msgid "Remove books from the library?" msgstr "Obrisati knjige iz biblioteke?" # # File: src/library.py, line: 599 #: src/library.py:600 msgid "" "The selected books will be removed from the library (but the original files " "will be untouched). Are you sure that you want to continue?" msgstr "" "Označene knjige će biti obrisane iz biblioteke (ali originali će ostati " "nepromijenjeni). Sigurni ste da želite nastaviti?" # # File: src/library.py, line: 609 #: src/library.py:610 #, python-format msgid "Removed %d book(s) from the library." msgstr "Obrisano %d knjiga iz biblioteke." # # File: src/library.py, line: 769 #: src/library.py:770 msgid "Search" msgstr "Pretraga" # # File: src/library.py, line: 774 #: src/library.py:775 msgid "" "Display only those books that have the specified text string in their full " "path. The search is not case sensitive." msgstr "" "Prikaži samo one knjige koje imaju naznačeni tekst u njihovoj punoj putanji. " "Pretraga nije osjetljiva na velika i mala slova." # # File: src/library.py, line: 776 #: src/library.py:777 msgid "Cover size" msgstr "Veličina naslovnice" # # File: src/library.py, line: 789 #: src/library.py:790 msgid "Add books" msgstr "Dodaj knjige" # # File: src/library.py, line: 793 #: src/library.py:794 msgid "Add more books to the library." msgstr "Dodaj još knjiga u biblioteku." # # File: src/library.py, line: 795 #: src/library.py:796 msgid "Add collection" msgstr "Dodaj kolekciju" # # File: src/library.py, line: 800 #: src/library.py:801 msgid "Add a new empty collection." msgstr "Dodaj novu praznu kolekciju." # # File: src/library.py, line: 806 #: src/library.py:807 msgid "Open the selected book." msgstr "Otvori označenu knjigu." # # File: src/library.py, line: 832 # File: src/properties.py, line: 113 #: src/library.py:833 src/properties.py:118 #, python-format msgid "%d pages" msgstr "%d stranica" # # File: src/library.py, line: 854 #: src/library.py:855 msgid "Add new collection?" msgstr "Dodaj novu kolekciju?" # # File: src/library.py, line: 856 #: src/library.py:857 msgid "Please enter a name for the new collection." msgstr "Unesite ime za novu kolekciju." # # File: src/library.py, line: 862 #: src/library.py:863 msgid "New collection" msgstr "Nova kolekcija" # # File: src/library.py, line: 876 #: src/library.py:877 #, python-format msgid "Could not add a new collection called '%s'." msgstr "Nemoguće dodati novu kolekciju imena '%s'." # # File: src/library.py, line: 910 #: src/library.py:911 msgid "Adding books" msgstr "Dodajem knjige" # # File: src/library.py, line: 930 #: src/library.py:931 msgid "Added books" msgstr "Dodane knjige" # # File: src/library.py, line: 952 #: src/library.py:953 #, python-format msgid "Adding '%s'..." msgstr "Dodajem '%s'..." # # File: src/main.py, line: 666 #: src/main.py:699 msgid "SLIDESHOW" msgstr "PREZENTACIJA" # # File: src/preferences.py, line: 78 #: src/preferences.py:80 msgid "Preferences" msgstr "Postavke" # # File: src/preferences.py, line: 93 #: src/preferences.py:95 msgid "Background" msgstr "Pozadina" # # File: src/preferences.py, line: 95 #: src/preferences.py:97 msgid "Use this colour as background" msgstr "Koristi ovu boju kao pozadinu" # # File: src/preferences.py, line: 97 #: src/preferences.py:99 msgid "Always use this selected colour as the background colour." msgstr "Uvijek koristi označenu boju kao boju pozadine." # # File: src/preferences.py, line: 102 #: src/preferences.py:104 msgid "Use dynamic background colour." msgstr "Koristi dinamičnu boju pozadine." # # File: src/preferences.py, line: 106 #: src/preferences.py:108 msgid "Automatically pick a background colour that fits the viewed image." msgstr "Automatski izaberi boju pozadine koja se slaže sa prikazanom slikom." # # File: src/preferences.py, line: 109 #: src/preferences.py:111 msgid "Thumbnails" msgstr "Sličice" # # File: src/preferences.py, line: 110 #: src/preferences.py:112 msgid "Thumbnail size (in pixels)" msgstr "Veličina sličica (u pikselima)" # # File: src/preferences.py, line: 117 #: src/preferences.py:119 msgid "Show page numbers on thumbnails." msgstr "Prikazuj broj stranice na sličicama." # # File: src/preferences.py, line: 124 #: src/preferences.py:126 msgid "Magnifying Glass" msgstr "Povećalo" # # File: src/preferences.py, line: 125 #: src/preferences.py:127 msgid "Magnifying glass size (in pixels)" msgstr "Veličina povećala (u pikselima)" # # File: src/preferences.py, line: 131 #: src/preferences.py:133 msgid "" "Set the size of the magnifying glass. It is a square with a side of this " "many pixels." msgstr "" "Postavi veličinu povećala. To je pravokutnik stranica veličine ovoliko " "piksela." # # File: src/preferences.py, line: 133 #: src/preferences.py:135 msgid "Magnification factor" msgstr "Faktor uvećanja" # # File: src/preferences.py, line: 140 #: src/preferences.py:142 msgid "Set the magnification factor of the magnifying glass." msgstr "Postavi faktor uvećanja povećala." # # File: src/preferences.py, line: 143 #: src/preferences.py:145 msgid "Image scaling" msgstr "Skaliranje slike" # # File: src/preferences.py, line: 144 #: src/preferences.py:146 msgid "Stretch small images." msgstr "Rastegni male slike." # # File: src/preferences.py, line: 148 #: src/preferences.py:150 msgid "" "Stretch images to a size that is larger than their original size if the " "current zoom mode requests it. If this preference is unset, images are never " "scaled to be larger than their original size." msgstr "" "Rastezanje slike na veličinu veću od izvorne ako to trenutna postavka " "uvećanja zahtjeva. Ukoliko nije postavljeno slike se nikad ne skaliraju na " "veličinu veću od izvorne." # # File: src/preferences.py, line: 151 #: src/preferences.py:153 msgid "Transparency" msgstr "Transparentnost" # # File: src/preferences.py, line: 153 #: src/preferences.py:155 msgid "Use checkered background for transparent images." msgstr "Koristi kvadratnu pozadinu za transparentne slike." # # File: src/preferences.py, line: 159 #: src/preferences.py:161 msgid "" "Use a grey checkered background for transparent images. If this preference " "is unset, the background is plain white instead." msgstr "" "Koristi sivu kvadratnu pozadinu za transparentne slike. Ukoliko nije " "postavljeno pozadina će biti čisto bijela." # # File: src/preferences.py, line: 161 #: src/preferences.py:163 msgid "Appearance" msgstr "Izgled" # # File: src/preferences.py, line: 167 #: src/preferences.py:169 msgid "Scroll" msgstr "Pomicanje" # # File: src/preferences.py, line: 169 #: src/preferences.py:171 msgid "Use smart space key scrolling." msgstr "Koristi pametno pomicanje space tipkom." # # File: src/preferences.py, line: 174 #: src/preferences.py:176 msgid "" "Use smart scrolling with the space key. Normally the space key scrolls only " "right down (or up when shift is pressed), but with this preference set it " "also scrolls sideways and so tries to follow the natural reading order of " "the comic book." msgstr "" "Koristi pametno pomicanje space tipkom. Obično space tipka pomiče samo ravno " "dolje (ili gore u kombinaciji sa shift tipkom), ali sa ovom postavkom " "uključenom također pomiče bočno i tako pokušava pratiti prirodni red čitanja " "stripa." #: src/preferences.py:180 msgid "Flip pages when scrolling off the edges of the page." msgstr "Okreni stranicu kod pomicanja preko ruba stranice." #: src/preferences.py:185 msgid "" "Flip pages when scrolling \"off the page\" with the scroll wheel or with the " "arrow keys. It takes three consecutive \"steps\" with the scroll wheel or " "the arrow keys for the pages to be flipped." msgstr "" "Okreni stranicu kod pomicanja \"preko ruba stranice\" sa kotačićem miša ili " "strelicama. Potrebna su tri uzastopna \"koraka\" sa kotačićem ili strelicama " "da bi se stranica okrenula." # # File: src/preferences.py, line: 177 # File: src/ui.py, line: 296 #: src/preferences.py:188 src/ui.py:298 msgid "Double page mode" msgstr "Prikaz dvostrukih stranica" # # File: src/preferences.py, line: 179 #: src/preferences.py:190 msgid "Flip two pages in double page mode." msgstr "Okreni dvije stranice kod prikaza dvostrukih stranica." # # File: src/preferences.py, line: 184 #: src/preferences.py:195 msgid "" "Flip two pages, instead of one, each time we flip pages in double page mode." msgstr "" "Okreni dvije stranice, umjesto jedne, svaki put kad okrenemo stranicu kod " "prikaza dvostrukih stranica." # # File: src/preferences.py, line: 187 #: src/preferences.py:198 msgid "Show only one wide image in double page mode." msgstr "Prikaži samo jednu široku sliku kod prikaza dvostrukih stranica." # # File: src/preferences.py, line: 193 #: src/preferences.py:204 msgid "" "Display only one image in double page mode, if the image's width exceeds its " "height. The result of this is that scans that span two pages are displayed " "properly (i.e. alone) also in double page mode." msgstr "" "Prikaži samo jednu sliku, kod prikaza dvostrukih stranica, ako širina slike " "nadilazi veličinu. Rezultat je ispravno prikazivanje stripova skeniranih po " "dvije stranice, kod prikaza dvostrukih stranica." # # File: src/preferences.py, line: 196 #: src/preferences.py:207 msgid "Files" msgstr "Datoteke" # # File: src/preferences.py, line: 198 #: src/preferences.py:209 msgid "Automatically open the next archive." msgstr "Automatski otvori sljedeću arhivu." # # File: src/preferences.py, line: 203 #: src/preferences.py:214 msgid "" "Automatically open the next archive in the directory when flipping past the " "last page, or the previous archive when flipping past the first page." msgstr "" "Automatski otvori sljedeću arhivu u direktoriju kod okretanja zadnje " "stranice, ili prošlu arhivu kod okretanja prve stranice." # # File: src/preferences.py, line: 206 #: src/preferences.py:217 msgid "Automatically open the last viewed file on startup." msgstr "Kod pokretanja automatski otvori zadnje prikazanu stranicu." # # File: src/preferences.py, line: 211 #: src/preferences.py:222 msgid "" "Automatically open, on startup, the file that was open when Comix was last " "closed." msgstr "" "Kod pokretanja automatski otvori datoteku koja je bila otvorena u trenutku " "gašenja." # # File: src/preferences.py, line: 214 #: src/preferences.py:225 msgid "Store information about recently opened files." msgstr "Spremaj informacije o nedavno otvorenim datotekama." # # File: src/preferences.py, line: 219 #: src/preferences.py:230 msgid "" "Add information about all files opened from within Comix to the shared " "recent files list." msgstr "" "Dodaj informacije o datotekama otvorenim iz Comix na dijeljeni popis nedavno " "otvorenih datoteka." # # File: src/preferences.py, line: 222 #: src/preferences.py:233 msgid "Store thumbnails for opened files." msgstr "Spremaj sličice za otvorene datoteke." # # File: src/preferences.py, line: 227 #: src/preferences.py:238 msgid "" "Store thumbnails for opened files according to the freedesktop.org " "specification. These thumbnails are shared by many other applications, such " "as most file managers." msgstr "" "Spremaj sličice za otvorene datoteke prema freedesktop.org specifikaciji. " "Ove sličice se dijele između mnogo aplikacija, kao npr. većine upravitelja " "datotekama." # # File: src/preferences.py, line: 230 #: src/preferences.py:241 msgid "Cache" msgstr "Međuspremnik" # # File: src/preferences.py, line: 231 #: src/preferences.py:242 msgid "Use a cache to speed up browsing." msgstr "Koristi međuspremnik da bi ubrzao pregledavanje." # # File: src/preferences.py, line: 235 #: src/preferences.py:246 msgid "" "Cache the images that are next to the currently viewed image in order to " "speed up browsing. Since the speed improvements are quite big, it is " "recommended that you have this preference set, unless you are running short " "on free RAM." msgstr "" "Spremaj slike (koje su blizu trenutno prikazanoj) u međuspremnik da bi " "ubrzao pregledavanje. Kako su ubrzanja prilično velika preporučeno je " "označiti ovu postavku, ako vam ne nedostaje slobodne radne memorije." # # File: src/preferences.py, line: 237 #: src/preferences.py:248 msgid "Behaviour" msgstr "Ponašanje" # # File: src/preferences.py, line: 243 #: src/preferences.py:254 msgid "Default modes" msgstr "Predefinirani načini" # # File: src/preferences.py, line: 245 #: src/preferences.py:256 msgid "Use double page mode by default." msgstr "Koristi prikaz dvostrukih stranica kao predefinirani način." # # File: src/preferences.py, line: 250 #: src/preferences.py:261 msgid "Use fullscreen by default." msgstr "Koristi cijeli zaslon kao predefinirani način." # # File: src/preferences.py, line: 255 #: src/preferences.py:266 msgid "Use manga mode by default." msgstr "Koristi manga prikaz kao predefinirani način." # # File: src/preferences.py, line: 260 #: src/preferences.py:271 msgid "Default zoom mode" msgstr "Predefinirana metoda uvećanja" # # File: src/preferences.py, line: 262 # File: src/ui.py, line: 288 #: src/preferences.py:273 src/ui.py:290 msgid "Best fit mode" msgstr "Najbolje pristajanje" # # File: src/preferences.py, line: 263 # File: src/ui.py, line: 290 #: src/preferences.py:274 src/ui.py:292 msgid "Fit width mode" msgstr "Prilagodi širini" # # File: src/preferences.py, line: 264 # File: src/ui.py, line: 292 #: src/preferences.py:275 src/ui.py:294 msgid "Fit height mode" msgstr "Prilagodi visini" # # File: src/preferences.py, line: 265 # File: src/ui.py, line: 294 #: src/preferences.py:276 src/ui.py:296 msgid "Manual zoom mode" msgstr "Ručno uvećanje" # # File: src/preferences.py, line: 271 #: src/preferences.py:282 msgid "Fullscreen" msgstr "Cijeli zaslon" # # File: src/preferences.py, line: 273 #: src/preferences.py:284 msgid "Automatically hide all toolbars in fullscreen." msgstr "Automatski sakri sve alatne trake kod prikaza preko cijelog zaslona." # # File: src/preferences.py, line: 279 #: src/preferences.py:290 msgid "Slideshow" msgstr "Prezentacija" # # File: src/preferences.py, line: 280 #: src/preferences.py:291 msgid "Slideshow delay (in seconds)" msgstr "Zadrška prezentacije (u sekundama)" # # File: src/preferences.py, line: 289 #: src/preferences.py:300 msgid "Comment extensions" msgstr "Ekstenzije komentara" # # File: src/preferences.py, line: 295 #: src/preferences.py:306 msgid "" "Treat all files found within archives, that have one of these file endings, " "as comments." msgstr "" "Tretiraj sve datoteke unutar arhiva, koje imaju jednu od ovih ekstenzija, " "kao komentare." #: src/preferences.py:309 msgid "Rotation" msgstr "" #: src/preferences.py:311 msgid "Automatically rotate images according to their metadata." msgstr "" #: src/preferences.py:316 msgid "" "Automatically rotate images when an orientation is specified in the image " "metadata, such as in an Exif tag." msgstr "" # # File: src/preferences.py, line: 297 #: src/preferences.py:318 msgid "Display" msgstr "Prikaz" # # File: src/properties.py, line: 89 #: src/properties.py:94 msgid "Properties" msgstr "Svojstva" # # File: src/properties.py, line: 114 #: src/properties.py:119 #, python-format msgid "%d comments" msgstr "%d komentara" # # File: src/properties.py, line: 124 # File: src/properties.py, line: 159 #: src/properties.py:129 src/properties.py:164 msgid "Location" msgstr "Lokacija" # # File: src/properties.py, line: 126 # File: src/properties.py, line: 160 #: src/properties.py:131 src/properties.py:165 msgid "Accessed" msgstr "Pristupljeno" # # File: src/properties.py, line: 128 # File: src/properties.py, line: 162 #: src/properties.py:133 src/properties.py:167 msgid "Modified" msgstr "Mijenjano" # # File: src/properties.py, line: 130 # File: src/properties.py, line: 164 #: src/properties.py:135 src/properties.py:169 msgid "Permissions" msgstr "Dozvole" # # File: src/properties.py, line: 131 # File: src/properties.py, line: 165 #: src/properties.py:136 src/properties.py:170 msgid "Owner" msgstr "Vlasnik" # # File: src/properties.py, line: 135 #: src/properties.py:140 msgid "Archive" msgstr "Arhiva" # # File: src/properties.py, line: 169 #: src/properties.py:174 msgid "Image" msgstr "Slika" # # File: src/thumbremover.py, line: 22 #: src/thumbremover.py:24 msgid "Thumbnail maintenance" msgstr "Održavanje sličica" # # File: src/thumbremover.py, line: 24 #: src/thumbremover.py:26 msgid "Cleanup" msgstr "Čišćenje" # # File: src/thumbremover.py, line: 36 #: src/thumbremover.py:38 msgid "Cleanup thumbnails" msgstr "Očisti sličice" # # File: src/thumbremover.py, line: 46 #: src/thumbremover.py:48 msgid "" "Thumbnails for files (such as image files and comic book archives) are " "stored in your home directory. Many different applications use and create " "these thumbnails, but sometimes thumbnails remain even though the original " "files have been removed - wasting space. This dialog can cleanup your stored " "thumbnails by removing orphaned and outdated thumbnails." msgstr "" "Sličice datoteka (kao slika i arhiva sa stripovima) se spremaju u vašu " "osobnu mapu. Mnogo različitih aplikacija koristi i stvara ove sličice, ali " "ponekad sličice zaostanu iako su izvorne datoteke obrisane - troše prostor " "na disku. Ovaj dijalog može očistiti vaše spremljene sličice brišući te i " "zastarjele sličice." # # File: src/thumbremover.py, line: 58 #: src/thumbremover.py:60 msgid "Thumbnail directory" msgstr "Direktorij sa sličicama" # # File: src/thumbremover.py, line: 65 #: src/thumbremover.py:67 msgid "Total number of thumbnails" msgstr "Ukupni broj sličica" # # File: src/thumbremover.py, line: 68 # File: src/thumbremover.py, line: 75 #: src/thumbremover.py:70 src/thumbremover.py:77 msgid "Calculating..." msgstr "Izračunavanje..." # # File: src/thumbremover.py, line: 72 #: src/thumbremover.py:74 msgid "Total size of thumbnails" msgstr "Ukupna veličina sličica" # # File: src/thumbremover.py, line: 80 #: src/thumbremover.py:82 msgid "Do you want to cleanup orphaned and outdated thumbnails now?" msgstr "Želite li sada očistiti zaostale i zastarjele sličice?" # # File: src/thumbremover.py, line: 116 #: src/thumbremover.py:118 msgid "Removing thumbnails" msgstr "Uklanjam sličice" # # File: src/thumbremover.py, line: 135 #: src/thumbremover.py:137 msgid "Number of removed thumbnails" msgstr "Broj obrisanih sličica" # # File: src/thumbremover.py, line: 142 #: src/thumbremover.py:144 msgid "Total size of removed thumbnails" msgstr "Ukupna veličina obrisanih sličica" # # File: src/thumbremover.py, line: 193 #: src/thumbremover.py:195 #, python-format msgid "Removed thumbnail for '%s'" msgstr "Obrisana sličica za '%s'" # # File: src/ui.py, line: 34 #: src/ui.py:34 msgid "_Next page" msgstr "_Sljedeća stranica" # # File: src/ui.py, line: 36 #: src/ui.py:36 msgid "_Previous page" msgstr "_Prethodna stranica" # # File: src/ui.py, line: 38 #: src/ui.py:38 msgid "_First page" msgstr "P_rva stranica" # # File: src/ui.py, line: 40 #: src/ui.py:40 msgid "_Last page" msgstr "_Zadnja stranica" # # File: src/ui.py, line: 42 #: src/ui.py:42 msgid "_Zoom in" msgstr "_Uvećaj" # # File: src/ui.py, line: 44 #: src/ui.py:44 msgid "Zoom _out" msgstr "U_manji" # # File: src/ui.py, line: 46 #: src/ui.py:46 msgid "O_riginal size" msgstr "I_zvorna veličina" # # File: src/ui.py, line: 48 #: src/ui.py:48 msgid "_Close" msgstr "_Zatvori" # # File: src/ui.py, line: 50 #: src/ui.py:50 msgid "_Quit" msgstr "_Izlaz" # # File: src/ui.py, line: 52 #: src/ui.py:52 msgid "_Rotate 90 degrees CW" msgstr "_Okreni za 90 stupnjeva u smjeru kazaljke na satu" # # File: src/ui.py, line: 54 #: src/ui.py:54 msgid "Rotate 180 de_grees" msgstr "Okreni za 180 _stupnjeva" # # File: src/ui.py, line: 56 #: src/ui.py:56 msgid "Rotat_e 90 degrees CCW" msgstr "Okre_ni za 90 stupnjeva obrnuto od smjera kazaljke na satu" # # File: src/ui.py, line: 58 #: src/ui.py:58 msgid "Fli_p horizontally" msgstr "Okreni _vodoravno" # # File: src/ui.py, line: 60 #: src/ui.py:60 msgid "Flip _vertically" msgstr "Okreni _okomito" # # File: src/ui.py, line: 62 #: src/ui.py:62 msgid "Manual _Zoom" msgstr "Ručno U_većanje" # # File: src/ui.py, line: 63 #: src/ui.py:63 msgid "Open _recent" msgstr "Nedavno otvo_reno" # # File: src/ui.py, line: 64 #: src/ui.py:64 msgid "_Bookmarks" msgstr "_Oznake" # # File: src/ui.py, line: 65 #: src/ui.py:65 msgid "T_oolbars" msgstr "A_latne trake" # # File: src/ui.py, line: 66 #: src/ui.py:66 msgid "_Edit" msgstr "_Uredi" # # File: src/ui.py, line: 67 #: src/ui.py:67 msgid "_File" msgstr "_Datoteka" # # File: src/ui.py, line: 68 #: src/ui.py:68 msgid "_View" msgstr "_Prikaz" # # File: src/ui.py, line: 69 #: src/ui.py:69 msgid "_Go" msgstr "_Idi na" # # File: src/ui.py, line: 70 #: src/ui.py:70 msgid "_Help" msgstr "_Pomoć" # # File: src/ui.py, line: 71 #: src/ui.py:71 msgid "_Transform" msgstr "_Transformacija" # # File: src/ui.py, line: 75 #: src/ui.py:75 msgid "_Fullscreen" msgstr "_Preko cijelog zaslona" # # File: src/ui.py, line: 77 #: src/ui.py:77 msgid "_Double page mode" msgstr "Prikaz _dvostrukih stranica" # # File: src/ui.py, line: 79 #: src/ui.py:79 msgid "_Toolbar" msgstr "_Alati" # # File: src/ui.py, line: 81 #: src/ui.py:81 msgid "_Menubar" msgstr "_Izbornici" # # File: src/ui.py, line: 83 #: src/ui.py:83 msgid "St_atusbar" msgstr "S_tanje" # # File: src/ui.py, line: 85 #: src/ui.py:85 msgid "S_crollbars" msgstr "Kli_zači" # # File: src/ui.py, line: 87 #: src/ui.py:87 msgid "Th_umbnails" msgstr "Sliči_ce" # # File: src/ui.py, line: 89 #: src/ui.py:89 msgid "H_ide all" msgstr "_Sakrij sve" # # File: src/ui.py, line: 91 #: src/ui.py:91 msgid "_Manga mode" msgstr "_Manga prikaz" # # File: src/ui.py, line: 93 #: src/ui.py:93 msgid "_Keep transformation" msgstr "_Zadrži transformaciju" # # File: src/ui.py, line: 95 #: src/ui.py:95 msgid "Run _slideshow" msgstr "Pokreni _prezentaciju" # # File: src/ui.py, line: 97 #: src/ui.py:97 msgid "Magnifying _glass" msgstr "_Povećalo" # # File: src/ui.py, line: 101 #: src/ui.py:103 msgid "_Best fit mode" msgstr "_Najbolje pristajanje" # # File: src/ui.py, line: 103 #: src/ui.py:105 msgid "Fit _width mode" msgstr "Pri_lagodi širini" # # File: src/ui.py, line: 105 #: src/ui.py:107 msgid "Fit _height mode" msgstr "Prilagodi _visini" # # File: src/ui.py, line: 107 #: src/ui.py:109 msgid "M_anual zoom mode" msgstr "R_učno uvećanje" # # File: src/ui.py, line: 113 #: src/ui.py:115 msgid "_About" msgstr "_O programu" # # File: src/ui.py, line: 115 #: src/ui.py:117 msgid "_View comments..." msgstr "_Pogledaj komentare..." # # File: src/ui.py, line: 117 #: src/ui.py:119 msgid "_Edit archive..." msgstr "_Uredi arhivu..." # # File: src/ui.py, line: 119 #: src/ui.py:121 msgid "_Open..." msgstr "_Otvori..." # # File: src/ui.py, line: 121 #: src/ui.py:123 msgid "_Properties" msgstr "_Svojstva" # # File: src/ui.py, line: 123 #: src/ui.py:125 msgid "_Enhance image..." msgstr "_Poboljšaj sliku..." # # File: src/ui.py, line: 126 #: src/ui.py:128 msgid "_Thumbnail maintenance..." msgstr "_Održavanje sličica..." # # File: src/ui.py, line: 128 #: src/ui.py:130 msgid "Pr_eferences" msgstr "Po_stavke" # # File: src/ui.py, line: 132 #: src/ui.py:134 msgid "_Library..." msgstr "_Biblioteka..." # # File: src/ui.py, line: 282 #: src/ui.py:284 msgid "First page" msgstr "Prva stranica" # # File: src/ui.py, line: 284 #: src/ui.py:286 msgid "Previous page" msgstr "Prethodna stranica" # # File: src/ui.py, line: 285 #: src/ui.py:287 msgid "Next page" msgstr "Sljedeća stranica" # # File: src/ui.py, line: 286 #: src/ui.py:288 msgid "Last page" msgstr "Zadnja stranica" # # File: src/ui.py, line: 297 #: src/ui.py:299 msgid "Manga mode" msgstr "Manga prikaz" # # File: src/ui.py, line: 298 #: src/ui.py:300 msgid "Magnifying glass" msgstr "Povećalo" comix-4.0.4/messages/hr/LC_MESSAGES/comix.mo0000644000175000001440000005503511120774323017224 0ustar sorkusers<[\ )<LR[ wY 0< K X e o yM9 !.A]p.3P$RBZ      !4EI7+";"["~ %% +3H Zhz r]<  3 E R a o u       4!#!L!I" \"+g""" "" "" "###A&#h# |### ######$$!&$ H$ S$`$q$Hz$$$ $$$%% $%1% I%U% [%f% k%w%+%4%%u& & & & &O& ' '#'#B'f'{'''.'$'(5(I( \()f(((((( ( ( () ))5)UM) )-) ))* ***?G*+ +.++"{,,a- w- - - -#-)--|.1/E/Y/o/ /a/0 131L1 l1Xy11!1{202 222 3(3474gU4 4 4 44 44 55#5*5<5B5S5f5x5 ~5 5555 5 5 55 555 666,6F6 O6Z6`6r6{6 88 E8 Q8$]888 8 88 889`"999 999 9 9 9 :D:0X:::$:&:R:6;DU;;;;#V<Tz<E<= =)=>= ]="g= ==n>> >>>E>8 ?D? Y?c?+l?!?"??(?+"@'N@-v@@@@@@@A 1A?ARAYA%B9BBBC $C 1C>COC XCfCxCCCCCC2D6DfDWE jEAxEE!E EE FFF/F5F:F>NFF FFFF FFFG G !G ,G!6G XGeGwG GKGGGGHH.HAHHHZHsHH HHHHH(HII IIIIFI J JJ >J_JtJJJ,J!JK K2K GK$TKyK:KKKK K L LL #L-L#6LRZLLBL%L!M AM KM#XMC|MNN3NO&OOP P P P P PP}Q~Q6RER^R sRRGRS#ST8TWTXgTT1TqU2zU<U!U/ V.lRnY)p|"zT:VI%3K!@7 vD]4UqXae&Hb<w/6t WsG~A\%d comments%d pages(Copy)A collection by that name already exists.A file named '%s' already exists. Do you want to replace it?AboutAccessedAdd a new empty collection.Add booksAdd books to '%s'.Add collectionAdd information about all files opened from within Comix to the shared recent files list.Add more books to the library.Add new collection?Added booksAdding '%s'...Adding booksAll ArchivesAll booksAll filesAll imagesAll stored bookmarks will be removed. Are you sure that you want to continue?Always use this selected colour as the background colour.AppearanceArchiveArchives are stored as ZIP files.Automatically add the books to this collectionAutomatically adjust contrast (both lightness and darkness), separately for each colour band.Automatically adjust contrast.Automatically hide all toolbars in fullscreen.Automatically open the last viewed file on startup.Automatically open the next archive in the directory when flipping past the last page, or the previous archive when flipping past the first page.Automatically open the next archive.Automatically open, on startup, the file that was open when Comix was last closed.Automatically pick a background colour that fits the viewed image.BackgroundBehaviourBest fit modeBrazilian Portuguese translationBrightnessBzip2 compressed tar archiveCacheCache the images that are next to the currently viewed image in order to speed up browsing. Since the speed improvements are quite big, it is recommended that you have this preference set, unless you are running short on free RAM.Calculating...Catalan translationCleanupCleanup thumbnailsClear all bookmarks?Comix is an image viewer specifically designed to handle comic books.Comix is licensed under the GNU General Public License.Comment extensionsCommentsContrastCould not add a new collection called '%s'.Could not change the name to '%s'.Could not duplicate collection.Could not find RAR file extractor!Could not open %s: Is a directory.Could not open %s: No such file.Could not open %s: Permission denied.Could not open %s: Unknown file type.Could not read %sCover sizeCreditsCroatian translationCzech translationDefault modesDefault zoom modeDefaultsDeveloperDisplayDisplay only one image in double page mode, if the image's width exceeds its height. The result of this is that scans that span two pages are displayed properly (i.e. alone) also in double page mode.Display only those books that have the specified text string in their full path. The search is not case sensitive.Do you want to cleanup orphaned and outdated thumbnails now?Double page modeDuplicate collectionDutch translationEdit archiveEdit bookmarksEnhance imageFilesFirst pageFit _height modeFit _width modeFit height modeFit width modeFli_p horizontallyFlip _verticallyFlip pages when scrolling "off the page" with the scroll wheel or with the arrow keys. It takes three consecutive "steps" with the scroll wheel or the arrow keys for the pages to be flipped.Flip pages when scrolling off the edges of the page.Flip two pages in double page mode.Flip two pages, instead of one, each time we flip pages in double page mode.French translationFullscreenGerman translation and Nautilus thumbnailerGreek translationGzip compressed tar archiveH_ide allHungarian translationIcon designImageImage scalingImagesImportIndonesian translationIt reads ZIP, RAR and tar archives, as well as plain image files.Italian translationJPEG imagesJapanese translationKorean translationLast pageLibraryLocationM_anual zoom modeMagnification factorMagnifying GlassMagnifying _glassMagnifying glassMagnifying glass size (in pixels)Manga modeManual _ZoomManual zoom modeModifiedMove books from '%(source collection)s' to '%(destination collection)s'.NameNew collectionNext pageNo images in '%s'Number of removed thumbnailsO_riginal sizeOpenOpen _recentOpen the selected book.Other filesOwnerPNG imagesPagePermissionsPersian translationPlease enter a name for the new collection.Please enter a new name for the selected collection.Please note that the only files that are automatically added to this list are those files in archives that Comix recognizes as comments.Polish translationPr_eferencesPreferencesPrevious pagePropertiesPut the collection '%(subcollection)s' in the collection '%(supercollection)s'.RAR archiveRAR archivesRemove books from the library?Remove collection from the library?Remove collection...Remove from archiveRemove from the library...Remove from this collectionRemoved %(num)d book(s) from '%(collection)s'.Removed %d book(s) from the library.Removed thumbnail for '%s'Removing thumbnailsRename collection?Rename...Replacing it will overwrite its contents.RootRotat_e 90 degrees CCWRotate 180 de_greesRun _slideshowRussian translationSLIDESHOWS_crollbarsSaturationSaveScrollSearchSet the magnification factor of the magnifying glass.Set the size of the magnifying glass. It is a square with a side of this many pixels.SharpnessShow only one wide image in double page mode.Show page numbers on thumbnails.Simplified Chinese translationSizeSlideshowSlideshow delay (in seconds)Some old files (that were used for storing preferences, the library, bookmarks etc. for older versions of Comix) were found on your computer. If you do not plan on using the older versions of Comix again, you should remove these files in order to save some disk space. Do you want these files to be removed for you now?Spanish translationSt_atusbarStore information about recently opened files.Store thumbnails for opened files according to the freedesktop.org specification. These thumbnails are shared by many other applications, such as most file managers.Store thumbnails for opened files.Stretch images to a size that is larger than their original size if the current zoom mode requests it. If this preference is unset, images are never scaled to be larger than their original size.Stretch small images.T_oolbarsTar archiveTar archivesTh_umbnailsThe new archive could not be saved!The original files have not been removed.The selected books will be removed from the library (but the original files will be untouched). Are you sure that you want to continue?The selected collection will be removed from the library (but the books and subcollections in it will remain). Are you sure that you want to continue?There are deprecated files left on your computer.Thumbnail directoryThumbnail maintenanceThumbnail size (in pixels)ThumbnailsThumbnails for files (such as image files and comic book archives) are stored in your home directory. Many different applications use and create these thumbnails, but sometimes thumbnails remain even though the original files have been removed - wasting space. This dialog can cleanup your stored thumbnails by removing orphaned and outdated thumbnails.Total number of thumbnailsTotal size of removed thumbnailsTotal size of thumbnailsTraditional Chinese translationTransparencyTreat all files found within archives, that have one of these file endings, as comments.Unknown filetypeUse a cache to speed up browsing.Use a grey checkered background for transparent images. If this preference is unset, the background is plain white instead.Use checkered background for transparent images.Use double page mode by default.Use dynamic background colour.Use fullscreen by default.Use manga mode by default.Use smart scrolling with the space key. Normally the space key scrolls only right down (or up when shift is pressed), but with this preference set it also scrolls sideways and so tries to follow the natural reading order of the comic book.Use smart space key scrolling.Use this colour as backgroundYou need either the rar or the unrar program installed in order to read RAR (.cbr) files.ZIP archiveZIP archivesZoom _out_About_Add bookmark_Best fit mode_Bookmarks_Clear bookmarks..._Close_Double page mode_Edit_Edit archive..._Edit bookmarks..._Enhance image..._File_First page_Fullscreen_Go_Help_Keep transformation_Last page_Library..._Manga mode_Menubar_Next page_Open..._Previous page_Properties_Quit_Rotate 90 degrees CW_Thumbnail maintenance..._Toolbar_Transform_View_View comments..._Zoom inProject-Id-Version: comix 4.0.1 Report-Msgid-Bugs-To: POT-Creation-Date: 2008-11-22 02:42+0100 PO-Revision-Date: 2008-12-13 18:00+0100 Last-Translator: Adrian C. Language-Team: Croatian MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit Generated-By: pygettext.py 1.5 Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2; %d komentara%d stranica(Kopiranje)Kolekcija s tim imenom već postoji.Datoteka imena '%s' već postoji. Želite je zamijeniti?O programuPristupljenoDodaj novu praznu kolekciju.Dodaj knjigeDodaj knjige u '%s'.Dodaj kolekcijuDodaj informacije o datotekama otvorenim iz Comix na dijeljeni popis nedavno otvorenih datoteka.Dodaj još knjiga u biblioteku.Dodaj novu kolekciju?Dodane knjigeDodajem '%s'...Dodajem knjigeSve ArhiveSve knjigeSve datotekeSve slikeSve spremljene oznake će biti uklonjene. Sigurno želite nastaviti?Uvijek koristi označenu boju kao boju pozadine.IzgledArhivaArhive se spremaju kao ZIP datoteke.Automatski pridodaj knjige ovoj zbirciAutomatski prilagodi kontrast (osvjetljenje i crninu), posebno za svaki skup boja.Automatski prilagodi kontrast.Automatski sakri sve alatne trake kod prikaza preko cijelog zaslona.Kod pokretanja automatski otvori zadnje prikazanu stranicu.Automatski otvori sljedeću arhivu u direktoriju kod okretanja zadnje stranice, ili prošlu arhivu kod okretanja prve stranice.Automatski otvori sljedeću arhivu.Kod pokretanja automatski otvori datoteku koja je bila otvorena u trenutku gašenja.Automatski izaberi boju pozadine koja se slaže sa prikazanom slikom.PozadinaPonašanjeNajbolje pristajanjeBrazilsko portugalski prijevodSvjetlinaTar arhiva sažeta programom Bzip2MeđuspremnikSpremaj slike (koje su blizu trenutno prikazanoj) u međuspremnik da bi ubrzao pregledavanje. Kako su ubrzanja prilično velika preporučeno je označiti ovu postavku, ako vam ne nedostaje slobodne radne memorije.Izračunavanje...Katalonski prijevodČišćenjeOčisti sličiceOčisti sve oznake?Comix je preglednik slika posebno dizajniran za rukovanje stripovima.Comix je licenciran pod uvjetima GNU opće javne licenceEkstenzije komentaraKomentariKontrastNemoguće dodati novu kolekciju imena '%s'.Nemoguće promijeniti ime u '%s'.Nemoguće udvostručiti kolekciju.RAR program nije pronađen!Nemoguće otvoriti %s: To je direktorij.Nemoguće otvoriti %s: Datoteka ne postoji.Nemoguće otvoriti %s: Pristup odbijen.Nemoguće otvoriti %s: Nepoznat tip datoteke.Neuspješno čitanje %sVeličina naslovniceZahvaleHrvatski prijevodČeški prijevodPredefinirani načiniPredefinirana metoda uvećanjaPredefiniranoRazvojni ProgramerPrikazPrikaži samo jednu sliku, kod prikaza dvostrukih stranica, ako širina slike nadilazi veličinu. Rezultat je ispravno prikazivanje stripova skeniranih po dvije stranice, kod prikaza dvostrukih stranica.Prikaži samo one knjige koje imaju naznačeni tekst u njihovoj punoj putanji. Pretraga nije osjetljiva na velika i mala slova.Želite li sada očistiti zaostale i zastarjele sličice?Prikaz dvostrukih stranicaUdvostruči kolekcijuNizozemski prijevodUredi arhivuUredi oznakePoboljšaj slikuDatotekePrva stranicaPrilagodi _visiniPri_lagodi širiniPrilagodi visiniPrilagodi širiniOkreni _vodoravnoOkreni _okomitoOkreni stranicu kod pomicanja "preko ruba stranice" sa kotačićem miša ili strelicama. Potrebna su tri uzastopna "koraka" sa kotačićem ili strelicama da bi se stranica okrenula.Okreni stranicu kod pomicanja preko ruba stranice.Okreni dvije stranice kod prikaza dvostrukih stranica.Okreni dvije stranice, umjesto jedne, svaki put kad okrenemo stranicu kod prikaza dvostrukih stranica.Francuski prijevodCijeli zaslonNjemački prijevod i Nautilus-ov program za prikazivanje sličicaGrčki prijevodTar arhiva sažeta programom Gzip_Sakrij sveMađarski prijevodDizajn ikonaSlikaSkaliranje slikeSlikeUvozIndoneški prijevodČita ZIP, RAR i tar arhive, kao i obične grafičke datoteke.Talijanski prijevodJPEG slikeJapanski prijevodKorejski prijevodZadnja stranicaBibliotekaLokacijaR_učno uvećanjeFaktor uvećanjaPovećalo_PovećaloPovećaloVeličina povećala (u pikselima)Manga prikazRučno U_većanjeRučno uvećanjeMijenjanoPremjesti knjige iz '%(source collection)s' u '%(destination collection)s'.ImeNova kolekcijaSljedeća stranicaNema slika u '%s'Broj obrisanih sličicaI_zvorna veličinaOtvoriNedavno otvo_renoOtvori označenu knjigu.Druge datotekeVlasnikPNG slikeStranicaDozvolePerzijski prijevodUnesite ime za novu kolekciju.Unesite novo ime za označenu kolekciju.Imajte na umu da su jedine datoteke koje se automatski dodaju na listu one datoteke u arhivama koje Comix prepozna kao komentare.Poljski prijevodPo_stavkePostavkePrethodna stranicaSvojstvaStavi kolekciju '%(subcollection)s' u kolekciju '%(supercollection)s'.RAR arhivaRAR arhiveObrisati knjige iz biblioteke?Obriši kolekciju iz biblioteke?Obriši kolekciju...Ukloni iz arhiveObriši iz biblioteke...Obriši iz ove kolekcijeObrisano %(num)d knjiga iz '%(collection)s'.Obrisano %d knjiga iz biblioteke.Obrisana sličica za '%s'Uklanjam sličicePreimenuj kolekciju?Preimenuj...Zamjenom će sadržaj biti prepisan.KorijenOkre_ni za 90 stupnjeva obrnuto od smjera kazaljke na satuOkreni za 180 _stupnjevaPokreni _prezentacijuRuski prijevodPREZENTACIJAKli_začiZasićenjeSpremiPomicanjePretragaPostavi faktor uvećanja povećala.Postavi veličinu povećala. To je pravokutnik stranica veličine ovoliko piksela.OštrinaPrikaži samo jednu široku sliku kod prikaza dvostrukih stranica.Prikazuj broj stranice na sličicama.Pojednostavljeni kineski prijevodVeličinaPrezentacijaZadrška prezentacije (u sekundama)Neke stare datoteke (koje su korištene za spremanje postavki, biblioteke, oznaka itd. u starijim Comix inačicama) su pronađene na vašem računalu. Ukoliko više ne planirate koristiti starije Comix inačice, trebali bi obrisati te datoteke da sačuvate prostor na disku. Želite li da se te datoteke uklone za vas sada?Španjolski prijevodS_tanjeSpremaj informacije o nedavno otvorenim datotekama.Spremaj sličice za otvorene datoteke prema freedesktop.org specifikaciji. Ove sličice se dijele između mnogo aplikacija, kao npr. većine upravitelja datotekama.Spremaj sličice za otvorene datoteke.Rastezanje slike na veličinu veću od izvorne ako to trenutna postavka uvećanja zahtjeva. Ukoliko nije postavljeno slike se nikad ne skaliraju na veličinu veću od izvorne.Rastegni male slike.A_latne trakeTar arhivaTar arhiveSliči_ceNeuspješna pohrana nove arhive!Izvorne datoteke nisu obrisane.Označene knjige će biti obrisane iz biblioteke (ali originali će ostati nepromijenjeni). Sigurni ste da želite nastaviti?Označena kolekcija će biti obrisana iz biblioteke (ali knjige i pod-kolekcije će ostati). Sigurni ste da želite nastaviti?Pronađene su zastarjele datoteke na vašem računalu.Direktorij sa sličicamaOdržavanje sličicaVeličina sličica (u pikselima)SličiceSličice datoteka (kao slika i arhiva sa stripovima) se spremaju u vašu osobnu mapu. Mnogo različitih aplikacija koristi i stvara ove sličice, ali ponekad sličice zaostanu iako su izvorne datoteke obrisane - troše prostor na disku. Ovaj dijalog može očistiti vaše spremljene sličice brišući te i zastarjele sličice.Ukupni broj sličicaUkupna veličina obrisanih sličicaUkupna veličina sličicaTradicionalni kineski prijevodTransparentnostTretiraj sve datoteke unutar arhiva, koje imaju jednu od ovih ekstenzija, kao komentare.Nepoznat tip datotekeKoristi međuspremnik da bi ubrzao pregledavanje.Koristi sivu kvadratnu pozadinu za transparentne slike. Ukoliko nije postavljeno pozadina će biti čisto bijela.Koristi kvadratnu pozadinu za transparentne slike.Koristi prikaz dvostrukih stranica kao predefinirani način.Koristi dinamičnu boju pozadine.Koristi cijeli zaslon kao predefinirani način.Koristi manga prikaz kao predefinirani način.Koristi pametno pomicanje space tipkom. Obično space tipka pomiče samo ravno dolje (ili gore u kombinaciji sa shift tipkom), ali sa ovom postavkom uključenom također pomiče bočno i tako pokušava pratiti prirodni red čitanja stripa.Koristi pametno pomicanje space tipkom.Koristi ovu boju kao pozadinuZa čitanje RAR (.cbr) datoteka potreban je rar ili unrar program.ZIP arhivaZIP arhiveU_manji_O programu_Dodaj oznaku_Najbolje pristajanje_Oznake_Očisti oznake..._ZatvoriPrikaz _dvostrukih stranica_Uredi_Uredi arhivu..._Uredi oznake..._Poboljšaj sliku..._DatotekaP_rva stranica_Preko cijelog zaslona_Idi na_Pomoć_Zadrži transformaciju_Zadnja stranica_Biblioteka..._Manga prikaz_Izbornici_Sljedeća stranica_Otvori..._Prethodna stranica_Svojstva_Izlaz_Okreni za 90 stupnjeva u smjeru kazaljke na satu_Održavanje sličica..._Alati_Transformacija_Prikaz_Pogledaj komentare..._Uvećajcomix-4.0.4/messages/ko/LC_MESSAGES/comix.po0000644000175000001440000011476011137133373017232 0ustar sorkusersmsgid "" msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2008-11-22 02:42+0100\n" "PO-Revision-Date: 2008-12-13 14:48+0900\n" "Last-Translator: Lv5doraki \n" "Language-Team: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Poedit-Language: Korean\n" "X-Poedit-Country: KOREA, REPUBLIC OF\n" "X-Poedit-SourceCharset: utf-8\n" # # File: src/about.py, line: 18 # File: src/about.py, line: 67 #: src/about.py:19 src/about.py:68 msgid "About" msgstr "Comix에 대하여" # # File: src/about.py, line: 55 #: src/about.py:56 msgid "Comix is an image viewer specifically designed to handle comic books." msgstr "Comix는 만화책을 취급하기 위해서 디자인 된 만화책 뷰어입니다." # # File: src/about.py, line: 57 #: src/about.py:58 msgid "It reads ZIP, RAR and tar archives, as well as plain image files." msgstr "ZIP, RAR 그리고 tar 압축파일과 일반 이미지 파일을 읽습니다." # # File: src/about.py, line: 59 #: src/about.py:60 msgid "Comix is licensed under the GNU General Public License." msgstr "Comix는 GPL로 라이센스 되고 있습니다." # # File: src/about.py, line: 75 #: src/about.py:83 msgid "Developer" msgstr "개발자" # # File: src/about.py, line: 77 #: src/about.py:84 src/about.py:85 msgid "Simplified Chinese translation" msgstr "간체 중국어 번역" # # File: src/about.py, line: 78 #: src/about.py:86 msgid "Spanish translation" msgstr "스페인어 번역" # # File: src/about.py, line: 79 #: src/about.py:87 msgid "Brazilian Portuguese translation" msgstr "포르투갈어(브라질) 번역" # # File: src/about.py, line: 81 #: src/about.py:88 msgid "German translation and Nautilus thumbnailer" msgstr "독일어 번역과 Nautilus의 미리보기 작성" # # File: src/about.py, line: 82 #: src/about.py:89 src/about.py:90 msgid "Italian translation" msgstr "이탈리아어 번역" # # File: src/about.py, line: 83 #: src/about.py:91 msgid "Dutch translation" msgstr "네덜란드어 번역" # # File: src/about.py, line: 84 #: src/about.py:92 msgid "French translation" msgstr "프랑스어 번역" # # File: src/about.py, line: 85 #: src/about.py:93 src/about.py:94 msgid "Polish translation" msgstr "폴란드어 번역" # # File: src/about.py, line: 86 #: src/about.py:95 msgid "Greek translation" msgstr "그리스어 번역" # # File: src/about.py, line: 87 #: src/about.py:96 msgid "Catalan translation" msgstr "카타로니아어 번역" # # File: src/about.py, line: 88 #: src/about.py:97 src/about.py:98 msgid "Traditional Chinese translation" msgstr "정체 중국어 번역" # # File: src/about.py, line: 89 #: src/about.py:99 msgid "Japanese translation" msgstr "일본어 번역" # # File: src/about.py, line: 90 #: src/about.py:100 msgid "Hungarian translation" msgstr "헝거리어 번역" # # File: src/about.py, line: 91 #: src/about.py:101 msgid "Russian translation" msgstr "러시아어 번역" # # File: src/about.py, line: 92 #: src/about.py:102 msgid "Croatian translation" msgstr "크로아티아어 번역" # # File: src/about.py, line: 93 #: src/about.py:103 msgid "Korean translation" msgstr "한국어 번역" # # File: src/about.py, line: 94 #: src/about.py:104 msgid "Persian translation" msgstr "이슬란어 번역" # # File: src/about.py, line: 95 #: src/about.py:105 msgid "Indonesian translation" msgstr "인도네시아어 번역" # # File: src/about.py, line: 96 #: src/about.py:106 msgid "Czech translation" msgstr "체코어 번역" # # File: src/about.py, line: 97 #: src/about.py:107 msgid "Icon design" msgstr "아이콘 디자인" # # File: src/about.py, line: 106 #: src/about.py:114 msgid "Credits" msgstr "도움 주신 분" # # File: src/archive.py, line: 66 #: src/archive.py:66 msgid "Could not find RAR file extractor!" msgstr "RAR 압축파일 풀기를 찾을 수 없습니다." # # File: src/archive.py, line: 68 #: src/archive.py:68 msgid "" "You need either the rar or the unrar program installed in " "order to read RAR (.cbr) files." msgstr "RAR (.cbr) 파일을 여려면, RAR 혹은 UnRAR 프로그램이 필요합니다." # # File: src/archive.py, line: 301 #: src/archive.py:305 msgid "ZIP archive" msgstr "ZIP 압축파일" # # File: src/archive.py, line: 302 #: src/archive.py:306 msgid "Tar archive" msgstr "Tar압축파일" # # File: src/archive.py, line: 303 #: src/archive.py:307 msgid "Gzip compressed tar archive" msgstr "Gzip으로 된 Tar압축파일" # # File: src/archive.py, line: 304 #: src/archive.py:308 msgid "Bzip2 compressed tar archive" msgstr "Bzip2으로 된 Tar압축파일" # # File: src/archive.py, line: 305 #: src/archive.py:309 msgid "RAR archive" msgstr "RAR 압축파일" # # File: src/bookmark.py, line: 27 #: src/bookmark.py:28 msgid "_Add bookmark" msgstr "북마크에 추가(_A)" # # File: src/bookmark.py, line: 29 #: src/bookmark.py:30 msgid "_Edit bookmarks..." msgstr "북마크 편집(_E)" # # File: src/bookmark.py, line: 31 #: src/bookmark.py:32 msgid "_Clear bookmarks..." msgstr "북마크 지우기(_C)" # # File: src/bookmark.py, line: 77 #: src/bookmark.py:78 msgid "Clear all bookmarks?" msgstr "모든 북마크를 지울까요?" # # File: src/bookmark.py, line: 79 #: src/bookmark.py:80 msgid "" "All stored bookmarks will be removed. Are you sure that you want to continue?" msgstr "모든 저장된 북마크를 제거합니다. 계속하시겠습니까?" # # File: src/bookmark.py, line: 229 #: src/bookmark.py:230 msgid "Edit bookmarks" msgstr "북마크 편집" # # File: src/bookmark.py, line: 255 # File: src/edit.py, line: 267 #: src/bookmark.py:256 src/edit.py:270 msgid "Name" msgstr "이름" # # File: src/bookmark.py, line: 256 #: src/bookmark.py:257 msgid "Page" msgstr "페이지" # # File: src/comment.py, line: 16 # File: src/preferences.py, line: 288 #: src/comment.py:16 src/preferences.py:299 msgid "Comments" msgstr "주석" # # File: src/comment.py, line: 53 #: src/comment.py:53 #, python-format msgid "Could not read %s" msgstr "읽을 수 없습니다. %s" # # File: src/deprecated.py, line: 16 #: src/deprecated.py:16 msgid "There are deprecated files left on your computer." msgstr "이미 사용하지 않는 파일이 컴퓨터에 남아있습니다." # # File: src/deprecated.py, line: 22 #: src/deprecated.py:22 msgid "" "Some old files (that were used for storing preferences, the library, " "bookmarks etc. for older versions of Comix) were found on your computer. If " "you do not plan on using the older versions of Comix again, you should " "remove these files in order to save some disk space. Do you want these files " "to be removed for you now?" msgstr "" "예전 버젼의 Comix 에서 사용하던 자료( 라이브러리, 북마크 등 )이 남아 있습니" "다. 하드디스크 공간의 절약을 위해, 이 자료들을 삭제하는것을 추천합니다. 지금 " "삭제하시겟습니까?" # # File: src/edit.py, line: 28 #: src/edit.py:29 msgid "Edit archive" msgstr "압축파일 수정" # # File: src/edit.py, line: 36 #: src/edit.py:37 msgid "Import" msgstr "불러오기" # # File: src/edit.py, line: 50 #: src/edit.py:51 msgid "Images" msgstr "이미지" # # File: src/edit.py, line: 51 #: src/edit.py:52 msgid "Other files" msgstr "기타 파일" # # File: src/edit.py, line: 99 #: src/edit.py:101 msgid "The new archive could not be saved!" msgstr "새 압축파일을 저장할 수 없습니다." # # File: src/edit.py, line: 101 #: src/edit.py:103 msgid "The original files have not been removed." msgstr "원본 파일이 제거되지 않았습니다." # # File: src/edit.py, line: 115 #: src/edit.py:117 msgid "Archives are stored as ZIP files." msgstr "ZIP 압축파일로 저장되어있습니다." # # File: src/edit.py, line: 168 # File: src/edit.py, line: 285 #: src/edit.py:170 src/edit.py:288 msgid "Remove from archive" msgstr "압축파일에서 제거" # # File: src/edit.py, line: 255 #: src/edit.py:258 msgid "" "Please note that the only files that are automatically added to this list " "are those files in archives that Comix recognizes as comments." msgstr "" "참고: Comix 가 주석으로 분류한 자료들은 이 목록에 자동적으로 추가됩니다." # # File: src/edit.py, line: 270 #: src/edit.py:273 msgid "Size" msgstr "크기" # # File: src/enhance.py, line: 51 #: src/enhance.py:51 msgid "Enhance image" msgstr "이미지 향상" # # File: src/enhance.py, line: 52 #: src/enhance.py:52 msgid "Defaults" msgstr "기본값" # # File: src/enhance.py, line: 79 #: src/enhance.py:79 msgid "Brightness" msgstr "명도" # # File: src/enhance.py, line: 90 #: src/enhance.py:90 msgid "Contrast" msgstr "대비" # # File: src/enhance.py, line: 101 #: src/enhance.py:101 msgid "Saturation" msgstr "채도" # # File: src/enhance.py, line: 112 #: src/enhance.py:112 msgid "Sharpness" msgstr "선명함" # # File: src/enhance.py, line: 126 #: src/enhance.py:126 msgid "Automatically adjust contrast." msgstr "자동으로 명암을 조정합니다." # # File: src/enhance.py, line: 128 #: src/enhance.py:128 msgid "" "Automatically adjust contrast (both lightness and darkness), separately for " "each colour band." msgstr "자동으로 명암을 조절합니다" # # File: src/filechooser.py, line: 35 # File: src/library.py, line: 489 #: src/filechooser.py:38 src/library.py:490 msgid "Open" msgstr "열기" # # File: src/filechooser.py, line: 39 #: src/filechooser.py:42 msgid "Save" msgstr "저장" # # File: src/filechooser.py, line: 75 #: src/filechooser.py:78 msgid "All files" msgstr "모든 파일" # # File: src/filechooser.py, line: 78 #: src/filechooser.py:81 msgid "All Archives" msgstr "모든 압축파일" # # File: src/filechooser.py, line: 82 #: src/filechooser.py:85 msgid "ZIP archives" msgstr "ZIP 압축파일" # # File: src/filechooser.py, line: 84 #: src/filechooser.py:87 msgid "RAR archives" msgstr "RAR 압축파일" # # File: src/filechooser.py, line: 86 #: src/filechooser.py:89 msgid "Tar archives" msgstr "Tar 압축파일" # # File: src/filechooser.py, line: 125 #: src/filechooser.py:134 #, python-format msgid "A file named '%s' already exists. Do you want to replace it?" msgstr "'%s' 파일이 이미 있습니다. 덮어씌우시겟습니까?" # # File: src/filechooser.py, line: 128 #: src/filechooser.py:137 msgid "Replacing it will overwrite its contents." msgstr "내용을 덮어 쓰게됩니다." # # File: src/filechooser.py, line: 171 # File: src/filechooser.py, line: 249 #: src/filechooser.py:182 src/filechooser.py:260 msgid "All images" msgstr "모든 이미지" # # File: src/filechooser.py, line: 173 # File: src/filechooser.py, line: 251 #: src/filechooser.py:184 src/filechooser.py:262 msgid "JPEG images" msgstr "JPEG 이미지" # # File: src/filechooser.py, line: 174 # File: src/filechooser.py, line: 252 #: src/filechooser.py:185 src/filechooser.py:263 msgid "PNG images" msgstr "PNG 이미지" # # File: src/filechooser.py, line: 195 #: src/filechooser.py:206 msgid "Automatically add the books to this collection" msgstr "모음집에 자동으로 만화책을 추가" # # File: src/filehandler.py, line: 209 #: src/filehandler.py:209 #, python-format msgid "Could not open %s: Is a directory." msgstr "디렉토리를 열 수 없습니다. %s" # # File: src/filehandler.py, line: 213 #: src/filehandler.py:213 #, python-format msgid "Could not open %s: No such file." msgstr "파일을 열 수 없습니다. %s" # # File: src/filehandler.py, line: 217 #: src/filehandler.py:217 #, python-format msgid "Could not open %s: Permission denied." msgstr "퍼미션 거부. %s" # # File: src/filehandler.py, line: 222 #: src/filehandler.py:222 #, python-format msgid "Could not open %s: Unknown file type." msgstr "알 수없는 파일 형식. %s" # # File: src/filehandler.py, line: 285 #: src/filehandler.py:285 #, python-format msgid "No images in '%s'" msgstr "이미지가 없습니다. %s" # # File: src/filehandler.py, line: 411 #: src/filehandler.py:413 msgid "Unknown filetype" msgstr "알 수 없는 파일 형식" # # File: src/librarybackend.py, line: 272 # File: src/librarybackend.py, line: 274 #: src/librarybackend.py:273 src/librarybackend.py:275 msgid "(Copy)" msgstr "(Copy)" # # File: src/library.py, line: 38 #: src/library.py:38 msgid "Library" msgstr "라이브러리" # # File: src/library.py, line: 150 #: src/library.py:150 msgid "Rename..." msgstr "이름바꾸기" # # File: src/library.py, line: 152 #: src/library.py:152 msgid "Duplicate collection" msgstr "모음집사본" # # File: src/library.py, line: 154 #: src/library.py:154 msgid "Remove collection..." msgstr "모음집 제거" # # File: src/library.py, line: 202 #: src/library.py:202 msgid "All books" msgstr "모든 만화책" # # File: src/library.py, line: 231 #: src/library.py:231 msgid "Remove collection from the library?" msgstr "라이브러리로부터 모음집을 제거" # # File: src/library.py, line: 233 #: src/library.py:233 msgid "" "The selected collection will be removed from the library (but the books and " "subcollections in it will remain). Are you sure that you want to continue?" msgstr "" "선택된 모음집들을 라이브러리에서 삭제합니다 ( 그러나 만화책과 하위모음집은 지" "워지지 않습니다. ) 계속 진행하시겟습니까?" # # File: src/library.py, line: 251 #: src/library.py:251 msgid "Rename collection?" msgstr "모음집 이름바꾸기" # # File: src/library.py, line: 253 #: src/library.py:253 msgid "Please enter a new name for the selected collection." msgstr "선택된 모음집에 대한 새 이름을 입력하시기 바랍니다." # # File: src/library.py, line: 271 #: src/library.py:271 #, python-format msgid "Could not change the name to '%s'." msgstr "이름을 변경하지 못했습니다. '%s'." # # File: src/library.py, line: 275 # File: src/library.py, line: 881 #: src/library.py:275 src/library.py:882 msgid "A collection by that name already exists." msgstr "같은 이름의 모음집이 존재합니다." # # File: src/library.py, line: 285 #: src/library.py:285 msgid "Could not duplicate collection." msgstr "모음집 사본을 못했습니다." # # File: src/library.py, line: 382 #: src/library.py:382 msgid "Root" msgstr "관리자" # # File: src/library.py, line: 386 #: src/library.py:386 #, python-format msgid "" "Put the collection '%(subcollection)s' in the collection '%(supercollection)" "s'." msgstr "'%(subcollection)s' 모음집을 '%(supercollection)s' 모음집에 넣기." # # File: src/library.py, line: 407 #: src/library.py:407 #, python-format msgid "Add books to '%s'." msgstr "만화책 추가 '%s'." # # File: src/library.py, line: 411 #: src/library.py:411 #, python-format msgid "" "Move books from '%(source collection)s' to '%(destination collection)s'." msgstr "" "'%(source collection)s' 에서 '%(destination collection)s' 으로 만화책 이동." # # File: src/library.py, line: 492 #: src/library.py:493 msgid "Remove from this collection" msgstr "모음집을 제거" # # File: src/library.py, line: 495 #: src/library.py:496 msgid "Remove from the library..." msgstr "라이브러리에서 제거" # # File: src/library.py, line: 588 #: src/library.py:589 #, python-format msgid "Removed %(num)d book(s) from '%(collection)s'." msgstr "'%(collection)s' 에서 %(num)d 만화책 제거." # # File: src/library.py, line: 597 #: src/library.py:598 msgid "Remove books from the library?" msgstr "라이브러리에서 만화책 제거" # # File: src/library.py, line: 599 #: src/library.py:600 msgid "" "The selected books will be removed from the library (but the original files " "will be untouched). Are you sure that you want to continue?" msgstr "" "선택한 만화책은 라이브러리에서 (원본 파일은 보존) 제거됩니다. 계속하시겠습니" "까?" # # File: src/library.py, line: 609 #: src/library.py:610 #, python-format msgid "Removed %d book(s) from the library." msgstr "라이브러리에서 %d 만화책을 제거" # # File: src/library.py, line: 769 #: src/library.py:770 msgid "Search" msgstr "검색" # # File: src/library.py, line: 774 #: src/library.py:775 msgid "" "Display only those books that have the specified text string in their full " "path. The search is not case sensitive." msgstr "" "전체 경로에 지정된 문자열이 만화책을 표시합니다. 검색은 대소문자를 구분하지 " "않습니다." # # File: src/library.py, line: 776 #: src/library.py:777 msgid "Cover size" msgstr "표지 크기" # # File: src/library.py, line: 789 #: src/library.py:790 msgid "Add books" msgstr "만화책 추가" # # File: src/library.py, line: 793 #: src/library.py:794 msgid "Add more books to the library." msgstr "라이브러리에 더 많은 만화책 추가" # # File: src/library.py, line: 795 #: src/library.py:796 msgid "Add collection" msgstr "모음집 추가" # # File: src/library.py, line: 800 #: src/library.py:801 msgid "Add a new empty collection." msgstr "비어있는 새 모음집 추가" # # File: src/library.py, line: 806 #: src/library.py:807 msgid "Open the selected book." msgstr "선택한 만화책 열기" # # File: src/library.py, line: 832 # File: src/properties.py, line: 113 #: src/library.py:833 src/properties.py:118 #, python-format msgid "%d pages" msgstr "%d 페이지" # # File: src/library.py, line: 854 #: src/library.py:855 msgid "Add new collection?" msgstr "새 모음집을 추가합니까?" # # File: src/library.py, line: 856 #: src/library.py:857 msgid "Please enter a name for the new collection." msgstr "새 모음집의 이름을 입력해주세요." # # File: src/library.py, line: 862 #: src/library.py:863 msgid "New collection" msgstr "새 모음집" # # File: src/library.py, line: 876 #: src/library.py:877 #, python-format msgid "Could not add a new collection called '%s'." msgstr "새 모음집을 추가하지 못했습니다. '%s'." # # File: src/library.py, line: 910 #: src/library.py:911 msgid "Adding books" msgstr "만화책 추가" # # File: src/library.py, line: 930 #: src/library.py:931 msgid "Added books" msgstr "만화책 추가" # # File: src/library.py, line: 952 #: src/library.py:953 #, python-format msgid "Adding '%s'..." msgstr "추가 '%s'..." # # File: src/main.py, line: 666 #: src/main.py:699 msgid "SLIDESHOW" msgstr "슬라이드쇼" # # File: src/preferences.py, line: 78 #: src/preferences.py:80 msgid "Preferences" msgstr "환경설정" # # File: src/preferences.py, line: 93 #: src/preferences.py:95 msgid "Background" msgstr "배경색" # # File: src/preferences.py, line: 95 #: src/preferences.py:97 msgid "Use this colour as background" msgstr "이 색을 사용하여 배경으로" # # File: src/preferences.py, line: 97 #: src/preferences.py:99 msgid "Always use this selected colour as the background colour." msgstr "항상 배경색을 선택한 색으로 사용합니다." # # File: src/preferences.py, line: 102 #: src/preferences.py:104 msgid "Use dynamic background colour." msgstr "동적인 배경색 사용" # # File: src/preferences.py, line: 106 #: src/preferences.py:108 msgid "Automatically pick a background colour that fits the viewed image." msgstr "자동으로 그 이미지에 맞는 배경색을 선텍" # # File: src/preferences.py, line: 109 #: src/preferences.py:111 msgid "Thumbnails" msgstr "미리보기" # # File: src/preferences.py, line: 110 #: src/preferences.py:112 msgid "Thumbnail size (in pixels)" msgstr "미리보기 크기(픽셀)" # # File: src/preferences.py, line: 117 #: src/preferences.py:119 msgid "Show page numbers on thumbnails." msgstr "미리보기의 페이지 번호 보기" # # File: src/preferences.py, line: 124 #: src/preferences.py:126 msgid "Magnifying Glass" msgstr "돋보기" # # File: src/preferences.py, line: 125 #: src/preferences.py:127 msgid "Magnifying glass size (in pixels)" msgstr "돋보기 크기(픽셀)" # # File: src/preferences.py, line: 131 #: src/preferences.py:133 msgid "" "Set the size of the magnifying glass. It is a square with a side of this " "many pixels." msgstr "돋보기의 크기를 설정합니다." # # File: src/preferences.py, line: 133 #: src/preferences.py:135 msgid "Magnification factor" msgstr "확대 인수" # # File: src/preferences.py, line: 140 #: src/preferences.py:142 msgid "Set the magnification factor of the magnifying glass." msgstr "돋보기의 확대 인수를 설정합니다." # # File: src/preferences.py, line: 143 #: src/preferences.py:145 msgid "Image scaling" msgstr "이미지 스케일링" # # File: src/preferences.py, line: 144 #: src/preferences.py:146 msgid "Stretch small images." msgstr "작은 이미지 확대" # # File: src/preferences.py, line: 148 #: src/preferences.py:150 msgid "" "Stretch images to a size that is larger than their original size if the " "current zoom mode requests it. If this preference is unset, images are never " "scaled to be larger than their original size." msgstr "이 설정을 사용하면 화면 크기에 맞게 확대/축소 됩니다." # # File: src/preferences.py, line: 151 #: src/preferences.py:153 msgid "Transparency" msgstr "투명도" # # File: src/preferences.py, line: 153 #: src/preferences.py:155 msgid "Use checkered background for transparent images." msgstr "체크된 이미지를 투명 배경그림으로 사용합니다." # # File: src/preferences.py, line: 159 #: src/preferences.py:161 msgid "" "Use a grey checkered background for transparent images. If this preference " "is unset, the background is plain white instead." msgstr "" "회색 체크된 이미지를 투영그림으로 사용합니다. 체크하지 않을 경우 기본바탕(흰" "색)을 적용합니다." # # File: src/preferences.py, line: 161 #: src/preferences.py:163 msgid "Appearance" msgstr "보기" # # File: src/preferences.py, line: 167 #: src/preferences.py:169 msgid "Scroll" msgstr "스크롤" # # File: src/preferences.py, line: 169 #: src/preferences.py:171 msgid "Use smart space key scrolling." msgstr "스페이스 키를 사용하여 스크롤합니다" # # File: src/preferences.py, line: 174 #: src/preferences.py:176 msgid "" "Use smart scrolling with the space key. Normally the space key scrolls only " "right down (or up when shift is pressed), but with this preference set it " "also scrolls sideways and so tries to follow the natural reading order of " "the comic book." msgstr "" "스페이스바를 이용하여, 스마트 스크롤 기능을 사용하십시오. 보통 스페이스바는 " "아래쪽(쉬프트가 눌려있으면 위쪽)으로 스크롤 하지만, 스마트 스크롤은 책의 내용" "이나 순서를 변경하지 않고 좌우로 스크롤 하여 더 쉽게 읽을수 있도록 도와줍니" "다. " #: src/preferences.py:180 msgid "Flip pages when scrolling off the edges of the page." msgstr "페이지의 가장자리에서 스크롤 할 때 페이지 넘기기." #: src/preferences.py:185 msgid "" "Flip pages when scrolling \"off the page\" with the scroll wheel or with the " "arrow keys. It takes three consecutive \"steps\" with the scroll wheel or " "the arrow keys for the pages to be flipped." msgstr "마우스 스크롤이나 방향키를 이용해서 페이지를 전환할수 있습니다." # # File: src/preferences.py, line: 177 # File: src/ui.py, line: 296 #: src/preferences.py:188 src/ui.py:298 msgid "Double page mode" msgstr "양면 보기" # # File: src/preferences.py, line: 179 #: src/preferences.py:190 msgid "Flip two pages in double page mode." msgstr "2 페이지 넘기면 양면 보기로 전환" # # File: src/preferences.py, line: 184 #: src/preferences.py:195 msgid "" "Flip two pages, instead of one, each time we flip pages in double page mode." msgstr " 페이지를 동시에 두번 넘기면 양면 보기로 전환됩니다." # # File: src/preferences.py, line: 187 #: src/preferences.py:198 msgid "Show only one wide image in double page mode." msgstr "양면 보기에서 넓은 이미지 보기" # # File: src/preferences.py, line: 193 #: src/preferences.py:204 msgid "" "Display only one image in double page mode, if the image's width exceeds its " "height. The result of this is that scans that span two pages are displayed " "properly (i.e. alone) also in double page mode." msgstr "" "양면 보기에서 이미지의 가로크기가 너무 클 경우엔 크기를 맞추기 위하여 하나의 " "이미지만 보여집니다." # # File: src/preferences.py, line: 196 #: src/preferences.py:207 msgid "Files" msgstr "파일" # # File: src/preferences.py, line: 198 #: src/preferences.py:209 msgid "Automatically open the next archive." msgstr "자동으로 다음 압축파일 열기" # # File: src/preferences.py, line: 203 #: src/preferences.py:214 msgid "" "Automatically open the next archive in the directory when flipping past the " "last page, or the previous archive when flipping past the first page." msgstr "" " 마지막 페이지에서 페이지 넘기기를 할경우, 자동적으로 같은 디렉토리에 있는 다" "음 압축파일을 불러옵니다." # # File: src/preferences.py, line: 206 #: src/preferences.py:217 msgid "Automatically open the last viewed file on startup." msgstr "자동으로 프로그램 시작할때 마지막 파일 열기" # # File: src/preferences.py, line: 211 #: src/preferences.py:222 msgid "" "Automatically open, on startup, the file that was open when Comix was last " "closed." msgstr "Comix로 열었던 마지막 파일을 자동으로 열어봅니다." # # File: src/preferences.py, line: 214 #: src/preferences.py:225 msgid "Store information about recently opened files." msgstr "최근 열어본 압축파일에 대한 정보를 표시합니다." # # File: src/preferences.py, line: 219 #: src/preferences.py:230 msgid "" "Add information about all files opened from within Comix to the shared " "recent files list." msgstr "Comix 의 최근 공유 목록에 설명을 추가합니다. 혹은 설명을 추가하십시오." # # File: src/preferences.py, line: 222 #: src/preferences.py:233 msgid "Store thumbnails for opened files." msgstr "열어본 파일의 미리보기를 보관" # # File: src/preferences.py, line: 227 #: src/preferences.py:238 msgid "" "Store thumbnails for opened files according to the freedesktop.org " "specification. These thumbnails are shared by many other applications, such " "as most file managers." msgstr "" "열려진 파일의 썸네일을 freedesktop.org 에서 지정한 바에 따라 저장하여, 다른 " "사용자들과 썸네일을 공유하게 됩니다." # # File: src/preferences.py, line: 230 #: src/preferences.py:241 msgid "Cache" msgstr "캐시" # # File: src/preferences.py, line: 231 #: src/preferences.py:242 msgid "Use a cache to speed up browsing." msgstr "캐시를 사용하여 탐색속도를 높입니다." # # File: src/preferences.py, line: 235 #: src/preferences.py:246 msgid "" "Cache the images that are next to the currently viewed image in order to " "speed up browsing. Since the speed improvements are quite big, it is " "recommended that you have this preference set, unless you are running short " "on free RAM." msgstr "" "브라우징 속도를 높이기 위해, 다음 페이지의 썸네일을 캐시로 저장합니다. 이 기" "능 속도와 관련된 것이기에, RAM 공간이 부족한 사용자는 직접 설정하는것을 권장" "합니다." # # File: src/preferences.py, line: 237 #: src/preferences.py:248 msgid "Behaviour" msgstr "일반" # # File: src/preferences.py, line: 243 #: src/preferences.py:254 msgid "Default modes" msgstr "기본 보기" # # File: src/preferences.py, line: 245 #: src/preferences.py:256 msgid "Use double page mode by default." msgstr "양면 보기를 기본으로 사용" # # File: src/preferences.py, line: 250 #: src/preferences.py:261 msgid "Use fullscreen by default." msgstr "전체화면을 기본으로 사용" # # File: src/preferences.py, line: 255 #: src/preferences.py:266 msgid "Use manga mode by default." msgstr "만화 페이지순 보기를 기본으로 사용" # # File: src/preferences.py, line: 260 #: src/preferences.py:271 msgid "Default zoom mode" msgstr "기본 줌 모드" # # File: src/preferences.py, line: 262 # File: src/ui.py, line: 288 #: src/preferences.py:273 src/ui.py:290 msgid "Best fit mode" msgstr "최적 보기" # # File: src/preferences.py, line: 263 # File: src/ui.py, line: 290 #: src/preferences.py:274 src/ui.py:292 msgid "Fit width mode" msgstr "가로 폭 맞춤" # # File: src/preferences.py, line: 264 # File: src/ui.py, line: 292 #: src/preferences.py:275 src/ui.py:294 msgid "Fit height mode" msgstr "세로 폭 맞춤" # # File: src/preferences.py, line: 265 # File: src/ui.py, line: 294 #: src/preferences.py:276 src/ui.py:296 msgid "Manual zoom mode" msgstr "수동 줌 조절" # # File: src/preferences.py, line: 271 #: src/preferences.py:282 msgid "Fullscreen" msgstr "전체화면" # # File: src/preferences.py, line: 273 #: src/preferences.py:284 msgid "Automatically hide all toolbars in fullscreen." msgstr "전체화면 상태에서 도구모음 숨김" # # File: src/preferences.py, line: 279 #: src/preferences.py:290 msgid "Slideshow" msgstr "슬라이드쇼" # # File: src/preferences.py, line: 280 #: src/preferences.py:291 msgid "Slideshow delay (in seconds)" msgstr "슬라이드쇼 지연시간(초)" # # File: src/preferences.py, line: 289 #: src/preferences.py:300 msgid "Comment extensions" msgstr "주석 확장" # # File: src/preferences.py, line: 295 #: src/preferences.py:306 msgid "" "Treat all files found within archives, that have one of these file endings, " "as comments." msgstr "목록중에 이와 같은 확장자 형식을 가진 파일을 주석으로 인식합니다." #: src/preferences.py:309 msgid "Rotation" msgstr "" #: src/preferences.py:311 msgid "Automatically rotate images according to their metadata." msgstr "" #: src/preferences.py:316 msgid "" "Automatically rotate images when an orientation is specified in the image " "metadata, such as in an Exif tag." msgstr "" # # File: src/preferences.py, line: 297 #: src/preferences.py:318 msgid "Display" msgstr "표시" # # File: src/properties.py, line: 89 #: src/properties.py:94 msgid "Properties" msgstr "등록정보" # # File: src/properties.py, line: 114 #: src/properties.py:119 #, python-format msgid "%d comments" msgstr "%d 주석" # # File: src/properties.py, line: 124 # File: src/properties.py, line: 159 #: src/properties.py:129 src/properties.py:164 msgid "Location" msgstr "위치" # # File: src/properties.py, line: 126 # File: src/properties.py, line: 160 #: src/properties.py:131 src/properties.py:165 msgid "Accessed" msgstr "마지막 접근" # # File: src/properties.py, line: 128 # File: src/properties.py, line: 162 #: src/properties.py:133 src/properties.py:167 msgid "Modified" msgstr "마지막 수정" # # File: src/properties.py, line: 130 # File: src/properties.py, line: 164 #: src/properties.py:135 src/properties.py:169 msgid "Permissions" msgstr "퍼미션" # # File: src/properties.py, line: 131 # File: src/properties.py, line: 165 #: src/properties.py:136 src/properties.py:170 msgid "Owner" msgstr "소유자" # # File: src/properties.py, line: 135 #: src/properties.py:140 msgid "Archive" msgstr "압축파일" # # File: src/properties.py, line: 169 #: src/properties.py:174 msgid "Image" msgstr "이미지" # # File: src/thumbremover.py, line: 22 #: src/thumbremover.py:24 msgid "Thumbnail maintenance" msgstr "미리보기 관리" # # File: src/thumbremover.py, line: 24 #: src/thumbremover.py:26 msgid "Cleanup" msgstr "지우기" # # File: src/thumbremover.py, line: 36 #: src/thumbremover.py:38 msgid "Cleanup thumbnails" msgstr "미리보기 지우기" # # File: src/thumbremover.py, line: 46 #: src/thumbremover.py:48 msgid "" "Thumbnails for files (such as image files and comic book archives) are " "stored in your home directory. Many different applications use and create " "these thumbnails, but sometimes thumbnails remain even though the original " "files have been removed - wasting space. This dialog can cleanup your stored " "thumbnails by removing orphaned and outdated thumbnails." msgstr "" "디렉토리에 썸네일이 저장됩니다. 많은 브라우져에서 썸네일을 사용하지만, 가끔" "씩 원본 파일을 삭제하여도 썸네일이 삭제되지 않는 브라우져가 있습니다. 이는 하" "드디스크 공간의 낭비이며, 이 창은 이미 저장된 썸네일이나, 기한이 지난 썸네일" "을 정리하고 삭제하여 하드디스크 공간을 절약할수 있도록 도와줍니다." # # File: src/thumbremover.py, line: 58 #: src/thumbremover.py:60 msgid "Thumbnail directory" msgstr "미리보기 디렉토리" # # File: src/thumbremover.py, line: 65 #: src/thumbremover.py:67 msgid "Total number of thumbnails" msgstr "미리보기 합계" # # File: src/thumbremover.py, line: 68 # File: src/thumbremover.py, line: 75 #: src/thumbremover.py:70 src/thumbremover.py:77 msgid "Calculating..." msgstr "계산 중..." # # File: src/thumbremover.py, line: 72 #: src/thumbremover.py:74 msgid "Total size of thumbnails" msgstr "미리보기 총 크기" # # File: src/thumbremover.py, line: 80 #: src/thumbremover.py:82 msgid "Do you want to cleanup orphaned and outdated thumbnails now?" msgstr "오래된 미리보기를 정리합니다." # # File: src/thumbremover.py, line: 116 #: src/thumbremover.py:118 msgid "Removing thumbnails" msgstr "미리보기 제거" # # File: src/thumbremover.py, line: 135 #: src/thumbremover.py:137 msgid "Number of removed thumbnails" msgstr "미리보기 번호 제거" # # File: src/thumbremover.py, line: 142 #: src/thumbremover.py:144 msgid "Total size of removed thumbnails" msgstr "미리보기 총 크기 제거" # # File: src/thumbremover.py, line: 193 #: src/thumbremover.py:195 #, python-format msgid "Removed thumbnail for '%s'" msgstr "미리보기 제거 '%s'" # # File: src/ui.py, line: 34 #: src/ui.py:34 msgid "_Next page" msgstr "다음 페이지(_N)" # # File: src/ui.py, line: 36 #: src/ui.py:36 msgid "_Previous page" msgstr "이전 페이지(_P)" # # File: src/ui.py, line: 38 #: src/ui.py:38 msgid "_First page" msgstr "처음 페이지(_F)" # # File: src/ui.py, line: 40 #: src/ui.py:40 msgid "_Last page" msgstr "마지막 페이지(_L)" # # File: src/ui.py, line: 42 #: src/ui.py:42 msgid "_Zoom in" msgstr "확대(_Z)" # # File: src/ui.py, line: 44 #: src/ui.py:44 msgid "Zoom _out" msgstr "축소(_O)" # # File: src/ui.py, line: 46 #: src/ui.py:46 msgid "O_riginal size" msgstr "원본 크기(_R)" # # File: src/ui.py, line: 48 #: src/ui.py:48 msgid "_Close" msgstr "닫기(_C)" # # File: src/ui.py, line: 50 #: src/ui.py:50 msgid "_Quit" msgstr "종료(_Q)" # # File: src/ui.py, line: 52 #: src/ui.py:52 msgid "_Rotate 90 degrees CW" msgstr "우측으로 90도 회전(_R)" # # File: src/ui.py, line: 54 #: src/ui.py:54 msgid "Rotate 180 de_grees" msgstr "180도 회전(_G)" # # File: src/ui.py, line: 56 #: src/ui.py:56 msgid "Rotat_e 90 degrees CCW" msgstr "좌측으로 90도 회전(_E)" # # File: src/ui.py, line: 58 #: src/ui.py:58 msgid "Fli_p horizontally" msgstr "좌우 뒤집기(_P)" # # File: src/ui.py, line: 60 #: src/ui.py:60 msgid "Flip _vertically" msgstr "상하 뒤집기(_V)" # # File: src/ui.py, line: 62 #: src/ui.py:62 msgid "Manual _Zoom" msgstr "수동 줌 조절(_Z)" # # File: src/ui.py, line: 63 #: src/ui.py:63 msgid "Open _recent" msgstr "최근 문서 열기(_R)" # # File: src/ui.py, line: 64 #: src/ui.py:64 msgid "_Bookmarks" msgstr "북마크(_B)" # # File: src/ui.py, line: 65 #: src/ui.py:65 msgid "T_oolbars" msgstr "도구모음(_O)" # # File: src/ui.py, line: 66 #: src/ui.py:66 msgid "_Edit" msgstr "편집(_E)" # # File: src/ui.py, line: 67 #: src/ui.py:67 msgid "_File" msgstr "파일(_F)" # # File: src/ui.py, line: 68 #: src/ui.py:68 msgid "_View" msgstr "보기(_V)" # # File: src/ui.py, line: 69 #: src/ui.py:69 msgid "_Go" msgstr "바로가기(_G)" # # File: src/ui.py, line: 70 #: src/ui.py:70 msgid "_Help" msgstr "도움말(_H)" # # File: src/ui.py, line: 71 #: src/ui.py:71 msgid "_Transform" msgstr "이미지 회전(_T)" # # File: src/ui.py, line: 75 #: src/ui.py:75 msgid "_Fullscreen" msgstr "전체화면(_F)" # # File: src/ui.py, line: 77 #: src/ui.py:77 msgid "_Double page mode" msgstr "좌우 페이지 보기(_D)" # # File: src/ui.py, line: 79 #: src/ui.py:79 msgid "_Toolbar" msgstr "도구모음(_T)" # # File: src/ui.py, line: 81 #: src/ui.py:81 msgid "_Menubar" msgstr "메뉴바(_M)" # # File: src/ui.py, line: 83 #: src/ui.py:83 msgid "St_atusbar" msgstr "상태바(_A)" # # File: src/ui.py, line: 85 #: src/ui.py:85 msgid "S_crollbars" msgstr "스크롤바(_C)" # # File: src/ui.py, line: 87 #: src/ui.py:87 msgid "Th_umbnails" msgstr "미리보기(_U)" # # File: src/ui.py, line: 89 #: src/ui.py:89 msgid "H_ide all" msgstr "모두 숨김(_I)" # # File: src/ui.py, line: 91 #: src/ui.py:91 msgid "_Manga mode" msgstr "만화 페이지순 보기(_M)" # # File: src/ui.py, line: 93 #: src/ui.py:93 msgid "_Keep transformation" msgstr "회전 상태 유지(_K)" # # File: src/ui.py, line: 95 #: src/ui.py:95 msgid "Run _slideshow" msgstr "슬라이드쇼 실행(_S)" # # File: src/ui.py, line: 97 #: src/ui.py:97 msgid "Magnifying _glass" msgstr "돋보기(_G)" # # File: src/ui.py, line: 101 #: src/ui.py:103 msgid "_Best fit mode" msgstr "최적 보기(_B)" # # File: src/ui.py, line: 103 #: src/ui.py:105 msgid "Fit _width mode" msgstr "가로폭 맞춤(_W)" # # File: src/ui.py, line: 105 #: src/ui.py:107 msgid "Fit _height mode" msgstr "세로폭 맞춤(_H)" # # File: src/ui.py, line: 107 #: src/ui.py:109 msgid "M_anual zoom mode" msgstr "수동 줌 조절(_A)" # # File: src/ui.py, line: 113 #: src/ui.py:115 msgid "_About" msgstr "Comix에 대하여(_A)" # # File: src/ui.py, line: 115 #: src/ui.py:117 msgid "_View comments..." msgstr "주석 보기(_V)" # # File: src/ui.py, line: 117 #: src/ui.py:119 msgid "_Edit archive..." msgstr "압축파일 보기(_E)" # # File: src/ui.py, line: 119 #: src/ui.py:121 msgid "_Open..." msgstr "열기(_O)" # # File: src/ui.py, line: 121 #: src/ui.py:123 msgid "_Properties" msgstr "속성(_P)" # # File: src/ui.py, line: 123 #: src/ui.py:125 msgid "_Enhance image..." msgstr "이미지 향상" # # File: src/ui.py, line: 126 #: src/ui.py:128 msgid "_Thumbnail maintenance..." msgstr "미리보기 관리(_T)" # # File: src/ui.py, line: 128 #: src/ui.py:130 msgid "Pr_eferences" msgstr "설정(_E)" # # File: src/ui.py, line: 132 #: src/ui.py:134 msgid "_Library..." msgstr "라이브러리(_L)" # # File: src/ui.py, line: 282 #: src/ui.py:284 msgid "First page" msgstr "처음 페이지" # # File: src/ui.py, line: 284 #: src/ui.py:286 msgid "Previous page" msgstr "이전 페이지" # # File: src/ui.py, line: 285 #: src/ui.py:287 msgid "Next page" msgstr "다음 페이지" # # File: src/ui.py, line: 286 #: src/ui.py:288 msgid "Last page" msgstr "마지막 페이지" # # File: src/ui.py, line: 297 #: src/ui.py:299 msgid "Manga mode" msgstr "만화 페이지순 보기" # # File: src/ui.py, line: 298 #: src/ui.py:300 msgid "Magnifying glass" msgstr "돋보기" comix-4.0.4/messages/ko/LC_MESSAGES/comix.mo0000644000175000001440000005527611120735271017232 0ustar sorkusers<[\ )<LR[ wY 0< K X e o yM9 !.A]p.3P$RBZ      !4EI7+";"["~ %% +3H Zhz r]<  3 E R a o u       4!#!L!I" \"+g""" "" "" "###A&#h# |### ######$$!&$ H$ S$`$q$Hz$$$ $$$%% $%1% I%U% [%f% k%w%+%4%%u& & & & &O& ' '#'#B'f'{'''.'$'(5(I( \()f(((((( ( ( () ))5)UM) )-) ))* ***?G*+ +.++"{,,a- w- - - -#-)--|.1/E/Y/o/ /a/0 131L1 l1Xy11!1{202 222 3(3474gU4 4 4 44 44 55#5*5<5B5S5f5x5 ~5 5555 5 5 55 555 666,6F6 O6Z6`6r6s{6 7 78. 8@<8}88!8888a8.^9!999999 ::H$:8m:: :-:-:&;'=;-e;>;;'e<D<8< == =!*=L=S=s=z= \>j> >>!>U>1? O?]?d?4k?-?$?3?('@"P@s@@@ @@@@ AA /A 9ACAJAzA*QB |BBBBBBBBBC)C;CMCbC[wCFC-DJHDD D3DDDE-EAE UE_E vE EEOEEFF.F?FSFcFjF F F F FFFFF GTGrG yGGGGGGGH H ,H 6H DH NHXH.lHIHdHJI ^I iIvI IKIII&J,)JVJgJJJ2J,JK+K?KYK!iK KKKKKKLLL #L-L.4L'cL L+L'LLMM!M:M(N lRnY)p|"zT:VI%3K!@7 vD]4UqXae&Hb<w/6t WsG~A\%d comments%d pages(Copy)A collection by that name already exists.A file named '%s' already exists. Do you want to replace it?AboutAccessedAdd a new empty collection.Add booksAdd books to '%s'.Add collectionAdd information about all files opened from within Comix to the shared recent files list.Add more books to the library.Add new collection?Added booksAdding '%s'...Adding booksAll ArchivesAll booksAll filesAll imagesAll stored bookmarks will be removed. Are you sure that you want to continue?Always use this selected colour as the background colour.AppearanceArchiveArchives are stored as ZIP files.Automatically add the books to this collectionAutomatically adjust contrast (both lightness and darkness), separately for each colour band.Automatically adjust contrast.Automatically hide all toolbars in fullscreen.Automatically open the last viewed file on startup.Automatically open the next archive in the directory when flipping past the last page, or the previous archive when flipping past the first page.Automatically open the next archive.Automatically open, on startup, the file that was open when Comix was last closed.Automatically pick a background colour that fits the viewed image.BackgroundBehaviourBest fit modeBrazilian Portuguese translationBrightnessBzip2 compressed tar archiveCacheCache the images that are next to the currently viewed image in order to speed up browsing. Since the speed improvements are quite big, it is recommended that you have this preference set, unless you are running short on free RAM.Calculating...Catalan translationCleanupCleanup thumbnailsClear all bookmarks?Comix is an image viewer specifically designed to handle comic books.Comix is licensed under the GNU General Public License.Comment extensionsCommentsContrastCould not add a new collection called '%s'.Could not change the name to '%s'.Could not duplicate collection.Could not find RAR file extractor!Could not open %s: Is a directory.Could not open %s: No such file.Could not open %s: Permission denied.Could not open %s: Unknown file type.Could not read %sCover sizeCreditsCroatian translationCzech translationDefault modesDefault zoom modeDefaultsDeveloperDisplayDisplay only one image in double page mode, if the image's width exceeds its height. The result of this is that scans that span two pages are displayed properly (i.e. alone) also in double page mode.Display only those books that have the specified text string in their full path. The search is not case sensitive.Do you want to cleanup orphaned and outdated thumbnails now?Double page modeDuplicate collectionDutch translationEdit archiveEdit bookmarksEnhance imageFilesFirst pageFit _height modeFit _width modeFit height modeFit width modeFli_p horizontallyFlip _verticallyFlip pages when scrolling "off the page" with the scroll wheel or with the arrow keys. It takes three consecutive "steps" with the scroll wheel or the arrow keys for the pages to be flipped.Flip pages when scrolling off the edges of the page.Flip two pages in double page mode.Flip two pages, instead of one, each time we flip pages in double page mode.French translationFullscreenGerman translation and Nautilus thumbnailerGreek translationGzip compressed tar archiveH_ide allHungarian translationIcon designImageImage scalingImagesImportIndonesian translationIt reads ZIP, RAR and tar archives, as well as plain image files.Italian translationJPEG imagesJapanese translationKorean translationLast pageLibraryLocationM_anual zoom modeMagnification factorMagnifying GlassMagnifying _glassMagnifying glassMagnifying glass size (in pixels)Manga modeManual _ZoomManual zoom modeModifiedMove books from '%(source collection)s' to '%(destination collection)s'.NameNew collectionNext pageNo images in '%s'Number of removed thumbnailsO_riginal sizeOpenOpen _recentOpen the selected book.Other filesOwnerPNG imagesPagePermissionsPersian translationPlease enter a name for the new collection.Please enter a new name for the selected collection.Please note that the only files that are automatically added to this list are those files in archives that Comix recognizes as comments.Polish translationPr_eferencesPreferencesPrevious pagePropertiesPut the collection '%(subcollection)s' in the collection '%(supercollection)s'.RAR archiveRAR archivesRemove books from the library?Remove collection from the library?Remove collection...Remove from archiveRemove from the library...Remove from this collectionRemoved %(num)d book(s) from '%(collection)s'.Removed %d book(s) from the library.Removed thumbnail for '%s'Removing thumbnailsRename collection?Rename...Replacing it will overwrite its contents.RootRotat_e 90 degrees CCWRotate 180 de_greesRun _slideshowRussian translationSLIDESHOWS_crollbarsSaturationSaveScrollSearchSet the magnification factor of the magnifying glass.Set the size of the magnifying glass. It is a square with a side of this many pixels.SharpnessShow only one wide image in double page mode.Show page numbers on thumbnails.Simplified Chinese translationSizeSlideshowSlideshow delay (in seconds)Some old files (that were used for storing preferences, the library, bookmarks etc. for older versions of Comix) were found on your computer. If you do not plan on using the older versions of Comix again, you should remove these files in order to save some disk space. Do you want these files to be removed for you now?Spanish translationSt_atusbarStore information about recently opened files.Store thumbnails for opened files according to the freedesktop.org specification. These thumbnails are shared by many other applications, such as most file managers.Store thumbnails for opened files.Stretch images to a size that is larger than their original size if the current zoom mode requests it. If this preference is unset, images are never scaled to be larger than their original size.Stretch small images.T_oolbarsTar archiveTar archivesTh_umbnailsThe new archive could not be saved!The original files have not been removed.The selected books will be removed from the library (but the original files will be untouched). Are you sure that you want to continue?The selected collection will be removed from the library (but the books and subcollections in it will remain). Are you sure that you want to continue?There are deprecated files left on your computer.Thumbnail directoryThumbnail maintenanceThumbnail size (in pixels)ThumbnailsThumbnails for files (such as image files and comic book archives) are stored in your home directory. Many different applications use and create these thumbnails, but sometimes thumbnails remain even though the original files have been removed - wasting space. This dialog can cleanup your stored thumbnails by removing orphaned and outdated thumbnails.Total number of thumbnailsTotal size of removed thumbnailsTotal size of thumbnailsTraditional Chinese translationTransparencyTreat all files found within archives, that have one of these file endings, as comments.Unknown filetypeUse a cache to speed up browsing.Use a grey checkered background for transparent images. If this preference is unset, the background is plain white instead.Use checkered background for transparent images.Use double page mode by default.Use dynamic background colour.Use fullscreen by default.Use manga mode by default.Use smart scrolling with the space key. Normally the space key scrolls only right down (or up when shift is pressed), but with this preference set it also scrolls sideways and so tries to follow the natural reading order of the comic book.Use smart space key scrolling.Use this colour as backgroundYou need either the rar or the unrar program installed in order to read RAR (.cbr) files.ZIP archiveZIP archivesZoom _out_About_Add bookmark_Best fit mode_Bookmarks_Clear bookmarks..._Close_Double page mode_Edit_Edit archive..._Edit bookmarks..._Enhance image..._File_First page_Fullscreen_Go_Help_Keep transformation_Last page_Library..._Manga mode_Menubar_Next page_Open..._Previous page_Properties_Quit_Rotate 90 degrees CW_Thumbnail maintenance..._Toolbar_Transform_View_View comments..._Zoom inProject-Id-Version: Report-Msgid-Bugs-To: POT-Creation-Date: 2008-11-22 02:42+0100 PO-Revision-Date: 2008-12-13 14:48+0900 Last-Translator: Lv5doraki Language-Team: MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Poedit-Language: Korean X-Poedit-Country: KOREA, REPUBLIC OF X-Poedit-SourceCharset: utf-8 %d 주석%d 페이지(Copy)같은 이름의 모음집이 존재합니다.'%s' 파일이 이미 있습니다. 덮어씌우시겟습니까?Comix에 대하여마지막 접근비어있는 새 모음집 추가만화책 추가만화책 추가 '%s'.모음집 추가Comix 의 최근 공유 목록에 설명을 추가합니다. 혹은 설명을 추가하십시오.라이브러리에 더 많은 만화책 추가새 모음집을 추가합니까?만화책 추가추가 '%s'...만화책 추가모든 압축파일모든 만화책모든 파일모든 이미지모든 저장된 북마크를 제거합니다. 계속하시겠습니까?항상 배경색을 선택한 색으로 사용합니다.보기압축파일ZIP 압축파일로 저장되어있습니다.모음집에 자동으로 만화책을 추가자동으로 명암을 조절합니다자동으로 명암을 조정합니다.전체화면 상태에서 도구모음 숨김자동으로 프로그램 시작할때 마지막 파일 열기 마지막 페이지에서 페이지 넘기기를 할경우, 자동적으로 같은 디렉토리에 있는 다음 압축파일을 불러옵니다.자동으로 다음 압축파일 열기Comix로 열었던 마지막 파일을 자동으로 열어봅니다.자동으로 그 이미지에 맞는 배경색을 선텍배경색일반최적 보기포르투갈어(브라질) 번역명도Bzip2으로 된 Tar압축파일캐시브라우징 속도를 높이기 위해, 다음 페이지의 썸네일을 캐시로 저장합니다. 이 기능 속도와 관련된 것이기에, RAM 공간이 부족한 사용자는 직접 설정하는것을 권장합니다.계산 중...카타로니아어 번역지우기미리보기 지우기모든 북마크를 지울까요?Comix는 만화책을 취급하기 위해서 디자인 된 만화책 뷰어입니다.Comix는 GPL로 라이센스 되고 있습니다.주석 확장주석대비새 모음집을 추가하지 못했습니다. '%s'.이름을 변경하지 못했습니다. '%s'.모음집 사본을 못했습니다.RAR 압축파일 풀기를 찾을 수 없습니다.디렉토리를 열 수 없습니다. %s파일을 열 수 없습니다. %s퍼미션 거부. %s알 수없는 파일 형식. %s읽을 수 없습니다. %s표지 크기도움 주신 분크로아티아어 번역체코어 번역기본 보기기본 줌 모드기본값개발자표시양면 보기에서 이미지의 가로크기가 너무 클 경우엔 크기를 맞추기 위하여 하나의 이미지만 보여집니다.전체 경로에 지정된 문자열이 만화책을 표시합니다. 검색은 대소문자를 구분하지 않습니다.오래된 미리보기를 정리합니다.양면 보기모음집사본네덜란드어 번역압축파일 수정북마크 편집이미지 향상파일처음 페이지세로폭 맞춤(_H)가로폭 맞춤(_W)세로 폭 맞춤가로 폭 맞춤좌우 뒤집기(_P)상하 뒤집기(_V)마우스 스크롤이나 방향키를 이용해서 페이지를 전환할수 있습니다.페이지의 가장자리에서 스크롤 할 때 페이지 넘기기.2 페이지 넘기면 양면 보기로 전환 페이지를 동시에 두번 넘기면 양면 보기로 전환됩니다.프랑스어 번역전체화면독일어 번역과 Nautilus의 미리보기 작성그리스어 번역Gzip으로 된 Tar압축파일모두 숨김(_I)헝거리어 번역아이콘 디자인이미지이미지 스케일링이미지불러오기인도네시아어 번역ZIP, RAR 그리고 tar 압축파일과 일반 이미지 파일을 읽습니다.이탈리아어 번역JPEG 이미지일본어 번역한국어 번역마지막 페이지라이브러리위치수동 줌 조절(_A)확대 인수돋보기돋보기(_G)돋보기돋보기 크기(픽셀)만화 페이지순 보기수동 줌 조절(_Z)수동 줌 조절마지막 수정'%(source collection)s' 에서 '%(destination collection)s' 으로 만화책 이동.이름새 모음집다음 페이지이미지가 없습니다. %s미리보기 번호 제거원본 크기(_R)열기최근 문서 열기(_R)선택한 만화책 열기기타 파일소유자PNG 이미지페이지퍼미션이슬란어 번역새 모음집의 이름을 입력해주세요.선택된 모음집에 대한 새 이름을 입력하시기 바랍니다.참고: Comix 가 주석으로 분류한 자료들은 이 목록에 자동적으로 추가됩니다.폴란드어 번역설정(_E)환경설정이전 페이지등록정보'%(subcollection)s' 모음집을 '%(supercollection)s' 모음집에 넣기.RAR 압축파일RAR 압축파일라이브러리에서 만화책 제거라이브러리로부터 모음집을 제거모음집 제거압축파일에서 제거라이브러리에서 제거모음집을 제거'%(collection)s' 에서 %(num)d 만화책 제거.라이브러리에서 %d 만화책을 제거미리보기 제거 '%s'미리보기 제거모음집 이름바꾸기이름바꾸기내용을 덮어 쓰게됩니다.관리자좌측으로 90도 회전(_E)180도 회전(_G)슬라이드쇼 실행(_S)러시아어 번역슬라이드쇼스크롤바(_C)채도저장스크롤검색돋보기의 확대 인수를 설정합니다.돋보기의 크기를 설정합니다.선명함양면 보기에서 넓은 이미지 보기미리보기의 페이지 번호 보기간체 중국어 번역크기슬라이드쇼슬라이드쇼 지연시간(초)예전 버젼의 Comix 에서 사용하던 자료( 라이브러리, 북마크 등 )이 남아 있습니다. 하드디스크 공간의 절약을 위해, 이 자료들을 삭제하는것을 추천합니다. 지금 삭제하시겟습니까?스페인어 번역상태바(_A)최근 열어본 압축파일에 대한 정보를 표시합니다.열려진 파일의 썸네일을 freedesktop.org 에서 지정한 바에 따라 저장하여, 다른 사용자들과 썸네일을 공유하게 됩니다.열어본 파일의 미리보기를 보관이 설정을 사용하면 화면 크기에 맞게 확대/축소 됩니다.작은 이미지 확대도구모음(_O)Tar압축파일Tar 압축파일미리보기(_U)새 압축파일을 저장할 수 없습니다.원본 파일이 제거되지 않았습니다.선택한 만화책은 라이브러리에서 (원본 파일은 보존) 제거됩니다. 계속하시겠습니까?선택된 모음집들을 라이브러리에서 삭제합니다 ( 그러나 만화책과 하위모음집은 지워지지 않습니다. ) 계속 진행하시겟습니까?이미 사용하지 않는 파일이 컴퓨터에 남아있습니다.미리보기 디렉토리미리보기 관리미리보기 크기(픽셀)미리보기디렉토리에 썸네일이 저장됩니다. 많은 브라우져에서 썸네일을 사용하지만, 가끔씩 원본 파일을 삭제하여도 썸네일이 삭제되지 않는 브라우져가 있습니다. 이는 하드디스크 공간의 낭비이며, 이 창은 이미 저장된 썸네일이나, 기한이 지난 썸네일을 정리하고 삭제하여 하드디스크 공간을 절약할수 있도록 도와줍니다.미리보기 합계미리보기 총 크기 제거미리보기 총 크기정체 중국어 번역투명도목록중에 이와 같은 확장자 형식을 가진 파일을 주석으로 인식합니다.알 수 없는 파일 형식캐시를 사용하여 탐색속도를 높입니다.회색 체크된 이미지를 투영그림으로 사용합니다. 체크하지 않을 경우 기본바탕(흰색)을 적용합니다.체크된 이미지를 투명 배경그림으로 사용합니다.양면 보기를 기본으로 사용동적인 배경색 사용전체화면을 기본으로 사용만화 페이지순 보기를 기본으로 사용스페이스바를 이용하여, 스마트 스크롤 기능을 사용하십시오. 보통 스페이스바는 아래쪽(쉬프트가 눌려있으면 위쪽)으로 스크롤 하지만, 스마트 스크롤은 책의 내용이나 순서를 변경하지 않고 좌우로 스크롤 하여 더 쉽게 읽을수 있도록 도와줍니다. 스페이스 키를 사용하여 스크롤합니다이 색을 사용하여 배경으로RAR (.cbr) 파일을 여려면, RAR 혹은 UnRAR 프로그램이 필요합니다.ZIP 압축파일ZIP 압축파일축소(_O)Comix에 대하여(_A)북마크에 추가(_A)최적 보기(_B)북마크(_B)북마크 지우기(_C)닫기(_C)좌우 페이지 보기(_D)편집(_E)압축파일 보기(_E)북마크 편집(_E)이미지 향상파일(_F)처음 페이지(_F)전체화면(_F)바로가기(_G)도움말(_H)회전 상태 유지(_K)마지막 페이지(_L)라이브러리(_L)만화 페이지순 보기(_M)메뉴바(_M)다음 페이지(_N)열기(_O)이전 페이지(_P)속성(_P)종료(_Q)우측으로 90도 회전(_R)미리보기 관리(_T)도구모음(_T)이미지 회전(_T)보기(_V)주석 보기(_V)확대(_Z)comix-4.0.4/messages/fr/LC_MESSAGES/comix.po0000644000175000001440000007310411145523141017217 0ustar sorkusersmsgid "" msgstr "" "Project-Id-Version: Comix\n" "POT-Creation-Date: \n" "PO-Revision-Date: 2009-02-10 00:49+0100\n" "Last-Translator: Benoît H. \n" "Language-Team: Benoît H. \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Poedit-Language: French\n" "X-Poedit-Country: FRANCE\n" #: src/about.py:19 #: src/about.py:68 msgid "About" msgstr "À propos" #: src/about.py:56 msgid "Comix is an image viewer specifically designed to handle comic books." msgstr "Comix est un visionneur d'images, spécialisé dans la lecture des bandes dessinées." #: src/about.py:58 msgid "It reads ZIP, RAR and tar archives, as well as plain image files." msgstr "Il lit les archives ZIP, RAR et Tar aussi bien que les fichiers images." #: src/about.py:60 msgid "Comix is licensed under the GNU General Public License." msgstr "Comix est distribué selon les termes de la GNU General Public License" #: src/about.py:83 msgid "Developer" msgstr "Développeur" #: src/about.py:84 #: src/about.py:85 msgid "Simplified Chinese translation" msgstr "Traduction en chinois simplifié" #: src/about.py:86 msgid "Spanish translation" msgstr "Traduction en espagnol" #: src/about.py:87 msgid "Brazilian Portuguese translation" msgstr "Traduction en portugais brésilien" #: src/about.py:88 msgid "German translation and Nautilus thumbnailer" msgstr "Traduction en allemand et développement du générateur de vignettes pour Nautilus" #: src/about.py:89 #: src/about.py:90 msgid "Italian translation" msgstr "Traduction en italien" #: src/about.py:91 msgid "Dutch translation" msgstr "Traduction en néerlandais" #: src/about.py:92 msgid "French translation" msgstr "Traduction en français" #: src/about.py:93 #: src/about.py:94 msgid "Polish translation" msgstr "Traduction en polonais" #: src/about.py:95 msgid "Greek translation" msgstr "Traduction en grec" #: src/about.py:96 msgid "Catalan translation" msgstr "Traduction en catalan" #: src/about.py:97 #: src/about.py:98 msgid "Traditional Chinese translation" msgstr "Traduction en chinois traditionnel" #: src/about.py:99 msgid "Japanese translation" msgstr "Traduction en japonais" #: src/about.py:100 msgid "Hungarian translation" msgstr "Traduction en hongrois" #: src/about.py:101 msgid "Russian translation" msgstr "Traduction en russe" #: src/about.py:102 msgid "Croatian translation" msgstr "Traduction en croate" #: src/about.py:103 msgid "Korean translation" msgstr "Traduction en coréen" #: src/about.py:104 msgid "Persian translation" msgstr "Traduction en persan" #: src/about.py:105 msgid "Indonesian translation" msgstr "Traduction en indonésien" #: src/about.py:106 msgid "Czech translation" msgstr "Traduction en tchèque" #: src/about.py:107 msgid "Icon design" msgstr "Réalisation des icônes" #: src/about.py:114 msgid "Credits" msgstr "Crédits" #: src/archive.py:66 msgid "Could not find RAR file extractor!" msgstr "Impossible de localiser le décompresseur RAR !" #: src/archive.py:68 msgid "You need either the rar or the unrar program installed in order to read RAR (.cbr) files." msgstr "Vous devez installer le logiciel rar ou unrar afin de lire les fichiers RAR (.cbr)." #: src/archive.py:305 msgid "ZIP archive" msgstr "Archive ZIP" #: src/archive.py:306 msgid "Tar archive" msgstr "Archive Tar" #: src/archive.py:307 msgid "Gzip compressed tar archive" msgstr "Archive tar compressée avec Gzip" #: src/archive.py:308 msgid "Bzip2 compressed tar archive" msgstr "Archive tar compressée avec Bzip2" #: src/archive.py:309 msgid "RAR archive" msgstr "Archive RAR" #: src/bookmark.py:28 msgid "_Add bookmark" msgstr "_Ajouter un signet" #: src/bookmark.py:30 msgid "_Edit bookmarks..." msgstr "_Éditer les signets..." #: src/bookmark.py:32 msgid "_Clear bookmarks..." msgstr "Effacer les _signets..." #: src/bookmark.py:78 msgid "Clear all bookmarks?" msgstr "Effacer tous les signets ?" #: src/bookmark.py:80 msgid "All stored bookmarks will be removed. Are you sure that you want to continue?" msgstr "Tous les signets enregistrés vont être effacés. Êtes-vous sûr de vouloir continuer ?" #: src/bookmark.py:230 msgid "Edit bookmarks" msgstr "Éditer les signets" #: src/bookmark.py:256 #: src/edit.py:270 msgid "Name" msgstr "Nom" #: src/bookmark.py:257 msgid "Page" msgstr "Page" #: src/comment.py:16 #: src/preferences.py:299 msgid "Comments" msgstr "Commentaires" #: src/comment.py:53 #, python-format msgid "Could not read %s" msgstr "Impossible de lire %s" #: src/deprecated.py:16 msgid "There are deprecated files left on your computer." msgstr "Il reste des fichiers obsolètes sur votre ordinateur." #: src/deprecated.py:22 msgid "Some old files (that were used for storing preferences, the library, bookmarks etc. for older versions of Comix) were found on your computer. If you do not plan on using the older versions of Comix again, you should remove these files in order to save some disk space. Do you want these files to be removed for you now?" msgstr "Des fichiers anciens (qui étaient utilisés pour sauvegarder les préférences, la bibliothèque, les signets, ... pour des versions plus anciennes de Comix) ont été trouvés sur votre ordinateur. Si vous ne comptez plus utiliser d'anciennes versions de Comix, vous devriez supprimer ces fichiers afin de libérer de l'espace disque. Voulez-vous que ces fichiers soient supprimés maintenant ?" #: src/edit.py:29 msgid "Edit archive" msgstr "Éditer l'archive" #: src/edit.py:37 msgid "Import" msgstr "Importer" #: src/edit.py:51 msgid "Images" msgstr "Images" #: src/edit.py:52 msgid "Other files" msgstr "Autres fichiers" #: src/edit.py:101 msgid "The new archive could not be saved!" msgstr "Impossible d'enregistrer la nouvelle archive !" #: src/edit.py:103 msgid "The original files have not been removed." msgstr "Les fichiers originaux n'ont pas été supprimés." #: src/edit.py:117 msgid "Archives are stored as ZIP files." msgstr "Les archives sont enregistrés en tant que fichiers ZIP." #: src/edit.py:170 #: src/edit.py:288 msgid "Remove from archive" msgstr "Supprimer de l'archive" #: src/edit.py:258 msgid "Please note that the only files that are automatically added to this list are those files in archives that Comix recognizes as comments." msgstr "Les seuls fichiers ajoutés automatiquement à cette liste sont les fichiers de l'archive que Comix reconnait comme commentaires." #: src/edit.py:273 msgid "Size" msgstr "Taille" #: src/enhance.py:51 msgid "Enhance image" msgstr "Amélioration de l'image" #: src/enhance.py:52 msgid "Defaults" msgstr "Réinitialisation" #: src/enhance.py:79 msgid "Brightness" msgstr "Luminosité" #: src/enhance.py:90 msgid "Contrast" msgstr "Contraste" #: src/enhance.py:101 msgid "Saturation" msgstr "Saturation" #: src/enhance.py:112 msgid "Sharpness" msgstr "Netteté" #: src/enhance.py:126 msgid "Automatically adjust contrast." msgstr "Ajustement automatique du contraste." #: src/enhance.py:128 msgid "Automatically adjust contrast (both lightness and darkness), separately for each colour band." msgstr "Ajustement automatique du contraste (clarté et obscurité), séparément pour chaque couleur." #: src/filechooser.py:38 #: src/library.py:490 msgid "Open" msgstr "Ouvrir" #: src/filechooser.py:42 msgid "Save" msgstr "Enregistrer" #: src/filechooser.py:78 msgid "All files" msgstr "Tous les fichiers" #: src/filechooser.py:81 msgid "All Archives" msgstr "Toutes les archives" #: src/filechooser.py:85 msgid "ZIP archives" msgstr "Archives ZIP" #: src/filechooser.py:87 msgid "RAR archives" msgstr "Archives RAR" #: src/filechooser.py:89 msgid "Tar archives" msgstr "Archives Tar" #: src/filechooser.py:134 #, python-format msgid "A file named '%s' already exists. Do you want to replace it?" msgstr "Un fichier nommé '%s' existe déjà. Voulez-vous le remplacer ?" #: src/filechooser.py:137 msgid "Replacing it will overwrite its contents." msgstr "Le remplacement du fichier écrasera son contenu." #: src/filechooser.py:182 #: src/filechooser.py:260 msgid "All images" msgstr "Toutes les images" #: src/filechooser.py:184 #: src/filechooser.py:262 msgid "JPEG images" msgstr "Images JPEG" #: src/filechooser.py:185 #: src/filechooser.py:263 msgid "PNG images" msgstr "Images PNG" #: src/filechooser.py:206 msgid "Automatically add the books to this collection" msgstr "Ajouter automatiquement les livres à cette collection" #: src/filehandler.py:209 #, python-format msgid "Could not open %s: Is a directory." msgstr "Impossible d'ouvrir %s: C'est un répertoire." #: src/filehandler.py:213 #, python-format msgid "Could not open %s: No such file." msgstr "Impossible d'ouvrir %s: Fichier inexistant." #: src/filehandler.py:217 #, python-format msgid "Could not open %s: Permission denied." msgstr "Impossible d'ouvrir %s: Permission refusée." #: src/filehandler.py:222 #, python-format msgid "Could not open %s: Unknown file type." msgstr "Impossible d'ouvrir %s: Type de fichier inconnu." #: src/filehandler.py:285 #, python-format msgid "No images in '%s'" msgstr "Pas d'images dans '%s'" #: src/filehandler.py:413 msgid "Unknown filetype" msgstr "Type de fichier inconnu" #: src/librarybackend.py:273 #: src/librarybackend.py:275 msgid "(Copy)" msgstr "(Copie)" #: src/library.py:38 msgid "Library" msgstr "Bibliothèque" #: src/library.py:150 msgid "Rename..." msgstr "Renommer..." #: src/library.py:152 msgid "Duplicate collection" msgstr "Dupliquer la collection" #: src/library.py:154 msgid "Remove collection..." msgstr "Supprimer la collection" #: src/library.py:202 msgid "All books" msgstr "Tous les livres" #: src/library.py:231 msgid "Remove collection from the library?" msgstr "Supprimer la collection de la bibliothèque ?" #: src/library.py:233 msgid "The selected collection will be removed from the library (but the books and subcollections in it will remain). Are you sure that you want to continue?" msgstr "La collection sélectionnée sera supprimée de la bibliothèque (mais les livres et sous-collections seront gardés). Êtes-vous sûr de vouloir continuer ?" #: src/library.py:251 msgid "Rename collection?" msgstr "Renommer la collection ?" #: src/library.py:253 msgid "Please enter a new name for the selected collection." msgstr "Entrer un nouveau nom pour le collection sélectionnée." #: src/library.py:271 #, python-format msgid "Could not change the name to '%s'." msgstr "Impossible de changer le nom en '%s'." #: src/library.py:275 #: src/library.py:882 msgid "A collection by that name already exists." msgstr "Une collection à ce nom existe déjà." #: src/library.py:285 msgid "Could not duplicate collection." msgstr "Impossible de dupliquer la collection" #: src/library.py:382 msgid "Root" msgstr "Racine" #: src/library.py:386 #, python-format msgid "Put the collection '%(subcollection)s' in the collection '%(supercollection)s'." msgstr "Mettre la collection '%(subcollection)s' dans la collection '%(supercollection)s'." #: src/library.py:407 #, python-format msgid "Add books to '%s'." msgstr "Ajouter le livre à '%s'." #: src/library.py:411 #, python-format msgid "Move books from '%(source collection)s' to '%(destination collection)s'." msgstr "Déplacer les livres de '%(source collection)s' vers '%(destination collection)s'." #: src/library.py:493 msgid "Remove from this collection" msgstr "Supprimer de cette collection" #: src/library.py:496 msgid "Remove from the library..." msgstr "Supprimer de la bibliothèque..." #: src/library.py:589 #, python-format msgid "Removed %(num)d book(s) from '%(collection)s'." msgstr "%(num)d livre(s) supprimés de '%(collection)s'." #: src/library.py:598 msgid "Remove books from the library?" msgstr "Supprimer le livre de la bibliothèque ?" #: src/library.py:600 msgid "The selected books will be removed from the library (but the original files will be untouched). Are you sure that you want to continue?" msgstr "Le livre sélectionné sera supprimé de la bibliothèque (mais les fichiers originaux ne seront pas affectés). Êtes-vous sûr de vouloir continuer ?" #: src/library.py:610 #, python-format msgid "Removed %d book(s) from the library." msgstr "%d livre(s) supprimés de la bibliothèque." #: src/library.py:770 msgid "Search" msgstr "Recherche" #: src/library.py:775 msgid "Display only those books that have the specified text string in their full path. The search is not case sensitive." msgstr "Affiche uniquement les livres avec la chaîne de caractère spécifiée dans le chemin complet. La recherche n'est pas sensible à la casse." #: src/library.py:777 msgid "Cover size" msgstr "Taille de la couverture" #: src/library.py:790 msgid "Add books" msgstr "Ajouter des livres" #: src/library.py:794 msgid "Add more books to the library." msgstr "Ajouter plus de livres à la bibliothèque." #: src/library.py:796 msgid "Add collection" msgstr "Ajouter une collection" #: src/library.py:801 msgid "Add a new empty collection." msgstr "Ajouter une nouvelle collection vide." #: src/library.py:807 msgid "Open the selected book." msgstr "Ouvrir le livre sélectionné." #: src/library.py:833 #: src/properties.py:118 #, python-format msgid "%d pages" msgstr "%d pages" #: src/library.py:855 msgid "Add new collection?" msgstr "Ajouter une nouvelle collection ?" #: src/library.py:857 msgid "Please enter a name for the new collection." msgstr "Entrez un nom pour la nouvelle collection." #: src/library.py:863 msgid "New collection" msgstr "Nouvelle collection" #: src/library.py:877 #, python-format msgid "Could not add a new collection called '%s'." msgstr "Impossible d'ajouter une nouvelle collection appelée '%s'." #: src/library.py:911 msgid "Adding books" msgstr "Ajout de livres" #: src/library.py:931 msgid "Added books" msgstr "Livres ajoutés" #: src/library.py:953 #, python-format msgid "Adding '%s'..." msgstr "Ajout de '%s'..." #: src/main.py:699 msgid "SLIDESHOW" msgstr "DIAPORAMA" #: src/preferences.py:80 msgid "Preferences" msgstr "Préférences" #: src/preferences.py:95 msgid "Background" msgstr "Arrière-plan" #: src/preferences.py:97 msgid "Use this colour as background" msgstr "Couleur d'arrière-plan" #: src/preferences.py:99 msgid "Always use this selected colour as the background colour." msgstr "Utilise la couleur sélectionnée en arrière-plan." #: src/preferences.py:104 msgid "Use dynamic background colour." msgstr "Utilise une couleur d'arrière-plan dynamique" #: src/preferences.py:108 msgid "Automatically pick a background colour that fits the viewed image." msgstr "Choisir automatiquement une couleur d'arrière-plan qui correspond à l'image affichée." #: src/preferences.py:111 msgid "Thumbnails" msgstr "Vignettes" #: src/preferences.py:112 msgid "Thumbnail size (in pixels)" msgstr "Taille des vignettes (en pixels)" #: src/preferences.py:119 msgid "Show page numbers on thumbnails." msgstr "Voir le numéro de la page sur les vignettes." #: src/preferences.py:126 msgid "Magnifying Glass" msgstr "Loupe" #: src/preferences.py:127 msgid "Magnifying glass size (in pixels)" msgstr "Taille de la loupe (en pixels)" #: src/preferences.py:133 msgid "Set the size of the magnifying glass. It is a square with a side of this many pixels." msgstr "Fixe la taille de la loupe. C'est un carré dont la taille du côté est égal à ce paramètre en pixel." #: src/preferences.py:135 msgid "Magnification factor" msgstr "Facteur d'agrandissement" #: src/preferences.py:142 msgid "Set the magnification factor of the magnifying glass." msgstr "Fixe le facteur d'agrandissement de la loupe" #: src/preferences.py:145 msgid "Image scaling" msgstr "Mise à l'échelle des images" #: src/preferences.py:146 msgid "Stretch small images." msgstr "Étirer les petites images." #: src/preferences.py:150 msgid "Stretch images to a size that is larger than their original size if the current zoom mode requests it. If this preference is unset, images are never scaled to be larger than their original size." msgstr "Étirer les images plus petites que la fenêtre si le mode de zoom le requière. Si ce paramètre n'est pas activé, les images ne sont jamais étirés." #: src/preferences.py:153 msgid "Transparency" msgstr "Transparence" #: src/preferences.py:155 msgid "Use checkered background for transparent images." msgstr "Arrière-plan en damier pour les images transparentes." #: src/preferences.py:161 msgid "Use a grey checkered background for transparent images. If this preference is unset, the background is plain white instead." msgstr "Utilise un arrière-plan gris en damier pour les images transparentes. Si ce paramètre n'est pas activé, l'arrière-plan est blanc." #: src/preferences.py:163 msgid "Appearance" msgstr "Apparence" #: src/preferences.py:169 msgid "Scroll" msgstr "Défilement" #: src/preferences.py:171 msgid "Use smart space key scrolling." msgstr "Défilement intelligent avec la barre d'espace" #: src/preferences.py:176 msgid "Use smart scrolling with the space key. Normally the space key scrolls only right down (or up when shift is pressed), but with this preference set it also scrolls sideways and so tries to follow the natural reading order of the comic book." msgstr "Défilement intelligent avec la barre d'espace. Normalement la barre d'espace fait défiler l'image seulement vers le bas (ou vers le haut sir la touche \"shift\" est enfoncée). Avec ce paramètre, le défilement peut aussi se faire de façon horizontale et Comix essaye de suivre l'ordre naturel de lecture de la bande dessinée." #: src/preferences.py:180 msgid "Flip pages when scrolling off the edges of the page." msgstr "Tourner les pages lors du défilement en-dehors de la page." #: src/preferences.py:185 msgid "Flip pages when scrolling \"off the page\" with the scroll wheel or with the arrow keys. It takes three consecutive \"steps\" with the scroll wheel or the arrow keys for the pages to be flipped." msgstr "Tourner les pages lors du défilement en-dehors de la page avec la mollette de la souris ou les flèches du clavier. La page est tournée après 3 actions de défilement successives." #: src/preferences.py:188 #: src/ui.py:298 msgid "Double page mode" msgstr "Mode double page" #: src/preferences.py:190 msgid "Flip two pages in double page mode." msgstr "Tourner 2 pages en mode double page." #: src/preferences.py:195 msgid "Flip two pages, instead of one, each time we flip pages in double page mode." msgstr "Tourner 2 pages au lieu d'une chaque fois que l'on tourne une page en mode double page." #: src/preferences.py:198 msgid "Show only one wide image in double page mode." msgstr "Afficher seulement une large image en mode double page." #: src/preferences.py:204 msgid "Display only one image in double page mode, if the image's width exceeds its height. The result of this is that scans that span two pages are displayed properly (i.e. alone) also in double page mode." msgstr "Affiche seulement une image en mode double page si l'image est plus large que haute. Cela permet d'afficher correctement (i.e. tout seul) un scan d'une double page." #: src/preferences.py:207 msgid "Files" msgstr "Fichiers" #: src/preferences.py:209 msgid "Automatically open the next archive." msgstr "Ouvrir automatiquement la prochaine archive." #: src/preferences.py:214 msgid "Automatically open the next archive in the directory when flipping past the last page, or the previous archive when flipping past the first page." msgstr "Ouvrir automatiquement la prochaine archive dans le répertoire en tournant la dernière page ou l'archive précédente s'il s'agit de la première page." #: src/preferences.py:217 msgid "Automatically open the last viewed file on startup." msgstr "Ouvrir automatiquement la dernière archive visualisée au démarrage." #: src/preferences.py:222 msgid "Automatically open, on startup, the file that was open when Comix was last closed." msgstr "Ouvrir automatiquement au démarrage le fichier qui était ouvert quand Comix a été fermé." #: src/preferences.py:225 msgid "Store information about recently opened files." msgstr "Enregistrer les informations sur les fichiers récemment ouverts." #: src/preferences.py:230 msgid "Add information about all files opened from within Comix to the shared recent files list." msgstr "Ajoute les informations sur les fichiers ouverts par Comix dans la liste des documents récents du système d'exploitation." #: src/preferences.py:233 msgid "Store thumbnails for opened files." msgstr "Enregistrer les vignettes des fichiers ouverts." #: src/preferences.py:238 msgid "Store thumbnails for opened files according to the freedesktop.org specification. These thumbnails are shared by many other applications, such as most file managers." msgstr "Enregistrer les vignettes des fichiers ouverts selon les spécifications de freedesktop.org. Ces vignettes sont partagés par d'autres applications comme les gestionnaires de fichiers." #: src/preferences.py:241 msgid "Cache" msgstr "Cache" #: src/preferences.py:242 msgid "Use a cache to speed up browsing." msgstr "Utiliser le cache pour accélérer la navigation." #: src/preferences.py:246 msgid "Cache the images that are next to the currently viewed image in order to speed up browsing. Since the speed improvements are quite big, it is recommended that you have this preference set, unless you are running short on free RAM." msgstr "Mettre en cache les images suivantes afin d'accélérer la navigation. Il est recommandé d'utiliser ce réglage à la vue du gain en vitesse que cela procure sauf si vous utilisez un ordinateur disposant de peu de mémoire vive." #: src/preferences.py:248 msgid "Behaviour" msgstr "Comportement" #: src/preferences.py:254 msgid "Default modes" msgstr "Modes par défaut" #: src/preferences.py:256 msgid "Use double page mode by default." msgstr "Utiliser le mode double page par défaut." #: src/preferences.py:261 msgid "Use fullscreen by default." msgstr "Utiliser le mode plein écran par défaut." #: src/preferences.py:266 msgid "Use manga mode by default." msgstr "Utiliser le mode manga par défaut." #: src/preferences.py:271 msgid "Default zoom mode" msgstr "Mode zoom par défaut" #: src/preferences.py:273 #: src/ui.py:290 msgid "Best fit mode" msgstr "Ajuster l'image à la fenêtre" #: src/preferences.py:274 #: src/ui.py:292 msgid "Fit width mode" msgstr "Adapter la largeur" #: src/preferences.py:275 #: src/ui.py:294 msgid "Fit height mode" msgstr "Adapter la hauteur" #: src/preferences.py:276 #: src/ui.py:296 msgid "Manual zoom mode" msgstr "Mode zoom manuel" #: src/preferences.py:282 msgid "Fullscreen" msgstr "Plein écran" #: src/preferences.py:284 msgid "Automatically hide all toolbars in fullscreen." msgstr "Masquer automatiquement les barres d'outils en plein écran." #: src/preferences.py:290 msgid "Slideshow" msgstr "Diaporama" #: src/preferences.py:291 msgid "Slideshow delay (in seconds)" msgstr "Délai du diaporama (en secondes)" #: src/preferences.py:300 msgid "Comment extensions" msgstr "Extensions des fichiers commentaires" #: src/preferences.py:306 msgid "Treat all files found within archives, that have one of these file endings, as comments." msgstr "Considérer tous les fichiers des archives qui utilisent une de ces extensions comme des commentaires." #: src/preferences.py:309 msgid "Rotation" msgstr "Rotation" #: src/preferences.py:311 msgid "Automatically rotate images according to their metadata." msgstr "Rotation automatique des images suivant leurs metadata." #: src/preferences.py:316 msgid "Automatically rotate images when an orientation is specified in the image metadata, such as in an Exif tag." msgstr "Rotation automatique des images quand une orientation est spécifiée dans les metadata de l'image comme un tag EXIF." #: src/preferences.py:318 msgid "Display" msgstr "Affichage" #: src/properties.py:94 msgid "Properties" msgstr "Propriétés" #: src/properties.py:119 #, python-format msgid "%d comments" msgstr "%d commentaires" #: src/properties.py:129 #: src/properties.py:164 msgid "Location" msgstr "Emplacement" #: src/properties.py:131 #: src/properties.py:165 msgid "Accessed" msgstr "Accédé le" #: src/properties.py:133 #: src/properties.py:167 msgid "Modified" msgstr "Modifié le" #: src/properties.py:135 #: src/properties.py:169 msgid "Permissions" msgstr "Permissions" #: src/properties.py:136 #: src/properties.py:170 msgid "Owner" msgstr "Propriétaire" #: src/properties.py:140 msgid "Archive" msgstr "Archive" #: src/properties.py:174 msgid "Image" msgstr "Image" #: src/thumbremover.py:24 msgid "Thumbnail maintenance" msgstr "Gestion des vignettes" #: src/thumbremover.py:26 msgid "Cleanup" msgstr "Nettoyage" #: src/thumbremover.py:38 msgid "Cleanup thumbnails" msgstr "Nettoyage des vignettes" #: src/thumbremover.py:48 msgid "Thumbnails for files (such as image files and comic book archives) are stored in your home directory. Many different applications use and create these thumbnails, but sometimes thumbnails remain even though the original files have been removed - wasting space. This dialog can cleanup your stored thumbnails by removing orphaned and outdated thumbnails." msgstr "Les vignettes sont enregistrés dans votre répertoire dédié (home directory). Des applications différentes utilisent et créent ces vignettes, et parfois des vignettes polluent l'espace disque car elles n'ont pas été supprimées en même temps que le fichier original. Cette option permet de nettoyer les vignettes orphelines et périmées stockés localement." #: src/thumbremover.py:60 msgid "Thumbnail directory" msgstr "Répertoire des vignettes" #: src/thumbremover.py:67 msgid "Total number of thumbnails" msgstr "Nombre total de vignettes" #: src/thumbremover.py:70 #: src/thumbremover.py:77 msgid "Calculating..." msgstr "Calcul en cours..." #: src/thumbremover.py:74 msgid "Total size of thumbnails" msgstr "Taille totale des vignettes" #: src/thumbremover.py:82 msgid "Do you want to cleanup orphaned and outdated thumbnails now?" msgstr "Voulez-vous nettoyer maintenant les vignettes orphelines et périmées ?" #: src/thumbremover.py:118 msgid "Removing thumbnails" msgstr "Suppression des vignettes" #: src/thumbremover.py:137 msgid "Number of removed thumbnails" msgstr "Nombre de vignettes supprimés" #: src/thumbremover.py:144 msgid "Total size of removed thumbnails" msgstr "Taille totale des vignettes supprimées" #: src/thumbremover.py:195 #, python-format msgid "Removed thumbnail for '%s'" msgstr "Vignette supprimée pour '%s'" #: src/ui.py:34 msgid "_Next page" msgstr "Page _suivante" #: src/ui.py:36 msgid "_Previous page" msgstr "Page _précédente" #: src/ui.py:38 msgid "_First page" msgstr "P_remière page" #: src/ui.py:40 msgid "_Last page" msgstr "_Dernière page" #: src/ui.py:42 msgid "_Zoom in" msgstr "Zoom a_vant" #: src/ui.py:44 msgid "Zoom _out" msgstr "Zoom a_rrière" #: src/ui.py:46 msgid "O_riginal size" msgstr "Taille _originale" #: src/ui.py:48 msgid "_Close" msgstr "_Fermer" #: src/ui.py:50 msgid "_Quit" msgstr "_Quitter" #: src/ui.py:52 msgid "_Rotate 90 degrees CW" msgstr "_Rotation de 90 degrés sens horaire" #: src/ui.py:54 msgid "Rotate 180 de_grees" msgstr "Rotation de 180 de_grés" #: src/ui.py:56 msgid "Rotat_e 90 degrees CCW" msgstr "Rotation de 90 degrés sens anti-horair_e" #: src/ui.py:58 msgid "Fli_p horizontally" msgstr "Mirroir _horizontal" #: src/ui.py:60 msgid "Flip _vertically" msgstr "Mirroir _vertical" #: src/ui.py:62 msgid "Manual _Zoom" msgstr "_Zoom manuel" #: src/ui.py:63 msgid "Open _recent" msgstr "Fichiers récents" #: src/ui.py:64 msgid "_Bookmarks" msgstr "_Signets" #: src/ui.py:65 msgid "T_oolbars" msgstr "Barre d'o_utils" #: src/ui.py:66 msgid "_Edit" msgstr "_Édition" #: src/ui.py:67 msgid "_File" msgstr "_Fichier" #: src/ui.py:68 msgid "_View" msgstr "_Affichage" #: src/ui.py:69 msgid "_Go" msgstr "A_ller à" #: src/ui.py:70 msgid "_Help" msgstr "A_ide" #: src/ui.py:71 msgid "_Transform" msgstr "Tra_nsformer" #: src/ui.py:75 msgid "_Fullscreen" msgstr "_Plein écran" #: src/ui.py:77 msgid "_Double page mode" msgstr "Pages _doubles" #: src/ui.py:79 msgid "_Toolbar" msgstr "Barre d'_outils" #: src/ui.py:81 msgid "_Menubar" msgstr "Barre de _menus" #: src/ui.py:83 msgid "St_atusbar" msgstr "Barre d'_état" #: src/ui.py:85 msgid "S_crollbars" msgstr "Barres de _défilement" #: src/ui.py:87 msgid "Th_umbnails" msgstr "_Vignettes" #: src/ui.py:89 msgid "H_ide all" msgstr "Tout cac_her" #: src/ui.py:91 msgid "_Manga mode" msgstr "_Mode manga" #: src/ui.py:93 msgid "_Keep transformation" msgstr "Se souvenir de la _transformation" #: src/ui.py:95 msgid "Run _slideshow" msgstr "Lancer le _diaporama" #: src/ui.py:97 msgid "Magnifying _glass" msgstr "_Loupe" #: src/ui.py:103 msgid "_Best fit mode" msgstr "Ajuster l'image à la _fenêtre" #: src/ui.py:105 msgid "Fit _width mode" msgstr "Adapter la _largeur" #: src/ui.py:107 msgid "Fit _height mode" msgstr "Adapter la _hauteur" #: src/ui.py:109 msgid "M_anual zoom mode" msgstr "Mode zoom m_anuel" #: src/ui.py:115 msgid "_About" msgstr "À _propos" #: src/ui.py:117 msgid "_View comments..." msgstr "_Voir les commentaires" #: src/ui.py:119 msgid "_Edit archive..." msgstr "_Éditer l'archive" #: src/ui.py:121 msgid "_Open..." msgstr "_Ouvrir..." #: src/ui.py:123 msgid "_Properties" msgstr "_Propriétés" #: src/ui.py:125 msgid "_Enhance image..." msgstr "Am_élioration de l'image" #: src/ui.py:128 msgid "_Thumbnail maintenance..." msgstr "_Gestion des vignettes..." #: src/ui.py:130 msgid "Pr_eferences" msgstr "Préfér_ences" #: src/ui.py:134 msgid "_Library..." msgstr "_Bibliothèque..." #: src/ui.py:284 msgid "First page" msgstr "Première page" #: src/ui.py:286 msgid "Previous page" msgstr "Page précédente" #: src/ui.py:287 msgid "Next page" msgstr "Page suivante" #: src/ui.py:288 msgid "Last page" msgstr "Dernière page" #: src/ui.py:299 msgid "Manga mode" msgstr "Mode manga" #: src/ui.py:300 msgid "Magnifying glass" msgstr "Loupe" comix-4.0.4/messages/fr/LC_MESSAGES/comix.mo0000644000175000001440000005770411145523141017224 0ustar sorkusersTa &)-<W YEd x     M9 T_!g.].53d$*ROB8k     !E67|+"("H"k %%  5 GUg pzrJ <   ! ! 2!?! N!\! b!m!~!!!!!!4"#"L"6# I#+T### ## ## ####A$U$ i$u$$ $$$$$$$%!% 5% @%M%^%Hg%%% %%%% & && 6&B& H&S& X&d&+x&4&&b' u' ' ' 'O' ' ((#/(S(h(|((.($()")6) I))S)})))))) ) ) )))*5 *UC* *-* **+ + +?=+}, ,.,,"q--W. m. w. . .#.)..r/1 0;0O0e0 0a01 2)2B2 b2Xo22!2{20w3 333445-5gK5 5 5 55 55 566 62686I6\6n6 t6 6666 6 6 66 666 67 7"7<7 E7P7V7h7Wq7888'8@9 S9 ]9%i9999{9+O:!{:::::::;Y;3p; ;;8;6;^&<$<<<F<.=,=]=XS>7>u> Z? h?u?"? ?"???@@ @AAU8AFA$A A B;B%MB%sB/B-B+B,#C0PCCCCCCCC D D +D5DDHgEEEEEFF3FIEINIGhII IIII J J(J:JSJYJ`JfJ J JJ JRJ KK %K3KJKiK{KKKK K KK KK*L8-LfLLL MM .MR;M M M(M-MMN -NNN0lN+NNNO O1&OXO)_OOOOO OO O P P P,"PiOPP7P-P (QIQ PQ!ZQ|Q S SA/SqS/*TZTTU U +U 8U.CU2rUU=V6VW,W BW cWnmWX'XY":Y ]YfjYY1YZ6Z)Z-[*0[#[[I[.\\a] r] ~]] ]]]]]]^ ^^-^E^_^h^ x^ ^^!^^^ ^^^ __ #_1_$:___y_ _ __ _7H*0\;F:-pw6uKf'm<3ABs1!>k8 YdrS=c)Wt%TLD#l ^ aERy[ b}{ChJV]/no2x .,59Mg+(~v?O$`jI|4GzZXP"QeUNi_q&@ %d comments%d pages(Copy)A collection by that name already exists.A file named '%s' already exists. Do you want to replace it?AboutAccessedAdd a new empty collection.Add booksAdd books to '%s'.Add collectionAdd information about all files opened from within Comix to the shared recent files list.Add more books to the library.Add new collection?Added booksAdding '%s'...Adding booksAll ArchivesAll booksAll filesAll imagesAll stored bookmarks will be removed. Are you sure that you want to continue?Always use this selected colour as the background colour.AppearanceArchiveArchives are stored as ZIP files.Automatically add the books to this collectionAutomatically adjust contrast (both lightness and darkness), separately for each colour band.Automatically adjust contrast.Automatically hide all toolbars in fullscreen.Automatically open the last viewed file on startup.Automatically open the next archive in the directory when flipping past the last page, or the previous archive when flipping past the first page.Automatically open the next archive.Automatically open, on startup, the file that was open when Comix was last closed.Automatically pick a background colour that fits the viewed image.Automatically rotate images according to their metadata.Automatically rotate images when an orientation is specified in the image metadata, such as in an Exif tag.BackgroundBehaviourBest fit modeBrazilian Portuguese translationBrightnessBzip2 compressed tar archiveCacheCache the images that are next to the currently viewed image in order to speed up browsing. Since the speed improvements are quite big, it is recommended that you have this preference set, unless you are running short on free RAM.Calculating...Catalan translationCleanupCleanup thumbnailsClear all bookmarks?Comix is an image viewer specifically designed to handle comic books.Comix is licensed under the GNU General Public License.Comment extensionsCommentsContrastCould not add a new collection called '%s'.Could not change the name to '%s'.Could not duplicate collection.Could not find RAR file extractor!Could not open %s: Is a directory.Could not open %s: No such file.Could not open %s: Permission denied.Could not open %s: Unknown file type.Could not read %sCover sizeCreditsCroatian translationCzech translationDefault modesDefault zoom modeDefaultsDeveloperDisplayDisplay only one image in double page mode, if the image's width exceeds its height. The result of this is that scans that span two pages are displayed properly (i.e. alone) also in double page mode.Display only those books that have the specified text string in their full path. The search is not case sensitive.Do you want to cleanup orphaned and outdated thumbnails now?Double page modeDuplicate collectionDutch translationEdit archiveEdit bookmarksEnhance imageFilesFirst pageFit _height modeFit _width modeFit height modeFit width modeFli_p horizontallyFlip _verticallyFlip pages when scrolling "off the page" with the scroll wheel or with the arrow keys. It takes three consecutive "steps" with the scroll wheel or the arrow keys for the pages to be flipped.Flip pages when scrolling off the edges of the page.Flip two pages in double page mode.Flip two pages, instead of one, each time we flip pages in double page mode.French translationFullscreenGerman translation and Nautilus thumbnailerGreek translationGzip compressed tar archiveH_ide allHungarian translationIcon designImageImage scalingImagesImportIndonesian translationIt reads ZIP, RAR and tar archives, as well as plain image files.Italian translationJPEG imagesJapanese translationKorean translationLast pageLibraryLocationM_anual zoom modeMagnification factorMagnifying GlassMagnifying _glassMagnifying glassMagnifying glass size (in pixels)Manga modeManual _ZoomManual zoom modeModifiedMove books from '%(source collection)s' to '%(destination collection)s'.NameNew collectionNext pageNo images in '%s'Number of removed thumbnailsO_riginal sizeOpenOpen _recentOpen the selected book.Other filesOwnerPNG imagesPagePermissionsPersian translationPlease enter a name for the new collection.Please enter a new name for the selected collection.Please note that the only files that are automatically added to this list are those files in archives that Comix recognizes as comments.Polish translationPr_eferencesPreferencesPrevious pagePropertiesPut the collection '%(subcollection)s' in the collection '%(supercollection)s'.RAR archiveRAR archivesRemove books from the library?Remove collection from the library?Remove collection...Remove from archiveRemove from the library...Remove from this collectionRemoved %(num)d book(s) from '%(collection)s'.Removed %d book(s) from the library.Removed thumbnail for '%s'Removing thumbnailsRename collection?Rename...Replacing it will overwrite its contents.RootRotat_e 90 degrees CCWRotate 180 de_greesRotationRun _slideshowRussian translationSLIDESHOWS_crollbarsSaturationSaveScrollSearchSet the magnification factor of the magnifying glass.Set the size of the magnifying glass. It is a square with a side of this many pixels.SharpnessShow only one wide image in double page mode.Show page numbers on thumbnails.Simplified Chinese translationSizeSlideshowSlideshow delay (in seconds)Some old files (that were used for storing preferences, the library, bookmarks etc. for older versions of Comix) were found on your computer. If you do not plan on using the older versions of Comix again, you should remove these files in order to save some disk space. Do you want these files to be removed for you now?Spanish translationSt_atusbarStore information about recently opened files.Store thumbnails for opened files according to the freedesktop.org specification. These thumbnails are shared by many other applications, such as most file managers.Store thumbnails for opened files.Stretch images to a size that is larger than their original size if the current zoom mode requests it. If this preference is unset, images are never scaled to be larger than their original size.Stretch small images.T_oolbarsTar archiveTar archivesTh_umbnailsThe new archive could not be saved!The original files have not been removed.The selected books will be removed from the library (but the original files will be untouched). Are you sure that you want to continue?The selected collection will be removed from the library (but the books and subcollections in it will remain). Are you sure that you want to continue?There are deprecated files left on your computer.Thumbnail directoryThumbnail maintenanceThumbnail size (in pixels)ThumbnailsThumbnails for files (such as image files and comic book archives) are stored in your home directory. Many different applications use and create these thumbnails, but sometimes thumbnails remain even though the original files have been removed - wasting space. This dialog can cleanup your stored thumbnails by removing orphaned and outdated thumbnails.Total number of thumbnailsTotal size of removed thumbnailsTotal size of thumbnailsTraditional Chinese translationTransparencyTreat all files found within archives, that have one of these file endings, as comments.Unknown filetypeUse a cache to speed up browsing.Use a grey checkered background for transparent images. If this preference is unset, the background is plain white instead.Use checkered background for transparent images.Use double page mode by default.Use dynamic background colour.Use fullscreen by default.Use manga mode by default.Use smart scrolling with the space key. Normally the space key scrolls only right down (or up when shift is pressed), but with this preference set it also scrolls sideways and so tries to follow the natural reading order of the comic book.Use smart space key scrolling.Use this colour as backgroundYou need either the rar or the unrar program installed in order to read RAR (.cbr) files.ZIP archiveZIP archivesZoom _out_About_Add bookmark_Best fit mode_Bookmarks_Clear bookmarks..._Close_Double page mode_Edit_Edit archive..._Edit bookmarks..._Enhance image..._File_First page_Fullscreen_Go_Help_Keep transformation_Last page_Library..._Manga mode_Menubar_Next page_Open..._Previous page_Properties_Quit_Rotate 90 degrees CW_Thumbnail maintenance..._Toolbar_Transform_View_View comments..._Zoom inProject-Id-Version: Comix POT-Creation-Date: PO-Revision-Date: 2009-02-10 00:49+0100 Last-Translator: Benoît H. Language-Team: Benoît H. MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Poedit-Language: French X-Poedit-Country: FRANCE %d commentaires%d pages(Copie)Une collection à ce nom existe déjà.Un fichier nommé '%s' existe déjà. Voulez-vous le remplacer ?À proposAccédé leAjouter une nouvelle collection vide.Ajouter des livresAjouter le livre à '%s'.Ajouter une collectionAjoute les informations sur les fichiers ouverts par Comix dans la liste des documents récents du système d'exploitation.Ajouter plus de livres à la bibliothèque.Ajouter une nouvelle collection ?Livres ajoutésAjout de '%s'...Ajout de livresToutes les archivesTous les livresTous les fichiersToutes les imagesTous les signets enregistrés vont être effacés. Êtes-vous sûr de vouloir continuer ?Utilise la couleur sélectionnée en arrière-plan.ApparenceArchiveLes archives sont enregistrés en tant que fichiers ZIP.Ajouter automatiquement les livres à cette collectionAjustement automatique du contraste (clarté et obscurité), séparément pour chaque couleur.Ajustement automatique du contraste.Masquer automatiquement les barres d'outils en plein écran.Ouvrir automatiquement la dernière archive visualisée au démarrage.Ouvrir automatiquement la prochaine archive dans le répertoire en tournant la dernière page ou l'archive précédente s'il s'agit de la première page.Ouvrir automatiquement la prochaine archive.Ouvrir automatiquement au démarrage le fichier qui était ouvert quand Comix a été fermé.Choisir automatiquement une couleur d'arrière-plan qui correspond à l'image affichée.Rotation automatique des images suivant leurs metadata.Rotation automatique des images quand une orientation est spécifiée dans les metadata de l'image comme un tag EXIF.Arrière-planComportementAjuster l'image à la fenêtreTraduction en portugais brésilienLuminositéArchive tar compressée avec Bzip2CacheMettre en cache les images suivantes afin d'accélérer la navigation. Il est recommandé d'utiliser ce réglage à la vue du gain en vitesse que cela procure sauf si vous utilisez un ordinateur disposant de peu de mémoire vive.Calcul en cours...Traduction en catalanNettoyageNettoyage des vignettesEffacer tous les signets ?Comix est un visionneur d'images, spécialisé dans la lecture des bandes dessinées.Comix est distribué selon les termes de la GNU General Public LicenseExtensions des fichiers commentairesCommentairesContrasteImpossible d'ajouter une nouvelle collection appelée '%s'.Impossible de changer le nom en '%s'.Impossible de dupliquer la collectionImpossible de localiser le décompresseur RAR !Impossible d'ouvrir %s: C'est un répertoire.Impossible d'ouvrir %s: Fichier inexistant.Impossible d'ouvrir %s: Permission refusée.Impossible d'ouvrir %s: Type de fichier inconnu.Impossible de lire %sTaille de la couvertureCréditsTraduction en croateTraduction en tchèqueModes par défautMode zoom par défautRéinitialisationDéveloppeurAffichageAffiche seulement une image en mode double page si l'image est plus large que haute. Cela permet d'afficher correctement (i.e. tout seul) un scan d'une double page.Affiche uniquement les livres avec la chaîne de caractère spécifiée dans le chemin complet. La recherche n'est pas sensible à la casse.Voulez-vous nettoyer maintenant les vignettes orphelines et périmées ?Mode double pageDupliquer la collectionTraduction en néerlandaisÉditer l'archiveÉditer les signetsAmélioration de l'imageFichiersPremière pageAdapter la _hauteurAdapter la _largeurAdapter la hauteurAdapter la largeurMirroir _horizontalMirroir _verticalTourner les pages lors du défilement en-dehors de la page avec la mollette de la souris ou les flèches du clavier. La page est tournée après 3 actions de défilement successives.Tourner les pages lors du défilement en-dehors de la page.Tourner 2 pages en mode double page.Tourner 2 pages au lieu d'une chaque fois que l'on tourne une page en mode double page.Traduction en françaisPlein écranTraduction en allemand et développement du générateur de vignettes pour NautilusTraduction en grecArchive tar compressée avec GzipTout cac_herTraduction en hongroisRéalisation des icônesImageMise à l'échelle des imagesImagesImporterTraduction en indonésienIl lit les archives ZIP, RAR et Tar aussi bien que les fichiers images.Traduction en italienImages JPEGTraduction en japonaisTraduction en coréenDernière pageBibliothèqueEmplacementMode zoom m_anuelFacteur d'agrandissementLoupe_LoupeLoupeTaille de la loupe (en pixels)Mode manga_Zoom manuelMode zoom manuelModifié leDéplacer les livres de '%(source collection)s' vers '%(destination collection)s'.NomNouvelle collectionPage suivantePas d'images dans '%s'Nombre de vignettes supprimésTaille _originaleOuvrirFichiers récentsOuvrir le livre sélectionné.Autres fichiersPropriétaireImages PNGPagePermissionsTraduction en persanEntrez un nom pour la nouvelle collection.Entrer un nouveau nom pour le collection sélectionnée.Les seuls fichiers ajoutés automatiquement à cette liste sont les fichiers de l'archive que Comix reconnait comme commentaires.Traduction en polonaisPréfér_encesPréférencesPage précédentePropriétésMettre la collection '%(subcollection)s' dans la collection '%(supercollection)s'.Archive RARArchives RARSupprimer le livre de la bibliothèque ?Supprimer la collection de la bibliothèque ?Supprimer la collectionSupprimer de l'archiveSupprimer de la bibliothèque...Supprimer de cette collection%(num)d livre(s) supprimés de '%(collection)s'.%d livre(s) supprimés de la bibliothèque.Vignette supprimée pour '%s'Suppression des vignettesRenommer la collection ?Renommer...Le remplacement du fichier écrasera son contenu.RacineRotation de 90 degrés sens anti-horair_eRotation de 180 de_grésRotationLancer le _diaporamaTraduction en russeDIAPORAMABarres de _défilementSaturationEnregistrerDéfilementRechercheFixe le facteur d'agrandissement de la loupeFixe la taille de la loupe. C'est un carré dont la taille du côté est égal à ce paramètre en pixel.NettetéAfficher seulement une large image en mode double page.Voir le numéro de la page sur les vignettes.Traduction en chinois simplifiéTailleDiaporamaDélai du diaporama (en secondes)Des fichiers anciens (qui étaient utilisés pour sauvegarder les préférences, la bibliothèque, les signets, ... pour des versions plus anciennes de Comix) ont été trouvés sur votre ordinateur. Si vous ne comptez plus utiliser d'anciennes versions de Comix, vous devriez supprimer ces fichiers afin de libérer de l'espace disque. Voulez-vous que ces fichiers soient supprimés maintenant ?Traduction en espagnolBarre d'_étatEnregistrer les informations sur les fichiers récemment ouverts.Enregistrer les vignettes des fichiers ouverts selon les spécifications de freedesktop.org. Ces vignettes sont partagés par d'autres applications comme les gestionnaires de fichiers.Enregistrer les vignettes des fichiers ouverts.Étirer les images plus petites que la fenêtre si le mode de zoom le requière. Si ce paramètre n'est pas activé, les images ne sont jamais étirés.Étirer les petites images.Barre d'o_utilsArchive TarArchives Tar_VignettesImpossible d'enregistrer la nouvelle archive !Les fichiers originaux n'ont pas été supprimés.Le livre sélectionné sera supprimé de la bibliothèque (mais les fichiers originaux ne seront pas affectés). Êtes-vous sûr de vouloir continuer ?La collection sélectionnée sera supprimée de la bibliothèque (mais les livres et sous-collections seront gardés). Êtes-vous sûr de vouloir continuer ?Il reste des fichiers obsolètes sur votre ordinateur.Répertoire des vignettesGestion des vignettesTaille des vignettes (en pixels)VignettesLes vignettes sont enregistrés dans votre répertoire dédié (home directory). Des applications différentes utilisent et créent ces vignettes, et parfois des vignettes polluent l'espace disque car elles n'ont pas été supprimées en même temps que le fichier original. Cette option permet de nettoyer les vignettes orphelines et périmées stockés localement.Nombre total de vignettesTaille totale des vignettes suppriméesTaille totale des vignettesTraduction en chinois traditionnelTransparenceConsidérer tous les fichiers des archives qui utilisent une de ces extensions comme des commentaires.Type de fichier inconnuUtiliser le cache pour accélérer la navigation.Utilise un arrière-plan gris en damier pour les images transparentes. Si ce paramètre n'est pas activé, l'arrière-plan est blanc.Arrière-plan en damier pour les images transparentes.Utiliser le mode double page par défaut.Utilise une couleur d'arrière-plan dynamiqueUtiliser le mode plein écran par défaut.Utiliser le mode manga par défaut.Défilement intelligent avec la barre d'espace. Normalement la barre d'espace fait défiler l'image seulement vers le bas (ou vers le haut sir la touche "shift" est enfoncée). Avec ce paramètre, le défilement peut aussi se faire de façon horizontale et Comix essaye de suivre l'ordre naturel de lecture de la bande dessinée.Défilement intelligent avec la barre d'espaceCouleur d'arrière-planVous devez installer le logiciel rar ou unrar afin de lire les fichiers RAR (.cbr).Archive ZIPArchives ZIPZoom a_rrièreÀ _propos_Ajouter un signetAjuster l'image à la _fenêtre_SignetsEffacer les _signets..._FermerPages _doubles_Édition_Éditer l'archive_Éditer les signets...Am_élioration de l'image_FichierP_remière page_Plein écranA_ller àA_ideSe souvenir de la _transformation_Dernière page_Bibliothèque..._Mode mangaBarre de _menusPage _suivante_Ouvrir...Page _précédente_Propriétés_Quitter_Rotation de 90 degrés sens horaire_Gestion des vignettes...Barre d'_outilsTra_nsformer_Affichage_Voir les commentairesZoom a_vantcomix-4.0.4/messages/es/LC_MESSAGES/comix.po0000644000175000001440000012007411137133373017223 0ustar sorkusers# translation of comix.HEAD.po to Spanish # translation of es.po to Spanish # Traducción al español de Comix. # 2006 # This file is distributed under the same license as the Comix package. # Manuel Quiñones . # Francisco Javier F. Serrador , 2006. # msgid "" msgstr "" "Project-Id-Version: comix.HEAD\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2008-11-22 02:42+0100\n" "PO-Revision-Date: 2008-12-13 17:56-0300\n" "Last-Translator: Manuel Quiñones \n" "Language-Team: Spanish \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Generated-By: pygettext.py 1.5\n" "X-Generator: KBabel 1.9.1\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" # # File: src/about.py, line: 18 # File: src/about.py, line: 67 #: src/about.py:19 src/about.py:68 msgid "About" msgstr "Acerca de" # # File: src/about.py, line: 55 #: src/about.py:56 msgid "Comix is an image viewer specifically designed to handle comic books." msgstr "" "Comix es un visor de imágenes específicamente diseñado para manipular cómics." # # File: src/about.py, line: 57 #: src/about.py:58 msgid "It reads ZIP, RAR and tar archives, as well as plain image files." msgstr "Lee archivos ZIP, RAR y tar, así como archivos comunes de imágenes." # # File: src/about.py, line: 59 #: src/about.py:60 msgid "Comix is licensed under the GNU General Public License." msgstr "Comix se licencia mediante la GNU General Public License." # # File: src/about.py, line: 75 #: src/about.py:83 msgid "Developer" msgstr "Desarrollador" # # File: src/about.py, line: 77 #: src/about.py:84 src/about.py:85 msgid "Simplified Chinese translation" msgstr "Traducción al chino simplificado" # # File: src/about.py, line: 78 #: src/about.py:86 msgid "Spanish translation" msgstr "Traducción al español" # # File: src/about.py, line: 79 #: src/about.py:87 msgid "Brazilian Portuguese translation" msgstr "Traducción al portugués brasileño" # # File: src/about.py, line: 81 #: src/about.py:88 msgid "German translation and Nautilus thumbnailer" msgstr "Traducción al alemán y realizador de las miniaturas de Nautilus" # # File: src/about.py, line: 82 #: src/about.py:89 src/about.py:90 msgid "Italian translation" msgstr "Traducción al italiano" # # File: src/about.py, line: 83 #: src/about.py:91 msgid "Dutch translation" msgstr "Traducción al holandés" # # File: src/about.py, line: 84 #: src/about.py:92 msgid "French translation" msgstr "Traducción al francés" # # File: src/about.py, line: 85 #: src/about.py:93 src/about.py:94 msgid "Polish translation" msgstr "Traducción al polaco" # # File: src/about.py, line: 86 #: src/about.py:95 msgid "Greek translation" msgstr "Traducción al griego" # # File: src/about.py, line: 87 #: src/about.py:96 msgid "Catalan translation" msgstr "Traducción al catalán" # # File: src/about.py, line: 88 #: src/about.py:97 src/about.py:98 msgid "Traditional Chinese translation" msgstr "Traducción al chino tradicional" # # File: src/about.py, line: 89 #: src/about.py:99 msgid "Japanese translation" msgstr "Traducción al japonés" # # File: src/about.py, line: 90 #: src/about.py:100 msgid "Hungarian translation" msgstr "Traducción al húngaro" # # File: src/about.py, line: 91 #: src/about.py:101 msgid "Russian translation" msgstr "Traducción al ruso" # # File: src/about.py, line: 92 #: src/about.py:102 msgid "Croatian translation" msgstr "Traducción al croata" # # File: src/about.py, line: 93 #: src/about.py:103 msgid "Korean translation" msgstr "Traducción al coreano" # # File: src/about.py, line: 94 #: src/about.py:104 msgid "Persian translation" msgstr "Traducción al persa" # # File: src/about.py, line: 95 #: src/about.py:105 msgid "Indonesian translation" msgstr "Traducción al indonés" # # File: src/about.py, line: 96 #: src/about.py:106 msgid "Czech translation" msgstr "Traducción al checo" # # File: src/about.py, line: 97 #: src/about.py:107 msgid "Icon design" msgstr "Diseño de iconos" # # File: src/about.py, line: 106 #: src/about.py:114 msgid "Credits" msgstr "Créditos" # # File: src/archive.py, line: 66 #: src/archive.py:66 msgid "Could not find RAR file extractor!" msgstr "¡No se ha podido encontrar el extractor de archivos RAR!" # # File: src/archive.py, line: 68 #: src/archive.py:68 msgid "" "You need either the rar or the unrar program installed in " "order to read RAR (.cbr) files." msgstr "" "Necesita instalar uno de estos programas, rar o unrar, para " "poder leer los archivos RAR (.cbr)." # # File: src/archive.py, line: 301 #: src/archive.py:305 msgid "ZIP archive" msgstr "Archivador ZIP" # # File: src/archive.py, line: 302 #: src/archive.py:306 msgid "Tar archive" msgstr "Archivador tar" # # File: src/archive.py, line: 303 #: src/archive.py:307 msgid "Gzip compressed tar archive" msgstr "Archivador tar comprimido con gzip" # # File: src/archive.py, line: 304 #: src/archive.py:308 msgid "Bzip2 compressed tar archive" msgstr "Archivador tar comprimido con bzip2" # # File: src/archive.py, line: 305 #: src/archive.py:309 msgid "RAR archive" msgstr "Archivador RAR" # # File: src/bookmark.py, line: 27 #: src/bookmark.py:28 msgid "_Add bookmark" msgstr "_Añadir marcador" # # File: src/bookmark.py, line: 29 #: src/bookmark.py:30 msgid "_Edit bookmarks..." msgstr "_Editar marcadores…" # # File: src/bookmark.py, line: 31 #: src/bookmark.py:32 msgid "_Clear bookmarks..." msgstr "_Quitar los marcadores..." # # File: src/bookmark.py, line: 77 #: src/bookmark.py:78 msgid "Clear all bookmarks?" msgstr "¿Desea quitar todos los marcadores?" # # File: src/bookmark.py, line: 79 #: src/bookmark.py:80 msgid "" "All stored bookmarks will be removed. Are you sure that you want to continue?" msgstr "" "Todos los marcadores guardados serán quitados. ¿Está seguro que desea " "continuar?" # # File: src/bookmark.py, line: 229 #: src/bookmark.py:230 msgid "Edit bookmarks" msgstr "Editar marcadores" # # File: src/bookmark.py, line: 255 # File: src/edit.py, line: 267 #: src/bookmark.py:256 src/edit.py:270 msgid "Name" msgstr "Nombre" # # File: src/bookmark.py, line: 256 #: src/bookmark.py:257 msgid "Page" msgstr "Página" # # File: src/comment.py, line: 16 # File: src/preferences.py, line: 288 #: src/comment.py:16 src/preferences.py:299 msgid "Comments" msgstr "Comentarios" # # File: src/comment.py, line: 53 #: src/comment.py:53 #, python-format msgid "Could not read %s" msgstr "No se puede leer %s" # # File: src/deprecated.py, line: 16 #: src/deprecated.py:16 msgid "There are deprecated files left on your computer." msgstr "Hay archivos obsoletos en su ordenador." # # File: src/deprecated.py, line: 22 #: src/deprecated.py:22 msgid "" "Some old files (that were used for storing preferences, the library, " "bookmarks etc. for older versions of Comix) were found on your computer. If " "you do not plan on using the older versions of Comix again, you should " "remove these files in order to save some disk space. Do you want these files " "to be removed for you now?" msgstr "" "Se encontraron en su ordenador algunos archivos que se usaban en versiones " "anteriores de Comix, para guardar preferencias, la bibliioteca, los " "marcadores, etc. Si no piensa volver a usar las versiones anteriores de " "Comix, debería eliminarlos para ganarse un poco de espacio en el disco. " "¿Quiere que estos archivos se eliminen ahora?" # # File: src/edit.py, line: 28 #: src/edit.py:29 msgid "Edit archive" msgstr "Editar el archivo" # # File: src/edit.py, line: 36 #: src/edit.py:37 msgid "Import" msgstr "Importar" # # File: src/edit.py, line: 50 #: src/edit.py:51 msgid "Images" msgstr "Imágenes" # # File: src/edit.py, line: 51 #: src/edit.py:52 msgid "Other files" msgstr "Otros archivos" # # File: src/edit.py, line: 99 #: src/edit.py:101 msgid "The new archive could not be saved!" msgstr "¡El archivo nuevo no se ha podido guardar!" # # File: src/edit.py, line: 101 #: src/edit.py:103 msgid "The original files have not been removed." msgstr "Los archivos originales no se han eliminado." # # File: src/edit.py, line: 115 #: src/edit.py:117 msgid "Archives are stored as ZIP files." msgstr "Los archivos se guardan como paquetes ZIP." # # File: src/edit.py, line: 168 # File: src/edit.py, line: 285 #: src/edit.py:170 src/edit.py:288 msgid "Remove from archive" msgstr "Quitar del archivo" # # File: src/edit.py, line: 255 #: src/edit.py:258 msgid "" "Please note that the only files that are automatically added to this list " "are those files in archives that Comix recognizes as comments." msgstr "" "Tenga en cuenta que los únicos archivos que se agregan automáticamente a " "esta lista son aquellos que Comix reconoce como comentarios." # # File: src/edit.py, line: 270 #: src/edit.py:273 msgid "Size" msgstr "Tamaño" # # File: src/enhance.py, line: 51 #: src/enhance.py:51 msgid "Enhance image" msgstr "Mejorar la imagen" # # File: src/enhance.py, line: 52 #: src/enhance.py:52 msgid "Defaults" msgstr "Valores predeterminados" # # File: src/enhance.py, line: 79 #: src/enhance.py:79 msgid "Brightness" msgstr "Brillo" # # File: src/enhance.py, line: 90 #: src/enhance.py:90 msgid "Contrast" msgstr "Contraste" # # File: src/enhance.py, line: 101 #: src/enhance.py:101 msgid "Saturation" msgstr "Saturación" # # File: src/enhance.py, line: 112 #: src/enhance.py:112 msgid "Sharpness" msgstr "Enfoque" # # File: src/enhance.py, line: 126 #: src/enhance.py:126 msgid "Automatically adjust contrast." msgstr "Ajustar el contraste automáticamente." # # File: src/enhance.py, line: 128 #: src/enhance.py:128 msgid "" "Automatically adjust contrast (both lightness and darkness), separately for " "each colour band." msgstr "" "Ajusta el contraste automáticamente, tanto las partes claras como las " "oscuras, para cada banda de color por separado." # # File: src/filechooser.py, line: 35 # File: src/library.py, line: 489 #: src/filechooser.py:38 src/library.py:490 msgid "Open" msgstr "Abrir" # # File: src/filechooser.py, line: 39 #: src/filechooser.py:42 msgid "Save" msgstr "Guardar" # # File: src/filechooser.py, line: 75 #: src/filechooser.py:78 msgid "All files" msgstr "Todos los archivos" # # File: src/filechooser.py, line: 78 #: src/filechooser.py:81 msgid "All Archives" msgstr "Todos los archivos" # # File: src/filechooser.py, line: 82 #: src/filechooser.py:85 msgid "ZIP archives" msgstr "Archivos ZIP" # # File: src/filechooser.py, line: 84 #: src/filechooser.py:87 msgid "RAR archives" msgstr "Archivos RAR" # # File: src/filechooser.py, line: 86 #: src/filechooser.py:89 msgid "Tar archives" msgstr "Archivos Tar" # # File: src/filechooser.py, line: 125 #: src/filechooser.py:134 #, python-format msgid "A file named '%s' already exists. Do you want to replace it?" msgstr "Ya existe un archivo de nombre '%s'. ¿Desea reemplazarlo?" # # File: src/filechooser.py, line: 128 #: src/filechooser.py:137 msgid "Replacing it will overwrite its contents." msgstr "Al reemplazarlo, su contenido será sobreescrito." # # File: src/filechooser.py, line: 171 # File: src/filechooser.py, line: 249 #: src/filechooser.py:182 src/filechooser.py:260 msgid "All images" msgstr "Todas las imágenes" # # File: src/filechooser.py, line: 173 # File: src/filechooser.py, line: 251 #: src/filechooser.py:184 src/filechooser.py:262 msgid "JPEG images" msgstr "Imágenes JPEG" # # File: src/filechooser.py, line: 174 # File: src/filechooser.py, line: 252 #: src/filechooser.py:185 src/filechooser.py:263 msgid "PNG images" msgstr "Imágenes PNG" # # File: src/filechooser.py, line: 195 #: src/filechooser.py:206 msgid "Automatically add the books to this collection" msgstr "Agregar automáticamente los libros a esta colección" # # File: src/filehandler.py, line: 209 #: src/filehandler.py:209 #, python-format msgid "Could not open %s: Is a directory." msgstr "No se puede abrir %s: es un directorio." # # File: src/filehandler.py, line: 213 #: src/filehandler.py:213 #, python-format msgid "Could not open %s: No such file." msgstr "No se puede abrir %s: el archivo no existe." # # File: src/filehandler.py, line: 217 #: src/filehandler.py:217 #, python-format msgid "Could not open %s: Permission denied." msgstr "No se puede abrir %s: permiso denegado." # # File: src/filehandler.py, line: 222 #: src/filehandler.py:222 #, python-format msgid "Could not open %s: Unknown file type." msgstr "No se puede abrir %s: tipo de archivo desconocido." # # File: src/filehandler.py, line: 285 #: src/filehandler.py:285 #, python-format msgid "No images in '%s'" msgstr "No hay imágenes en '%s'" # # File: src/filehandler.py, line: 411 #: src/filehandler.py:413 msgid "Unknown filetype" msgstr "Tipo de archivo desconocido" # # File: src/librarybackend.py, line: 272 # File: src/librarybackend.py, line: 274 #: src/librarybackend.py:273 src/librarybackend.py:275 msgid "(Copy)" msgstr "(Copia)" # # File: src/library.py, line: 38 #: src/library.py:38 msgid "Library" msgstr "Biblioteca" # # File: src/library.py, line: 150 #: src/library.py:150 msgid "Rename..." msgstr "Renombrar..." # # File: src/library.py, line: 152 #: src/library.py:152 msgid "Duplicate collection" msgstr "Duplicar la colección" # # File: src/library.py, line: 154 #: src/library.py:154 msgid "Remove collection..." msgstr "Quitar la colección..." # # File: src/library.py, line: 202 #: src/library.py:202 msgid "All books" msgstr "Todos los libros" # # File: src/library.py, line: 231 #: src/library.py:231 msgid "Remove collection from the library?" msgstr "¿Quitar la colección de la biblioteca?" # # File: src/library.py, line: 233 #: src/library.py:233 msgid "" "The selected collection will be removed from the library (but the books and " "subcollections in it will remain). Are you sure that you want to continue?" msgstr "" "La colección seleccionada será quitada de la biblioteca, pero sus libros y " "subcolecciones permanecerán. ¿Está seguro de que desea continuar?" # # File: src/library.py, line: 251 #: src/library.py:251 msgid "Rename collection?" msgstr "¿Renombrar la colección?" # # File: src/library.py, line: 253 #: src/library.py:253 msgid "Please enter a new name for the selected collection." msgstr "Ingrese un nombre nuevo para la colección seleccionada." # # File: src/library.py, line: 271 #: src/library.py:271 #, python-format msgid "Could not change the name to '%s'." msgstr "No se puede cambiar el nombre a '%s'." # # File: src/library.py, line: 275 # File: src/library.py, line: 881 #: src/library.py:275 src/library.py:882 msgid "A collection by that name already exists." msgstr "Ya existe una colección con este nombre." # # File: src/library.py, line: 285 #: src/library.py:285 msgid "Could not duplicate collection." msgstr "No se puede duplicar la colección." # # File: src/library.py, line: 382 #: src/library.py:382 msgid "Root" msgstr "Raíz" # # File: src/library.py, line: 386 #: src/library.py:386 #, python-format msgid "" "Put the collection '%(subcollection)s' in the collection '%(supercollection)" "s'." msgstr "" "Coloca la colección '%(subcollection)s' dentro de la colección '%" "(supercollection)s'." # # File: src/library.py, line: 407 #: src/library.py:407 #, python-format msgid "Add books to '%s'." msgstr "Agregar libros a '%s'." # # File: src/library.py, line: 411 #: src/library.py:411 #, python-format msgid "" "Move books from '%(source collection)s' to '%(destination collection)s'." msgstr "" "Mover libros desde la colección '%(source collection)s' hacia la colección '%" "(destination collection)s'." # # File: src/library.py, line: 492 #: src/library.py:493 msgid "Remove from this collection" msgstr "Eliminar de esta colección" # # File: src/library.py, line: 495 #: src/library.py:496 msgid "Remove from the library..." msgstr "Quitar de la biblioteca..." # # File: src/library.py, line: 588 #: src/library.py:589 #, python-format msgid "Removed %(num)d book(s) from '%(collection)s'." msgstr "Se han quitado %(num)d libro(s) desde '%(collection)s'." # # File: src/library.py, line: 597 #: src/library.py:598 msgid "Remove books from the library?" msgstr "¿Eliminar los libros de la biblioteca?" # # File: src/library.py, line: 599 #: src/library.py:600 msgid "" "The selected books will be removed from the library (but the original files " "will be untouched). Are you sure that you want to continue?" msgstr "" "Los libros seleccionados serán eliminados de la biblioteca, los archivos " "originales no se tocarán ¿Está seguro de que desea continuar?" # # File: src/library.py, line: 609 #: src/library.py:610 #, python-format msgid "Removed %d book(s) from the library." msgstr "Se han quitado %d libro(s) de la biblioteca." # # File: src/library.py, line: 769 #: src/library.py:770 msgid "Search" msgstr "Buscar" # # File: src/library.py, line: 774 #: src/library.py:775 msgid "" "Display only those books that have the specified text string in their full " "path. The search is not case sensitive." msgstr "" "Mostrar únicamente aquellos libros que tengan el texto especificado en su " "ruta completa. La búsqueda no distingue mayúsculas de minúsculas." # # File: src/library.py, line: 776 #: src/library.py:777 msgid "Cover size" msgstr "Tamaño de la tapa" # # File: src/library.py, line: 789 #: src/library.py:790 msgid "Add books" msgstr "Agregar libros" # # File: src/library.py, line: 793 #: src/library.py:794 msgid "Add more books to the library." msgstr "Agregar más libros a la biblioteca." # # File: src/library.py, line: 795 #: src/library.py:796 msgid "Add collection" msgstr "Agregar colección" # # File: src/library.py, line: 800 #: src/library.py:801 msgid "Add a new empty collection." msgstr "Agregar una nueva colección vacía." # # File: src/library.py, line: 806 #: src/library.py:807 msgid "Open the selected book." msgstr "Abrir el libro seleccionado." # # File: src/library.py, line: 832 # File: src/properties.py, line: 113 #: src/library.py:833 src/properties.py:118 #, python-format msgid "%d pages" msgstr "%d páginas" # # File: src/library.py, line: 854 #: src/library.py:855 msgid "Add new collection?" msgstr "¿Agregar una nueva colección?" # # File: src/library.py, line: 856 #: src/library.py:857 msgid "Please enter a name for the new collection." msgstr "Ingrese un nombre para la nueva colección." # # File: src/library.py, line: 862 #: src/library.py:863 msgid "New collection" msgstr "Nueva colección" # # File: src/library.py, line: 876 #: src/library.py:877 #, python-format msgid "Could not add a new collection called '%s'." msgstr "No se puede agregar una nueva colección llamada '%s'." # # File: src/library.py, line: 910 #: src/library.py:911 msgid "Adding books" msgstr "Agregando libros" # # File: src/library.py, line: 930 #: src/library.py:931 msgid "Added books" msgstr "Libros agregados" # # File: src/library.py, line: 952 #: src/library.py:953 #, python-format msgid "Adding '%s'..." msgstr "Agregando '%s'..." # # File: src/main.py, line: 666 #: src/main.py:699 msgid "SLIDESHOW" msgstr "DIAPOSITIVAS" # # File: src/preferences.py, line: 78 #: src/preferences.py:80 msgid "Preferences" msgstr "Preferencias" # # File: src/preferences.py, line: 93 #: src/preferences.py:95 msgid "Background" msgstr "Fondo" # # File: src/preferences.py, line: 95 #: src/preferences.py:97 msgid "Use this colour as background" msgstr "Usar este color como fondo" # # File: src/preferences.py, line: 97 #: src/preferences.py:99 msgid "Always use this selected colour as the background colour." msgstr "Usar siempre el color seleccionado como color de fondo." # # File: src/preferences.py, line: 102 #: src/preferences.py:104 msgid "Use dynamic background colour." msgstr "Usar un color de fondo dinámico." # # File: src/preferences.py, line: 106 #: src/preferences.py:108 msgid "Automatically pick a background colour that fits the viewed image." msgstr "" "Obtiene automáticamente un color de fondo que se ajusta a la imagen " "presentada." # # File: src/preferences.py, line: 109 #: src/preferences.py:111 msgid "Thumbnails" msgstr "Miniaturas" # # File: src/preferences.py, line: 110 #: src/preferences.py:112 msgid "Thumbnail size (in pixels)" msgstr "Tamaño de la miniatura (en píxeles)" # # File: src/preferences.py, line: 117 #: src/preferences.py:119 msgid "Show page numbers on thumbnails." msgstr "Mostrar el número de página en las miniaturas." # # File: src/preferences.py, line: 124 #: src/preferences.py:126 msgid "Magnifying Glass" msgstr "Lupa" # # File: src/preferences.py, line: 125 #: src/preferences.py:127 msgid "Magnifying glass size (in pixels)" msgstr "Tamaño de la lupa (en píxeles)" # # File: src/preferences.py, line: 131 #: src/preferences.py:133 msgid "" "Set the size of the magnifying glass. It is a square with a side of this " "many pixels." msgstr "" "Determina el tamaño de la lupa. La lupa es un cuadrado que tiene esta " "cantidad de píxeles de lado." # # File: src/preferences.py, line: 133 #: src/preferences.py:135 msgid "Magnification factor" msgstr "Factor de ampliación" # # File: src/preferences.py, line: 140 #: src/preferences.py:142 msgid "Set the magnification factor of the magnifying glass." msgstr "Determina el factor de ampliación de la lupa." # # File: src/preferences.py, line: 143 #: src/preferences.py:145 msgid "Image scaling" msgstr "Escalado de la imagen" # # File: src/preferences.py, line: 144 #: src/preferences.py:146 msgid "Stretch small images." msgstr "Estirar las imágenes pequeñas." # # File: src/preferences.py, line: 148 #: src/preferences.py:150 msgid "" "Stretch images to a size that is larger than their original size if the " "current zoom mode requests it. If this preference is unset, images are never " "scaled to be larger than their original size." msgstr "" "Estira las imágenes, llevándolas a un tamaño mayor que el original, si el " "modo de ampliación lo requiere. Si esta preferencia no se activa, las " "imágenes nunca se escalarán a un tamaño mayor que el original." # # File: src/preferences.py, line: 151 #: src/preferences.py:153 msgid "Transparency" msgstr "Transparencia" # # File: src/preferences.py, line: 153 #: src/preferences.py:155 msgid "Use checkered background for transparent images." msgstr "Usar un fondo cuadriculado para las imágenes transparentes." # # File: src/preferences.py, line: 159 #: src/preferences.py:161 msgid "" "Use a grey checkered background for transparent images. If this preference " "is unset, the background is plain white instead." msgstr "" "Usa un fondo gris a cuadros para las imágenes transparentes. Si esta " "preferencia no está activada, el fondo será blanco liso." # # File: src/preferences.py, line: 161 #: src/preferences.py:163 msgid "Appearance" msgstr "Apariencia" # # File: src/preferences.py, line: 167 #: src/preferences.py:169 msgid "Scroll" msgstr "Desplazamiento" # # File: src/preferences.py, line: 169 #: src/preferences.py:171 msgid "Use smart space key scrolling." msgstr "Usar desplazamiento inteligente con la tecla espacio." # # File: src/preferences.py, line: 174 #: src/preferences.py:176 msgid "" "Use smart scrolling with the space key. Normally the space key scrolls only " "right down (or up when shift is pressed), but with this preference set it " "also scrolls sideways and so tries to follow the natural reading order of " "the comic book." msgstr "" "Usa el desplazamiento inteligente con la tecla espacio. Normalmente la tecla " "espacio desplaza la página sólo hacia abajo, o hacia arriba cuando se " "mantiene presionado shift. Pero con esta preferencia activada, también " "desplaza hacia los lados, intentando seguir el flujo de lectura natural del " "cómic." #: src/preferences.py:180 msgid "Flip pages when scrolling off the edges of the page." msgstr "Pasar páginas al desplazarse fuera de los bordes de la página." #: src/preferences.py:185 msgid "" "Flip pages when scrolling \"off the page\" with the scroll wheel or with the " "arrow keys. It takes three consecutive \"steps\" with the scroll wheel or " "the arrow keys for the pages to be flipped." msgstr "" "Pasa las páginas cuando se desplaza \"fuera de la página\" con la rueda del " "ratón o con las teclas de flechas. Toma tres \"pasos\" consecutivos de la " "rueda del ratón o de las teclas de flechas para activarse." # # File: src/preferences.py, line: 177 # File: src/ui.py, line: 296 #: src/preferences.py:188 src/ui.py:298 msgid "Double page mode" msgstr "Modo a doble página" # # File: src/preferences.py, line: 179 #: src/preferences.py:190 msgid "Flip two pages in double page mode." msgstr "Pasar ambas páginas en el modo a doble página." # # File: src/preferences.py, line: 184 #: src/preferences.py:195 msgid "" "Flip two pages, instead of one, each time we flip pages in double page mode." msgstr "" "Cambia las dos páginas, en lugar de una, cada vez que se pasan las páginas " "en el modo a doble página." # # File: src/preferences.py, line: 187 #: src/preferences.py:198 msgid "Show only one wide image in double page mode." msgstr "Mostrar sólo una imagen ancha en el modo a doble página." # # File: src/preferences.py, line: 193 #: src/preferences.py:204 msgid "" "Display only one image in double page mode, if the image's width exceeds its " "height. The result of this is that scans that span two pages are displayed " "properly (i.e. alone) also in double page mode." msgstr "" "Muestra sólo una imagen en el modo a doble página, si la anchura de la " "imagen excede su altura. Esto es para que las imágenes en que dos páginas " "fueron escaneadas se muestren apropiadamente, es decir por separado, también " "en el modo a doble página." # # File: src/preferences.py, line: 196 #: src/preferences.py:207 msgid "Files" msgstr "Archivos" # # File: src/preferences.py, line: 198 #: src/preferences.py:209 msgid "Automatically open the next archive." msgstr "Abrir automáticamente el archivo siguiente." # # File: src/preferences.py, line: 203 #: src/preferences.py:214 msgid "" "Automatically open the next archive in the directory when flipping past the " "last page, or the previous archive when flipping past the first page." msgstr "" "Abre automáticamente el archivo siguiente en el directorio, cuando se pasa " "la última página, o el archivo anterior cuando se pasa la primera." # # File: src/preferences.py, line: 206 #: src/preferences.py:217 msgid "Automatically open the last viewed file on startup." msgstr "Abrir automáticamente el último archivo visto al iniciar." # # File: src/preferences.py, line: 211 #: src/preferences.py:222 msgid "" "Automatically open, on startup, the file that was open when Comix was last " "closed." msgstr "" "Abre automáticamente, cuando la aplicación inicia, el archivo que se " "encontraba abierto la última vez que Comix fue cerrado." # # File: src/preferences.py, line: 214 #: src/preferences.py:225 msgid "Store information about recently opened files." msgstr "Guardar información sobre de los último archivos abiertos." # # File: src/preferences.py, line: 219 #: src/preferences.py:230 msgid "" "Add information about all files opened from within Comix to the shared " "recent files list." msgstr "" "Agregar información sobre todos los archivos abiertos desde Comix a la lista " "compartida de archivos recientes." # # File: src/preferences.py, line: 222 #: src/preferences.py:233 msgid "Store thumbnails for opened files." msgstr "Guardar miniaturas para los archivos abiertos." # # File: src/preferences.py, line: 227 #: src/preferences.py:238 msgid "" "Store thumbnails for opened files according to the freedesktop.org " "specification. These thumbnails are shared by many other applications, such " "as most file managers." msgstr "" "Guarda las miniaturas para los archivos abiertos de acuerdo a la " "especificación de freedesktop.org. Estas miniaturas son compartidas por " "muchas otras aplicaciones, como por la mayoría de los administradores de " "archivos." # # File: src/preferences.py, line: 230 #: src/preferences.py:241 msgid "Cache" msgstr "Caché" # # File: src/preferences.py, line: 231 #: src/preferences.py:242 msgid "Use a cache to speed up browsing." msgstr "Usa un caché para acelerar la hojeada." # # File: src/preferences.py, line: 235 #: src/preferences.py:246 msgid "" "Cache the images that are next to the currently viewed image in order to " "speed up browsing. Since the speed improvements are quite big, it is " "recommended that you have this preference set, unless you are running short " "on free RAM." msgstr "" "Chachea las imágenes que están próximas a la imagen actualmente vista, para " "acelerar la hojeada del libro. Dado que la mejora en la velocidad es " "importante, se recomienda que esta preferencia esté activa, a menos que la " "disponibilidad de RAM sea escasa." # # File: src/preferences.py, line: 237 #: src/preferences.py:248 msgid "Behaviour" msgstr "Comportamiento" # # File: src/preferences.py, line: 243 #: src/preferences.py:254 msgid "Default modes" msgstr "Modos predeterminados" # # File: src/preferences.py, line: 245 #: src/preferences.py:256 msgid "Use double page mode by default." msgstr "Usar el modo a doble página por defecto." # # File: src/preferences.py, line: 250 #: src/preferences.py:261 msgid "Use fullscreen by default." msgstr "Usar pantalla completa por defecto." # # File: src/preferences.py, line: 255 #: src/preferences.py:266 msgid "Use manga mode by default." msgstr "Usar el modo manga por defecto." # # File: src/preferences.py, line: 260 #: src/preferences.py:271 msgid "Default zoom mode" msgstr "Modo de ampliación por defecto" # # File: src/preferences.py, line: 262 # File: src/ui.py, line: 288 #: src/preferences.py:273 src/ui.py:290 msgid "Best fit mode" msgstr "Modo de mejor ajuste" # # File: src/preferences.py, line: 263 # File: src/ui.py, line: 290 #: src/preferences.py:274 src/ui.py:292 msgid "Fit width mode" msgstr "Modo ajustar a la anchura" # # File: src/preferences.py, line: 264 # File: src/ui.py, line: 292 #: src/preferences.py:275 src/ui.py:294 msgid "Fit height mode" msgstr "Modo ajustar a la altura" # # File: src/preferences.py, line: 265 # File: src/ui.py, line: 294 #: src/preferences.py:276 src/ui.py:296 msgid "Manual zoom mode" msgstr "Modo de ampliación manual" # # File: src/preferences.py, line: 271 #: src/preferences.py:282 msgid "Fullscreen" msgstr "Pantalla completa" # # File: src/preferences.py, line: 273 #: src/preferences.py:284 msgid "Automatically hide all toolbars in fullscreen." msgstr "Ocultar automáticamente la caja de herramientas en pantalla completa." # # File: src/preferences.py, line: 279 #: src/preferences.py:290 msgid "Slideshow" msgstr "Muestra de diapositivas" # # File: src/preferences.py, line: 280 #: src/preferences.py:291 msgid "Slideshow delay (in seconds)" msgstr "Tiempo entre diapositivas (en segundos)" # # File: src/preferences.py, line: 289 #: src/preferences.py:300 msgid "Comment extensions" msgstr "Extensiones de los comentarios" # # File: src/preferences.py, line: 295 #: src/preferences.py:306 msgid "" "Treat all files found within archives, that have one of these file endings, " "as comments." msgstr "" "Trata como comentarios a todos los archivos que se encuentren en los " "archivadores y que tengan esta terminación en el nombre." #: src/preferences.py:309 msgid "Rotation" msgstr "" #: src/preferences.py:311 msgid "Automatically rotate images according to their metadata." msgstr "" #: src/preferences.py:316 msgid "" "Automatically rotate images when an orientation is specified in the image " "metadata, such as in an Exif tag." msgstr "" # # File: src/preferences.py, line: 297 #: src/preferences.py:318 msgid "Display" msgstr "Visor" # # File: src/properties.py, line: 89 #: src/properties.py:94 msgid "Properties" msgstr "Propiedades" # # File: src/properties.py, line: 114 #: src/properties.py:119 #, python-format msgid "%d comments" msgstr "%d comentarios" # # File: src/properties.py, line: 124 # File: src/properties.py, line: 159 #: src/properties.py:129 src/properties.py:164 msgid "Location" msgstr "Lugar" # # File: src/properties.py, line: 126 # File: src/properties.py, line: 160 #: src/properties.py:131 src/properties.py:165 msgid "Accessed" msgstr "Accedido" # # File: src/properties.py, line: 128 # File: src/properties.py, line: 162 #: src/properties.py:133 src/properties.py:167 msgid "Modified" msgstr "Modificado" # # File: src/properties.py, line: 130 # File: src/properties.py, line: 164 #: src/properties.py:135 src/properties.py:169 msgid "Permissions" msgstr "Permisos" # # File: src/properties.py, line: 131 # File: src/properties.py, line: 165 #: src/properties.py:136 src/properties.py:170 msgid "Owner" msgstr "Propietario" # # File: src/properties.py, line: 135 #: src/properties.py:140 msgid "Archive" msgstr "Archivador" # # File: src/properties.py, line: 169 #: src/properties.py:174 msgid "Image" msgstr "Imagen" # # File: src/thumbremover.py, line: 22 #: src/thumbremover.py:24 msgid "Thumbnail maintenance" msgstr "Mantenimiento de las miniaturas" # # File: src/thumbremover.py, line: 24 #: src/thumbremover.py:26 msgid "Cleanup" msgstr "Limpieza" # # File: src/thumbremover.py, line: 36 #: src/thumbremover.py:38 msgid "Cleanup thumbnails" msgstr "Limpiar miniaturas" # # File: src/thumbremover.py, line: 46 #: src/thumbremover.py:48 msgid "" "Thumbnails for files (such as image files and comic book archives) are " "stored in your home directory. Many different applications use and create " "these thumbnails, but sometimes thumbnails remain even though the original " "files have been removed - wasting space. This dialog can cleanup your stored " "thumbnails by removing orphaned and outdated thumbnails." msgstr "" "Las miniaturas para los archivos, tanto de imágenes como de libros de " "cómics, se guardan en su directorio personal. Muchas otras aplicaciones usan " "y crean esas miniaturas, pero aveces estas quedan aún cuando los archivos " "originales han sido eliminados, consumiendo espacio en el disco. Este " "diálogo puede limpiar las miniaturas guardadas, eliminando las que están " "huérfanas o desactualizadas." # # File: src/thumbremover.py, line: 58 #: src/thumbremover.py:60 msgid "Thumbnail directory" msgstr "Directorio de miniaturas" # # File: src/thumbremover.py, line: 65 #: src/thumbremover.py:67 msgid "Total number of thumbnails" msgstr "Cantidad total de miniaturas" # # File: src/thumbremover.py, line: 68 # File: src/thumbremover.py, line: 75 #: src/thumbremover.py:70 src/thumbremover.py:77 msgid "Calculating..." msgstr "Calculando..." # # File: src/thumbremover.py, line: 72 #: src/thumbremover.py:74 msgid "Total size of thumbnails" msgstr "Tamaño total de las miniaturas" # # File: src/thumbremover.py, line: 80 #: src/thumbremover.py:82 msgid "Do you want to cleanup orphaned and outdated thumbnails now?" msgstr "¿Desea limpiar las miniaturas huérfanas y desactualizadas ahora?" # # File: src/thumbremover.py, line: 116 #: src/thumbremover.py:118 msgid "Removing thumbnails" msgstr "Eliminando miniaturas" # # File: src/thumbremover.py, line: 135 #: src/thumbremover.py:137 msgid "Number of removed thumbnails" msgstr "Cantidad de miniaturas eliminadas" # # File: src/thumbremover.py, line: 142 #: src/thumbremover.py:144 msgid "Total size of removed thumbnails" msgstr "Tamaño total de miniaturas eliminadas" # # File: src/thumbremover.py, line: 193 #: src/thumbremover.py:195 #, python-format msgid "Removed thumbnail for '%s'" msgstr "Se eliminó la miniatura para '%s'" # # File: src/ui.py, line: 34 #: src/ui.py:34 msgid "_Next page" msgstr "Página _siguiente" # # File: src/ui.py, line: 36 #: src/ui.py:36 msgid "_Previous page" msgstr "Página _anterior" # # File: src/ui.py, line: 38 #: src/ui.py:38 msgid "_First page" msgstr "_Primera página" # # File: src/ui.py, line: 40 #: src/ui.py:40 msgid "_Last page" msgstr "Ú_ltima página" # # File: src/ui.py, line: 42 #: src/ui.py:42 msgid "_Zoom in" msgstr "_Ampliar" # # File: src/ui.py, line: 44 #: src/ui.py:44 msgid "Zoom _out" msgstr "_Reducir" # # File: src/ui.py, line: 46 #: src/ui.py:46 msgid "O_riginal size" msgstr "Tamaño o_riginal" # # File: src/ui.py, line: 48 #: src/ui.py:48 msgid "_Close" msgstr "_Cerrar" # # File: src/ui.py, line: 50 #: src/ui.py:50 msgid "_Quit" msgstr "_Salir" # # File: src/ui.py, line: 52 #: src/ui.py:52 msgid "_Rotate 90 degrees CW" msgstr "_Rotar 90 grados en sentido horario" # # File: src/ui.py, line: 54 #: src/ui.py:54 msgid "Rotate 180 de_grees" msgstr "Rotar 180 _grados" # # File: src/ui.py, line: 56 #: src/ui.py:56 msgid "Rotat_e 90 degrees CCW" msgstr "Ro_tar 90 grados en sentido antihorario" # # File: src/ui.py, line: 58 #: src/ui.py:58 msgid "Fli_p horizontally" msgstr "Voltear _horizontalmente" # # File: src/ui.py, line: 60 #: src/ui.py:60 msgid "Flip _vertically" msgstr "Voltear _verticalmente" # # File: src/ui.py, line: 62 #: src/ui.py:62 msgid "Manual _Zoom" msgstr "_Ampliación manual" # # File: src/ui.py, line: 63 #: src/ui.py:63 msgid "Open _recent" msgstr "Abrir _reciente" # # File: src/ui.py, line: 64 #: src/ui.py:64 msgid "_Bookmarks" msgstr "_Marcadores" # # File: src/ui.py, line: 65 #: src/ui.py:65 msgid "T_oolbars" msgstr "Caja de _herramientas" # # File: src/ui.py, line: 66 #: src/ui.py:66 msgid "_Edit" msgstr "_Editar" # # File: src/ui.py, line: 67 #: src/ui.py:67 msgid "_File" msgstr "_Archivo" # # File: src/ui.py, line: 68 #: src/ui.py:68 msgid "_View" msgstr "_Ver" # # File: src/ui.py, line: 69 #: src/ui.py:69 msgid "_Go" msgstr "_Ir" # # File: src/ui.py, line: 70 #: src/ui.py:70 msgid "_Help" msgstr "Ay_uda" # # File: src/ui.py, line: 71 #: src/ui.py:71 msgid "_Transform" msgstr "_Transformar" # # File: src/ui.py, line: 75 #: src/ui.py:75 msgid "_Fullscreen" msgstr "_Pantalla completa" # # File: src/ui.py, line: 77 #: src/ui.py:77 msgid "_Double page mode" msgstr "Modo a _doble página" # # File: src/ui.py, line: 79 #: src/ui.py:79 msgid "_Toolbar" msgstr "Barra de _herramientas" # # File: src/ui.py, line: 81 #: src/ui.py:81 msgid "_Menubar" msgstr "Barra de _menú" # # File: src/ui.py, line: 83 #: src/ui.py:83 msgid "St_atusbar" msgstr "Barra de _estado" # # File: src/ui.py, line: 85 #: src/ui.py:85 msgid "S_crollbars" msgstr "Barras de _desplazamiento" # # File: src/ui.py, line: 87 #: src/ui.py:87 msgid "Th_umbnails" msgstr "M_iniaturas" # # File: src/ui.py, line: 89 #: src/ui.py:89 msgid "H_ide all" msgstr "_Ocultar todo" # # File: src/ui.py, line: 91 #: src/ui.py:91 msgid "_Manga mode" msgstr "Modo _manga" # # File: src/ui.py, line: 93 #: src/ui.py:93 msgid "_Keep transformation" msgstr "_Mantener transformación" # # File: src/ui.py, line: 95 #: src/ui.py:95 msgid "Run _slideshow" msgstr "Iniciar _diapositivas" # # File: src/ui.py, line: 97 #: src/ui.py:97 msgid "Magnifying _glass" msgstr "_Lupa" # # File: src/ui.py, line: 101 #: src/ui.py:103 msgid "_Best fit mode" msgstr "Modo de _mejor ajuste" # # File: src/ui.py, line: 103 #: src/ui.py:105 msgid "Fit _width mode" msgstr "Modo ajustar a la a_nchura" # # File: src/ui.py, line: 105 #: src/ui.py:107 msgid "Fit _height mode" msgstr "Ajustar a la a_ltura" # # File: src/ui.py, line: 107 #: src/ui.py:109 msgid "M_anual zoom mode" msgstr "Modo de ampliación m_anual" # # File: src/ui.py, line: 113 #: src/ui.py:115 msgid "_About" msgstr "_Acerca de" # # File: src/ui.py, line: 115 #: src/ui.py:117 msgid "_View comments..." msgstr "_Ver los comentarios..." # # File: src/ui.py, line: 117 #: src/ui.py:119 msgid "_Edit archive..." msgstr "_Editar archivo..." # # File: src/ui.py, line: 119 #: src/ui.py:121 msgid "_Open..." msgstr "_Abrir…" # # File: src/ui.py, line: 121 #: src/ui.py:123 msgid "_Properties" msgstr "_Propiedades" # # File: src/ui.py, line: 123 #: src/ui.py:125 msgid "_Enhance image..." msgstr "_Mejorar la imagen..." # # File: src/ui.py, line: 126 #: src/ui.py:128 msgid "_Thumbnail maintenance..." msgstr "Mantenimiento de _miniaturas..." # # File: src/ui.py, line: 128 #: src/ui.py:130 msgid "Pr_eferences" msgstr "Prefere_ncias" # # File: src/ui.py, line: 132 #: src/ui.py:134 msgid "_Library..." msgstr "_Biblioteca..." # # File: src/ui.py, line: 282 #: src/ui.py:284 msgid "First page" msgstr "Primera página" # # File: src/ui.py, line: 284 #: src/ui.py:286 msgid "Previous page" msgstr "Página anterior" # # File: src/ui.py, line: 285 #: src/ui.py:287 msgid "Next page" msgstr "Página siguiente" # # File: src/ui.py, line: 286 #: src/ui.py:288 msgid "Last page" msgstr "Última página" # # File: src/ui.py, line: 297 #: src/ui.py:299 msgid "Manga mode" msgstr "Modo manga" # # File: src/ui.py, line: 298 #: src/ui.py:300 msgid "Magnifying glass" msgstr "Lupa" comix-4.0.4/messages/es/LC_MESSAGES/comix.mo0000644000175000001440000005754211132726543017233 0ustar sorkusers<[\ )<LR[ wY 0< K X e o yM9 !.A]p.3P$RBZ      !4EI7+";"["~ %% +3H Zhz r]<  3 E R a o u       4!#!L!I" \"+g""" "" "" "###A&#h# |### ######$$!&$ H$ S$`$q$Hz$$$ $$$%% $%1% I%U% [%f% k%w%+%4%%u& & & & &O& ' '#'#B'f'{'''.'$'(5(I( \()f(((((( ( ( () ))5)UM) )-) ))* ***?G*+ +.++"{,,a- w- - - -#-)--|.1/E/Y/o/ /a/0 131L1 l1Xy11!1{202 222 3(3474gU4 4 4 44 44 55#5*5<5B5S5f5x5 ~5 5555 5 5 55 555 666,6F6 O6Z6`6r6{608 ?8K8)S8:}8 88$8889o)9$9999::%:6:I:S]:7: : :*:5*;v`;&;F;;E<<,=?=P=>>%>$:>_>#f>>> ????$?Q?9L@@ @ @6@%@#A9lRnY)p|"zT:VI%3K!@7 vD]4UqXae&Hb<w/6t WsG~A\%d comments%d pages(Copy)A collection by that name already exists.A file named '%s' already exists. Do you want to replace it?AboutAccessedAdd a new empty collection.Add booksAdd books to '%s'.Add collectionAdd information about all files opened from within Comix to the shared recent files list.Add more books to the library.Add new collection?Added booksAdding '%s'...Adding booksAll ArchivesAll booksAll filesAll imagesAll stored bookmarks will be removed. Are you sure that you want to continue?Always use this selected colour as the background colour.AppearanceArchiveArchives are stored as ZIP files.Automatically add the books to this collectionAutomatically adjust contrast (both lightness and darkness), separately for each colour band.Automatically adjust contrast.Automatically hide all toolbars in fullscreen.Automatically open the last viewed file on startup.Automatically open the next archive in the directory when flipping past the last page, or the previous archive when flipping past the first page.Automatically open the next archive.Automatically open, on startup, the file that was open when Comix was last closed.Automatically pick a background colour that fits the viewed image.BackgroundBehaviourBest fit modeBrazilian Portuguese translationBrightnessBzip2 compressed tar archiveCacheCache the images that are next to the currently viewed image in order to speed up browsing. Since the speed improvements are quite big, it is recommended that you have this preference set, unless you are running short on free RAM.Calculating...Catalan translationCleanupCleanup thumbnailsClear all bookmarks?Comix is an image viewer specifically designed to handle comic books.Comix is licensed under the GNU General Public License.Comment extensionsCommentsContrastCould not add a new collection called '%s'.Could not change the name to '%s'.Could not duplicate collection.Could not find RAR file extractor!Could not open %s: Is a directory.Could not open %s: No such file.Could not open %s: Permission denied.Could not open %s: Unknown file type.Could not read %sCover sizeCreditsCroatian translationCzech translationDefault modesDefault zoom modeDefaultsDeveloperDisplayDisplay only one image in double page mode, if the image's width exceeds its height. The result of this is that scans that span two pages are displayed properly (i.e. alone) also in double page mode.Display only those books that have the specified text string in their full path. The search is not case sensitive.Do you want to cleanup orphaned and outdated thumbnails now?Double page modeDuplicate collectionDutch translationEdit archiveEdit bookmarksEnhance imageFilesFirst pageFit _height modeFit _width modeFit height modeFit width modeFli_p horizontallyFlip _verticallyFlip pages when scrolling "off the page" with the scroll wheel or with the arrow keys. It takes three consecutive "steps" with the scroll wheel or the arrow keys for the pages to be flipped.Flip pages when scrolling off the edges of the page.Flip two pages in double page mode.Flip two pages, instead of one, each time we flip pages in double page mode.French translationFullscreenGerman translation and Nautilus thumbnailerGreek translationGzip compressed tar archiveH_ide allHungarian translationIcon designImageImage scalingImagesImportIndonesian translationIt reads ZIP, RAR and tar archives, as well as plain image files.Italian translationJPEG imagesJapanese translationKorean translationLast pageLibraryLocationM_anual zoom modeMagnification factorMagnifying GlassMagnifying _glassMagnifying glassMagnifying glass size (in pixels)Manga modeManual _ZoomManual zoom modeModifiedMove books from '%(source collection)s' to '%(destination collection)s'.NameNew collectionNext pageNo images in '%s'Number of removed thumbnailsO_riginal sizeOpenOpen _recentOpen the selected book.Other filesOwnerPNG imagesPagePermissionsPersian translationPlease enter a name for the new collection.Please enter a new name for the selected collection.Please note that the only files that are automatically added to this list are those files in archives that Comix recognizes as comments.Polish translationPr_eferencesPreferencesPrevious pagePropertiesPut the collection '%(subcollection)s' in the collection '%(supercollection)s'.RAR archiveRAR archivesRemove books from the library?Remove collection from the library?Remove collection...Remove from archiveRemove from the library...Remove from this collectionRemoved %(num)d book(s) from '%(collection)s'.Removed %d book(s) from the library.Removed thumbnail for '%s'Removing thumbnailsRename collection?Rename...Replacing it will overwrite its contents.RootRotat_e 90 degrees CCWRotate 180 de_greesRun _slideshowRussian translationSLIDESHOWS_crollbarsSaturationSaveScrollSearchSet the magnification factor of the magnifying glass.Set the size of the magnifying glass. It is a square with a side of this many pixels.SharpnessShow only one wide image in double page mode.Show page numbers on thumbnails.Simplified Chinese translationSizeSlideshowSlideshow delay (in seconds)Some old files (that were used for storing preferences, the library, bookmarks etc. for older versions of Comix) were found on your computer. If you do not plan on using the older versions of Comix again, you should remove these files in order to save some disk space. Do you want these files to be removed for you now?Spanish translationSt_atusbarStore information about recently opened files.Store thumbnails for opened files according to the freedesktop.org specification. These thumbnails are shared by many other applications, such as most file managers.Store thumbnails for opened files.Stretch images to a size that is larger than their original size if the current zoom mode requests it. If this preference is unset, images are never scaled to be larger than their original size.Stretch small images.T_oolbarsTar archiveTar archivesTh_umbnailsThe new archive could not be saved!The original files have not been removed.The selected books will be removed from the library (but the original files will be untouched). Are you sure that you want to continue?The selected collection will be removed from the library (but the books and subcollections in it will remain). Are you sure that you want to continue?There are deprecated files left on your computer.Thumbnail directoryThumbnail maintenanceThumbnail size (in pixels)ThumbnailsThumbnails for files (such as image files and comic book archives) are stored in your home directory. Many different applications use and create these thumbnails, but sometimes thumbnails remain even though the original files have been removed - wasting space. This dialog can cleanup your stored thumbnails by removing orphaned and outdated thumbnails.Total number of thumbnailsTotal size of removed thumbnailsTotal size of thumbnailsTraditional Chinese translationTransparencyTreat all files found within archives, that have one of these file endings, as comments.Unknown filetypeUse a cache to speed up browsing.Use a grey checkered background for transparent images. If this preference is unset, the background is plain white instead.Use checkered background for transparent images.Use double page mode by default.Use dynamic background colour.Use fullscreen by default.Use manga mode by default.Use smart scrolling with the space key. Normally the space key scrolls only right down (or up when shift is pressed), but with this preference set it also scrolls sideways and so tries to follow the natural reading order of the comic book.Use smart space key scrolling.Use this colour as backgroundYou need either the rar or the unrar program installed in order to read RAR (.cbr) files.ZIP archiveZIP archivesZoom _out_About_Add bookmark_Best fit mode_Bookmarks_Clear bookmarks..._Close_Double page mode_Edit_Edit archive..._Edit bookmarks..._Enhance image..._File_First page_Fullscreen_Go_Help_Keep transformation_Last page_Library..._Manga mode_Menubar_Next page_Open..._Previous page_Properties_Quit_Rotate 90 degrees CW_Thumbnail maintenance..._Toolbar_Transform_View_View comments..._Zoom inProject-Id-Version: comix.HEAD Report-Msgid-Bugs-To: POT-Creation-Date: 2008-11-22 02:42+0100 PO-Revision-Date: 2008-12-13 17:56-0300 Last-Translator: Manuel Quiñones Language-Team: Spanish MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Generated-By: pygettext.py 1.5 X-Generator: KBabel 1.9.1 Plural-Forms: nplurals=2; plural=(n != 1); %d comentarios%d páginas(Copia)Ya existe una colección con este nombre.Ya existe un archivo de nombre '%s'. ¿Desea reemplazarlo?Acerca deAccedidoAgregar una nueva colección vacía.Agregar librosAgregar libros a '%s'.Agregar colecciónAgregar información sobre todos los archivos abiertos desde Comix a la lista compartida de archivos recientes.Agregar más libros a la biblioteca.¿Agregar una nueva colección?Libros agregadosAgregando '%s'...Agregando librosTodos los archivosTodos los librosTodos los archivosTodas las imágenesTodos los marcadores guardados serán quitados. ¿Está seguro que desea continuar?Usar siempre el color seleccionado como color de fondo.AparienciaArchivadorLos archivos se guardan como paquetes ZIP.Agregar automáticamente los libros a esta colecciónAjusta el contraste automáticamente, tanto las partes claras como las oscuras, para cada banda de color por separado.Ajustar el contraste automáticamente.Ocultar automáticamente la caja de herramientas en pantalla completa.Abrir automáticamente el último archivo visto al iniciar.Abre automáticamente el archivo siguiente en el directorio, cuando se pasa la última página, o el archivo anterior cuando se pasa la primera.Abrir automáticamente el archivo siguiente.Abre automáticamente, cuando la aplicación inicia, el archivo que se encontraba abierto la última vez que Comix fue cerrado.Obtiene automáticamente un color de fondo que se ajusta a la imagen presentada.FondoComportamientoModo de mejor ajusteTraducción al portugués brasileñoBrilloArchivador tar comprimido con bzip2CachéChachea las imágenes que están próximas a la imagen actualmente vista, para acelerar la hojeada del libro. Dado que la mejora en la velocidad es importante, se recomienda que esta preferencia esté activa, a menos que la disponibilidad de RAM sea escasa.Calculando...Traducción al catalánLimpiezaLimpiar miniaturas¿Desea quitar todos los marcadores?Comix es un visor de imágenes específicamente diseñado para manipular cómics.Comix se licencia mediante la GNU General Public License.Extensiones de los comentariosComentariosContrasteNo se puede agregar una nueva colección llamada '%s'.No se puede cambiar el nombre a '%s'.No se puede duplicar la colección.¡No se ha podido encontrar el extractor de archivos RAR!No se puede abrir %s: es un directorio.No se puede abrir %s: el archivo no existe.No se puede abrir %s: permiso denegado.No se puede abrir %s: tipo de archivo desconocido.No se puede leer %sTamaño de la tapaCréditosTraducción al croataTraducción al checoModos predeterminadosModo de ampliación por defectoValores predeterminadosDesarrolladorVisorMuestra sólo una imagen en el modo a doble página, si la anchura de la imagen excede su altura. Esto es para que las imágenes en que dos páginas fueron escaneadas se muestren apropiadamente, es decir por separado, también en el modo a doble página.Mostrar únicamente aquellos libros que tengan el texto especificado en su ruta completa. La búsqueda no distingue mayúsculas de minúsculas.¿Desea limpiar las miniaturas huérfanas y desactualizadas ahora?Modo a doble páginaDuplicar la colecciónTraducción al holandésEditar el archivoEditar marcadoresMejorar la imagenArchivosPrimera páginaAjustar a la a_lturaModo ajustar a la a_nchuraModo ajustar a la alturaModo ajustar a la anchuraVoltear _horizontalmenteVoltear _verticalmentePasa las páginas cuando se desplaza "fuera de la página" con la rueda del ratón o con las teclas de flechas. Toma tres "pasos" consecutivos de la rueda del ratón o de las teclas de flechas para activarse.Pasar páginas al desplazarse fuera de los bordes de la página.Pasar ambas páginas en el modo a doble página.Cambia las dos páginas, en lugar de una, cada vez que se pasan las páginas en el modo a doble página.Traducción al francésPantalla completaTraducción al alemán y realizador de las miniaturas de NautilusTraducción al griegoArchivador tar comprimido con gzip_Ocultar todoTraducción al húngaroDiseño de iconosImagenEscalado de la imagenImágenesImportarTraducción al indonésLee archivos ZIP, RAR y tar, así como archivos comunes de imágenes.Traducción al italianoImágenes JPEGTraducción al japonésTraducción al coreanoÚltima páginaBibliotecaLugarModo de ampliación m_anualFactor de ampliaciónLupa_LupaLupaTamaño de la lupa (en píxeles)Modo manga_Ampliación manualModo de ampliación manualModificadoMover libros desde la colección '%(source collection)s' hacia la colección '%(destination collection)s'.NombreNueva colecciónPágina siguienteNo hay imágenes en '%s'Cantidad de miniaturas eliminadasTamaño o_riginalAbrirAbrir _recienteAbrir el libro seleccionado.Otros archivosPropietarioImágenes PNGPáginaPermisosTraducción al persaIngrese un nombre para la nueva colección.Ingrese un nombre nuevo para la colección seleccionada.Tenga en cuenta que los únicos archivos que se agregan automáticamente a esta lista son aquellos que Comix reconoce como comentarios.Traducción al polacoPrefere_nciasPreferenciasPágina anteriorPropiedadesColoca la colección '%(subcollection)s' dentro de la colección '%(supercollection)s'.Archivador RARArchivos RAR¿Eliminar los libros de la biblioteca?¿Quitar la colección de la biblioteca?Quitar la colección...Quitar del archivoQuitar de la biblioteca...Eliminar de esta colecciónSe han quitado %(num)d libro(s) desde '%(collection)s'.Se han quitado %d libro(s) de la biblioteca.Se eliminó la miniatura para '%s'Eliminando miniaturas¿Renombrar la colección?Renombrar...Al reemplazarlo, su contenido será sobreescrito.RaízRo_tar 90 grados en sentido antihorarioRotar 180 _gradosIniciar _diapositivasTraducción al rusoDIAPOSITIVASBarras de _desplazamientoSaturaciónGuardarDesplazamientoBuscarDetermina el factor de ampliación de la lupa.Determina el tamaño de la lupa. La lupa es un cuadrado que tiene esta cantidad de píxeles de lado.EnfoqueMostrar sólo una imagen ancha en el modo a doble página.Mostrar el número de página en las miniaturas.Traducción al chino simplificadoTamañoMuestra de diapositivasTiempo entre diapositivas (en segundos)Se encontraron en su ordenador algunos archivos que se usaban en versiones anteriores de Comix, para guardar preferencias, la bibliioteca, los marcadores, etc. Si no piensa volver a usar las versiones anteriores de Comix, debería eliminarlos para ganarse un poco de espacio en el disco. ¿Quiere que estos archivos se eliminen ahora?Traducción al españolBarra de _estadoGuardar información sobre de los último archivos abiertos.Guarda las miniaturas para los archivos abiertos de acuerdo a la especificación de freedesktop.org. Estas miniaturas son compartidas por muchas otras aplicaciones, como por la mayoría de los administradores de archivos.Guardar miniaturas para los archivos abiertos.Estira las imágenes, llevándolas a un tamaño mayor que el original, si el modo de ampliación lo requiere. Si esta preferencia no se activa, las imágenes nunca se escalarán a un tamaño mayor que el original.Estirar las imágenes pequeñas.Caja de _herramientasArchivador tarArchivos TarM_iniaturas¡El archivo nuevo no se ha podido guardar!Los archivos originales no se han eliminado.Los libros seleccionados serán eliminados de la biblioteca, los archivos originales no se tocarán ¿Está seguro de que desea continuar?La colección seleccionada será quitada de la biblioteca, pero sus libros y subcolecciones permanecerán. ¿Está seguro de que desea continuar?Hay archivos obsoletos en su ordenador.Directorio de miniaturasMantenimiento de las miniaturasTamaño de la miniatura (en píxeles)MiniaturasLas miniaturas para los archivos, tanto de imágenes como de libros de cómics, se guardan en su directorio personal. Muchas otras aplicaciones usan y crean esas miniaturas, pero aveces estas quedan aún cuando los archivos originales han sido eliminados, consumiendo espacio en el disco. Este diálogo puede limpiar las miniaturas guardadas, eliminando las que están huérfanas o desactualizadas.Cantidad total de miniaturasTamaño total de miniaturas eliminadasTamaño total de las miniaturasTraducción al chino tradicionalTransparenciaTrata como comentarios a todos los archivos que se encuentren en los archivadores y que tengan esta terminación en el nombre.Tipo de archivo desconocidoUsa un caché para acelerar la hojeada.Usa un fondo gris a cuadros para las imágenes transparentes. Si esta preferencia no está activada, el fondo será blanco liso.Usar un fondo cuadriculado para las imágenes transparentes.Usar el modo a doble página por defecto.Usar un color de fondo dinámico.Usar pantalla completa por defecto.Usar el modo manga por defecto.Usa el desplazamiento inteligente con la tecla espacio. Normalmente la tecla espacio desplaza la página sólo hacia abajo, o hacia arriba cuando se mantiene presionado shift. Pero con esta preferencia activada, también desplaza hacia los lados, intentando seguir el flujo de lectura natural del cómic.Usar desplazamiento inteligente con la tecla espacio.Usar este color como fondoNecesita instalar uno de estos programas, rar o unrar, para poder leer los archivos RAR (.cbr).Archivador ZIPArchivos ZIP_Reducir_Acerca de_Añadir marcadorModo de _mejor ajuste_Marcadores_Quitar los marcadores..._CerrarModo a _doble página_Editar_Editar archivo..._Editar marcadores…_Mejorar la imagen..._Archivo_Primera página_Pantalla completa_IrAy_uda_Mantener transformaciónÚ_ltima página_Biblioteca...Modo _mangaBarra de _menúPágina _siguiente_Abrir…Página _anterior_Propiedades_Salir_Rotar 90 grados en sentido horarioMantenimiento de _miniaturas...Barra de _herramientas_Transformar_Ver_Ver los comentarios..._Ampliarcomix-4.0.4/messages/pt_BR/LC_MESSAGES/comix.po0000644000175000001440000007214311137133373017625 0ustar sorkusersmsgid "" msgstr "" "Project-Id-Version: \n" "POT-Creation-Date: \n" "PO-Revision-Date: \n" "Last-Translator: Marcelo Ges \n" "Language-Team: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=iso-8859-1\n" "Content-Transfer-Encoding: 8bit\n" #: src/about.py:19 src/about.py:68 msgid "About" msgstr "Sobre" #: src/about.py:56 msgid "Comix is an image viewer specifically designed to handle comic books." msgstr "" "Comix um visualizador de imagens desenhado especificamente para lidar com " "histrias em quadrinhos." #: src/about.py:58 msgid "It reads ZIP, RAR and tar archives, as well as plain image files." msgstr "Ele l arquivos ZIP, RAR e tar, bem como imagens normais." #: src/about.py:60 msgid "Comix is licensed under the GNU General Public License." msgstr "Comix licenciado pela GNU General Public License." #: src/about.py:83 msgid "Developer" msgstr "Desenvolvedor" #: src/about.py:84 src/about.py:85 msgid "Simplified Chinese translation" msgstr "Traduo para chins simplificado" #: src/about.py:86 msgid "Spanish translation" msgstr "Traduo para espanhol" #: src/about.py:87 msgid "Brazilian Portuguese translation" msgstr "Traduo para portugus do Brasil" #: src/about.py:88 msgid "German translation and Nautilus thumbnailer" msgstr "Traduo para alemo e thumbnailer do Nautilus" #: src/about.py:89 src/about.py:90 msgid "Italian translation" msgstr "Traduo para italiano" #: src/about.py:91 msgid "Dutch translation" msgstr "Traduo para holands" #: src/about.py:92 msgid "French translation" msgstr "Traduo para francs" #: src/about.py:93 src/about.py:94 msgid "Polish translation" msgstr "Traduo para polons" #: src/about.py:95 msgid "Greek translation" msgstr "Traduo para grego" #: src/about.py:96 msgid "Catalan translation" msgstr "Traduo para catalo" #: src/about.py:97 src/about.py:98 msgid "Traditional Chinese translation" msgstr "Traduo para chins tradicional" #: src/about.py:99 msgid "Japanese translation" msgstr "Traduo para japons" #: src/about.py:100 msgid "Hungarian translation" msgstr "Traduo para hngaro" #: src/about.py:101 msgid "Russian translation" msgstr "Traduo para russo" #: src/about.py:102 msgid "Croatian translation" msgstr "Traduo para croata" #: src/about.py:103 msgid "Korean translation" msgstr "Traduo para coreano" #: src/about.py:104 msgid "Persian translation" msgstr "Traduo para persa" #: src/about.py:105 msgid "Indonesian translation" msgstr "Traduo para lngua indonsia" #: src/about.py:106 msgid "Czech translation" msgstr "Traduo para checo" #: src/about.py:107 msgid "Icon design" msgstr "Desenho dos cones" #: src/about.py:114 msgid "Credits" msgstr "Crditos" #: src/archive.py:66 msgid "Could not find RAR file extractor!" msgstr "No foi possvel encontrar programa para extrao de arquivo RAR!" #: src/archive.py:68 msgid "" "You need either the rar or the unrar program installed in " "order to read RAR (.cbr) files." msgstr "" "Voc precisa do programa rar ou unrar instalado para poder ler " "arquivos RAR (.cbr)." #: src/archive.py:305 msgid "ZIP archive" msgstr "Arquivo ZIP" #: src/archive.py:306 msgid "Tar archive" msgstr "Arquivo tar" #: src/archive.py:307 msgid "Gzip compressed tar archive" msgstr "Arquivo tar comprimido com gzip" #: src/archive.py:308 msgid "Bzip2 compressed tar archive" msgstr "Arquivo tar comprimido com bzip2" #: src/archive.py:309 msgid "RAR archive" msgstr "Arquivo RAR" #: src/bookmark.py:28 msgid "_Add bookmark" msgstr "_Adicionar favorito" #: src/bookmark.py:30 msgid "_Edit bookmarks..." msgstr "_Editar favoritos..." #: src/bookmark.py:32 msgid "_Clear bookmarks..." msgstr "_Limpar favoritos..." #: src/bookmark.py:78 msgid "Clear all bookmarks?" msgstr "Limpar todos os favoritos?" #: src/bookmark.py:80 msgid "" "All stored bookmarks will be removed. Are you sure that you want to continue?" msgstr "" "Todos os favoritos gravados sero removidos. Tem certeza de que deseja " "continuar?" #: src/bookmark.py:230 msgid "Edit bookmarks" msgstr "Editar favoritos" #: src/bookmark.py:256 src/edit.py:270 msgid "Name" msgstr "Nome" #: src/bookmark.py:257 msgid "Page" msgstr "Pgina" #: src/comment.py:16 src/preferences.py:299 msgid "Comments" msgstr "Comentrios" #: src/comment.py:53 #, python-format msgid "Could not read %s" msgstr "No foi possvel ler %s" #: src/deprecated.py:16 msgid "There are deprecated files left on your computer." msgstr "Existem arquivos antigos remanescentes no seu computador." #: src/deprecated.py:22 msgid "" "Some old files (that were used for storing preferences, the library, " "bookmarks etc. for older versions of Comix) were found on your computer. If " "you do not plan on using the older versions of Comix again, you should " "remove these files in order to save some disk space. Do you want these files " "to be removed for you now?" msgstr "" "Alguns arquivos antigos (que eram usados para salvar preferncias, a " "biblioteca, favoritos e outros, em verses antigas do Comix) foram " "encontrados em seu computador. Se voc no planeja usar as verses antigas " "do Comix novamente, voc deve remover esses arquivos para economizar espao " "em disco. Deseja que esses arquivos sejam removidos para voc agora?" #: src/edit.py:29 msgid "Edit archive" msgstr "Editar arquivo" #: src/edit.py:37 msgid "Import" msgstr "Importar" #: src/edit.py:51 msgid "Images" msgstr "Imagens" #: src/edit.py:52 msgid "Other files" msgstr "Outros arquivos" #: src/edit.py:101 msgid "The new archive could not be saved!" msgstr "O novo arquivo no pde ser gravado!" #: src/edit.py:103 msgid "The original files have not been removed." msgstr "Os arquivos originais no foram removidos." #: src/edit.py:117 msgid "Archives are stored as ZIP files." msgstr "Arquivos so gravados em formato ZIP." #: src/edit.py:170 src/edit.py:288 msgid "Remove from archive" msgstr "Remover do arquivo" #: src/edit.py:258 msgid "" "Please note that the only files that are automatically added to this list " "are those files in archives that Comix recognizes as comments." msgstr "" "Por favor, note que os nicos arquivos adicionados automaticamente nesta " "lista so os arquivos que o Comix reconhece como comentrios." #: src/edit.py:273 msgid "Size" msgstr "Tamanho" #: src/enhance.py:51 msgid "Enhance image" msgstr "Melhorar imagem" #: src/enhance.py:52 msgid "Defaults" msgstr "Padres" #: src/enhance.py:79 msgid "Brightness" msgstr "Brilho" #: src/enhance.py:90 msgid "Contrast" msgstr "Contraste" #: src/enhance.py:101 msgid "Saturation" msgstr "Saturao" #: src/enhance.py:112 msgid "Sharpness" msgstr "Nitidez" #: src/enhance.py:126 msgid "Automatically adjust contrast." msgstr "Ajustar contraste automaticamente." #: src/enhance.py:128 msgid "" "Automatically adjust contrast (both lightness and darkness), separately for " "each colour band." msgstr "" "Ajustar contraste (tanto claro quanto escuro) automaticamente, de maneira " "separada para cada banda de cor." #: src/filechooser.py:38 src/library.py:490 msgid "Open" msgstr "Abrir" #: src/filechooser.py:42 msgid "Save" msgstr "Salvar" #: src/filechooser.py:78 msgid "All files" msgstr "Todos os arquivos avulsos" #: src/filechooser.py:81 msgid "All Archives" msgstr "Todos os arquivos" #: src/filechooser.py:85 msgid "ZIP archives" msgstr "Arquivos ZIP" #: src/filechooser.py:87 msgid "RAR archives" msgstr "Arquivos RAR" #: src/filechooser.py:89 msgid "Tar archives" msgstr "Arquivos tar" #: src/filechooser.py:134 #, python-format msgid "A file named '%s' already exists. Do you want to replace it?" msgstr "Um arquivo com o nome '%s' j existe. Deseja substitu-lo?" #: src/filechooser.py:137 msgid "Replacing it will overwrite its contents." msgstr "A substituio sobreescrever seu contedo." #: src/filechooser.py:182 src/filechooser.py:260 msgid "All images" msgstr "Todas as imagens" #: src/filechooser.py:184 src/filechooser.py:262 msgid "JPEG images" msgstr "Imagens JPEG" #: src/filechooser.py:185 src/filechooser.py:263 msgid "PNG images" msgstr "Imagens PNG" #: src/filechooser.py:206 msgid "Automatically add the books to this collection" msgstr "Adicionar livros a esta coleo automaticamente" #: src/filehandler.py:209 #, python-format msgid "Could not open %s: Is a directory." msgstr "Impossvel abrir %s: um diretrio." #: src/filehandler.py:213 #, python-format msgid "Could not open %s: No such file." msgstr "Impossvel abrir %s: Arquivo no existe." #: src/filehandler.py:217 #, python-format msgid "Could not open %s: Permission denied." msgstr "Impossvel abrir %s: Permisso negada." #: src/filehandler.py:222 #, python-format msgid "Could not open %s: Unknown file type." msgstr "Impossvel abrir %s: Tipo de arquivo desconhecido." #: src/filehandler.py:285 #, python-format msgid "No images in '%s'" msgstr "No h imagens em '%s'" #: src/filehandler.py:413 msgid "Unknown filetype" msgstr "Tipo de arquivo desconhecido" #: src/librarybackend.py:273 src/librarybackend.py:275 msgid "(Copy)" msgstr "(Cpia)" #: src/library.py:38 msgid "Library" msgstr "Biblioteca" #: src/library.py:150 msgid "Rename..." msgstr "Renomear..." #: src/library.py:152 msgid "Duplicate collection" msgstr "Coleo duplicada" #: src/library.py:154 msgid "Remove collection..." msgstr "Remover coleo..." #: src/library.py:202 msgid "All books" msgstr "Todos os livros" #: src/library.py:231 msgid "Remove collection from the library?" msgstr "Remover coleo da biblioteca?" #: src/library.py:233 msgid "" "The selected collection will be removed from the library (but the books and " "subcollections in it will remain). Are you sure that you want to continue?" msgstr "" "A coleo selecionada ser removida da biblioteca (mas os livros e as sub-" "coleo dentro dela permanecero). Tem certeza de que deseja continuar?" #: src/library.py:251 msgid "Rename collection?" msgstr "Renomear coleo?" #: src/library.py:253 msgid "Please enter a new name for the selected collection." msgstr "Por favor, digite um novo nome para a coleo selecionada." #: src/library.py:271 #, python-format msgid "Could not change the name to '%s'." msgstr "Impossvel renomear para '%s'." #: src/library.py:275 src/library.py:882 msgid "A collection by that name already exists." msgstr "Uma coleo com esse nome j existe." #: src/library.py:285 msgid "Could not duplicate collection." msgstr "Impossvel duplicar coleo." #: src/library.py:382 msgid "Root" msgstr "Raiz" #: src/library.py:386 #, python-format msgid "" "Put the collection '%(subcollection)s' in the collection '%(supercollection)" "s'." msgstr "" "Coloque a coleo '%(subcollection)s' na coleo '%(supercollection)s'." #: src/library.py:407 #, python-format msgid "Add books to '%s'." msgstr "Adicionar livros para '%s'." #: src/library.py:411 #, python-format msgid "" "Move books from '%(source collection)s' to '%(destination collection)s'." msgstr "" "Mover livros de '%(source collection)s' para '%(destination collection)s'." #: src/library.py:493 msgid "Remove from this collection" msgstr "Remover desta coleo" #: src/library.py:496 msgid "Remove from the library..." msgstr "Remover da biblioteca..." #: src/library.py:589 #, python-format msgid "Removed %(num)d book(s) from '%(collection)s'." msgstr "Foram removidos %(num)d livro(s) de '%(collection)s'." #: src/library.py:598 msgid "Remove books from the library?" msgstr "Remover livros desta biblioteca?" #: src/library.py:600 msgid "" "The selected books will be removed from the library (but the original files " "will be untouched). Are you sure that you want to continue?" msgstr "" "Os livros selecionados sero removidos da biblioteca (mas os arquivos " "originais no sero modificados). Tem certeza de que deseja continuar?" #: src/library.py:610 #, python-format msgid "Removed %d book(s) from the library." msgstr "Foram removidos %d livro(s) da biblioteca." #: src/library.py:770 msgid "Search" msgstr "Busca" #: src/library.py:775 msgid "" "Display only those books that have the specified text string in their full " "path. The search is not case sensitive." msgstr "" "Mostrar s os livros que tm o texto especificado no seu caminho completo. A " "busca no sensvel a maiscula e minscula." #: src/library.py:777 msgid "Cover size" msgstr "Tamanho da capa" #: src/library.py:790 msgid "Add books" msgstr "Adicionar livros" #: src/library.py:794 msgid "Add more books to the library." msgstr "Adicionar mais livros biblioteca." #: src/library.py:796 msgid "Add collection" msgstr "Adicionar coleo" #: src/library.py:801 msgid "Add a new empty collection." msgstr "Adicionar nova coleo vazia." #: src/library.py:807 msgid "Open the selected book." msgstr "Abrir o livro selecionado." #: src/library.py:833 src/properties.py:118 #, python-format msgid "%d pages" msgstr "%d pginas" #: src/library.py:855 msgid "Add new collection?" msgstr "Adicionar nova coleo?" #: src/library.py:857 msgid "Please enter a name for the new collection." msgstr "Por favor, digite o nome da nova coleo." #: src/library.py:863 msgid "New collection" msgstr "Nova coleo" #: src/library.py:877 #, python-format msgid "Could not add a new collection called '%s'." msgstr "Impossvel adicionar uma nova coleo chamada '%s'." #: src/library.py:911 msgid "Adding books" msgstr "Adicionando livros." #: src/library.py:931 msgid "Added books" msgstr "Livros adicionados" #: src/library.py:953 #, python-format msgid "Adding '%s'..." msgstr "Adicionando '%s'..." #: src/main.py:699 msgid "SLIDESHOW" msgstr "Apresentao de slides" #: src/preferences.py:80 msgid "Preferences" msgstr "Preferncias" #: src/preferences.py:95 msgid "Background" msgstr "Tela de fundo" #: src/preferences.py:97 msgid "Use this colour as background" msgstr "Usar essa cor na tela de fundo" #: src/preferences.py:99 msgid "Always use this selected colour as the background colour." msgstr "Sempre usar essa cor como cor de fundo." #: src/preferences.py:104 msgid "Use dynamic background colour." msgstr "Usar cor de fundo dinmica." #: src/preferences.py:108 msgid "Automatically pick a background colour that fits the viewed image." msgstr "" "Escolher uma cor de fundo compatvel com a imagem visualizada " "automaticamente." #: src/preferences.py:111 msgid "Thumbnails" msgstr "Miniaturas" #: src/preferences.py:112 msgid "Thumbnail size (in pixels)" msgstr "Tamanho da miniatura (em pixels)" #: src/preferences.py:119 msgid "Show page numbers on thumbnails." msgstr "Mostrar nmeros de pgina nas miniaturas." #: src/preferences.py:126 msgid "Magnifying Glass" msgstr "Lente de aumento" #: src/preferences.py:127 msgid "Magnifying glass size (in pixels)" msgstr "Tamanho da lente de aumento (em pixels)" #: src/preferences.py:133 msgid "" "Set the size of the magnifying glass. It is a square with a side of this " "many pixels." msgstr "" "Ajustar o tamanho da lente de aumento. um quadrado com esse tamanho de " "pixels." #: src/preferences.py:135 msgid "Magnification factor" msgstr "Fator de aumento" #: src/preferences.py:142 msgid "Set the magnification factor of the magnifying glass." msgstr "Ajustar o fator de aumento da lente de aumento." #: src/preferences.py:145 msgid "Image scaling" msgstr "Escala da imagem" #: src/preferences.py:146 msgid "Stretch small images." msgstr "Esticar imagens pequenas." #: src/preferences.py:150 msgid "" "Stretch images to a size that is larger than their original size if the " "current zoom mode requests it. If this preference is unset, images are never " "scaled to be larger than their original size." msgstr "" "Esticar imagens para um tamanho que maior que seu tamanho original se o " "modo de zoom atual pedir. Se esta preferncia no estiver marcada, as " "imagens nunca sero vistas maior que seu tamanho original." #: src/preferences.py:153 msgid "Transparency" msgstr "Transparncia" #: src/preferences.py:155 msgid "Use checkered background for transparent images." msgstr "Usar fundo quadriculado para imagens transparentes." #: src/preferences.py:161 msgid "" "Use a grey checkered background for transparent images. If this preference " "is unset, the background is plain white instead." msgstr "" "Usar fundo quadriculado cinza para imagens transparentes. Se esta " "preferncia no estiver marcada, o fundo usado branco." #: src/preferences.py:163 msgid "Appearance" msgstr "Aparncia" #: src/preferences.py:169 msgid "Scroll" msgstr "Rolagem" #: src/preferences.py:171 msgid "Use smart space key scrolling." msgstr "Usar rolagem inteligente com tecla de espao." #: src/preferences.py:176 msgid "" "Use smart scrolling with the space key. Normally the space key scrolls only " "right down (or up when shift is pressed), but with this preference set it " "also scrolls sideways and so tries to follow the natural reading order of " "the comic book." msgstr "" "Usar rolagem inteligente com telca de espao. Normalmente, a tecla de espao " "s rola para baixo (ou para cima quando shift apertado). No entanto, com " "esta perferncia tambm rola para os lados e tenta seguir a ordem natural de " "leitura de uma histria em quadrinhos." #: src/preferences.py:180 msgid "Flip pages when scrolling off the edges of the page." msgstr "Virar pginas quando rolar para fora da borda da pgina." #: src/preferences.py:185 msgid "" "Flip pages when scrolling \"off the page\" with the scroll wheel or with the " "arrow keys. It takes three consecutive \"steps\" with the scroll wheel or " "the arrow keys for the pages to be flipped." msgstr "" "Virar pginas quando rolar \"para fora da pgina\" com a roda de roladagem " "ou teclas de seta. So necessrios trs \"passos\" consecutivos com a roda " "de rolagem ou teclas de seta para que as pginas sejam viradas." #: src/preferences.py:188 src/ui.py:298 msgid "Double page mode" msgstr "Modo de pgina dupla" #: src/preferences.py:190 msgid "Flip two pages in double page mode." msgstr "Virar duas pginas em modo de pgina dupla." #: src/preferences.py:195 msgid "" "Flip two pages, instead of one, each time we flip pages in double page mode." msgstr "" "Virar duas pginas, ao invs de uma, cada vez que virar pgina em modo de " "pgina dupla." #: src/preferences.py:198 msgid "Show only one wide image in double page mode." msgstr "Mostrar s uma imagem larga em modo de pgina dupl.a" #: src/preferences.py:204 msgid "" "Display only one image in double page mode, if the image's width exceeds its " "height. The result of this is that scans that span two pages are displayed " "properly (i.e. alone) also in double page mode." msgstr "" "Mostra s uma imagem em modo de pgina dupla, se a largura da imagem exceder " "sua altura. O resultado disto que scans que passem de duas pginas so " "mostrados adequadamente (isto , sozinhos) tambm em modo de pgina dupla." #: src/preferences.py:207 msgid "Files" msgstr "Arquivos" #: src/preferences.py:209 msgid "Automatically open the next archive." msgstr "Abrir o prximo arquivo automaticamente." #: src/preferences.py:214 msgid "" "Automatically open the next archive in the directory when flipping past the " "last page, or the previous archive when flipping past the first page." msgstr "" "Abre o prximo arquivo do diretrio automaticamente quando virar aps a " "ltima pgina, ou o arquivo anterior quando virar antes da primeira pgina." #: src/preferences.py:217 msgid "Automatically open the last viewed file on startup." msgstr "Abrir o ltimo arquivo visto automaticamente quando abrir." #: src/preferences.py:222 msgid "" "Automatically open, on startup, the file that was open when Comix was last " "closed." msgstr "" "Abre, quando inicia, o arquivo que estava aberto quando o Comix foi fechado " "da ltima vez." #: src/preferences.py:225 msgid "Store information about recently opened files." msgstr "Guarda informaes sobre arquivos abertos recentemente." #: src/preferences.py:230 msgid "" "Add information about all files opened from within Comix to the shared " "recent files list." msgstr "" "Adicionar informaes sobre todos os arquivos abertos dentro do Comix para a " "lista de arquivos compartilhados recentes." #: src/preferences.py:233 msgid "Store thumbnails for opened files." msgstr "Guardar miniaturas para arquivos abertos." #: src/preferences.py:238 msgid "" "Store thumbnails for opened files according to the freedesktop.org " "specification. These thumbnails are shared by many other applications, such " "as most file managers." msgstr "" "Guarda miniaturas de arquivos abertos de acordo com a especificao do " "freedesktop.org. Essas miniaturas so compartilhadas por vrios outros " "aplicativos, como a maior parte dos gerenciadores de arquivos." #: src/preferences.py:241 msgid "Cache" msgstr "Cache" #: src/preferences.py:242 msgid "Use a cache to speed up browsing." msgstr "Usar um cache para aumentar velocidade de navegao." #: src/preferences.py:246 msgid "" "Cache the images that are next to the currently viewed image in order to " "speed up browsing. Since the speed improvements are quite big, it is " "recommended that you have this preference set, unless you are running short " "on free RAM." msgstr "" "Faz cache das imagens que esto prximas a imagem vista atualmente para " "acelerar a navegao. J que a melhoria de velocidade grande, " "recomendvel ter esta preferncia marcada, a menos que voc esteja com pouca " "memria RAM." #: src/preferences.py:248 msgid "Behaviour" msgstr "Comportamento" #: src/preferences.py:254 msgid "Default modes" msgstr "Modos padro" #: src/preferences.py:256 msgid "Use double page mode by default." msgstr "Usar pgina dupla por padro." #: src/preferences.py:261 msgid "Use fullscreen by default." msgstr "Usar tela cheia por padro." #: src/preferences.py:266 msgid "Use manga mode by default." msgstr "Usar modo mang por padro." #: src/preferences.py:271 msgid "Default zoom mode" msgstr "Modo de zoom padro" #: src/preferences.py:273 src/ui.py:290 msgid "Best fit mode" msgstr "Modo de melhor encaixe" #: src/preferences.py:274 src/ui.py:292 msgid "Fit width mode" msgstr "Modo ajustar largura" #: src/preferences.py:275 src/ui.py:294 msgid "Fit height mode" msgstr "Modo ajustar altura" #: src/preferences.py:276 src/ui.py:296 msgid "Manual zoom mode" msgstr "Modo de zoom manual" #: src/preferences.py:282 msgid "Fullscreen" msgstr "Tela cheia" #: src/preferences.py:284 msgid "Automatically hide all toolbars in fullscreen." msgstr "Esconder todas as barras de ferramenta por padro em tela cheia." #: src/preferences.py:290 msgid "Slideshow" msgstr "Apresentao de slides" #: src/preferences.py:291 msgid "Slideshow delay (in seconds)" msgstr "Espera da apresentao de slides (em segundos)" #: src/preferences.py:300 msgid "Comment extensions" msgstr "Comentar extenses" #: src/preferences.py:306 msgid "" "Treat all files found within archives, that have one of these file endings, " "as comments." msgstr "" "Tratar todos os arquivos avulsos dentro de arquivos, incluindo os que tem " "terminao de arquivo, como comentrios." #: src/preferences.py:309 msgid "Rotation" msgstr "" #: src/preferences.py:311 msgid "Automatically rotate images according to their metadata." msgstr "" #: src/preferences.py:316 msgid "" "Automatically rotate images when an orientation is specified in the image " "metadata, such as in an Exif tag." msgstr "" #: src/preferences.py:318 msgid "Display" msgstr "Tela" #: src/properties.py:94 msgid "Properties" msgstr "Propriedades" #: src/properties.py:119 #, python-format msgid "%d comments" msgstr "%d comentrios" #: src/properties.py:129 src/properties.py:164 msgid "Location" msgstr "Local" #: src/properties.py:131 src/properties.py:165 msgid "Accessed" msgstr "Acessado" #: src/properties.py:133 src/properties.py:167 msgid "Modified" msgstr "Modificado" #: src/properties.py:135 src/properties.py:169 msgid "Permissions" msgstr "Permisses" #: src/properties.py:136 src/properties.py:170 msgid "Owner" msgstr "Dono" #: src/properties.py:140 msgid "Archive" msgstr "Arquivo" #: src/properties.py:174 msgid "Image" msgstr "Imagem" #: src/thumbremover.py:24 msgid "Thumbnail maintenance" msgstr "Manuteno de miniatura" #: src/thumbremover.py:26 msgid "Cleanup" msgstr "Limpar" #: src/thumbremover.py:38 msgid "Cleanup thumbnails" msgstr "Limpar miniaturas" #: src/thumbremover.py:48 msgid "" "Thumbnails for files (such as image files and comic book archives) are " "stored in your home directory. Many different applications use and create " "these thumbnails, but sometimes thumbnails remain even though the original " "files have been removed - wasting space. This dialog can cleanup your stored " "thumbnails by removing orphaned and outdated thumbnails." msgstr "" "Miniaturas para arquivos avulsos (como arquivos de imagem e histrias em " "quadrinhos) so guardadas em seu diretrio de usurio. Muitos aplicativos " "diferentes usam e criam essas miniaturas, mas algumas vezes as miniaturas " "permanecem apesar de os arquivos originais terem sido removidos - " "despediando espao. Este dilogo pode limpar miniaturas ao remover " "minaturas rfs e ultrapassadas." #: src/thumbremover.py:60 msgid "Thumbnail directory" msgstr "Diretrio de miniaturas" #: src/thumbremover.py:67 msgid "Total number of thumbnails" msgstr "Nmero total de miniaturas" #: src/thumbremover.py:70 src/thumbremover.py:77 msgid "Calculating..." msgstr "Calculando..." #: src/thumbremover.py:74 msgid "Total size of thumbnails" msgstr "Tamanho total das miniaturas" #: src/thumbremover.py:82 msgid "Do you want to cleanup orphaned and outdated thumbnails now?" msgstr "Deseja limpar miniaturas rfs ou ultrapassadas agora?" #: src/thumbremover.py:118 msgid "Removing thumbnails" msgstr "Removendo miniaturas" #: src/thumbremover.py:137 msgid "Number of removed thumbnails" msgstr "Nmero de miniaturas removidas" #: src/thumbremover.py:144 msgid "Total size of removed thumbnails" msgstr "Tamanho total das miniaturas removidas" #: src/thumbremover.py:195 #, python-format msgid "Removed thumbnail for '%s'" msgstr "Removida a miniatura de '%s'" #: src/ui.py:34 msgid "_Next page" msgstr "_Prxima pgina" #: src/ui.py:36 msgid "_Previous page" msgstr "P_gina anterior" #: src/ui.py:38 msgid "_First page" msgstr "P_rimeira pgina" #: src/ui.py:40 msgid "_Last page" msgstr "_ltima pgina" #: src/ui.py:42 msgid "_Zoom in" msgstr "_Aumentar zoom" #: src/ui.py:44 msgid "Zoom _out" msgstr "_Diminuir zoom" #: src/ui.py:46 msgid "O_riginal size" msgstr "Tamanho _original" #: src/ui.py:48 msgid "_Close" msgstr "_Fechar" #: src/ui.py:50 msgid "_Quit" msgstr "_Sair" #: src/ui.py:52 msgid "_Rotate 90 degrees CW" msgstr "Ro_tao de 90 graus horrios" #: src/ui.py:54 msgid "Rotate 180 de_grees" msgstr "Rotao de 180 graus" #: src/ui.py:56 msgid "Rotat_e 90 degrees CCW" msgstr "Ro_tao de 90 graus anti-horrios" #: src/ui.py:58 msgid "Fli_p horizontally" msgstr "Inverter _horizontalmente" #: src/ui.py:60 msgid "Flip _vertically" msgstr "Inverter _verticalmente" #: src/ui.py:62 msgid "Manual _Zoom" msgstr "Zoom _manual" #: src/ui.py:63 msgid "Open _recent" msgstr "Abrir recente" #: src/ui.py:64 msgid "_Bookmarks" msgstr "Favoritos" #: src/ui.py:65 msgid "T_oolbars" msgstr "Barra de ferramentas" #: src/ui.py:66 msgid "_Edit" msgstr "Editar" #: src/ui.py:67 msgid "_File" msgstr "_Arquivo" #: src/ui.py:68 msgid "_View" msgstr "_Exibir" #: src/ui.py:69 msgid "_Go" msgstr "_Ir" #: src/ui.py:70 msgid "_Help" msgstr "A_juda" #: src/ui.py:71 msgid "_Transform" msgstr "Transformar" #: src/ui.py:75 msgid "_Fullscreen" msgstr "Tela cheia" #: src/ui.py:77 msgid "_Double page mode" msgstr "Modo de pgina dupla" #: src/ui.py:79 msgid "_Toolbar" msgstr "Barra de ferramentas" #: src/ui.py:81 msgid "_Menubar" msgstr "Barra de menu" #: src/ui.py:83 msgid "St_atusbar" msgstr "Barra de status" #: src/ui.py:85 msgid "S_crollbars" msgstr "Barra de rolagem" #: src/ui.py:87 msgid "Th_umbnails" msgstr "Miniaturas" #: src/ui.py:89 msgid "H_ide all" msgstr "Esconder todos" #: src/ui.py:91 msgid "_Manga mode" msgstr "Modo mang" #: src/ui.py:93 msgid "_Keep transformation" msgstr "Manter transformao" #: src/ui.py:95 msgid "Run _slideshow" msgstr "Rodar apresentao de slides" #: src/ui.py:97 msgid "Magnifying _glass" msgstr "Lente de aumento" #: src/ui.py:103 msgid "_Best fit mode" msgstr "Modo de melhor ajuste" #: src/ui.py:105 msgid "Fit _width mode" msgstr "Modo ajuste de largura" #: src/ui.py:107 msgid "Fit _height mode" msgstr "Modo ajuste de altura" #: src/ui.py:109 msgid "M_anual zoom mode" msgstr "Modo de zoom manual" #: src/ui.py:115 msgid "_About" msgstr "Sobre" #: src/ui.py:117 msgid "_View comments..." msgstr "Ver comentrios..." #: src/ui.py:119 msgid "_Edit archive..." msgstr "Editar arquivo..." #: src/ui.py:121 msgid "_Open..." msgstr "Abrir..." #: src/ui.py:123 msgid "_Properties" msgstr "Propriedades" #: src/ui.py:125 msgid "_Enhance image..." msgstr "Melhorar imagem..." #: src/ui.py:128 msgid "_Thumbnail maintenance..." msgstr "Manuteno de miniaturas..." #: src/ui.py:130 msgid "Pr_eferences" msgstr "Preferncias" #: src/ui.py:134 msgid "_Library..." msgstr "Biblioteca..." #: src/ui.py:284 msgid "First page" msgstr "Primeira pgina" #: src/ui.py:286 msgid "Previous page" msgstr "Pgina anterior" #: src/ui.py:287 msgid "Next page" msgstr "Prxima pgina" #: src/ui.py:288 msgid "Last page" msgstr "ltima pgina" #: src/ui.py:299 msgid "Manga mode" msgstr "Modo mang" #: src/ui.py:300 msgid "Magnifying glass" msgstr "Lente de aumento" comix-4.0.4/messages/pt_BR/LC_MESSAGES/comix.mo0000644000175000001440000005570511124021542017615 0ustar sorkusers<[\ )<LR[ wY 0< K X e o yM9 !.A]p.3P$RBZ      !4EI7+";"["~ %% +3H Zhz r]<  3 E R a o u       4!#!L!I" \"+g""" "" "" "###A&#h# |### ######$$!&$ H$ S$`$q$Hz$$$ $$$%% $%1% I%U% [%f% k%w%+%4%%u& & & & &O& ' '#'#B'f'{'''.'$'(5(I( \()f(((((( ( ( () ))5)UM) )-) ))* ***?G*+ +.++"{,,a- w- - - -#-)--|.1/E/Y/o/ /a/0 131L1 l1Xy11!1{202 222 3(3474gU4 4 4 44 44 55#5*5<5B5S5f5x5 ~5 5555 5 5 55 555 666,6F6 O6Z6`6r6{6]7 l7w7$7:7777 8898wK8#8889&9:9L9\9v9Q9'9 : :%:/9:ji:":@::8;s;(<Z0<N< < <<! =/= 6=W=]= A>O>e>l>~>d>3>2? E? Q?3[???A?$ @(2@&[@2@@@@@@ AA0A 8AFAKAz,B6BBBCC+CLSLpLLL LLLL/LPLLM4TM)M!MMM.Mc#NOO7OO)PPQQ Q Q Q$Q* RKRR9jSSS S STU&UU U VrVV4VzV3RWWWWW W-Y2YaQY Y YYYYY ZZ*Z2ZGZNZ`ZuZZZ ZZZZZ Z Z Z[[[ -[:[@[^[z[ [[[[hPx+QSOgj(9`B_o ZNy[8E?#0  C{^fF';*=Lk ,d}-$2rcJ51Mi.mu>lRnY)p|"zT:VI%3K!@7 vD]4UqXae&Hb<w/6t WsG~A\%d comments%d pages(Copy)A collection by that name already exists.A file named '%s' already exists. Do you want to replace it?AboutAccessedAdd a new empty collection.Add booksAdd books to '%s'.Add collectionAdd information about all files opened from within Comix to the shared recent files list.Add more books to the library.Add new collection?Added booksAdding '%s'...Adding booksAll ArchivesAll booksAll filesAll imagesAll stored bookmarks will be removed. Are you sure that you want to continue?Always use this selected colour as the background colour.AppearanceArchiveArchives are stored as ZIP files.Automatically add the books to this collectionAutomatically adjust contrast (both lightness and darkness), separately for each colour band.Automatically adjust contrast.Automatically hide all toolbars in fullscreen.Automatically open the last viewed file on startup.Automatically open the next archive in the directory when flipping past the last page, or the previous archive when flipping past the first page.Automatically open the next archive.Automatically open, on startup, the file that was open when Comix was last closed.Automatically pick a background colour that fits the viewed image.BackgroundBehaviourBest fit modeBrazilian Portuguese translationBrightnessBzip2 compressed tar archiveCacheCache the images that are next to the currently viewed image in order to speed up browsing. Since the speed improvements are quite big, it is recommended that you have this preference set, unless you are running short on free RAM.Calculating...Catalan translationCleanupCleanup thumbnailsClear all bookmarks?Comix is an image viewer specifically designed to handle comic books.Comix is licensed under the GNU General Public License.Comment extensionsCommentsContrastCould not add a new collection called '%s'.Could not change the name to '%s'.Could not duplicate collection.Could not find RAR file extractor!Could not open %s: Is a directory.Could not open %s: No such file.Could not open %s: Permission denied.Could not open %s: Unknown file type.Could not read %sCover sizeCreditsCroatian translationCzech translationDefault modesDefault zoom modeDefaultsDeveloperDisplayDisplay only one image in double page mode, if the image's width exceeds its height. The result of this is that scans that span two pages are displayed properly (i.e. alone) also in double page mode.Display only those books that have the specified text string in their full path. The search is not case sensitive.Do you want to cleanup orphaned and outdated thumbnails now?Double page modeDuplicate collectionDutch translationEdit archiveEdit bookmarksEnhance imageFilesFirst pageFit _height modeFit _width modeFit height modeFit width modeFli_p horizontallyFlip _verticallyFlip pages when scrolling "off the page" with the scroll wheel or with the arrow keys. It takes three consecutive "steps" with the scroll wheel or the arrow keys for the pages to be flipped.Flip pages when scrolling off the edges of the page.Flip two pages in double page mode.Flip two pages, instead of one, each time we flip pages in double page mode.French translationFullscreenGerman translation and Nautilus thumbnailerGreek translationGzip compressed tar archiveH_ide allHungarian translationIcon designImageImage scalingImagesImportIndonesian translationIt reads ZIP, RAR and tar archives, as well as plain image files.Italian translationJPEG imagesJapanese translationKorean translationLast pageLibraryLocationM_anual zoom modeMagnification factorMagnifying GlassMagnifying _glassMagnifying glassMagnifying glass size (in pixels)Manga modeManual _ZoomManual zoom modeModifiedMove books from '%(source collection)s' to '%(destination collection)s'.NameNew collectionNext pageNo images in '%s'Number of removed thumbnailsO_riginal sizeOpenOpen _recentOpen the selected book.Other filesOwnerPNG imagesPagePermissionsPersian translationPlease enter a name for the new collection.Please enter a new name for the selected collection.Please note that the only files that are automatically added to this list are those files in archives that Comix recognizes as comments.Polish translationPr_eferencesPreferencesPrevious pagePropertiesPut the collection '%(subcollection)s' in the collection '%(supercollection)s'.RAR archiveRAR archivesRemove books from the library?Remove collection from the library?Remove collection...Remove from archiveRemove from the library...Remove from this collectionRemoved %(num)d book(s) from '%(collection)s'.Removed %d book(s) from the library.Removed thumbnail for '%s'Removing thumbnailsRename collection?Rename...Replacing it will overwrite its contents.RootRotat_e 90 degrees CCWRotate 180 de_greesRun _slideshowRussian translationSLIDESHOWS_crollbarsSaturationSaveScrollSearchSet the magnification factor of the magnifying glass.Set the size of the magnifying glass. It is a square with a side of this many pixels.SharpnessShow only one wide image in double page mode.Show page numbers on thumbnails.Simplified Chinese translationSizeSlideshowSlideshow delay (in seconds)Some old files (that were used for storing preferences, the library, bookmarks etc. for older versions of Comix) were found on your computer. If you do not plan on using the older versions of Comix again, you should remove these files in order to save some disk space. Do you want these files to be removed for you now?Spanish translationSt_atusbarStore information about recently opened files.Store thumbnails for opened files according to the freedesktop.org specification. These thumbnails are shared by many other applications, such as most file managers.Store thumbnails for opened files.Stretch images to a size that is larger than their original size if the current zoom mode requests it. If this preference is unset, images are never scaled to be larger than their original size.Stretch small images.T_oolbarsTar archiveTar archivesTh_umbnailsThe new archive could not be saved!The original files have not been removed.The selected books will be removed from the library (but the original files will be untouched). Are you sure that you want to continue?The selected collection will be removed from the library (but the books and subcollections in it will remain). Are you sure that you want to continue?There are deprecated files left on your computer.Thumbnail directoryThumbnail maintenanceThumbnail size (in pixels)ThumbnailsThumbnails for files (such as image files and comic book archives) are stored in your home directory. Many different applications use and create these thumbnails, but sometimes thumbnails remain even though the original files have been removed - wasting space. This dialog can cleanup your stored thumbnails by removing orphaned and outdated thumbnails.Total number of thumbnailsTotal size of removed thumbnailsTotal size of thumbnailsTraditional Chinese translationTransparencyTreat all files found within archives, that have one of these file endings, as comments.Unknown filetypeUse a cache to speed up browsing.Use a grey checkered background for transparent images. If this preference is unset, the background is plain white instead.Use checkered background for transparent images.Use double page mode by default.Use dynamic background colour.Use fullscreen by default.Use manga mode by default.Use smart scrolling with the space key. Normally the space key scrolls only right down (or up when shift is pressed), but with this preference set it also scrolls sideways and so tries to follow the natural reading order of the comic book.Use smart space key scrolling.Use this colour as backgroundYou need either the rar or the unrar program installed in order to read RAR (.cbr) files.ZIP archiveZIP archivesZoom _out_About_Add bookmark_Best fit mode_Bookmarks_Clear bookmarks..._Close_Double page mode_Edit_Edit archive..._Edit bookmarks..._Enhance image..._File_First page_Fullscreen_Go_Help_Keep transformation_Last page_Library..._Manga mode_Menubar_Next page_Open..._Previous page_Properties_Quit_Rotate 90 degrees CW_Thumbnail maintenance..._Toolbar_Transform_View_View comments..._Zoom inProject-Id-Version: POT-Creation-Date: PO-Revision-Date: Last-Translator: Marcelo Ges Language-Team: MIME-Version: 1.0 Content-Type: text/plain; charset=iso-8859-1 Content-Transfer-Encoding: 8bit %d comentrios%d pginas(Cpia)Uma coleo com esse nome j existe.Um arquivo com o nome '%s' j existe. Deseja substitu-lo?SobreAcessadoAdicionar nova coleo vazia.Adicionar livrosAdicionar livros para '%s'.Adicionar coleoAdicionar informaes sobre todos os arquivos abertos dentro do Comix para a lista de arquivos compartilhados recentes.Adicionar mais livros biblioteca.Adicionar nova coleo?Livros adicionadosAdicionando '%s'...Adicionando livros.Todos os arquivosTodos os livrosTodos os arquivos avulsosTodas as imagensTodos os favoritos gravados sero removidos. Tem certeza de que deseja continuar?Sempre usar essa cor como cor de fundo.AparnciaArquivoArquivos so gravados em formato ZIP.Adicionar livros a esta coleo automaticamenteAjustar contraste (tanto claro quanto escuro) automaticamente, de maneira separada para cada banda de cor.Ajustar contraste automaticamente.Esconder todas as barras de ferramenta por padro em tela cheia.Abrir o ltimo arquivo visto automaticamente quando abrir.Abre o prximo arquivo do diretrio automaticamente quando virar aps a ltima pgina, ou o arquivo anterior quando virar antes da primeira pgina.Abrir o prximo arquivo automaticamente.Abre, quando inicia, o arquivo que estava aberto quando o Comix foi fechado da ltima vez.Escolher uma cor de fundo compatvel com a imagem visualizada automaticamente.Tela de fundoComportamentoModo de melhor encaixeTraduo para portugus do BrasilBrilhoArquivo tar comprimido com bzip2CacheFaz cache das imagens que esto prximas a imagem vista atualmente para acelerar a navegao. J que a melhoria de velocidade grande, recomendvel ter esta preferncia marcada, a menos que voc esteja com pouca memria RAM.Calculando...Traduo para cataloLimparLimpar miniaturasLimpar todos os favoritos?Comix um visualizador de imagens desenhado especificamente para lidar com histrias em quadrinhos.Comix licenciado pela GNU General Public License.Comentar extensesComentriosContrasteImpossvel adicionar uma nova coleo chamada '%s'.Impossvel renomear para '%s'.Impossvel duplicar coleo.No foi possvel encontrar programa para extrao de arquivo RAR!Impossvel abrir %s: um diretrio.Impossvel abrir %s: Arquivo no existe.Impossvel abrir %s: Permisso negada.Impossvel abrir %s: Tipo de arquivo desconhecido.No foi possvel ler %sTamanho da capaCrditosTraduo para croataTraduo para checoModos padroModo de zoom padroPadresDesenvolvedorTelaMostra s uma imagem em modo de pgina dupla, se a largura da imagem exceder sua altura. O resultado disto que scans que passem de duas pginas so mostrados adequadamente (isto , sozinhos) tambm em modo de pgina dupla.Mostrar s os livros que tm o texto especificado no seu caminho completo. A busca no sensvel a maiscula e minscula.Deseja limpar miniaturas rfs ou ultrapassadas agora?Modo de pgina duplaColeo duplicadaTraduo para holandsEditar arquivoEditar favoritosMelhorar imagemArquivosPrimeira pginaModo ajuste de alturaModo ajuste de larguraModo ajustar alturaModo ajustar larguraInverter _horizontalmenteInverter _verticalmenteVirar pginas quando rolar "para fora da pgina" com a roda de roladagem ou teclas de seta. So necessrios trs "passos" consecutivos com a roda de rolagem ou teclas de seta para que as pginas sejam viradas.Virar pginas quando rolar para fora da borda da pgina.Virar duas pginas em modo de pgina dupla.Virar duas pginas, ao invs de uma, cada vez que virar pgina em modo de pgina dupla.Traduo para francsTela cheiaTraduo para alemo e thumbnailer do NautilusTraduo para gregoArquivo tar comprimido com gzipEsconder todosTraduo para hngaroDesenho dos conesImagemEscala da imagemImagensImportarTraduo para lngua indonsiaEle l arquivos ZIP, RAR e tar, bem como imagens normais.Traduo para italianoImagens JPEGTraduo para japonsTraduo para coreanoltima pginaBibliotecaLocalModo de zoom manualFator de aumentoLente de aumentoLente de aumentoLente de aumentoTamanho da lente de aumento (em pixels)Modo mangZoom _manualModo de zoom manualModificadoMover livros de '%(source collection)s' para '%(destination collection)s'.NomeNova coleoPrxima pginaNo h imagens em '%s'Nmero de miniaturas removidasTamanho _originalAbrirAbrir recenteAbrir o livro selecionado.Outros arquivosDonoImagens PNGPginaPermissesTraduo para persaPor favor, digite o nome da nova coleo.Por favor, digite um novo nome para a coleo selecionada.Por favor, note que os nicos arquivos adicionados automaticamente nesta lista so os arquivos que o Comix reconhece como comentrios.Traduo para polonsPrefernciasPrefernciasPgina anteriorPropriedadesColoque a coleo '%(subcollection)s' na coleo '%(supercollection)s'.Arquivo RARArquivos RARRemover livros desta biblioteca?Remover coleo da biblioteca?Remover coleo...Remover do arquivoRemover da biblioteca...Remover desta coleoForam removidos %(num)d livro(s) de '%(collection)s'.Foram removidos %d livro(s) da biblioteca.Removida a miniatura de '%s'Removendo miniaturasRenomear coleo?Renomear...A substituio sobreescrever seu contedo.RaizRo_tao de 90 graus anti-horriosRotao de 180 grausRodar apresentao de slidesTraduo para russoApresentao de slidesBarra de rolagemSaturaoSalvarRolagemBuscaAjustar o fator de aumento da lente de aumento.Ajustar o tamanho da lente de aumento. um quadrado com esse tamanho de pixels.NitidezMostrar s uma imagem larga em modo de pgina dupl.aMostrar nmeros de pgina nas miniaturas.Traduo para chins simplificadoTamanhoApresentao de slidesEspera da apresentao de slides (em segundos)Alguns arquivos antigos (que eram usados para salvar preferncias, a biblioteca, favoritos e outros, em verses antigas do Comix) foram encontrados em seu computador. Se voc no planeja usar as verses antigas do Comix novamente, voc deve remover esses arquivos para economizar espao em disco. Deseja que esses arquivos sejam removidos para voc agora?Traduo para espanholBarra de statusGuarda informaes sobre arquivos abertos recentemente.Guarda miniaturas de arquivos abertos de acordo com a especificao do freedesktop.org. Essas miniaturas so compartilhadas por vrios outros aplicativos, como a maior parte dos gerenciadores de arquivos.Guardar miniaturas para arquivos abertos.Esticar imagens para um tamanho que maior que seu tamanho original se o modo de zoom atual pedir. Se esta preferncia no estiver marcada, as imagens nunca sero vistas maior que seu tamanho original.Esticar imagens pequenas.Barra de ferramentasArquivo tarArquivos tarMiniaturasO novo arquivo no pde ser gravado!Os arquivos originais no foram removidos.Os livros selecionados sero removidos da biblioteca (mas os arquivos originais no sero modificados). Tem certeza de que deseja continuar?A coleo selecionada ser removida da biblioteca (mas os livros e as sub-coleo dentro dela permanecero). Tem certeza de que deseja continuar?Existem arquivos antigos remanescentes no seu computador.Diretrio de miniaturasManuteno de miniaturaTamanho da miniatura (em pixels)MiniaturasMiniaturas para arquivos avulsos (como arquivos de imagem e histrias em quadrinhos) so guardadas em seu diretrio de usurio. Muitos aplicativos diferentes usam e criam essas miniaturas, mas algumas vezes as miniaturas permanecem apesar de os arquivos originais terem sido removidos - despediando espao. Este dilogo pode limpar miniaturas ao remover minaturas rfs e ultrapassadas.Nmero total de miniaturasTamanho total das miniaturas removidasTamanho total das miniaturasTraduo para chins tradicionalTransparnciaTratar todos os arquivos avulsos dentro de arquivos, incluindo os que tem terminao de arquivo, como comentrios.Tipo de arquivo desconhecidoUsar um cache para aumentar velocidade de navegao.Usar fundo quadriculado cinza para imagens transparentes. Se esta preferncia no estiver marcada, o fundo usado branco.Usar fundo quadriculado para imagens transparentes.Usar pgina dupla por padro.Usar cor de fundo dinmica.Usar tela cheia por padro.Usar modo mang por padro.Usar rolagem inteligente com telca de espao. Normalmente, a tecla de espao s rola para baixo (ou para cima quando shift apertado). No entanto, com esta perferncia tambm rola para os lados e tenta seguir a ordem natural de leitura de uma histria em quadrinhos.Usar rolagem inteligente com tecla de espao.Usar essa cor na tela de fundoVoc precisa do programa rar ou unrar instalado para poder ler arquivos RAR (.cbr).Arquivo ZIPArquivos ZIP_Diminuir zoomSobre_Adicionar favoritoModo de melhor ajusteFavoritos_Limpar favoritos..._FecharModo de pgina duplaEditarEditar arquivo..._Editar favoritos...Melhorar imagem..._ArquivoP_rimeira pginaTela cheia_IrA_judaManter transformao_ltima pginaBiblioteca...Modo mangBarra de menu_Prxima pginaAbrir...P_gina anteriorPropriedades_SairRo_tao de 90 graus horriosManuteno de miniaturas...Barra de ferramentasTransformar_ExibirVer comentrios..._Aumentar zoomcomix-4.0.4/messages/cs/LC_MESSAGES/comix.po0000644000175000001440000011621211137627234017224 0ustar sorkusers# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR ORGANIZATION # FIRST AUTHOR , YEAR. # msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2008-11-22 02:42+0100\n" "PO-Revision-Date: 2009-01-25 21:54+0100\n" "Last-Translator: Jan Nekvasil \n" "Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" "Generated-By: pygettext.py 1.5\n" # # File: src/about.py, line: 18 # File: src/about.py, line: 67 #: src/about.py:19 #: src/about.py:68 msgid "About" msgstr "O programu" # # File: src/about.py, line: 55 #: src/about.py:56 msgid "Comix is an image viewer specifically designed to handle comic books." msgstr "Comix je prohlížeč obrázků obzvláště uzpůsobený k práci s komiksy." # # File: src/about.py, line: 57 #: src/about.py:58 msgid "It reads ZIP, RAR and tar archives, as well as plain image files." msgstr "Čte ZIP, RAR a tar archivy, stejně jako prosté obrázkové soubory." # # File: src/about.py, line: 59 #: src/about.py:60 msgid "Comix is licensed under the GNU General Public License." msgstr "Comix je licencován pod GNU obecnou veřejnou licencí." # # File: src/about.py, line: 75 #: src/about.py:83 msgid "Developer" msgstr "Vývojář" # # File: src/about.py, line: 77 #: src/about.py:84 #: src/about.py:85 msgid "Simplified Chinese translation" msgstr "Překlad do zjednodušené čínštiny" # # File: src/about.py, line: 78 #: src/about.py:86 msgid "Spanish translation" msgstr "Překlad do španělštiny" # # File: src/about.py, line: 79 #: src/about.py:87 msgid "Brazilian Portuguese translation" msgstr "Překlad do brazilské portugalštiny" # # File: src/about.py, line: 81 #: src/about.py:88 msgid "German translation and Nautilus thumbnailer" msgstr "Překlad do němčiny a vytvářeč náhledů pro Nautilus" # # File: src/about.py, line: 82 #: src/about.py:89 #: src/about.py:90 msgid "Italian translation" msgstr "Překlad do italštiny" # # File: src/about.py, line: 83 #: src/about.py:91 msgid "Dutch translation" msgstr "Překlad do holandštiny" # # File: src/about.py, line: 84 #: src/about.py:92 msgid "French translation" msgstr "Překlad do francouzštiny" # # File: src/about.py, line: 85 #: src/about.py:93 #: src/about.py:94 msgid "Polish translation" msgstr "Překlad do polštiny" # # File: src/about.py, line: 86 #: src/about.py:95 msgid "Greek translation" msgstr "Překlad do řečtiny" # # File: src/about.py, line: 87 #: src/about.py:96 msgid "Catalan translation" msgstr "Překlad do katalánštiny" # # File: src/about.py, line: 88 #: src/about.py:97 #: src/about.py:98 msgid "Traditional Chinese translation" msgstr "Překlad do tradiční čínštiny" # # File: src/about.py, line: 89 #: src/about.py:99 msgid "Japanese translation" msgstr "Překlad do japonštiny" # # File: src/about.py, line: 90 #: src/about.py:100 msgid "Hungarian translation" msgstr "Překlad do maďarštiny" # # File: src/about.py, line: 91 #: src/about.py:101 msgid "Russian translation" msgstr "Překlad do maďarštiny" # # File: src/about.py, line: 92 #: src/about.py:102 msgid "Croatian translation" msgstr "Překlad do chorvatštiny" # # File: src/about.py, line: 93 #: src/about.py:103 msgid "Korean translation" msgstr "Překlad do korejštiny" # # File: src/about.py, line: 94 #: src/about.py:104 msgid "Persian translation" msgstr "Překlad do perštiny" # # File: src/about.py, line: 95 #: src/about.py:105 msgid "Indonesian translation" msgstr "Překlad do indonéštiny" # # File: src/about.py, line: 96 #: src/about.py:106 msgid "Czech translation" msgstr "Překlad do češtiny" # # File: src/about.py, line: 97 #: src/about.py:107 msgid "Icon design" msgstr "Ikony" # # File: src/about.py, line: 106 #: src/about.py:114 msgid "Credits" msgstr "Poděkování" # # File: src/archive.py, line: 66 #: src/archive.py:66 msgid "Could not find RAR file extractor!" msgstr "Nelze nalézt rozbalovač souborů RAR!" # # File: src/archive.py, line: 68 #: src/archive.py:68 msgid "You need either the rar or the unrar program installed in order to read RAR (.cbr) files." msgstr "Ke čtení RAR (.cbr) souborů je třeba mít nejprve nainstalovaný program rar nebo unrar." # # File: src/archive.py, line: 301 #: src/archive.py:305 msgid "ZIP archive" msgstr "Archiv ZIP" # # File: src/archive.py, line: 302 #: src/archive.py:306 msgid "Tar archive" msgstr "Archiv tar" # # File: src/archive.py, line: 303 #: src/archive.py:307 msgid "Gzip compressed tar archive" msgstr "Archiv tar komprimovaný pomocí gzip" # # File: src/archive.py, line: 304 #: src/archive.py:308 msgid "Bzip2 compressed tar archive" msgstr "Archiv tar komprimovaný pomocí bzip2" # # File: src/archive.py, line: 305 #: src/archive.py:309 msgid "RAR archive" msgstr "Archiv RAR" # # File: src/bookmark.py, line: 27 #: src/bookmark.py:28 msgid "_Add bookmark" msgstr "_Přidat záložku" # # File: src/bookmark.py, line: 29 #: src/bookmark.py:30 msgid "_Edit bookmarks..." msgstr "_Upravit záložky…" # # File: src/bookmark.py, line: 31 #: src/bookmark.py:32 msgid "_Clear bookmarks..." msgstr "_Vymazat záložky…" # # File: src/bookmark.py, line: 77 #: src/bookmark.py:78 msgid "Clear all bookmarks?" msgstr "Vymazat všechny záložky?" # # File: src/bookmark.py, line: 79 #: src/bookmark.py:80 msgid "All stored bookmarks will be removed. Are you sure that you want to continue?" msgstr "Všechny uložené záložky budou tímto odstraněny. Jste si jisti, že chcete pokračovat?" # # File: src/bookmark.py, line: 229 #: src/bookmark.py:230 msgid "Edit bookmarks" msgstr "Upravit záložky" # # File: src/bookmark.py, line: 255 # File: src/edit.py, line: 267 #: src/bookmark.py:256 #: src/edit.py:270 msgid "Name" msgstr "Jméno" # # File: src/bookmark.py, line: 256 #: src/bookmark.py:257 msgid "Page" msgstr "Strana" # # File: src/comment.py, line: 16 # File: src/preferences.py, line: 288 #: src/comment.py:16 #: src/preferences.py:299 msgid "Comments" msgstr "Komentáře" # # File: src/comment.py, line: 53 #: src/comment.py:53 #, python-format msgid "Could not read %s" msgstr "%s nelze načíst" # # File: src/deprecated.py, line: 16 #: src/deprecated.py:16 msgid "There are deprecated files left on your computer." msgstr "Na vašem počítači byly nalezeny zastaralé soubory." # # File: src/deprecated.py, line: 22 #: src/deprecated.py:22 msgid "Some old files (that were used for storing preferences, the library, bookmarks etc. for older versions of Comix) were found on your computer. If you do not plan on using the older versions of Comix again, you should remove these files in order to save some disk space. Do you want these files to be removed for you now?" msgstr "Na vašem počítači byly nalezeny soubory vytvořené starší verzí Comixu (uživatelské nastavení, knihovna, záložky atd.). Pokud neplánujete další používání některé ze starších verzí, je možno odstraněním těchto souborů uvolnit trochu místa na disku. Přejete si tyto soubory nyní odstranit?" # # File: src/edit.py, line: 28 #: src/edit.py:29 msgid "Edit archive" msgstr "Upravit archiv" # # File: src/edit.py, line: 36 #: src/edit.py:37 msgid "Import" msgstr "Importovat" # # File: src/edit.py, line: 50 #: src/edit.py:51 msgid "Images" msgstr "Obrázky" # # File: src/edit.py, line: 51 #: src/edit.py:52 msgid "Other files" msgstr "Ostatní soubory" # # File: src/edit.py, line: 99 #: src/edit.py:101 msgid "The new archive could not be saved!" msgstr "Nelze uložit nový archiv!" # # File: src/edit.py, line: 101 #: src/edit.py:103 msgid "The original files have not been removed." msgstr "Původní soubory nebyly odstraněny." # # File: src/edit.py, line: 115 #: src/edit.py:117 msgid "Archives are stored as ZIP files." msgstr "Archivy jsou uchovávány jako ZIP soubory." # # File: src/edit.py, line: 168 # File: src/edit.py, line: 285 #: src/edit.py:170 #: src/edit.py:288 msgid "Remove from archive" msgstr "Odstranit z archivu" # # File: src/edit.py, line: 255 #: src/edit.py:258 msgid "Please note that the only files that are automatically added to this list are those files in archives that Comix recognizes as comments." msgstr "Vezměte prosím v úvahu, že na tento seznam jsou automaticky přidány pouze ty soubory, které Comix v archivech rozpozná jako komentáře." # # File: src/edit.py, line: 270 #: src/edit.py:273 msgid "Size" msgstr "Velikost" # # File: src/enhance.py, line: 51 #: src/enhance.py:51 msgid "Enhance image" msgstr "Vylepšit obrázek" # # File: src/enhance.py, line: 52 #: src/enhance.py:52 msgid "Defaults" msgstr "Výchozí hodnoty" # # File: src/enhance.py, line: 79 #: src/enhance.py:79 msgid "Brightness" msgstr "Jas" # # File: src/enhance.py, line: 90 #: src/enhance.py:90 msgid "Contrast" msgstr "Kontrast" # # File: src/enhance.py, line: 101 #: src/enhance.py:101 msgid "Saturation" msgstr "Sytost" # # File: src/enhance.py, line: 112 #: src/enhance.py:112 msgid "Sharpness" msgstr "Ostrost" # # File: src/enhance.py, line: 126 #: src/enhance.py:126 msgid "Automatically adjust contrast." msgstr "Automaticky upravit kontrast." # # File: src/enhance.py, line: 128 #: src/enhance.py:128 msgid "Automatically adjust contrast (both lightness and darkness), separately for each colour band." msgstr "Automaticky upravit kontrast (světlost i tmavost) odděleně pro každý rozsah barev." # # File: src/filechooser.py, line: 35 # File: src/library.py, line: 489 #: src/filechooser.py:38 #: src/library.py:490 msgid "Open" msgstr "Otevřít" # # File: src/filechooser.py, line: 39 #: src/filechooser.py:42 msgid "Save" msgstr "Uložit" # # File: src/filechooser.py, line: 75 #: src/filechooser.py:78 msgid "All files" msgstr "Všechny soubory" # # File: src/filechooser.py, line: 78 #: src/filechooser.py:81 msgid "All Archives" msgstr "Všechny archivy" # # File: src/filechooser.py, line: 82 #: src/filechooser.py:85 msgid "ZIP archives" msgstr "Archivy ZIP" # # File: src/filechooser.py, line: 84 #: src/filechooser.py:87 msgid "RAR archives" msgstr "Archivy RAR" # # File: src/filechooser.py, line: 86 #: src/filechooser.py:89 msgid "Tar archives" msgstr "Archivy TAR" # # File: src/filechooser.py, line: 125 #: src/filechooser.py:134 #, python-format msgid "A file named '%s' already exists. Do you want to replace it?" msgstr "Soubor jménem „%s“ již existuje. Přejete si jej nahradit?" # # File: src/filechooser.py, line: 128 #: src/filechooser.py:137 msgid "Replacing it will overwrite its contents." msgstr "Nahrazením bude přepsán původní obsah." # # File: src/filechooser.py, line: 171 # File: src/filechooser.py, line: 249 #: src/filechooser.py:182 #: src/filechooser.py:260 msgid "All images" msgstr "Všechny obrázky" # # File: src/filechooser.py, line: 173 # File: src/filechooser.py, line: 251 #: src/filechooser.py:184 #: src/filechooser.py:262 msgid "JPEG images" msgstr "Obrázky JPEG" # # File: src/filechooser.py, line: 174 # File: src/filechooser.py, line: 252 #: src/filechooser.py:185 #: src/filechooser.py:263 msgid "PNG images" msgstr "Obrázky PNG" # # File: src/filechooser.py, line: 195 #: src/filechooser.py:206 msgid "Automatically add the books to this collection" msgstr "Automaticky přidat knihy do této sbírky" # # File: src/filehandler.py, line: 209 #: src/filehandler.py:209 #, python-format msgid "Could not open %s: Is a directory." msgstr "Nelze otevřít %s: Je to složka" # # File: src/filehandler.py, line: 213 #: src/filehandler.py:213 #, python-format msgid "Could not open %s: No such file." msgstr "Nelze otevřít %s: Soubor neexistuje." # # File: src/filehandler.py, line: 217 #: src/filehandler.py:217 #, python-format msgid "Could not open %s: Permission denied." msgstr "Nelze otevřít %s: Přístup odmítnut." # # File: src/filehandler.py, line: 222 #: src/filehandler.py:222 #, python-format msgid "Could not open %s: Unknown file type." msgstr "Nelze otevřít %s: Neznámý typ souboru." # # File: src/filehandler.py, line: 285 #: src/filehandler.py:285 #, python-format msgid "No images in '%s'" msgstr "„%s“ neobsahuje žádné obrázky" # # File: src/filehandler.py, line: 411 #: src/filehandler.py:413 msgid "Unknown filetype" msgstr "Neznámý typ souboru" # # File: src/librarybackend.py, line: 272 # File: src/librarybackend.py, line: 274 #: src/librarybackend.py:273 #: src/librarybackend.py:275 msgid "(Copy)" msgstr "(Kopie)" # # File: src/library.py, line: 38 #: src/library.py:38 msgid "Library" msgstr "Knihovna" # # File: src/library.py, line: 150 #: src/library.py:150 msgid "Rename..." msgstr "Přejmenovat…" # # File: src/library.py, line: 152 #: src/library.py:152 msgid "Duplicate collection" msgstr "Zduplikovat sbírku" # # File: src/library.py, line: 154 #: src/library.py:154 msgid "Remove collection..." msgstr "Odstranit sbírku…" # # File: src/library.py, line: 202 #: src/library.py:202 msgid "All books" msgstr "Všechny knihy" # # File: src/library.py, line: 231 #: src/library.py:231 msgid "Remove collection from the library?" msgstr "Odstranit sbírku z knihovny?" # # File: src/library.py, line: 233 #: src/library.py:233 msgid "The selected collection will be removed from the library (but the books and subcollections in it will remain). Are you sure that you want to continue?" msgstr "Vybraná sbírka bude tímto odstraněna z knihovny (přičemž knihy a podsbírky v ní zůstanou zachovány). Jste si jisti, že chcete pokračovat?" # # File: src/library.py, line: 251 #: src/library.py:251 msgid "Rename collection?" msgstr "Přejmenovat sbírku?" # # File: src/library.py, line: 253 #: src/library.py:253 msgid "Please enter a new name for the selected collection." msgstr "Prosím vložte nové jméno vybrané sbírky." # # File: src/library.py, line: 271 #: src/library.py:271 #, python-format msgid "Could not change the name to '%s'." msgstr "Nelze změnit jméno na „%s“." # # File: src/library.py, line: 275 # File: src/library.py, line: 881 #: src/library.py:275 #: src/library.py:882 msgid "A collection by that name already exists." msgstr "Sbírka tohoto jména již existuje." # # File: src/library.py, line: 285 #: src/library.py:285 msgid "Could not duplicate collection." msgstr "Sbírku nelze zduplikovat." # # File: src/library.py, line: 382 #: src/library.py:382 msgid "Root" msgstr "Kořen" # # File: src/library.py, line: 386 #: src/library.py:386 #, python-format msgid "Put the collection '%(subcollection)s' in the collection '%(supercollection)s'." msgstr "Vložit sbírku „%(subcollection)s“ do sbírky „%(supercollection)s“." # # File: src/library.py, line: 407 #: src/library.py:407 #, python-format msgid "Add books to '%s'." msgstr "Přidat knihy do „%s“." # # File: src/library.py, line: 411 #: src/library.py:411 #, python-format msgid "Move books from '%(source collection)s' to '%(destination collection)s'." msgstr "Přesunout knihy z „%(source collection)s“ do „%(destination collection)s“." # # File: src/library.py, line: 492 #: src/library.py:493 msgid "Remove from this collection" msgstr "Odstranit z této sbírky" # # File: src/library.py, line: 495 #: src/library.py:496 msgid "Remove from the library..." msgstr "Odstranit z knihovny…" # # File: src/library.py, line: 588 #: src/library.py:589 #, python-format msgid "Removed %(num)d book(s) from '%(collection)s'." msgstr "Odstraněno %(num)d knih ze sbírky „%(collection)s“." # # File: src/library.py, line: 597 #: src/library.py:598 msgid "Remove books from the library?" msgstr "Odstranit knihy z knihovny?" # # File: src/library.py, line: 599 #: src/library.py:600 msgid "The selected books will be removed from the library (but the original files will be untouched). Are you sure that you want to continue?" msgstr "Vybrané knihy budou tímto odstraněny z knihovny (přičemž původní soubory zůstanou netknuty). Jste si jisti, že chcete pokračovat?" # # File: src/library.py, line: 609 #: src/library.py:610 #, python-format msgid "Removed %d book(s) from the library." msgstr "Odstraněno %d knih z knihovny." # # File: src/library.py, line: 769 #: src/library.py:770 msgid "Search" msgstr "Hledat" # # File: src/library.py, line: 774 #: src/library.py:775 msgid "Display only those books that have the specified text string in their full path. The search is not case sensitive." msgstr "Zobrazit pouze ty knihy, jejichž celá cesta obsahuje daný výraz. Vyhledávání nerozlišuje velká a malá písmena." # # File: src/library.py, line: 776 #: src/library.py:777 msgid "Cover size" msgstr "Velikost přebalu" # # File: src/library.py, line: 789 #: src/library.py:790 msgid "Add books" msgstr "Přidat knihy" # # File: src/library.py, line: 793 #: src/library.py:794 msgid "Add more books to the library." msgstr "Přidat další knihy do knihovny." # # File: src/library.py, line: 795 #: src/library.py:796 msgid "Add collection" msgstr "Přidat sbírku" # # File: src/library.py, line: 800 #: src/library.py:801 msgid "Add a new empty collection." msgstr "Přidat novou prázdnou sbírku." # # File: src/library.py, line: 806 #: src/library.py:807 msgid "Open the selected book." msgstr "Otevřít vybranou knihu." # # File: src/library.py, line: 832 # File: src/properties.py, line: 113 #: src/library.py:833 #: src/properties.py:118 #, python-format msgid "%d pages" msgstr "%d stránek" # # File: src/library.py, line: 854 #: src/library.py:855 msgid "Add new collection?" msgstr "Přidat novou sbírku?" # # File: src/library.py, line: 856 #: src/library.py:857 msgid "Please enter a name for the new collection." msgstr "Prosím vložte jméno nové sbírky." # # File: src/library.py, line: 862 #: src/library.py:863 msgid "New collection" msgstr "Nová sbírka" # # File: src/library.py, line: 876 #: src/library.py:877 #, python-format msgid "Could not add a new collection called '%s'." msgstr "Nelze přidat novou sbírku jménem „%s“." # # File: src/library.py, line: 910 #: src/library.py:911 msgid "Adding books" msgstr "Přidávají se knihy" # # File: src/library.py, line: 930 #: src/library.py:931 msgid "Added books" msgstr "Přidané knihy" # # File: src/library.py, line: 952 #: src/library.py:953 #, python-format msgid "Adding '%s'..." msgstr "Přidává se „%s“…" # # File: src/main.py, line: 666 #: src/main.py:699 msgid "SLIDESHOW" msgstr "PROMÍTÁNÍ OBRÁZKŮ" # # File: src/preferences.py, line: 78 #: src/preferences.py:80 msgid "Preferences" msgstr "Nastavení" # # File: src/preferences.py, line: 93 #: src/preferences.py:95 msgid "Background" msgstr "Pozadí" # # File: src/preferences.py, line: 95 #: src/preferences.py:97 msgid "Use this colour as background" msgstr "Používat tuto barvu jako pozadí" # # File: src/preferences.py, line: 97 #: src/preferences.py:99 msgid "Always use this selected colour as the background colour." msgstr "Vždy používat vybranou barvu jako barvu pozadí." # # File: src/preferences.py, line: 102 #: src/preferences.py:104 msgid "Use dynamic background colour." msgstr "Používat dynamickou barvu pozadí." # # File: src/preferences.py, line: 106 #: src/preferences.py:108 msgid "Automatically pick a background colour that fits the viewed image." msgstr "Automaticky vybírat barvu hodící se k prohlíženému obrázku." # # File: src/preferences.py, line: 109 #: src/preferences.py:111 msgid "Thumbnails" msgstr "Náhledy" # # File: src/preferences.py, line: 110 #: src/preferences.py:112 msgid "Thumbnail size (in pixels)" msgstr "Velikost náhledu (v pixelech)" # # File: src/preferences.py, line: 117 #: src/preferences.py:119 msgid "Show page numbers on thumbnails." msgstr "Zobrazit čísla stran v náhledech." # # File: src/preferences.py, line: 124 #: src/preferences.py:126 msgid "Magnifying Glass" msgstr "Lupa" # # File: src/preferences.py, line: 125 #: src/preferences.py:127 msgid "Magnifying glass size (in pixels)" msgstr "Velikost lupy (v pixelech)" # # File: src/preferences.py, line: 131 #: src/preferences.py:133 msgid "Set the size of the magnifying glass. It is a square with a side of this many pixels." msgstr "Nastavit velikost lupy, čtverce o velikosti strany daného počtu pixelů." # # File: src/preferences.py, line: 133 #: src/preferences.py:135 msgid "Magnification factor" msgstr "Úroveň zvětšení" # # File: src/preferences.py, line: 140 #: src/preferences.py:142 msgid "Set the magnification factor of the magnifying glass." msgstr "Nastavit úroveň zvětšení lupy." # # File: src/preferences.py, line: 143 #: src/preferences.py:145 msgid "Image scaling" msgstr "Škálování obrázku." # # File: src/preferences.py, line: 144 #: src/preferences.py:146 msgid "Stretch small images." msgstr "Roztáhnout malé obrázky." # # File: src/preferences.py, line: 148 #: src/preferences.py:150 msgid "Stretch images to a size that is larger than their original size if the current zoom mode requests it. If this preference is unset, images are never scaled to be larger than their original size." msgstr "Roztáhnout obrázky na větší než původní velikost, pokud to daný režim přiblížení vyžaduje. Není-li tato volba nastavena, obrázky nejsou nikdy zvětšovány přes svou původní velikost." # # File: src/preferences.py, line: 151 #: src/preferences.py:153 msgid "Transparency" msgstr "Průhlednost" # # File: src/preferences.py, line: 153 #: src/preferences.py:155 msgid "Use checkered background for transparent images." msgstr "Používat šachovnicové pozadí pro průhledné obrázky." # # File: src/preferences.py, line: 159 #: src/preferences.py:161 msgid "Use a grey checkered background for transparent images. If this preference is unset, the background is plain white instead." msgstr "Používat šedé šachovnicové pozadí pro průhledné obrázky. Není-li tato volba nastavena, je použito prosté bílé pozadí." # # File: src/preferences.py, line: 161 #: src/preferences.py:163 msgid "Appearance" msgstr "Vzhled" # # File: src/preferences.py, line: 167 #: src/preferences.py:169 msgid "Scroll" msgstr "Posun" # # File: src/preferences.py, line: 169 #: src/preferences.py:171 msgid "Use smart space key scrolling." msgstr "Používat chytré posouvání mezerníkem." # # File: src/preferences.py, line: 174 #: src/preferences.py:176 msgid "Use smart scrolling with the space key. Normally the space key scrolls only right down (or up when shift is pressed), but with this preference set it also scrolls sideways and so tries to follow the natural reading order of the comic book." msgstr "Používat chytré posouvání mezerníkem. Běžně mezerník posouvá stranu pouze přímo dolů (nebo nahoru, je-li přidržen Shift), s tímto nastavením je však strana posouvána i do stran ve snaze následovat přirozený způsob čtení komiksu." #: src/preferences.py:180 msgid "Flip pages when scrolling off the edges of the page." msgstr "Obracet strany při posunu přes okraj strany." #: src/preferences.py:185 msgid "Flip pages when scrolling \"off the page\" with the scroll wheel or with the arrow keys. It takes three consecutive \"steps\" with the scroll wheel or the arrow keys for the pages to be flipped." msgstr "Obracet strany při posunu „mimo stranu“ šipkami nebo kolečkem myši. Obrácení vyžaduje tři sousledné „kroky“ stejnou klávesou nebo kolečkem ve stejném směru." # # File: src/preferences.py, line: 177 # File: src/ui.py, line: 296 #: src/preferences.py:188 #: src/ui.py:298 msgid "Double page mode" msgstr "Dvoustránkový režim" # # File: src/preferences.py, line: 179 #: src/preferences.py:190 msgid "Flip two pages in double page mode." msgstr "Obracet po dvou stranách ve dvoustránkovém režimu." # # File: src/preferences.py, line: 184 #: src/preferences.py:195 msgid "Flip two pages, instead of one, each time we flip pages in double page mode." msgstr "Obracet dvě strany místo jedné při listování ve dvoustránkovém režimu." # # File: src/preferences.py, line: 187 #: src/preferences.py:198 msgid "Show only one wide image in double page mode." msgstr "Zobrazovat pouze jeden široký obrázek ve dvoustránkovém režimu." # # File: src/preferences.py, line: 193 #: src/preferences.py:204 msgid "Display only one image in double page mode, if the image's width exceeds its height. The result of this is that scans that span two pages are displayed properly (i.e. alone) also in double page mode." msgstr "Zobrazit pouze jeden obrázek ve dvoustránkovém režimu, přesáhne-li šířka obrázku jeho výšku. Ve výsledku jsou takto zobrazovány vcelku naskenované dvoustrany správně (t.j. jako jediný obrázek) i ve dvoustránkovém režimu." # # File: src/preferences.py, line: 196 #: src/preferences.py:207 msgid "Files" msgstr "Soubory" # # File: src/preferences.py, line: 198 #: src/preferences.py:209 msgid "Automatically open the next archive." msgstr "Automaticky otvírat následující archiv." # # File: src/preferences.py, line: 203 #: src/preferences.py:214 msgid "Automatically open the next archive in the directory when flipping past the last page, or the previous archive when flipping past the first page." msgstr "Automaticky otevírat následující archiv ve složce po otočení poslední strany, či naopak archiv předchozí při nalistování před první stranu." # # File: src/preferences.py, line: 206 #: src/preferences.py:217 msgid "Automatically open the last viewed file on startup." msgstr "Při startu automaticky otevírat poslední prohlížený soubor." # # File: src/preferences.py, line: 211 #: src/preferences.py:222 msgid "Automatically open, on startup, the file that was open when Comix was last closed." msgstr "Automaticky otevírat při spuštění soubor otevřený při posledním ukončení Comixu." # # File: src/preferences.py, line: 214 #: src/preferences.py:225 msgid "Store information about recently opened files." msgstr "Ukládat informace o nedávno otevřených souborech." # # File: src/preferences.py, line: 219 #: src/preferences.py:230 msgid "Add information about all files opened from within Comix to the shared recent files list." msgstr "Přidávat údaje o všech souborech otevíraných v Comixu na obecný seznam nedávno používaných souborů." # # File: src/preferences.py, line: 222 #: src/preferences.py:233 msgid "Store thumbnails for opened files." msgstr "Ukládat náhledy otevřených souborů." # # File: src/preferences.py, line: 227 #: src/preferences.py:238 msgid "Store thumbnails for opened files according to the freedesktop.org specification. These thumbnails are shared by many other applications, such as most file managers." msgstr "Ukládat náhledy pro otevírané soubory v souladu se specifikací freedesktop.org. Tyto náhledy jsou používány mnoha jinými aplikacemi, jako například většinou správců souborů." # # File: src/preferences.py, line: 230 #: src/preferences.py:241 msgid "Cache" msgstr "Přednačítání" # # File: src/preferences.py, line: 231 #: src/preferences.py:242 msgid "Use a cache to speed up browsing." msgstr "Používat přednačítání pro zrychlení prohlížení." # # File: src/preferences.py, line: 235 #: src/preferences.py:246 msgid "Cache the images that are next to the currently viewed image in order to speed up browsing. Since the speed improvements are quite big, it is recommended that you have this preference set, unless you are running short on free RAM." msgstr "Přednačítat následující obrázky pro urychlení prohlížení. Vzhledem k výraznému zlepšení rychlosti je doporučeno povolit tuto volbu pokud nehrozí nedostatek volné operační paměti." # # File: src/preferences.py, line: 237 #: src/preferences.py:248 msgid "Behaviour" msgstr "Chování" # # File: src/preferences.py, line: 243 #: src/preferences.py:254 msgid "Default modes" msgstr "Výchozí režimy" # # File: src/preferences.py, line: 245 #: src/preferences.py:256 msgid "Use double page mode by default." msgstr "Použít dvoustránkový režim jako výchozí." # # File: src/preferences.py, line: 250 #: src/preferences.py:261 msgid "Use fullscreen by default." msgstr "Použít zobrazení přes celou obrazovku jako výchozí." # # File: src/preferences.py, line: 255 #: src/preferences.py:266 msgid "Use manga mode by default." msgstr "Použít manga režim jako výchozí." # # File: src/preferences.py, line: 260 #: src/preferences.py:271 msgid "Default zoom mode" msgstr "Výchozí úroveň přiblížení" # # File: src/preferences.py, line: 262 # File: src/ui.py, line: 288 #: src/preferences.py:273 #: src/ui.py:290 msgid "Best fit mode" msgstr "Optimální přizpůsobení" # # File: src/preferences.py, line: 263 # File: src/ui.py, line: 290 #: src/preferences.py:274 #: src/ui.py:292 msgid "Fit width mode" msgstr "Přizpůsobit na šířku" # # File: src/preferences.py, line: 264 # File: src/ui.py, line: 292 #: src/preferences.py:275 #: src/ui.py:294 msgid "Fit height mode" msgstr "Přizpůsobit na výšku" # # File: src/preferences.py, line: 265 # File: src/ui.py, line: 294 #: src/preferences.py:276 #: src/ui.py:296 msgid "Manual zoom mode" msgstr "Ruční přiblížení" # # File: src/preferences.py, line: 271 #: src/preferences.py:282 msgid "Fullscreen" msgstr "Celá obrazovka" # # File: src/preferences.py, line: 273 #: src/preferences.py:284 msgid "Automatically hide all toolbars in fullscreen." msgstr "Automaticky schovávat lištu nástrojů při zobrazení přes celou obrazovku." # # File: src/preferences.py, line: 279 #: src/preferences.py:290 msgid "Slideshow" msgstr "Promítání snímků" # # File: src/preferences.py, line: 280 #: src/preferences.py:291 msgid "Slideshow delay (in seconds)" msgstr "Prodleva při promítání obrázků (ve vteřinách)" # # File: src/preferences.py, line: 289 #: src/preferences.py:300 msgid "Comment extensions" msgstr "Přípony komentářů" # # File: src/preferences.py, line: 295 #: src/preferences.py:306 msgid "Treat all files found within archives, that have one of these file endings, as comments." msgstr "Zacházet se soubory s jednou z těchto přípon v názvu jako s komentáři." #: src/preferences.py:309 msgid "Rotation" msgstr "Orientace" #: src/preferences.py:311 msgid "Automatically rotate images according to their metadata." msgstr "Automaticky upravovat orientaci obrázků podle jejich metadat." #: src/preferences.py:316 msgid "Automatically rotate images when an orientation is specified in the image metadata, such as in an Exif tag." msgstr "Automaticky pootáčet obrázky pokud jejich metadata obsahují údaj o orientaci, jako např. značku Exif." # # File: src/preferences.py, line: 297 #: src/preferences.py:318 msgid "Display" msgstr "Zobrazit" # # File: src/properties.py, line: 89 #: src/properties.py:94 msgid "Properties" msgstr "Vlastnosti" # # File: src/properties.py, line: 114 #: src/properties.py:119 #, python-format msgid "%d comments" msgstr "%d komentářů" # # File: src/properties.py, line: 124 # File: src/properties.py, line: 159 #: src/properties.py:129 #: src/properties.py:164 msgid "Location" msgstr "Umístění" # # File: src/properties.py, line: 126 # File: src/properties.py, line: 160 #: src/properties.py:131 #: src/properties.py:165 msgid "Accessed" msgstr "Použitý" # # File: src/properties.py, line: 128 # File: src/properties.py, line: 162 #: src/properties.py:133 #: src/properties.py:167 msgid "Modified" msgstr "Změněný" # # File: src/properties.py, line: 130 # File: src/properties.py, line: 164 #: src/properties.py:135 #: src/properties.py:169 msgid "Permissions" msgstr "Oprávnění" # # File: src/properties.py, line: 131 # File: src/properties.py, line: 165 #: src/properties.py:136 #: src/properties.py:170 msgid "Owner" msgstr "Vlastník" # # File: src/properties.py, line: 135 #: src/properties.py:140 msgid "Archive" msgstr "Archiv" # # File: src/properties.py, line: 169 #: src/properties.py:174 msgid "Image" msgstr "Obrázek" # # File: src/thumbremover.py, line: 22 #: src/thumbremover.py:24 msgid "Thumbnail maintenance" msgstr "Správa náhledů" # # File: src/thumbremover.py, line: 24 #: src/thumbremover.py:26 msgid "Cleanup" msgstr "Pročištění" # # File: src/thumbremover.py, line: 36 #: src/thumbremover.py:38 msgid "Cleanup thumbnails" msgstr "Pročistit náhledy" # # File: src/thumbremover.py, line: 46 #: src/thumbremover.py:48 msgid "Thumbnails for files (such as image files and comic book archives) are stored in your home directory. Many different applications use and create these thumbnails, but sometimes thumbnails remain even though the original files have been removed - wasting space. This dialog can cleanup your stored thumbnails by removing orphaned and outdated thumbnails." msgstr "Náhledy pro soubory (jako jsou třeba obrázky a archivy komiksů) jsou ukládány do vaší domovské složky. Mnoho různých aplikací používá a vytváří tyto náhledy, občas však náhledy zůstanou na disku i po odstranění původních souborů, čím zbytečně zabírají místo. Tento nástroj umožňuje pročistit vaše uložené náhledy odstraněním těch osiřelých a zastaralých." # # File: src/thumbremover.py, line: 58 #: src/thumbremover.py:60 msgid "Thumbnail directory" msgstr "Složka náhledů" # # File: src/thumbremover.py, line: 65 #: src/thumbremover.py:67 msgid "Total number of thumbnails" msgstr "Celkový počet náhledů" # # File: src/thumbremover.py, line: 68 # File: src/thumbremover.py, line: 75 #: src/thumbremover.py:70 #: src/thumbremover.py:77 msgid "Calculating..." msgstr "Přepočítává se…" # # File: src/thumbremover.py, line: 72 #: src/thumbremover.py:74 msgid "Total size of thumbnails" msgstr "Celková velikost náhledů" # # File: src/thumbremover.py, line: 80 #: src/thumbremover.py:82 msgid "Do you want to cleanup orphaned and outdated thumbnails now?" msgstr "Přejete si nyní pročistit osiřelé a zastaralé náhledy?" # # File: src/thumbremover.py, line: 116 #: src/thumbremover.py:118 msgid "Removing thumbnails" msgstr "Odstraňují se náhledy" # # File: src/thumbremover.py, line: 135 #: src/thumbremover.py:137 msgid "Number of removed thumbnails" msgstr "Počet odstraněných náhledů" # # File: src/thumbremover.py, line: 142 #: src/thumbremover.py:144 msgid "Total size of removed thumbnails" msgstr "Celková velikost odstraněných náhledů" # # File: src/thumbremover.py, line: 193 #: src/thumbremover.py:195 #, python-format msgid "Removed thumbnail for '%s'" msgstr "Odstraněn náhled pro „%s“" # # File: src/ui.py, line: 34 #: src/ui.py:34 msgid "_Next page" msgstr "_Následující strana" # # File: src/ui.py, line: 36 #: src/ui.py:36 msgid "_Previous page" msgstr "_Předchozí strana" # # File: src/ui.py, line: 38 #: src/ui.py:38 msgid "_First page" msgstr "P_rvní strana" # # File: src/ui.py, line: 40 #: src/ui.py:40 msgid "_Last page" msgstr "P_oslední strana" # # File: src/ui.py, line: 42 #: src/ui.py:42 msgid "_Zoom in" msgstr "_Přiblížit" # # File: src/ui.py, line: 44 #: src/ui.py:44 msgid "Zoom _out" msgstr "_Oddálit" # # File: src/ui.py, line: 46 #: src/ui.py:46 msgid "O_riginal size" msgstr "Původní _velikost" # # File: src/ui.py, line: 48 #: src/ui.py:48 msgid "_Close" msgstr "_Zavřít" # # File: src/ui.py, line: 50 #: src/ui.py:50 msgid "_Quit" msgstr "_Ukončit" # # File: src/ui.py, line: 52 #: src/ui.py:52 msgid "_Rotate 90 degrees CW" msgstr "Pootočit o 90° _ve směru hodinových ručiček" # # File: src/ui.py, line: 54 #: src/ui.py:54 msgid "Rotate 180 de_grees" msgstr "Pootočit _o 180°" # # File: src/ui.py, line: 56 #: src/ui.py:56 msgid "Rotat_e 90 degrees CCW" msgstr "Pootočit o 90° _proti směru hodinových ručiček" # # File: src/ui.py, line: 58 #: src/ui.py:58 msgid "Fli_p horizontally" msgstr "Převrátit _vodorovně" # # File: src/ui.py, line: 60 #: src/ui.py:60 msgid "Flip _vertically" msgstr "Převrátit _svisle" # # File: src/ui.py, line: 62 #: src/ui.py:62 msgid "Manual _Zoom" msgstr "_Ruční přiblížení" # # File: src/ui.py, line: 63 #: src/ui.py:63 msgid "Open _recent" msgstr "Ot_evřít nedávný" # # File: src/ui.py, line: 64 #: src/ui.py:64 msgid "_Bookmarks" msgstr "_Záložky" # # File: src/ui.py, line: 65 #: src/ui.py:65 msgid "T_oolbars" msgstr "_Lišty nástrojů" # # File: src/ui.py, line: 66 #: src/ui.py:66 msgid "_Edit" msgstr "_Upravit" # # File: src/ui.py, line: 67 #: src/ui.py:67 msgid "_File" msgstr "_Soubor" # # File: src/ui.py, line: 68 #: src/ui.py:68 msgid "_View" msgstr "_Zobrazit" # # File: src/ui.py, line: 69 #: src/ui.py:69 msgid "_Go" msgstr "_Přejít" # # File: src/ui.py, line: 70 #: src/ui.py:70 msgid "_Help" msgstr "_Nápověda" # # File: src/ui.py, line: 71 #: src/ui.py:71 msgid "_Transform" msgstr "_Transformace" # # File: src/ui.py, line: 75 #: src/ui.py:75 msgid "_Fullscreen" msgstr "_Celá obrazovka" # # File: src/ui.py, line: 77 #: src/ui.py:77 msgid "_Double page mode" msgstr "_Dvoustránkový režim" # # File: src/ui.py, line: 79 #: src/ui.py:79 msgid "_Toolbar" msgstr "_Lišta nástrojů" # # File: src/ui.py, line: 81 #: src/ui.py:81 msgid "_Menubar" msgstr "Lišta _nabídky" # # File: src/ui.py, line: 83 #: src/ui.py:83 msgid "St_atusbar" msgstr "_Stavová lišta" # # File: src/ui.py, line: 85 #: src/ui.py:85 msgid "S_crollbars" msgstr "_Posuvníky" # # File: src/ui.py, line: 87 #: src/ui.py:87 msgid "Th_umbnails" msgstr "_Náhledy" # # File: src/ui.py, line: 89 #: src/ui.py:89 msgid "H_ide all" msgstr "_Skrýt vše" # # File: src/ui.py, line: 91 #: src/ui.py:91 msgid "_Manga mode" msgstr "_Manga režim" # # File: src/ui.py, line: 93 #: src/ui.py:93 msgid "_Keep transformation" msgstr "_Zachovat transformaci" # # File: src/ui.py, line: 95 #: src/ui.py:95 msgid "Run _slideshow" msgstr "_Spustit promítání obrázků" # # File: src/ui.py, line: 97 #: src/ui.py:97 msgid "Magnifying _glass" msgstr "_Lupa" # # File: src/ui.py, line: 101 #: src/ui.py:103 msgid "_Best fit mode" msgstr "_Optimální přiblížení" # # File: src/ui.py, line: 103 #: src/ui.py:105 msgid "Fit _width mode" msgstr "Přizpůsobit na _šířku" # # File: src/ui.py, line: 105 #: src/ui.py:107 msgid "Fit _height mode" msgstr "Přizpůsobit na _výšku" # # File: src/ui.py, line: 107 #: src/ui.py:109 msgid "M_anual zoom mode" msgstr "Režim ručního _přiblížení" # # File: src/ui.py, line: 113 #: src/ui.py:115 msgid "_About" msgstr "_O programu" # # File: src/ui.py, line: 115 #: src/ui.py:117 msgid "_View comments..." msgstr "_Prohlédnout komentáře…" # # File: src/ui.py, line: 117 #: src/ui.py:119 msgid "_Edit archive..." msgstr "Upravit _archiv" # # File: src/ui.py, line: 119 #: src/ui.py:121 msgid "_Open..." msgstr "_Otevřít…" # # File: src/ui.py, line: 121 #: src/ui.py:123 msgid "_Properties" msgstr "_Vlastnosti" # # File: src/ui.py, line: 123 #: src/ui.py:125 msgid "_Enhance image..." msgstr "_Vylepšit obrázek" # # File: src/ui.py, line: 126 #: src/ui.py:128 msgid "_Thumbnail maintenance..." msgstr "_Správa náhledů" # # File: src/ui.py, line: 128 #: src/ui.py:130 msgid "Pr_eferences" msgstr "_Nastavení" # # File: src/ui.py, line: 132 #: src/ui.py:134 msgid "_Library..." msgstr "_Knihovna" # # File: src/ui.py, line: 282 #: src/ui.py:284 msgid "First page" msgstr "První strana" # # File: src/ui.py, line: 284 #: src/ui.py:286 msgid "Previous page" msgstr "Předchozí strana" # # File: src/ui.py, line: 285 #: src/ui.py:287 msgid "Next page" msgstr "Následující strana" # # File: src/ui.py, line: 286 #: src/ui.py:288 msgid "Last page" msgstr "Poslední strana" # # File: src/ui.py, line: 297 #: src/ui.py:299 msgid "Manga mode" msgstr "Manga režim" # # File: src/ui.py, line: 298 #: src/ui.py:300 msgid "Magnifying glass" msgstr "Lupa" comix-4.0.4/messages/cs/LC_MESSAGES/comix.mo0000644000175000001440000005726711137627234017237 0ustar sorkusersTa &)-<W YEd x     M9 T_!g.].53d$*ROB8k     !E67|+"("H"k %%  5 GUg pzrJ <   ! ! 2!?! N!\! b!m!~!!!!!!4"#"L"6# I#+T### ## ## ####A$U$ i$u$$ $$$$$$$%!% 5% @%M%^%Hg%%% %%%% & && 6&B& H&S& X&d&+x&4&&b' u' ' ' 'O' ' ((#/(S(h(|((.($()")6) I))S)})))))) ) ) )))*5 *UC* *-* **+ + +?=+}, ,.,,"q--W. m. w. . .#.)..r/1 0;0O0e0 0a01 2)2B2 b2Xo22!2{20w3 333445-5gK5 5 5 55 55 566 62686I6\6n6 t6 6666 6 6 66 666 67 7"7<7 E7P7V7h7`q78 88$8@9 \9 g9 q9 999o9";:^:u:::::::]:3V;;;+;*;W;G<Oe<A<<+=[=B>?^>l> ? ??%9?_?&c???d@{@@@@M@8#A\A sAA-A!AA'A!B&=B(dB*BBB BBCC!,CNC `CkCtCygD=DE6EJEcErEEE EEEEEF-FAF.F6"GOYGGG:GH%%H KHXHqHwHHH HHFH I $I2IJIbIsI |I IIIIII IIJ %JS0JJ JJ%JJJ KK(KBK SK ]KjK qK~K%K.KKzL L LL LML M M*MFMdMyMMM9MMN9NRNhN+xNN4NN NNO6O MOYO`OhOnO#uOKOOEO$3P&XPPP5P@PR0R5ARwR(6S_S+TGT ZT eT qT{T%TTKU7UV,V>V]VfVW*X@X"\X XMXX:X+Y;Y/Y$Z9BZ%|ZZ+["[j[ [\ f\ r\ |\\\ \\ \\\]])]=]E]T] e] o]{]] ] ]]] ]] ^ ^1^N^a^ t^ ^^ ^7H*0\;F:-pw6uKf'm<3ABs1!>k8 YdrS=c)Wt%TLD#l ^ aERy[ b}{ChJV]/no2x .,59Mg+(~v?O$`jI|4GzZXP"QeUNi_q&@ %d comments%d pages(Copy)A collection by that name already exists.A file named '%s' already exists. Do you want to replace it?AboutAccessedAdd a new empty collection.Add booksAdd books to '%s'.Add collectionAdd information about all files opened from within Comix to the shared recent files list.Add more books to the library.Add new collection?Added booksAdding '%s'...Adding booksAll ArchivesAll booksAll filesAll imagesAll stored bookmarks will be removed. Are you sure that you want to continue?Always use this selected colour as the background colour.AppearanceArchiveArchives are stored as ZIP files.Automatically add the books to this collectionAutomatically adjust contrast (both lightness and darkness), separately for each colour band.Automatically adjust contrast.Automatically hide all toolbars in fullscreen.Automatically open the last viewed file on startup.Automatically open the next archive in the directory when flipping past the last page, or the previous archive when flipping past the first page.Automatically open the next archive.Automatically open, on startup, the file that was open when Comix was last closed.Automatically pick a background colour that fits the viewed image.Automatically rotate images according to their metadata.Automatically rotate images when an orientation is specified in the image metadata, such as in an Exif tag.BackgroundBehaviourBest fit modeBrazilian Portuguese translationBrightnessBzip2 compressed tar archiveCacheCache the images that are next to the currently viewed image in order to speed up browsing. Since the speed improvements are quite big, it is recommended that you have this preference set, unless you are running short on free RAM.Calculating...Catalan translationCleanupCleanup thumbnailsClear all bookmarks?Comix is an image viewer specifically designed to handle comic books.Comix is licensed under the GNU General Public License.Comment extensionsCommentsContrastCould not add a new collection called '%s'.Could not change the name to '%s'.Could not duplicate collection.Could not find RAR file extractor!Could not open %s: Is a directory.Could not open %s: No such file.Could not open %s: Permission denied.Could not open %s: Unknown file type.Could not read %sCover sizeCreditsCroatian translationCzech translationDefault modesDefault zoom modeDefaultsDeveloperDisplayDisplay only one image in double page mode, if the image's width exceeds its height. The result of this is that scans that span two pages are displayed properly (i.e. alone) also in double page mode.Display only those books that have the specified text string in their full path. The search is not case sensitive.Do you want to cleanup orphaned and outdated thumbnails now?Double page modeDuplicate collectionDutch translationEdit archiveEdit bookmarksEnhance imageFilesFirst pageFit _height modeFit _width modeFit height modeFit width modeFli_p horizontallyFlip _verticallyFlip pages when scrolling "off the page" with the scroll wheel or with the arrow keys. It takes three consecutive "steps" with the scroll wheel or the arrow keys for the pages to be flipped.Flip pages when scrolling off the edges of the page.Flip two pages in double page mode.Flip two pages, instead of one, each time we flip pages in double page mode.French translationFullscreenGerman translation and Nautilus thumbnailerGreek translationGzip compressed tar archiveH_ide allHungarian translationIcon designImageImage scalingImagesImportIndonesian translationIt reads ZIP, RAR and tar archives, as well as plain image files.Italian translationJPEG imagesJapanese translationKorean translationLast pageLibraryLocationM_anual zoom modeMagnification factorMagnifying GlassMagnifying _glassMagnifying glassMagnifying glass size (in pixels)Manga modeManual _ZoomManual zoom modeModifiedMove books from '%(source collection)s' to '%(destination collection)s'.NameNew collectionNext pageNo images in '%s'Number of removed thumbnailsO_riginal sizeOpenOpen _recentOpen the selected book.Other filesOwnerPNG imagesPagePermissionsPersian translationPlease enter a name for the new collection.Please enter a new name for the selected collection.Please note that the only files that are automatically added to this list are those files in archives that Comix recognizes as comments.Polish translationPr_eferencesPreferencesPrevious pagePropertiesPut the collection '%(subcollection)s' in the collection '%(supercollection)s'.RAR archiveRAR archivesRemove books from the library?Remove collection from the library?Remove collection...Remove from archiveRemove from the library...Remove from this collectionRemoved %(num)d book(s) from '%(collection)s'.Removed %d book(s) from the library.Removed thumbnail for '%s'Removing thumbnailsRename collection?Rename...Replacing it will overwrite its contents.RootRotat_e 90 degrees CCWRotate 180 de_greesRotationRun _slideshowRussian translationSLIDESHOWS_crollbarsSaturationSaveScrollSearchSet the magnification factor of the magnifying glass.Set the size of the magnifying glass. It is a square with a side of this many pixels.SharpnessShow only one wide image in double page mode.Show page numbers on thumbnails.Simplified Chinese translationSizeSlideshowSlideshow delay (in seconds)Some old files (that were used for storing preferences, the library, bookmarks etc. for older versions of Comix) were found on your computer. If you do not plan on using the older versions of Comix again, you should remove these files in order to save some disk space. Do you want these files to be removed for you now?Spanish translationSt_atusbarStore information about recently opened files.Store thumbnails for opened files according to the freedesktop.org specification. These thumbnails are shared by many other applications, such as most file managers.Store thumbnails for opened files.Stretch images to a size that is larger than their original size if the current zoom mode requests it. If this preference is unset, images are never scaled to be larger than their original size.Stretch small images.T_oolbarsTar archiveTar archivesTh_umbnailsThe new archive could not be saved!The original files have not been removed.The selected books will be removed from the library (but the original files will be untouched). Are you sure that you want to continue?The selected collection will be removed from the library (but the books and subcollections in it will remain). Are you sure that you want to continue?There are deprecated files left on your computer.Thumbnail directoryThumbnail maintenanceThumbnail size (in pixels)ThumbnailsThumbnails for files (such as image files and comic book archives) are stored in your home directory. Many different applications use and create these thumbnails, but sometimes thumbnails remain even though the original files have been removed - wasting space. This dialog can cleanup your stored thumbnails by removing orphaned and outdated thumbnails.Total number of thumbnailsTotal size of removed thumbnailsTotal size of thumbnailsTraditional Chinese translationTransparencyTreat all files found within archives, that have one of these file endings, as comments.Unknown filetypeUse a cache to speed up browsing.Use a grey checkered background for transparent images. If this preference is unset, the background is plain white instead.Use checkered background for transparent images.Use double page mode by default.Use dynamic background colour.Use fullscreen by default.Use manga mode by default.Use smart scrolling with the space key. Normally the space key scrolls only right down (or up when shift is pressed), but with this preference set it also scrolls sideways and so tries to follow the natural reading order of the comic book.Use smart space key scrolling.Use this colour as backgroundYou need either the rar or the unrar program installed in order to read RAR (.cbr) files.ZIP archiveZIP archivesZoom _out_About_Add bookmark_Best fit mode_Bookmarks_Clear bookmarks..._Close_Double page mode_Edit_Edit archive..._Edit bookmarks..._Enhance image..._File_First page_Fullscreen_Go_Help_Keep transformation_Last page_Library..._Manga mode_Menubar_Next page_Open..._Previous page_Properties_Quit_Rotate 90 degrees CW_Thumbnail maintenance..._Toolbar_Transform_View_View comments..._Zoom inProject-Id-Version: PACKAGE VERSION Report-Msgid-Bugs-To: POT-Creation-Date: 2008-11-22 02:42+0100 PO-Revision-Date: 2009-01-25 21:54+0100 Last-Translator: Jan Nekvasil Language-Team: LANGUAGE MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit Generated-By: pygettext.py 1.5 %d komentářů%d stránek(Kopie)Sbírka tohoto jména již existuje.Soubor jménem „%s“ již existuje. Přejete si jej nahradit?O programuPoužitýPřidat novou prázdnou sbírku.Přidat knihyPřidat knihy do „%s“.Přidat sbírkuPřidávat údaje o všech souborech otevíraných v Comixu na obecný seznam nedávno používaných souborů.Přidat další knihy do knihovny.Přidat novou sbírku?Přidané knihyPřidává se „%s“…Přidávají se knihyVšechny archivyVšechny knihyVšechny souboryVšechny obrázkyVšechny uložené záložky budou tímto odstraněny. Jste si jisti, že chcete pokračovat?Vždy používat vybranou barvu jako barvu pozadí.VzhledArchivArchivy jsou uchovávány jako ZIP soubory.Automaticky přidat knihy do této sbírkyAutomaticky upravit kontrast (světlost i tmavost) odděleně pro každý rozsah barev.Automaticky upravit kontrast.Automaticky schovávat lištu nástrojů při zobrazení přes celou obrazovku.Při startu automaticky otevírat poslední prohlížený soubor.Automaticky otevírat následující archiv ve složce po otočení poslední strany, či naopak archiv předchozí při nalistování před první stranu.Automaticky otvírat následující archiv.Automaticky otevírat při spuštění soubor otevřený při posledním ukončení Comixu.Automaticky vybírat barvu hodící se k prohlíženému obrázku.Automaticky upravovat orientaci obrázků podle jejich metadat.Automaticky pootáčet obrázky pokud jejich metadata obsahují údaj o orientaci, jako např. značku Exif.PozadíChováníOptimální přizpůsobeníPřeklad do brazilské portugalštinyJasArchiv tar komprimovaný pomocí bzip2PřednačítáníPřednačítat následující obrázky pro urychlení prohlížení. Vzhledem k výraznému zlepšení rychlosti je doporučeno povolit tuto volbu pokud nehrozí nedostatek volné operační paměti.Přepočítává se…Překlad do katalánštinyPročištěníPročistit náhledyVymazat všechny záložky?Comix je prohlížeč obrázků obzvláště uzpůsobený k práci s komiksy.Comix je licencován pod GNU obecnou veřejnou licencí.Přípony komentářůKomentářeKontrastNelze přidat novou sbírku jménem „%s“.Nelze změnit jméno na „%s“.Sbírku nelze zduplikovat.Nelze nalézt rozbalovač souborů RAR!Nelze otevřít %s: Je to složkaNelze otevřít %s: Soubor neexistuje.Nelze otevřít %s: Přístup odmítnut.Nelze otevřít %s: Neznámý typ souboru.%s nelze načístVelikost přebaluPoděkováníPřeklad do chorvatštinyPřeklad do češtinyVýchozí režimyVýchozí úroveň přiblíženíVýchozí hodnotyVývojářZobrazitZobrazit pouze jeden obrázek ve dvoustránkovém režimu, přesáhne-li šířka obrázku jeho výšku. Ve výsledku jsou takto zobrazovány vcelku naskenované dvoustrany správně (t.j. jako jediný obrázek) i ve dvoustránkovém režimu.Zobrazit pouze ty knihy, jejichž celá cesta obsahuje daný výraz. Vyhledávání nerozlišuje velká a malá písmena.Přejete si nyní pročistit osiřelé a zastaralé náhledy?Dvoustránkový režimZduplikovat sbírkuPřeklad do holandštinyUpravit archivUpravit záložkyVylepšit obrázekSouboryPrvní stranaPřizpůsobit na _výškuPřizpůsobit na _šířkuPřizpůsobit na výškuPřizpůsobit na šířkuPřevrátit _vodorovněPřevrátit _svisleObracet strany při posunu „mimo stranu“ šipkami nebo kolečkem myši. Obrácení vyžaduje tři sousledné „kroky“ stejnou klávesou nebo kolečkem ve stejném směru.Obracet strany při posunu přes okraj strany.Obracet po dvou stranách ve dvoustránkovém režimu.Obracet dvě strany místo jedné při listování ve dvoustránkovém režimu.Překlad do francouzštinyCelá obrazovkaPřeklad do němčiny a vytvářeč náhledů pro NautilusPřeklad do řečtinyArchiv tar komprimovaný pomocí gzip_Skrýt všePřeklad do maďarštinyIkonyObrázekŠkálování obrázku.ObrázkyImportovatPřeklad do indonéštinyČte ZIP, RAR a tar archivy, stejně jako prosté obrázkové soubory.Překlad do italštinyObrázky JPEGPřeklad do japonštinyPřeklad do korejštinyPoslední stranaKnihovnaUmístěníRežim ručního _přiblíženíÚroveň zvětšeníLupa_LupaLupaVelikost lupy (v pixelech)Manga režim_Ruční přiblíženíRuční přiblíženíZměněnýPřesunout knihy z „%(source collection)s“ do „%(destination collection)s“.JménoNová sbírkaNásledující strana„%s“ neobsahuje žádné obrázkyPočet odstraněných náhledůPůvodní _velikostOtevřítOt_evřít nedávnýOtevřít vybranou knihu.Ostatní souboryVlastníkObrázky PNGStranaOprávněníPřeklad do perštinyProsím vložte jméno nové sbírky.Prosím vložte nové jméno vybrané sbírky.Vezměte prosím v úvahu, že na tento seznam jsou automaticky přidány pouze ty soubory, které Comix v archivech rozpozná jako komentáře.Překlad do polštiny_NastaveníNastaveníPředchozí stranaVlastnostiVložit sbírku „%(subcollection)s“ do sbírky „%(supercollection)s“.Archiv RARArchivy RAROdstranit knihy z knihovny?Odstranit sbírku z knihovny?Odstranit sbírku…Odstranit z archivuOdstranit z knihovny…Odstranit z této sbírkyOdstraněno %(num)d knih ze sbírky „%(collection)s“.Odstraněno %d knih z knihovny.Odstraněn náhled pro „%s“Odstraňují se náhledyPřejmenovat sbírku?Přejmenovat…Nahrazením bude přepsán původní obsah.KořenPootočit o 90° _proti směru hodinových ručičekPootočit _o 180°Orientace_Spustit promítání obrázkůPřeklad do maďarštinyPROMÍTÁNÍ OBRÁZKŮ_PosuvníkySytostUložitPosunHledatNastavit úroveň zvětšení lupy.Nastavit velikost lupy, čtverce o velikosti strany daného počtu pixelů.OstrostZobrazovat pouze jeden široký obrázek ve dvoustránkovém režimu.Zobrazit čísla stran v náhledech.Překlad do zjednodušené čínštinyVelikostPromítání snímkůProdleva při promítání obrázků (ve vteřinách)Na vašem počítači byly nalezeny soubory vytvořené starší verzí Comixu (uživatelské nastavení, knihovna, záložky atd.). Pokud neplánujete další používání některé ze starších verzí, je možno odstraněním těchto souborů uvolnit trochu místa na disku. Přejete si tyto soubory nyní odstranit?Překlad do španělštiny_Stavová lištaUkládat informace o nedávno otevřených souborech.Ukládat náhledy pro otevírané soubory v souladu se specifikací freedesktop.org. Tyto náhledy jsou používány mnoha jinými aplikacemi, jako například většinou správců souborů.Ukládat náhledy otevřených souborů.Roztáhnout obrázky na větší než původní velikost, pokud to daný režim přiblížení vyžaduje. Není-li tato volba nastavena, obrázky nejsou nikdy zvětšovány přes svou původní velikost.Roztáhnout malé obrázky._Lišty nástrojůArchiv tarArchivy TAR_NáhledyNelze uložit nový archiv!Původní soubory nebyly odstraněny.Vybrané knihy budou tímto odstraněny z knihovny (přičemž původní soubory zůstanou netknuty). Jste si jisti, že chcete pokračovat?Vybraná sbírka bude tímto odstraněna z knihovny (přičemž knihy a podsbírky v ní zůstanou zachovány). Jste si jisti, že chcete pokračovat?Na vašem počítači byly nalezeny zastaralé soubory.Složka náhledůSpráva náhledůVelikost náhledu (v pixelech)NáhledyNáhledy pro soubory (jako jsou třeba obrázky a archivy komiksů) jsou ukládány do vaší domovské složky. Mnoho různých aplikací používá a vytváří tyto náhledy, občas však náhledy zůstanou na disku i po odstranění původních souborů, čím zbytečně zabírají místo. Tento nástroj umožňuje pročistit vaše uložené náhledy odstraněním těch osiřelých a zastaralých.Celkový počet náhledůCelková velikost odstraněných náhledůCelková velikost náhledůPřeklad do tradiční čínštinyPrůhlednostZacházet se soubory s jednou z těchto přípon v názvu jako s komentáři.Neznámý typ souboruPoužívat přednačítání pro zrychlení prohlížení.Používat šedé šachovnicové pozadí pro průhledné obrázky. Není-li tato volba nastavena, je použito prosté bílé pozadí.Používat šachovnicové pozadí pro průhledné obrázky.Použít dvoustránkový režim jako výchozí.Používat dynamickou barvu pozadí.Použít zobrazení přes celou obrazovku jako výchozí.Použít manga režim jako výchozí.Používat chytré posouvání mezerníkem. Běžně mezerník posouvá stranu pouze přímo dolů (nebo nahoru, je-li přidržen Shift), s tímto nastavením je však strana posouvána i do stran ve snaze následovat přirozený způsob čtení komiksu.Používat chytré posouvání mezerníkem.Používat tuto barvu jako pozadíKe čtení RAR (.cbr) souborů je třeba mít nejprve nainstalovaný program rar nebo unrar.Archiv ZIPArchivy ZIP_Oddálit_O programu_Přidat záložku_Optimální přiblížení_Záložky_Vymazat záložky…_Zavřít_Dvoustránkový režim_UpravitUpravit _archiv_Upravit záložky…_Vylepšit obrázek_SouborP_rvní strana_Celá obrazovka_Přejít_Nápověda_Zachovat transformaciP_oslední strana_Knihovna_Manga režimLišta _nabídky_Následující strana_Otevřít…_Předchozí strana_Vlastnosti_UkončitPootočit o 90° _ve směru hodinových ručiček_Správa náhledů_Lišta nástrojů_Transformace_Zobrazit_Prohlédnout komentáře…_Přiblížitcomix-4.0.4/messages/zh_CN/LC_MESSAGES/comix.po0000644000175000001440000011262711140123333017607 0ustar sorkusers# comix zh_CN translation. # Copyright (C) 2006 Emfox Zhou # Emfox Zhou , 2006. # Xie Yanbo , 2006. # msgid "" msgstr "" "Project-Id-Version: Comix 4.0.1\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: \n" "PO-Revision-Date: 2009-01-28 13:36+0800\n" "Last-Translator: Xie Yanbo \n" "Language-Team: Xie Yanbo \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Generated-By: pygettext.py 1.5\n" "X-Poedit-Language: Chinese\n" "X-Poedit-Basepath: /Users/xyb/Desktop/comix-4.0.1-rc1/\n" "X-Poedit-Country: CHINA\n" "X-Poedit-SourceCharset: UTF-8\n" # # File: src/about.py, line: 18 # File: src/about.py, line: 67 #: src/about.py:19 #: src/about.py:68 msgid "About" msgstr "关于" # # File: src/about.py, line: 55 #: src/about.py:56 msgid "Comix is an image viewer specifically designed to handle comic books." msgstr "Comix 是一个为漫画书而特别设计的图像浏览器。" # # File: src/about.py, line: 57 #: src/about.py:58 msgid "It reads ZIP, RAR and tar archives, as well as plain image files." msgstr "它可以像读取普通图片文件一样读取ZIP、RAR以及tar等压缩文件。" # # File: src/about.py, line: 59 #: src/about.py:60 msgid "Comix is licensed under the GNU General Public License." msgstr "Comix 遵循 GNU 通用公共许可证分发。" # # File: src/about.py, line: 75 #: src/about.py:83 msgid "Developer" msgstr "开发者" # # File: src/about.py, line: 77 #: src/about.py:84 #: src/about.py:85 msgid "Simplified Chinese translation" msgstr "简体中文译者" # # File: src/about.py, line: 78 #: src/about.py:86 msgid "Spanish translation" msgstr "西班牙语译者" # # File: src/about.py, line: 79 #: src/about.py:87 msgid "Brazilian Portuguese translation" msgstr "巴西语、葡萄牙语译者" # # File: src/about.py, line: 81 #: src/about.py:88 msgid "German translation and Nautilus thumbnailer" msgstr "德语译者,Nautilus 缩略图功能作者" # # File: src/about.py, line: 82 #: src/about.py:89 #: src/about.py:90 msgid "Italian translation" msgstr "意大利语译者" # # File: src/about.py, line: 83 #: src/about.py:91 msgid "Dutch translation" msgstr "荷兰语译者" # # File: src/about.py, line: 84 #: src/about.py:92 msgid "French translation" msgstr "法语译者" # # File: src/about.py, line: 85 #: src/about.py:93 #: src/about.py:94 msgid "Polish translation" msgstr "波兰语译者" # # File: src/about.py, line: 86 #: src/about.py:95 msgid "Greek translation" msgstr "希腊语译者" # # File: src/about.py, line: 87 #: src/about.py:96 msgid "Catalan translation" msgstr "加泰罗尼亚语译者" # # File: src/about.py, line: 88 #: src/about.py:97 #: src/about.py:98 msgid "Traditional Chinese translation" msgstr "繁体中文译者" # # File: src/about.py, line: 89 #: src/about.py:99 msgid "Japanese translation" msgstr "日语译者" # # File: src/about.py, line: 90 #: src/about.py:100 msgid "Hungarian translation" msgstr "匈牙利语译者" # # File: src/about.py, line: 91 #: src/about.py:101 msgid "Russian translation" msgstr "俄语译者" # # File: src/about.py, line: 92 #: src/about.py:102 msgid "Croatian translation" msgstr "克罗地亚语译者" # # File: src/about.py, line: 93 #: src/about.py:103 msgid "Korean translation" msgstr "韩语译者" # # File: src/about.py, line: 94 #: src/about.py:104 msgid "Persian translation" msgstr "波斯语译者" # # File: src/about.py, line: 95 #: src/about.py:105 msgid "Indonesian translation" msgstr "印尼语译者" # # File: src/about.py, line: 96 #: src/about.py:106 msgid "Czech translation" msgstr "捷克语译者" # # File: src/about.py, line: 97 #: src/about.py:107 msgid "Icon design" msgstr "图标设计" # # File: src/about.py, line: 106 #: src/about.py:114 msgid "Credits" msgstr "致谢" # # File: src/archive.py, line: 66 #: src/archive.py:66 msgid "Could not find RAR file extractor!" msgstr "无法找到RAR文件解压缩程序!" # # File: src/archive.py, line: 68 #: src/archive.py:68 msgid "You need either the rar or the unrar program installed in order to read RAR (.cbr) files." msgstr "你需要安装用来读取RAR(.cbr)文件的rarunrar程序。" # # File: src/archive.py, line: 301 #: src/archive.py:305 msgid "ZIP archive" msgstr "ZIP 文件包" # # File: src/archive.py, line: 302 #: src/archive.py:306 msgid "Tar archive" msgstr "Tar 文件包" # # File: src/archive.py, line: 303 #: src/archive.py:307 msgid "Gzip compressed tar archive" msgstr "Gzip 压缩过的 tar 文件包" # # File: src/archive.py, line: 304 #: src/archive.py:308 msgid "Bzip2 compressed tar archive" msgstr "Bzip2 压缩过的 tar 文件包" # # File: src/archive.py, line: 305 #: src/archive.py:309 msgid "RAR archive" msgstr "RAR 文件包" # # File: src/bookmark.py, line: 27 #: src/bookmark.py:28 msgid "_Add bookmark" msgstr "增加书签(_A)" # # File: src/bookmark.py, line: 29 #: src/bookmark.py:30 msgid "_Edit bookmarks..." msgstr "编辑书签(_E)..." # # File: src/bookmark.py, line: 31 #: src/bookmark.py:32 msgid "_Clear bookmarks..." msgstr "清空书签(_C)..." # # File: src/bookmark.py, line: 77 #: src/bookmark.py:78 msgid "Clear all bookmarks?" msgstr "要清空所有书签吗?" # # File: src/bookmark.py, line: 79 #: src/bookmark.py:80 msgid "All stored bookmarks will be removed. Are you sure that you want to continue?" msgstr "所有保存的书签将会被删除。你确定要这么做吗?" # # File: src/bookmark.py, line: 229 #: src/bookmark.py:230 msgid "Edit bookmarks" msgstr "编辑书签" # # File: src/bookmark.py, line: 255 # File: src/edit.py, line: 267 #: src/bookmark.py:256 #: src/edit.py:270 msgid "Name" msgstr "名称" # # File: src/bookmark.py, line: 256 #: src/bookmark.py:257 msgid "Page" msgstr "页面" # # File: src/comment.py, line: 16 # File: src/preferences.py, line: 288 #: src/comment.py:16 #: src/preferences.py:299 msgid "Comments" msgstr "注释" # # File: src/comment.py, line: 53 #: src/comment.py:53 #, python-format msgid "Could not read %s" msgstr "无法读取%s" # # File: src/deprecated.py, line: 16 #: src/deprecated.py:16 msgid "There are deprecated files left on your computer." msgstr "在你的计算机里留有一些已经不再被使用的文件。" # # File: src/deprecated.py, line: 22 #: src/deprecated.py:22 msgid "Some old files (that were used for storing preferences, the library, bookmarks etc. for older versions of Comix) were found on your computer. If you do not plan on using the older versions of Comix again, you should remove these files in order to save some disk space. Do you want these files to be removed for you now?" msgstr "在你的计算机中还留有一些旧文件,在以前版本的Comix中用来保存设置、收藏库、书签等。如果你以后不再使用旧版本的Comix,可以把它们删掉节省存储空间。你像现在就删除这些文件吗?" # # File: src/edit.py, line: 28 #: src/edit.py:29 msgid "Edit archive" msgstr "编辑文件包" # # File: src/edit.py, line: 36 #: src/edit.py:37 msgid "Import" msgstr "导入" # # File: src/edit.py, line: 50 #: src/edit.py:51 msgid "Images" msgstr "图像文件" # # File: src/edit.py, line: 51 #: src/edit.py:52 msgid "Other files" msgstr "其他文件" # # File: src/edit.py, line: 99 #: src/edit.py:101 msgid "The new archive could not be saved!" msgstr "无法保存新的文件包!" # # File: src/edit.py, line: 101 #: src/edit.py:103 msgid "The original files have not been removed." msgstr "原始文件还没有被删除。" # # File: src/edit.py, line: 115 #: src/edit.py:117 msgid "Archives are stored as ZIP files." msgstr "文件包以ZIP格式保存。" # # File: src/edit.py, line: 168 # File: src/edit.py, line: 285 #: src/edit.py:170 #: src/edit.py:288 msgid "Remove from archive" msgstr "从文件包中删除" # # File: src/edit.py, line: 255 #: src/edit.py:258 msgid "Please note that the only files that are automatically added to this list are those files in archives that Comix recognizes as comments." msgstr "请注意,只有被Comix认为是注释的文件,才会被自动添加到这个列表中。" # # File: src/edit.py, line: 270 #: src/edit.py:273 msgid "Size" msgstr "大小" # # File: src/enhance.py, line: 51 #: src/enhance.py:51 msgid "Enhance image" msgstr "美化图像" # # File: src/enhance.py, line: 52 #: src/enhance.py:52 msgid "Defaults" msgstr "默认" # # File: src/enhance.py, line: 79 #: src/enhance.py:79 msgid "Brightness" msgstr "亮度" # # File: src/enhance.py, line: 90 #: src/enhance.py:90 msgid "Contrast" msgstr "对比度" # # File: src/enhance.py, line: 101 #: src/enhance.py:101 msgid "Saturation" msgstr "饱和度" # # File: src/enhance.py, line: 112 #: src/enhance.py:112 msgid "Sharpness" msgstr "锐度" # # File: src/enhance.py, line: 126 #: src/enhance.py:126 msgid "Automatically adjust contrast." msgstr "自动调整对比度" # # File: src/enhance.py, line: 128 #: src/enhance.py:128 msgid "Automatically adjust contrast (both lightness and darkness), separately for each colour band." msgstr "分别为每一个颜色通道自动调整对比度(包括亮度和暗度)。" # # File: src/filechooser.py, line: 35 # File: src/library.py, line: 489 #: src/filechooser.py:38 #: src/library.py:490 msgid "Open" msgstr "打开" # # File: src/filechooser.py, line: 39 #: src/filechooser.py:42 msgid "Save" msgstr "保存" # # File: src/filechooser.py, line: 75 #: src/filechooser.py:78 msgid "All files" msgstr "所有文件" # # File: src/filechooser.py, line: 78 #: src/filechooser.py:81 msgid "All Archives" msgstr "所有文件包" # # File: src/filechooser.py, line: 82 #: src/filechooser.py:85 msgid "ZIP archives" msgstr "ZIP文件包" # # File: src/filechooser.py, line: 84 #: src/filechooser.py:87 msgid "RAR archives" msgstr "RAR文件包" # # File: src/filechooser.py, line: 86 #: src/filechooser.py:89 msgid "Tar archives" msgstr "Tar文件包" # # File: src/filechooser.py, line: 125 #: src/filechooser.py:134 #, python-format msgid "A file named '%s' already exists. Do you want to replace it?" msgstr "名为“%s”的文件已经存在,你想要覆盖它吗?" # # File: src/filechooser.py, line: 128 #: src/filechooser.py:137 msgid "Replacing it will overwrite its contents." msgstr "覆盖它会覆写它的文件内容" # # File: src/filechooser.py, line: 171 # File: src/filechooser.py, line: 249 #: src/filechooser.py:182 #: src/filechooser.py:260 msgid "All images" msgstr "所有图像文件" # # File: src/filechooser.py, line: 173 # File: src/filechooser.py, line: 251 #: src/filechooser.py:184 #: src/filechooser.py:262 msgid "JPEG images" msgstr "JPEG图像文件" # # File: src/filechooser.py, line: 174 # File: src/filechooser.py, line: 252 #: src/filechooser.py:185 #: src/filechooser.py:263 msgid "PNG images" msgstr "PNG图像文件" # # File: src/filechooser.py, line: 195 #: src/filechooser.py:206 msgid "Automatically add the books to this collection" msgstr "自动添加书到这个收藏中" # # File: src/filehandler.py, line: 209 #: src/filehandler.py:209 #, python-format msgid "Could not open %s: Is a directory." msgstr "无法打开%s:它是一个目录。" # # File: src/filehandler.py, line: 213 #: src/filehandler.py:213 #, python-format msgid "Could not open %s: No such file." msgstr "无法打开%s:没有这个文件。" # # File: src/filehandler.py, line: 217 #: src/filehandler.py:217 #, python-format msgid "Could not open %s: Permission denied." msgstr "无法打开%s:权限不足。" # # File: src/filehandler.py, line: 222 #: src/filehandler.py:222 #, python-format msgid "Could not open %s: Unknown file type." msgstr "无法打开%s:未知的文件格式。" # # File: src/filehandler.py, line: 285 #: src/filehandler.py:285 #, python-format msgid "No images in '%s'" msgstr "“%s”中没有图像文件" # # File: src/filehandler.py, line: 411 #: src/filehandler.py:413 msgid "Unknown filetype" msgstr "未知的文件格式" # # File: src/librarybackend.py, line: 272 # File: src/librarybackend.py, line: 274 #: src/librarybackend.py:273 #: src/librarybackend.py:275 msgid "(Copy)" msgstr "(拷贝)" # # File: src/library.py, line: 38 #: src/library.py:38 msgid "Library" msgstr "收藏库" # # File: src/library.py, line: 150 #: src/library.py:150 msgid "Rename..." msgstr "重命名..." # # File: src/library.py, line: 152 #: src/library.py:152 msgid "Duplicate collection" msgstr "复制收藏" # # File: src/library.py, line: 154 #: src/library.py:154 msgid "Remove collection..." msgstr "删除收藏..." # # File: src/library.py, line: 202 #: src/library.py:202 msgid "All books" msgstr "所有书" # # File: src/library.py, line: 231 #: src/library.py:231 msgid "Remove collection from the library?" msgstr "要从收藏库中删除收藏吗?" # # File: src/library.py, line: 233 #: src/library.py:233 msgid "The selected collection will be removed from the library (but the books and subcollections in it will remain). Are you sure that you want to continue?" msgstr "从收藏库中删除选中的收藏,但不删除其中的书和子收藏。你确定要继续吗?" # # File: src/library.py, line: 251 #: src/library.py:251 msgid "Rename collection?" msgstr "重命名收藏?" # # File: src/library.py, line: 253 #: src/library.py:253 msgid "Please enter a new name for the selected collection." msgstr "请输入收藏要修改成的名称。" # # File: src/library.py, line: 271 #: src/library.py:271 #, python-format msgid "Could not change the name to '%s'." msgstr "无法修改名称为“%s”。" # # File: src/library.py, line: 275 # File: src/library.py, line: 881 #: src/library.py:275 #: src/library.py:882 msgid "A collection by that name already exists." msgstr "已经有一个使用该名称的收藏。" # # File: src/library.py, line: 285 #: src/library.py:285 msgid "Could not duplicate collection." msgstr "无法创建收藏的副本。" # # File: src/library.py, line: 382 #: src/library.py:382 msgid "Root" msgstr "根" # # File: src/library.py, line: 386 #: src/library.py:386 #, python-format msgid "Put the collection '%(subcollection)s' in the collection '%(supercollection)s'." msgstr "把收藏“%(subcollection)s”放入收藏“%(supercollection)s”中。" # # File: src/library.py, line: 407 #: src/library.py:407 #, python-format msgid "Add books to '%s'." msgstr "添加书到“%s”中。" # # File: src/library.py, line: 411 #: src/library.py:411 #, python-format msgid "Move books from '%(source collection)s' to '%(destination collection)s'." msgstr "把书从“%(source collection)s”移动到“%(destination collection)s”中。" # # File: src/library.py, line: 492 #: src/library.py:493 msgid "Remove from this collection" msgstr "从这个收藏中山促" # # File: src/library.py, line: 495 #: src/library.py:496 msgid "Remove from the library..." msgstr "从收藏库中删除…" # # File: src/library.py, line: 588 #: src/library.py:589 #, python-format msgid "Removed %(num)d book(s) from '%(collection)s'." msgstr "从“%(collection)s”中删除了%(num)d本书。" # # File: src/library.py, line: 597 #: src/library.py:598 msgid "Remove books from the library?" msgstr "要从收藏库中删除这些书吗?" # # File: src/library.py, line: 599 #: src/library.py:600 msgid "The selected books will be removed from the library (but the original files will be untouched). Are you sure that you want to continue?" msgstr "从收藏库中删除选中的书(不会影响原始文件)。你确定要继续吗?" # # File: src/library.py, line: 609 #: src/library.py:610 #, python-format msgid "Removed %d book(s) from the library." msgstr "从收藏库中删除了%d本书。" # # File: src/library.py, line: 769 #: src/library.py:770 msgid "Search" msgstr "搜索" # # File: src/library.py, line: 774 #: src/library.py:775 msgid "Display only those books that have the specified text string in their full path. The search is not case sensitive." msgstr "只显示在完整路径名中包含指定字符串的书。搜索不区分字母大小写。" # # File: src/library.py, line: 776 #: src/library.py:777 msgid "Cover size" msgstr "封面大小" # # File: src/library.py, line: 789 #: src/library.py:790 msgid "Add books" msgstr "添加书" # # File: src/library.py, line: 793 #: src/library.py:794 msgid "Add more books to the library." msgstr "向收藏库中添加更多书" # # File: src/library.py, line: 795 #: src/library.py:796 msgid "Add collection" msgstr "添加收藏" # # File: src/library.py, line: 800 #: src/library.py:801 msgid "Add a new empty collection." msgstr "添加一个空的收藏。" # # File: src/library.py, line: 806 #: src/library.py:807 msgid "Open the selected book." msgstr "打开选中的书。" # # File: src/library.py, line: 832 # File: src/properties.py, line: 113 #: src/library.py:833 #: src/properties.py:118 #, python-format msgid "%d pages" msgstr "共%d页" # # File: src/library.py, line: 854 #: src/library.py:855 msgid "Add new collection?" msgstr "添加新的收藏?" # # File: src/library.py, line: 856 #: src/library.py:857 msgid "Please enter a name for the new collection." msgstr "请输入新收藏的名称。" # # File: src/library.py, line: 862 #: src/library.py:863 msgid "New collection" msgstr "新收藏" # # File: src/library.py, line: 876 #: src/library.py:877 #, python-format msgid "Could not add a new collection called '%s'." msgstr "无法添加名称为“%s”的新收藏。" # # File: src/library.py, line: 910 #: src/library.py:911 msgid "Adding books" msgstr "正在添加的书" # # File: src/library.py, line: 930 #: src/library.py:931 msgid "Added books" msgstr "已经添加的书" # # File: src/library.py, line: 952 #: src/library.py:953 #, python-format msgid "Adding '%s'..." msgstr "正在添加“%s”…" # # File: src/main.py, line: 666 #: src/main.py:699 msgid "SLIDESHOW" msgstr "幻灯片播放" # # File: src/preferences.py, line: 78 #: src/preferences.py:80 msgid "Preferences" msgstr "首选项" # # File: src/preferences.py, line: 93 #: src/preferences.py:95 msgid "Background" msgstr "背景" # # File: src/preferences.py, line: 95 #: src/preferences.py:97 msgid "Use this colour as background" msgstr "使用这个颜色作为背景" # # File: src/preferences.py, line: 97 #: src/preferences.py:99 msgid "Always use this selected colour as the background colour." msgstr "总是使用选中的这个颜色作为背景色。" # # File: src/preferences.py, line: 102 #: src/preferences.py:104 msgid "Use dynamic background colour." msgstr "使用动态背景色。" # # File: src/preferences.py, line: 106 #: src/preferences.py:108 msgid "Automatically pick a background colour that fits the viewed image." msgstr "自动选择适合观看中图片的背景色。" # # File: src/preferences.py, line: 109 #: src/preferences.py:111 msgid "Thumbnails" msgstr "缩略图" # # File: src/preferences.py, line: 110 #: src/preferences.py:112 msgid "Thumbnail size (in pixels)" msgstr "缩略图大小 (像素)" # # File: src/preferences.py, line: 117 #: src/preferences.py:119 msgid "Show page numbers on thumbnails." msgstr "在缩略图上显示页码。" # # File: src/preferences.py, line: 124 #: src/preferences.py:126 msgid "Magnifying Glass" msgstr "放大镜" # # File: src/preferences.py, line: 125 #: src/preferences.py:127 msgid "Magnifying glass size (in pixels)" msgstr "放大镜大小 (像素)" # # File: src/preferences.py, line: 131 #: src/preferences.py:133 msgid "Set the size of the magnifying glass. It is a square with a side of this many pixels." msgstr "设置放大镜的大小。将显示为指定像素数边长的正方形。" # # File: src/preferences.py, line: 133 #: src/preferences.py:135 msgid "Magnification factor" msgstr "放大倍数" # # File: src/preferences.py, line: 140 #: src/preferences.py:142 msgid "Set the magnification factor of the magnifying glass." msgstr "设置放大镜的放大倍数。" # # File: src/preferences.py, line: 143 #: src/preferences.py:145 msgid "Image scaling" msgstr "图像缩放" # # File: src/preferences.py, line: 144 #: src/preferences.py:146 msgid "Stretch small images." msgstr "放大小图片。" # # File: src/preferences.py, line: 148 #: src/preferences.py:150 msgid "Stretch images to a size that is larger than their original size if the current zoom mode requests it. If this preference is unset, images are never scaled to be larger than their original size." msgstr "如果当前缩放模式需要,把图片放大到超过自己的原始大小。如果这个选项没有选中,图片不会缩放到超过原始大小。" # # File: src/preferences.py, line: 151 #: src/preferences.py:153 msgid "Transparency" msgstr "透明度" # # File: src/preferences.py, line: 153 #: src/preferences.py:155 msgid "Use checkered background for transparent images." msgstr "使用棋盘格图像做透明图片的背景。" # # File: src/preferences.py, line: 159 #: src/preferences.py:161 msgid "Use a grey checkered background for transparent images. If this preference is unset, the background is plain white instead." msgstr "使用灰色跳棋格图案作为透明图像的背景。如果不设置这个选项,则使用纯白背景。" # # File: src/preferences.py, line: 161 #: src/preferences.py:163 msgid "Appearance" msgstr "外观" # # File: src/preferences.py, line: 167 #: src/preferences.py:169 msgid "Scroll" msgstr "滚动" # # File: src/preferences.py, line: 169 #: src/preferences.py:171 msgid "Use smart space key scrolling." msgstr "使用空格键做智能化滚动。" # # File: src/preferences.py, line: 174 #: src/preferences.py:176 msgid "Use smart scrolling with the space key. Normally the space key scrolls only right down (or up when shift is pressed), but with this preference set it also scrolls sideways and so tries to follow the natural reading order of the comic book." msgstr "按空格键时智能化翻页。一般按空格键时只向下翻页(按住shift键时向上翻页),但设置了这个选项后,可以向两侧翻页,以便尽量符合平常阅读漫画书时的顺序。" #: src/preferences.py:180 msgid "Flip pages when scrolling off the edges of the page." msgstr "当滚动出页面边界时翻页。" #: src/preferences.py:185 msgid "Flip pages when scrolling \"off the page\" with the scroll wheel or with the arrow keys. It takes three consecutive \"steps\" with the scroll wheel or the arrow keys for the pages to be flipped." msgstr "当使用鼠标滚轮或者键盘方向键滚动出页面时翻页。在翻页之前,需要连续三次滚动滚轮或者按下方向键。" # # File: src/preferences.py, line: 177 # File: src/ui.py, line: 296 #: src/preferences.py:188 #: src/ui.py:298 msgid "Double page mode" msgstr "双页模式" # # File: src/preferences.py, line: 179 #: src/preferences.py:190 msgid "Flip two pages in double page mode." msgstr "双页模式时一次翻两页。" # # File: src/preferences.py, line: 184 #: src/preferences.py:195 msgid "Flip two pages, instead of one, each time we flip pages in double page mode." msgstr "在双页模式时,每次翻两页,而不是一页。" # # File: src/preferences.py, line: 187 #: src/preferences.py:198 msgid "Show only one wide image in double page mode." msgstr "双页模式时只显示一张宽图片。" # # File: src/preferences.py, line: 193 #: src/preferences.py:204 msgid "Display only one image in double page mode, if the image's width exceeds its height. The result of this is that scans that span two pages are displayed properly (i.e. alone) also in double page mode." msgstr "在双页模式时,如果图片的宽度大于高度,只显示一张图片。" # # File: src/preferences.py, line: 196 #: src/preferences.py:207 msgid "Files" msgstr "文件" # # File: src/preferences.py, line: 198 #: src/preferences.py:209 msgid "Automatically open the next archive." msgstr "自动打开下一个文件包。" # # File: src/preferences.py, line: 203 #: src/preferences.py:214 msgid "Automatically open the next archive in the directory when flipping past the last page, or the previous archive when flipping past the first page." msgstr "当翻过最后一页时,自动打开当前目录的下一个文件包;或者翻过第一页时,自动打开前一个文件包。" # # File: src/preferences.py, line: 206 #: src/preferences.py:217 msgid "Automatically open the last viewed file on startup." msgstr "启动时,自动打开最后查看过的文件。" # # File: src/preferences.py, line: 211 #: src/preferences.py:222 msgid "Automatically open, on startup, the file that was open when Comix was last closed." msgstr "启动时,自动打开上次Comix关闭时查看的文件。" # # File: src/preferences.py, line: 214 #: src/preferences.py:225 msgid "Store information about recently opened files." msgstr "保存最近打开的文件的信息。" # # File: src/preferences.py, line: 219 #: src/preferences.py:230 msgid "Add information about all files opened from within Comix to the shared recent files list." msgstr "把所有 Comix 打开过的文件信息添加到最近文件列表中。" # # File: src/preferences.py, line: 222 #: src/preferences.py:233 msgid "Store thumbnails for opened files." msgstr "存储已经打开过的文件的缩略图。" # # File: src/preferences.py, line: 227 #: src/preferences.py:238 msgid "Store thumbnails for opened files according to the freedesktop.org specification. These thumbnails are shared by many other applications, such as most file managers." msgstr "按照 freedesktop.org 规范,保存已经打开过的文件的缩略图。这些缩略图会与其他程序(例如大多数文件管理器)共享使用。" # # File: src/preferences.py, line: 230 #: src/preferences.py:241 msgid "Cache" msgstr "缓存" # # File: src/preferences.py, line: 231 #: src/preferences.py:242 msgid "Use a cache to speed up browsing." msgstr "使用缓存加速浏览。" # # File: src/preferences.py, line: 235 #: src/preferences.py:246 msgid "Cache the images that are next to the currently viewed image in order to speed up browsing. Since the speed improvements are quite big, it is recommended that you have this preference set, unless you are running short on free RAM." msgstr "缓存当前查看图片的后续图片,以提高浏览的速度。除非你的可用内存非常紧张,考虑到这个措施对速度提升有很大的优化,建议设置使用这个功能。" # # File: src/preferences.py, line: 237 #: src/preferences.py:248 msgid "Behaviour" msgstr "行为" # # File: src/preferences.py, line: 243 #: src/preferences.py:254 msgid "Default modes" msgstr "默认模式" # # File: src/preferences.py, line: 245 #: src/preferences.py:256 msgid "Use double page mode by default." msgstr "默认使用双页模式。" # # File: src/preferences.py, line: 250 #: src/preferences.py:261 msgid "Use fullscreen by default." msgstr "默认使用全屏模式" # # File: src/preferences.py, line: 255 #: src/preferences.py:266 msgid "Use manga mode by default." msgstr "默认使用 Manga 模式" # # File: src/preferences.py, line: 260 #: src/preferences.py:271 msgid "Default zoom mode" msgstr "默认的缩放模式" # # File: src/preferences.py, line: 262 # File: src/ui.py, line: 288 #: src/preferences.py:273 #: src/ui.py:290 msgid "Best fit mode" msgstr "最佳适应模式" # # File: src/preferences.py, line: 263 # File: src/ui.py, line: 290 #: src/preferences.py:274 #: src/ui.py:292 msgid "Fit width mode" msgstr "适应宽度模式" # # File: src/preferences.py, line: 264 # File: src/ui.py, line: 292 #: src/preferences.py:275 #: src/ui.py:294 msgid "Fit height mode" msgstr "适应高度模式" # # File: src/preferences.py, line: 265 # File: src/ui.py, line: 294 #: src/preferences.py:276 #: src/ui.py:296 msgid "Manual zoom mode" msgstr "手动缩放模式" # # File: src/preferences.py, line: 271 #: src/preferences.py:282 msgid "Fullscreen" msgstr "全屏" # # File: src/preferences.py, line: 273 #: src/preferences.py:284 msgid "Automatically hide all toolbars in fullscreen." msgstr "全屏时自动隐藏所有工具条。" # # File: src/preferences.py, line: 279 #: src/preferences.py:290 msgid "Slideshow" msgstr "幻灯片放映" # # File: src/preferences.py, line: 280 #: src/preferences.py:291 msgid "Slideshow delay (in seconds)" msgstr "幻灯片延迟 (秒)" # # File: src/preferences.py, line: 289 #: src/preferences.py:300 msgid "Comment extensions" msgstr "注释扩展名" # # File: src/preferences.py, line: 295 #: src/preferences.py:306 msgid "Treat all files found within archives, that have one of these file endings, as comments." msgstr "把文件包中任何包含以下一个文件结尾的文件,视作注释。" #: src/preferences.py:309 msgid "Rotation" msgstr "旋转" #: src/preferences.py:311 msgid "Automatically rotate images according to their metadata." msgstr "按照元数据描述自动旋转图像。" #: src/preferences.py:316 msgid "Automatically rotate images when an orientation is specified in the image metadata, such as in an Exif tag." msgstr "如果图像文件中包含Exif等元数据,依照元数据的描述自动旋转图像。" # # File: src/preferences.py, line: 297 #: src/preferences.py:318 msgid "Display" msgstr "显示" # # File: src/properties.py, line: 89 #: src/properties.py:94 msgid "Properties" msgstr "属性" # # File: src/properties.py, line: 114 #: src/properties.py:119 #, python-format msgid "%d comments" msgstr "%d 个注释" # # File: src/properties.py, line: 124 # File: src/properties.py, line: 159 #: src/properties.py:129 #: src/properties.py:164 msgid "Location" msgstr "位置" # # File: src/properties.py, line: 126 # File: src/properties.py, line: 160 #: src/properties.py:131 #: src/properties.py:165 msgid "Accessed" msgstr "访问" # # File: src/properties.py, line: 128 # File: src/properties.py, line: 162 #: src/properties.py:133 #: src/properties.py:167 msgid "Modified" msgstr "修改" # # File: src/properties.py, line: 130 # File: src/properties.py, line: 164 #: src/properties.py:135 #: src/properties.py:169 msgid "Permissions" msgstr "权限" # # File: src/properties.py, line: 131 # File: src/properties.py, line: 165 #: src/properties.py:136 #: src/properties.py:170 msgid "Owner" msgstr "属主" # # File: src/properties.py, line: 135 #: src/properties.py:140 msgid "Archive" msgstr "文件" # # File: src/properties.py, line: 169 #: src/properties.py:174 msgid "Image" msgstr "图像" # # File: src/thumbremover.py, line: 22 #: src/thumbremover.py:24 msgid "Thumbnail maintenance" msgstr "缩略图管理" # # File: src/thumbremover.py, line: 24 #: src/thumbremover.py:26 msgid "Cleanup" msgstr "清除" # # File: src/thumbremover.py, line: 36 #: src/thumbremover.py:38 msgid "Cleanup thumbnails" msgstr "清除缩略图" # # File: src/thumbremover.py, line: 46 #: src/thumbremover.py:48 msgid "Thumbnails for files (such as image files and comic book archives) are stored in your home directory. Many different applications use and create these thumbnails, but sometimes thumbnails remain even though the original files have been removed - wasting space. This dialog can cleanup your stored thumbnails by removing orphaned and outdated thumbnails." msgstr "漫画书和图像文件的缩略图存放在你的用户目录中。各种程序都会使用和创建缩略图,当如果原始图片已经被删掉,还保留缩略图只是对存储空间的浪费。这个对话框可以帮助你清理过期的缩略图文件。" # # File: src/thumbremover.py, line: 58 #: src/thumbremover.py:60 msgid "Thumbnail directory" msgstr "缩略图目录" # # File: src/thumbremover.py, line: 65 #: src/thumbremover.py:67 msgid "Total number of thumbnails" msgstr "缩略图总数" # # File: src/thumbremover.py, line: 68 # File: src/thumbremover.py, line: 75 #: src/thumbremover.py:70 #: src/thumbremover.py:77 msgid "Calculating..." msgstr "正在计算…" # # File: src/thumbremover.py, line: 72 #: src/thumbremover.py:74 msgid "Total size of thumbnails" msgstr "缩略图总大小" # # File: src/thumbremover.py, line: 80 #: src/thumbremover.py:82 msgid "Do you want to cleanup orphaned and outdated thumbnails now?" msgstr "你确定要清除过期的缩略图吗?" # # File: src/thumbremover.py, line: 116 #: src/thumbremover.py:118 msgid "Removing thumbnails" msgstr "正在删除缩略图" # # File: src/thumbremover.py, line: 135 #: src/thumbremover.py:137 msgid "Number of removed thumbnails" msgstr "删除缩略图总数" # # File: src/thumbremover.py, line: 142 #: src/thumbremover.py:144 msgid "Total size of removed thumbnails" msgstr "删除缩略图总大小" # # File: src/thumbremover.py, line: 193 #: src/thumbremover.py:195 #, python-format msgid "Removed thumbnail for '%s'" msgstr "删除“%s”的缩略图" # # File: src/ui.py, line: 34 #: src/ui.py:34 msgid "_Next page" msgstr "下一页(_N)" # # File: src/ui.py, line: 36 #: src/ui.py:36 msgid "_Previous page" msgstr "上一页(_P)" # # File: src/ui.py, line: 38 #: src/ui.py:38 msgid "_First page" msgstr "第一页(_F)" # # File: src/ui.py, line: 40 #: src/ui.py:40 msgid "_Last page" msgstr "最后一页(_L)" # # File: src/ui.py, line: 42 #: src/ui.py:42 msgid "_Zoom in" msgstr "放大(_Z)" # # File: src/ui.py, line: 44 #: src/ui.py:44 msgid "Zoom _out" msgstr "缩小(_O)" # # File: src/ui.py, line: 46 #: src/ui.py:46 msgid "O_riginal size" msgstr "原始大小 (_R)" # # File: src/ui.py, line: 48 #: src/ui.py:48 msgid "_Close" msgstr "关闭(_C)" # # File: src/ui.py, line: 50 #: src/ui.py:50 msgid "_Quit" msgstr "退出(_Q)" # # File: src/ui.py, line: 52 #: src/ui.py:52 msgid "_Rotate 90 degrees CW" msgstr "顺时针旋转90度(_R)" # # File: src/ui.py, line: 54 #: src/ui.py:54 msgid "Rotate 180 de_grees" msgstr "旋转180度(_G)" # # File: src/ui.py, line: 56 #: src/ui.py:56 msgid "Rotat_e 90 degrees CCW" msgstr "逆时针旋转90度(_E)" # # File: src/ui.py, line: 58 #: src/ui.py:58 msgid "Fli_p horizontally" msgstr "水平翻转(_P)" # # File: src/ui.py, line: 60 #: src/ui.py:60 msgid "Flip _vertically" msgstr "垂直翻转(_V)" # # File: src/ui.py, line: 62 #: src/ui.py:62 msgid "Manual _Zoom" msgstr "手动缩放(_Z)" # # File: src/ui.py, line: 63 #: src/ui.py:63 msgid "Open _recent" msgstr "打开最近的 (_R)" # # File: src/ui.py, line: 64 #: src/ui.py:64 msgid "_Bookmarks" msgstr "书签(_B)" # # File: src/ui.py, line: 65 #: src/ui.py:65 msgid "T_oolbars" msgstr "工具条 (_O)" # # File: src/ui.py, line: 66 #: src/ui.py:66 msgid "_Edit" msgstr "编辑(_E)" # # File: src/ui.py, line: 67 #: src/ui.py:67 msgid "_File" msgstr "文件(_F)" # # File: src/ui.py, line: 68 #: src/ui.py:68 msgid "_View" msgstr "查看(_V)" # # File: src/ui.py, line: 69 #: src/ui.py:69 msgid "_Go" msgstr "跳转(_G)" # # File: src/ui.py, line: 70 #: src/ui.py:70 msgid "_Help" msgstr "帮助(_H)" # # File: src/ui.py, line: 71 #: src/ui.py:71 msgid "_Transform" msgstr "变换(_T)" # # File: src/ui.py, line: 75 #: src/ui.py:75 msgid "_Fullscreen" msgstr "全屏(_F)" # # File: src/ui.py, line: 77 #: src/ui.py:77 msgid "_Double page mode" msgstr "双页模式(_D)" # # File: src/ui.py, line: 79 #: src/ui.py:79 msgid "_Toolbar" msgstr "工具栏(_T)" # # File: src/ui.py, line: 81 #: src/ui.py:81 msgid "_Menubar" msgstr "菜单栏(_M)" # # File: src/ui.py, line: 83 #: src/ui.py:83 msgid "St_atusbar" msgstr "状态栏(_A)" # # File: src/ui.py, line: 85 #: src/ui.py:85 msgid "S_crollbars" msgstr "滚动条(_C)" # # File: src/ui.py, line: 87 #: src/ui.py:87 msgid "Th_umbnails" msgstr "缩略图(_U)" # # File: src/ui.py, line: 89 #: src/ui.py:89 msgid "H_ide all" msgstr "隐藏所有(_I)" # # File: src/ui.py, line: 91 #: src/ui.py:91 msgid "_Manga mode" msgstr "Manga 漫画模式(M)" # # File: src/ui.py, line: 93 #: src/ui.py:93 msgid "_Keep transformation" msgstr "保持变换(_K)" # # File: src/ui.py, line: 95 #: src/ui.py:95 msgid "Run _slideshow" msgstr "放映幻灯片 (_S)" # # File: src/ui.py, line: 97 #: src/ui.py:97 msgid "Magnifying _glass" msgstr "放大镜 (_G)" # # File: src/ui.py, line: 101 #: src/ui.py:103 msgid "_Best fit mode" msgstr "最佳适应模式 (_B)" # # File: src/ui.py, line: 103 #: src/ui.py:105 msgid "Fit _width mode" msgstr "适应宽度模式(_W)" # # File: src/ui.py, line: 105 #: src/ui.py:107 msgid "Fit _height mode" msgstr "适应高度模式(_H)" # # File: src/ui.py, line: 107 #: src/ui.py:109 msgid "M_anual zoom mode" msgstr "手动缩放模式 (_A)" # # File: src/ui.py, line: 113 #: src/ui.py:115 msgid "_About" msgstr "关于(_A)" # # File: src/ui.py, line: 115 #: src/ui.py:117 msgid "_View comments..." msgstr "查看注释… (_V)" # # File: src/ui.py, line: 117 #: src/ui.py:119 msgid "_Edit archive..." msgstr "编辑文件包… (_E)" # # File: src/ui.py, line: 119 #: src/ui.py:121 msgid "_Open..." msgstr "打开(_O)..." # # File: src/ui.py, line: 121 #: src/ui.py:123 msgid "_Properties" msgstr "属性 (_P)" # # File: src/ui.py, line: 123 #: src/ui.py:125 msgid "_Enhance image..." msgstr "美化图像… (_E)" # # File: src/ui.py, line: 126 #: src/ui.py:128 msgid "_Thumbnail maintenance..." msgstr "缩略图管理… (_T)" # # File: src/ui.py, line: 128 #: src/ui.py:130 msgid "Pr_eferences" msgstr "首选项(_E)" # # File: src/ui.py, line: 132 #: src/ui.py:134 msgid "_Library..." msgstr "收藏库… (_L)" # # File: src/ui.py, line: 282 #: src/ui.py:284 msgid "First page" msgstr "第一页" # # File: src/ui.py, line: 284 #: src/ui.py:286 msgid "Previous page" msgstr "前一页" # # File: src/ui.py, line: 285 #: src/ui.py:287 msgid "Next page" msgstr "后一页" # # File: src/ui.py, line: 286 #: src/ui.py:288 msgid "Last page" msgstr "最后一页" # # File: src/ui.py, line: 297 #: src/ui.py:299 msgid "Manga mode" msgstr "Manga 漫画模式" # # File: src/ui.py, line: 298 #: src/ui.py:300 msgid "Magnifying glass" msgstr "放大镜" comix-4.0.4/messages/zh_CN/LC_MESSAGES/comix.mo0000644000175000001440000005361111140123333017601 0ustar sorkusersTa &)-<W YEd x     M9 T_!g.].53d$*ROB8k     !E67|+"("H"k %%  5 GUg pzrJ <   ! ! 2!?! N!\! b!m!~!!!!!!4"#"L"6# I#+T### ## ## ####A$U$ i$u$$ $$$$$$$%!% 5% @%M%^%Hg%%% %%%% & && 6&B& H&S& X&d&+x&4&&b' u' ' ' 'O' ' ((#/(S(h(|((.($()")6) I))S)})))))) ) ) )))*5 *UC* *-* **+ + +?=+}, ,.,,"q--W. m. w. . .#.)..r/1 0;0O0e0 0a01 2)2B2 b2Xo22!2{20w3 333445-5gK5 5 5 55 55 566 62686I6\6n6 t6 6666 6 6 66 666 67 7"7<7 E7P7V7h7q7 D9Q9Z9*c9>9999 9: :I):s:::::: : ; ;B ;3c;;;;!;M;4<'J<3r<<!.=>P=0=*=[=G>N>U>h>> >>>}???????/@I@Y@ `@,j@ @@'@&@&&A MA)nAA AAAA AAB BBQB]nB*B B CC!C 1C >CKC RC\CsCCCCCC$`D!D9D DD-D#E3ESEdE wEE E EEETEF$F 5F BF OF \FfFmF F FF FFFFFGS GaG hG rG|GGGGGG GHHHH&H6H'UH_}HH H H IIKI bI pI'}I$IIII J3"J#VJzJJJ J$JJJ KK%K :KGK WK eKoKvK}K!KKKK*K$LCLVL]LmLL{M M'MM-fNN1ODO SO aO nO|O!OZOfPBPPPP P QR!R:RMR `RNjRRRoR0[SSSSSS$TTOU `U nU {U UUU UU UU UVV,V AV LV ZV eV pV{VVVV V V V V V WW-W EW SW ^WiW ~W7H*0\;F:-pw6uKf'm<3ABs1!>k8 YdrS=c)Wt%TLD#l ^ aERy[ b}{ChJV]/no2x .,59Mg+(~v?O$`jI|4GzZXP"QeUNi_q&@ %d comments%d pages(Copy)A collection by that name already exists.A file named '%s' already exists. Do you want to replace it?AboutAccessedAdd a new empty collection.Add booksAdd books to '%s'.Add collectionAdd information about all files opened from within Comix to the shared recent files list.Add more books to the library.Add new collection?Added booksAdding '%s'...Adding booksAll ArchivesAll booksAll filesAll imagesAll stored bookmarks will be removed. Are you sure that you want to continue?Always use this selected colour as the background colour.AppearanceArchiveArchives are stored as ZIP files.Automatically add the books to this collectionAutomatically adjust contrast (both lightness and darkness), separately for each colour band.Automatically adjust contrast.Automatically hide all toolbars in fullscreen.Automatically open the last viewed file on startup.Automatically open the next archive in the directory when flipping past the last page, or the previous archive when flipping past the first page.Automatically open the next archive.Automatically open, on startup, the file that was open when Comix was last closed.Automatically pick a background colour that fits the viewed image.Automatically rotate images according to their metadata.Automatically rotate images when an orientation is specified in the image metadata, such as in an Exif tag.BackgroundBehaviourBest fit modeBrazilian Portuguese translationBrightnessBzip2 compressed tar archiveCacheCache the images that are next to the currently viewed image in order to speed up browsing. Since the speed improvements are quite big, it is recommended that you have this preference set, unless you are running short on free RAM.Calculating...Catalan translationCleanupCleanup thumbnailsClear all bookmarks?Comix is an image viewer specifically designed to handle comic books.Comix is licensed under the GNU General Public License.Comment extensionsCommentsContrastCould not add a new collection called '%s'.Could not change the name to '%s'.Could not duplicate collection.Could not find RAR file extractor!Could not open %s: Is a directory.Could not open %s: No such file.Could not open %s: Permission denied.Could not open %s: Unknown file type.Could not read %sCover sizeCreditsCroatian translationCzech translationDefault modesDefault zoom modeDefaultsDeveloperDisplayDisplay only one image in double page mode, if the image's width exceeds its height. The result of this is that scans that span two pages are displayed properly (i.e. alone) also in double page mode.Display only those books that have the specified text string in their full path. The search is not case sensitive.Do you want to cleanup orphaned and outdated thumbnails now?Double page modeDuplicate collectionDutch translationEdit archiveEdit bookmarksEnhance imageFilesFirst pageFit _height modeFit _width modeFit height modeFit width modeFli_p horizontallyFlip _verticallyFlip pages when scrolling "off the page" with the scroll wheel or with the arrow keys. It takes three consecutive "steps" with the scroll wheel or the arrow keys for the pages to be flipped.Flip pages when scrolling off the edges of the page.Flip two pages in double page mode.Flip two pages, instead of one, each time we flip pages in double page mode.French translationFullscreenGerman translation and Nautilus thumbnailerGreek translationGzip compressed tar archiveH_ide allHungarian translationIcon designImageImage scalingImagesImportIndonesian translationIt reads ZIP, RAR and tar archives, as well as plain image files.Italian translationJPEG imagesJapanese translationKorean translationLast pageLibraryLocationM_anual zoom modeMagnification factorMagnifying GlassMagnifying _glassMagnifying glassMagnifying glass size (in pixels)Manga modeManual _ZoomManual zoom modeModifiedMove books from '%(source collection)s' to '%(destination collection)s'.NameNew collectionNext pageNo images in '%s'Number of removed thumbnailsO_riginal sizeOpenOpen _recentOpen the selected book.Other filesOwnerPNG imagesPagePermissionsPersian translationPlease enter a name for the new collection.Please enter a new name for the selected collection.Please note that the only files that are automatically added to this list are those files in archives that Comix recognizes as comments.Polish translationPr_eferencesPreferencesPrevious pagePropertiesPut the collection '%(subcollection)s' in the collection '%(supercollection)s'.RAR archiveRAR archivesRemove books from the library?Remove collection from the library?Remove collection...Remove from archiveRemove from the library...Remove from this collectionRemoved %(num)d book(s) from '%(collection)s'.Removed %d book(s) from the library.Removed thumbnail for '%s'Removing thumbnailsRename collection?Rename...Replacing it will overwrite its contents.RootRotat_e 90 degrees CCWRotate 180 de_greesRotationRun _slideshowRussian translationSLIDESHOWS_crollbarsSaturationSaveScrollSearchSet the magnification factor of the magnifying glass.Set the size of the magnifying glass. It is a square with a side of this many pixels.SharpnessShow only one wide image in double page mode.Show page numbers on thumbnails.Simplified Chinese translationSizeSlideshowSlideshow delay (in seconds)Some old files (that were used for storing preferences, the library, bookmarks etc. for older versions of Comix) were found on your computer. If you do not plan on using the older versions of Comix again, you should remove these files in order to save some disk space. Do you want these files to be removed for you now?Spanish translationSt_atusbarStore information about recently opened files.Store thumbnails for opened files according to the freedesktop.org specification. These thumbnails are shared by many other applications, such as most file managers.Store thumbnails for opened files.Stretch images to a size that is larger than their original size if the current zoom mode requests it. If this preference is unset, images are never scaled to be larger than their original size.Stretch small images.T_oolbarsTar archiveTar archivesTh_umbnailsThe new archive could not be saved!The original files have not been removed.The selected books will be removed from the library (but the original files will be untouched). Are you sure that you want to continue?The selected collection will be removed from the library (but the books and subcollections in it will remain). Are you sure that you want to continue?There are deprecated files left on your computer.Thumbnail directoryThumbnail maintenanceThumbnail size (in pixels)ThumbnailsThumbnails for files (such as image files and comic book archives) are stored in your home directory. Many different applications use and create these thumbnails, but sometimes thumbnails remain even though the original files have been removed - wasting space. This dialog can cleanup your stored thumbnails by removing orphaned and outdated thumbnails.Total number of thumbnailsTotal size of removed thumbnailsTotal size of thumbnailsTraditional Chinese translationTransparencyTreat all files found within archives, that have one of these file endings, as comments.Unknown filetypeUse a cache to speed up browsing.Use a grey checkered background for transparent images. If this preference is unset, the background is plain white instead.Use checkered background for transparent images.Use double page mode by default.Use dynamic background colour.Use fullscreen by default.Use manga mode by default.Use smart scrolling with the space key. Normally the space key scrolls only right down (or up when shift is pressed), but with this preference set it also scrolls sideways and so tries to follow the natural reading order of the comic book.Use smart space key scrolling.Use this colour as backgroundYou need either the rar or the unrar program installed in order to read RAR (.cbr) files.ZIP archiveZIP archivesZoom _out_About_Add bookmark_Best fit mode_Bookmarks_Clear bookmarks..._Close_Double page mode_Edit_Edit archive..._Edit bookmarks..._Enhance image..._File_First page_Fullscreen_Go_Help_Keep transformation_Last page_Library..._Manga mode_Menubar_Next page_Open..._Previous page_Properties_Quit_Rotate 90 degrees CW_Thumbnail maintenance..._Toolbar_Transform_View_View comments..._Zoom inProject-Id-Version: Comix 4.0.1 Report-Msgid-Bugs-To: POT-Creation-Date: PO-Revision-Date: 2009-01-28 13:36+0800 Last-Translator: Xie Yanbo Language-Team: Xie Yanbo MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Generated-By: pygettext.py 1.5 X-Poedit-Language: Chinese X-Poedit-Basepath: /Users/xyb/Desktop/comix-4.0.1-rc1/ X-Poedit-Country: CHINA X-Poedit-SourceCharset: UTF-8 %d 个注释共%d页(拷贝)已经有一个使用该名称的收藏。名为“%s”的文件已经存在,你想要覆盖它吗?关于访问添加一个空的收藏。添加书添加书到“%s”中。添加收藏把所有 Comix 打开过的文件信息添加到最近文件列表中。向收藏库中添加更多书添加新的收藏?已经添加的书正在添加“%s”…正在添加的书所有文件包所有书所有文件所有图像文件所有保存的书签将会被删除。你确定要这么做吗?总是使用选中的这个颜色作为背景色。外观文件文件包以ZIP格式保存。自动添加书到这个收藏中分别为每一个颜色通道自动调整对比度(包括亮度和暗度)。自动调整对比度全屏时自动隐藏所有工具条。启动时,自动打开最后查看过的文件。当翻过最后一页时,自动打开当前目录的下一个文件包;或者翻过第一页时,自动打开前一个文件包。自动打开下一个文件包。启动时,自动打开上次Comix关闭时查看的文件。自动选择适合观看中图片的背景色。按照元数据描述自动旋转图像。如果图像文件中包含Exif等元数据,依照元数据的描述自动旋转图像。背景行为最佳适应模式巴西语、葡萄牙语译者亮度Bzip2 压缩过的 tar 文件包缓存缓存当前查看图片的后续图片,以提高浏览的速度。除非你的可用内存非常紧张,考虑到这个措施对速度提升有很大的优化,建议设置使用这个功能。正在计算…加泰罗尼亚语译者清除清除缩略图要清空所有书签吗?Comix 是一个为漫画书而特别设计的图像浏览器。Comix 遵循 GNU 通用公共许可证分发。注释扩展名注释对比度无法添加名称为“%s”的新收藏。无法修改名称为“%s”。无法创建收藏的副本。无法找到RAR文件解压缩程序!无法打开%s:它是一个目录。无法打开%s:没有这个文件。无法打开%s:权限不足。无法打开%s:未知的文件格式。无法读取%s封面大小致谢克罗地亚语译者捷克语译者默认模式默认的缩放模式默认开发者显示在双页模式时,如果图片的宽度大于高度,只显示一张图片。只显示在完整路径名中包含指定字符串的书。搜索不区分字母大小写。你确定要清除过期的缩略图吗?双页模式复制收藏荷兰语译者编辑文件包编辑书签美化图像文件第一页适应高度模式(_H)适应宽度模式(_W)适应高度模式适应宽度模式水平翻转(_P)垂直翻转(_V)当使用鼠标滚轮或者键盘方向键滚动出页面时翻页。在翻页之前,需要连续三次滚动滚轮或者按下方向键。当滚动出页面边界时翻页。双页模式时一次翻两页。在双页模式时,每次翻两页,而不是一页。法语译者全屏德语译者,Nautilus 缩略图功能作者希腊语译者Gzip 压缩过的 tar 文件包隐藏所有(_I)匈牙利语译者图标设计图像图像缩放图像文件导入印尼语译者它可以像读取普通图片文件一样读取ZIP、RAR以及tar等压缩文件。意大利语译者JPEG图像文件日语译者韩语译者最后一页收藏库位置手动缩放模式 (_A)放大倍数放大镜放大镜 (_G)放大镜放大镜大小 (像素)Manga 漫画模式手动缩放(_Z)手动缩放模式修改把书从“%(source collection)s”移动到“%(destination collection)s”中。名称新收藏后一页“%s”中没有图像文件删除缩略图总数原始大小 (_R)打开打开最近的 (_R)打开选中的书。其他文件属主PNG图像文件页面权限波斯语译者请输入新收藏的名称。请输入收藏要修改成的名称。请注意,只有被Comix认为是注释的文件,才会被自动添加到这个列表中。波兰语译者首选项(_E)首选项前一页属性把收藏“%(subcollection)s”放入收藏“%(supercollection)s”中。RAR 文件包RAR文件包要从收藏库中删除这些书吗?要从收藏库中删除收藏吗?删除收藏...从文件包中删除从收藏库中删除…从这个收藏中山促从“%(collection)s”中删除了%(num)d本书。从收藏库中删除了%d本书。删除“%s”的缩略图正在删除缩略图重命名收藏?重命名...覆盖它会覆写它的文件内容根逆时针旋转90度(_E)旋转180度(_G)旋转放映幻灯片 (_S)俄语译者幻灯片播放滚动条(_C)饱和度保存滚动搜索设置放大镜的放大倍数。设置放大镜的大小。将显示为指定像素数边长的正方形。锐度双页模式时只显示一张宽图片。在缩略图上显示页码。简体中文译者大小幻灯片放映幻灯片延迟 (秒)在你的计算机中还留有一些旧文件,在以前版本的Comix中用来保存设置、收藏库、书签等。如果你以后不再使用旧版本的Comix,可以把它们删掉节省存储空间。你像现在就删除这些文件吗?西班牙语译者状态栏(_A)保存最近打开的文件的信息。按照 freedesktop.org 规范,保存已经打开过的文件的缩略图。这些缩略图会与其他程序(例如大多数文件管理器)共享使用。存储已经打开过的文件的缩略图。如果当前缩放模式需要,把图片放大到超过自己的原始大小。如果这个选项没有选中,图片不会缩放到超过原始大小。放大小图片。工具条 (_O)Tar 文件包Tar文件包缩略图(_U)无法保存新的文件包!原始文件还没有被删除。从收藏库中删除选中的书(不会影响原始文件)。你确定要继续吗?从收藏库中删除选中的收藏,但不删除其中的书和子收藏。你确定要继续吗?在你的计算机里留有一些已经不再被使用的文件。缩略图目录缩略图管理缩略图大小 (像素)缩略图漫画书和图像文件的缩略图存放在你的用户目录中。各种程序都会使用和创建缩略图,当如果原始图片已经被删掉,还保留缩略图只是对存储空间的浪费。这个对话框可以帮助你清理过期的缩略图文件。缩略图总数删除缩略图总大小缩略图总大小繁体中文译者透明度把文件包中任何包含以下一个文件结尾的文件,视作注释。未知的文件格式使用缓存加速浏览。使用灰色跳棋格图案作为透明图像的背景。如果不设置这个选项,则使用纯白背景。使用棋盘格图像做透明图片的背景。默认使用双页模式。使用动态背景色。默认使用全屏模式默认使用 Manga 模式按空格键时智能化翻页。一般按空格键时只向下翻页(按住shift键时向上翻页),但设置了这个选项后,可以向两侧翻页,以便尽量符合平常阅读漫画书时的顺序。使用空格键做智能化滚动。使用这个颜色作为背景你需要安装用来读取RAR(.cbr)文件的rarunrar程序。ZIP 文件包ZIP文件包缩小(_O)关于(_A)增加书签(_A)最佳适应模式 (_B)书签(_B)清空书签(_C)...关闭(_C)双页模式(_D)编辑(_E)编辑文件包… (_E)编辑书签(_E)...美化图像… (_E)文件(_F)第一页(_F)全屏(_F)跳转(_G)帮助(_H)保持变换(_K)最后一页(_L)收藏库… (_L)Manga 漫画模式(M)菜单栏(_M)下一页(_N)打开(_O)...上一页(_P)属性 (_P)退出(_Q)顺时针旋转90度(_R)缩略图管理… (_T)工具栏(_T)变换(_T)查看(_V)查看注释… (_V)放大(_Z)comix-4.0.4/messages/id/LC_MESSAGES/comix.po0000644000175000001440000011553211137133373017213 0ustar sorkusers# SOME DESCRIPTIVE TITLE. # Copyright (C) 2008 Pontus Ekberg # Andhika Padmawan , 2008. # msgid "" msgstr "" "Project-Id-Version: Comix-4.0.1\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2008-11-22 02:42+0100\n" "PO-Revision-Date: 2008-12-13 21:23+0700\n" "Last-Translator: Andhika Padmawan \n" "Language-Team: Indonesia \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" "Generated-By: pygettext.py 1.5\n" "X-Poedit-Language: Indonesian\n" "X-Poedit-Country: INDONESIA\n" "X-Poedit-SourceCharset: utf-8\n" # # File: src/about.py, line: 18 # File: src/about.py, line: 67 #: src/about.py:19 src/about.py:68 msgid "About" msgstr "Tentang" # # File: src/about.py, line: 55 #: src/about.py:56 msgid "Comix is an image viewer specifically designed to handle comic books." msgstr "" "Comix adalah penampil gambar yang didesain khusus untuk menangani buku komik." # # File: src/about.py, line: 57 #: src/about.py:58 msgid "It reads ZIP, RAR and tar archives, as well as plain image files." msgstr "" "Comix membaca arsip ZIP, RAR dan tar, begitu pula dengan berkas citra biasa." # # File: src/about.py, line: 59 #: src/about.py:60 msgid "Comix is licensed under the GNU General Public License." msgstr "Comix dilisensikan di bawah GNU General Public License." # # File: src/about.py, line: 75 #: src/about.py:83 msgid "Developer" msgstr "Pengembang" # # File: src/about.py, line: 77 #: src/about.py:84 src/about.py:85 msgid "Simplified Chinese translation" msgstr "Terjemahan bahasa China yang disederhanakan" # # File: src/about.py, line: 78 #: src/about.py:86 msgid "Spanish translation" msgstr "Terjemahan bahasa Spanyol" # # File: src/about.py, line: 79 #: src/about.py:87 msgid "Brazilian Portuguese translation" msgstr "Terjemahan bahasa Portugis Brasil" # # File: src/about.py, line: 81 #: src/about.py:88 msgid "German translation and Nautilus thumbnailer" msgstr "Terjemahan bahasa Jerman dan pembuat miniatur gambar Nautilus" # # File: src/about.py, line: 82 #: src/about.py:89 src/about.py:90 msgid "Italian translation" msgstr "Terjemahan bahasa Italia" # # File: src/about.py, line: 83 #: src/about.py:91 msgid "Dutch translation" msgstr "Terjemahan bahasa Belanda" # # File: src/about.py, line: 84 #: src/about.py:92 msgid "French translation" msgstr "Terjemahan bahasa Prancis" # # File: src/about.py, line: 85 #: src/about.py:93 src/about.py:94 msgid "Polish translation" msgstr "Terjemahan bahasa Polandia" # # File: src/about.py, line: 86 #: src/about.py:95 msgid "Greek translation" msgstr "Terjemahan bahasa Yunani" # # File: src/about.py, line: 87 #: src/about.py:96 msgid "Catalan translation" msgstr "Terjemahan bahasa Catalan" # # File: src/about.py, line: 88 #: src/about.py:97 src/about.py:98 msgid "Traditional Chinese translation" msgstr "Terjemahan bahasa China tradisional" # # File: src/about.py, line: 89 #: src/about.py:99 msgid "Japanese translation" msgstr "Terjemahan bahasa Jepang" # # File: src/about.py, line: 90 #: src/about.py:100 msgid "Hungarian translation" msgstr "Terjemahan bahasa Hungaria" # # File: src/about.py, line: 91 #: src/about.py:101 msgid "Russian translation" msgstr "Terjemahan bahasa Rusia" # # File: src/about.py, line: 92 #: src/about.py:102 msgid "Croatian translation" msgstr "Terjemahan bahasa Kroasia" # # File: src/about.py, line: 93 #: src/about.py:103 msgid "Korean translation" msgstr "Terjemahan bahasa Korea" # # File: src/about.py, line: 94 #: src/about.py:104 msgid "Persian translation" msgstr "Terjemahan bahasa Persia" # # File: src/about.py, line: 95 #: src/about.py:105 msgid "Indonesian translation" msgstr "Terjemahan bahasa Indonesia" # # File: src/about.py, line: 96 #: src/about.py:106 msgid "Czech translation" msgstr "Terjemahan bahasa Ceko" # # File: src/about.py, line: 97 #: src/about.py:107 msgid "Icon design" msgstr "Desain ikon" # # File: src/about.py, line: 106 #: src/about.py:114 msgid "Credits" msgstr "Kredit" # # File: src/archive.py, line: 66 #: src/archive.py:66 msgid "Could not find RAR file extractor!" msgstr "Tak dapat menemukan pengekstrak berkas RAR!" # # File: src/archive.py, line: 68 #: src/archive.py:68 msgid "" "You need either the rar or the unrar program installed in " "order to read RAR (.cbr) files." msgstr "" "Anda memerlukan program rar atau unrar yang terinstal untuk " "dapat membaca berkas RAR (.cbr)." # # File: src/archive.py, line: 301 #: src/archive.py:305 msgid "ZIP archive" msgstr "Arsip ZIP" # # File: src/archive.py, line: 302 #: src/archive.py:306 msgid "Tar archive" msgstr "Arsip Tar" # # File: src/archive.py, line: 303 #: src/archive.py:307 msgid "Gzip compressed tar archive" msgstr "Arsip tar terkompres Gzip" # # File: src/archive.py, line: 304 #: src/archive.py:308 msgid "Bzip2 compressed tar archive" msgstr "Arsip tar terkompres Bzip2" # # File: src/archive.py, line: 305 #: src/archive.py:309 msgid "RAR archive" msgstr "Arsip RAR" # # File: src/bookmark.py, line: 27 #: src/bookmark.py:28 msgid "_Add bookmark" msgstr "_Tambah bookmark" # # File: src/bookmark.py, line: 29 #: src/bookmark.py:30 msgid "_Edit bookmarks..." msgstr "_Sunting bookmark..." # # File: src/bookmark.py, line: 31 #: src/bookmark.py:32 msgid "_Clear bookmarks..." msgstr "_Hapus bookmark..." # # File: src/bookmark.py, line: 77 #: src/bookmark.py:78 msgid "Clear all bookmarks?" msgstr "Hapus semua bookmark?" # # File: src/bookmark.py, line: 79 #: src/bookmark.py:80 msgid "" "All stored bookmarks will be removed. Are you sure that you want to continue?" msgstr "Semua bookmark tersimpan akan dihapus. Anda yakin ingin melanjutkan?" # # File: src/bookmark.py, line: 229 #: src/bookmark.py:230 msgid "Edit bookmarks" msgstr "Sunting bookmark" # # File: src/bookmark.py, line: 255 # File: src/edit.py, line: 267 #: src/bookmark.py:256 src/edit.py:270 msgid "Name" msgstr "Nama" # # File: src/bookmark.py, line: 256 #: src/bookmark.py:257 msgid "Page" msgstr "Halaman" # # File: src/comment.py, line: 16 # File: src/preferences.py, line: 288 #: src/comment.py:16 src/preferences.py:299 msgid "Comments" msgstr "Komentar" # # File: src/comment.py, line: 53 #: src/comment.py:53 #, python-format msgid "Could not read %s" msgstr "Tak dapat membaca %s" # # File: src/deprecated.py, line: 16 #: src/deprecated.py:16 msgid "There are deprecated files left on your computer." msgstr "Ada berkas tertinggal di komputer anda." # # File: src/deprecated.py, line: 22 #: src/deprecated.py:22 msgid "" "Some old files (that were used for storing preferences, the library, " "bookmarks etc. for older versions of Comix) were found on your computer. If " "you do not plan on using the older versions of Comix again, you should " "remove these files in order to save some disk space. Do you want these files " "to be removed for you now?" msgstr "" "Beberapa berkas lama (yang digunakan untuk pengaturan penyimpanan, pustaka, " "bookmark, dll. untuk versi lama Comix) ditemukan di komputer anda. Jika anda " "tidak berencana untuk menggunakan versi lama Comix lagi, anda harus " "menghapus berkas ini agar menghemat ruang kosong di cakram. Anda ingin " "berkas ini dihapus sekarang?" # # File: src/edit.py, line: 28 #: src/edit.py:29 msgid "Edit archive" msgstr "Sunting arsip" # # File: src/edit.py, line: 36 #: src/edit.py:37 msgid "Import" msgstr "Impor" # # File: src/edit.py, line: 50 #: src/edit.py:51 msgid "Images" msgstr "Citra" # # File: src/edit.py, line: 51 #: src/edit.py:52 msgid "Other files" msgstr "Berkas lain" # # File: src/edit.py, line: 99 #: src/edit.py:101 msgid "The new archive could not be saved!" msgstr "Berkas baru tak dapat disimpan!" # # File: src/edit.py, line: 101 #: src/edit.py:103 msgid "The original files have not been removed." msgstr "Berkas asli belum dihapus." # # File: src/edit.py, line: 115 #: src/edit.py:117 msgid "Archives are stored as ZIP files." msgstr "Arsip disimpan sebagai berkas ZIP." # # File: src/edit.py, line: 168 # File: src/edit.py, line: 285 #: src/edit.py:170 src/edit.py:288 msgid "Remove from archive" msgstr "Hapus dari arsip" # # File: src/edit.py, line: 255 #: src/edit.py:258 msgid "" "Please note that the only files that are automatically added to this list " "are those files in archives that Comix recognizes as comments." msgstr "" "Perlu dicatat bahwa satu-satunya berkas yang secara otomatis ditambah ke " "senarai ini adalah berkas di dalam arsip yang Comix kenali sebagai komentar." # # File: src/edit.py, line: 270 #: src/edit.py:273 msgid "Size" msgstr "Ukuran" # # File: src/enhance.py, line: 51 #: src/enhance.py:51 msgid "Enhance image" msgstr "Tingkatkan citra" # # File: src/enhance.py, line: 52 #: src/enhance.py:52 msgid "Defaults" msgstr "Standar" # # File: src/enhance.py, line: 79 #: src/enhance.py:79 msgid "Brightness" msgstr "Kecerahan" # # File: src/enhance.py, line: 90 #: src/enhance.py:90 msgid "Contrast" msgstr "Kontras" # # File: src/enhance.py, line: 101 #: src/enhance.py:101 msgid "Saturation" msgstr "Saturasi" # # File: src/enhance.py, line: 112 #: src/enhance.py:112 msgid "Sharpness" msgstr "Ketajaman" # # File: src/enhance.py, line: 126 #: src/enhance.py:126 msgid "Automatically adjust contrast." msgstr "Otomatis menyesuaikan kontras." # # File: src/enhance.py, line: 128 #: src/enhance.py:128 msgid "" "Automatically adjust contrast (both lightness and darkness), separately for " "each colour band." msgstr "" "Otomatis menyesuaikan kontras (baik kecerahan dan kegelapan), terpisah untuk " "tiap pita warna." # # File: src/filechooser.py, line: 35 # File: src/library.py, line: 489 #: src/filechooser.py:38 src/library.py:490 msgid "Open" msgstr "Buka" # # File: src/filechooser.py, line: 39 #: src/filechooser.py:42 msgid "Save" msgstr "Simpan" # # File: src/filechooser.py, line: 75 #: src/filechooser.py:78 msgid "All files" msgstr "Semua berkas" # # File: src/filechooser.py, line: 78 #: src/filechooser.py:81 msgid "All Archives" msgstr "Semua Arsip" # # File: src/filechooser.py, line: 82 #: src/filechooser.py:85 msgid "ZIP archives" msgstr "Arsip ZIP" # # File: src/filechooser.py, line: 84 #: src/filechooser.py:87 msgid "RAR archives" msgstr "Arsip RAR" # # File: src/filechooser.py, line: 86 #: src/filechooser.py:89 msgid "Tar archives" msgstr "Arsip Tar" # # File: src/filechooser.py, line: 125 #: src/filechooser.py:134 #, python-format msgid "A file named '%s' already exists. Do you want to replace it?" msgstr "Berkas bernama '%s' telah ada. Anda ingin menggantinya?" # # File: src/filechooser.py, line: 128 #: src/filechooser.py:137 msgid "Replacing it will overwrite its contents." msgstr "Mengganti berkas akan menimpa isinya." # # File: src/filechooser.py, line: 171 # File: src/filechooser.py, line: 249 #: src/filechooser.py:182 src/filechooser.py:260 msgid "All images" msgstr "Semua gambar" # # File: src/filechooser.py, line: 173 # File: src/filechooser.py, line: 251 #: src/filechooser.py:184 src/filechooser.py:262 msgid "JPEG images" msgstr "Citra JPEG" # # File: src/filechooser.py, line: 174 # File: src/filechooser.py, line: 252 #: src/filechooser.py:185 src/filechooser.py:263 msgid "PNG images" msgstr "Citra PNG" # # File: src/filechooser.py, line: 195 #: src/filechooser.py:206 msgid "Automatically add the books to this collection" msgstr "Otomatis menambah buku ke koleksi ini" # # File: src/filehandler.py, line: 209 #: src/filehandler.py:209 #, python-format msgid "Could not open %s: Is a directory." msgstr "Tak dapat membuka %s: Sebuah direktori." # # File: src/filehandler.py, line: 213 #: src/filehandler.py:213 #, python-format msgid "Could not open %s: No such file." msgstr "Tak dapat membuka %s: Tak ada berkas." # # File: src/filehandler.py, line: 217 #: src/filehandler.py:217 #, python-format msgid "Could not open %s: Permission denied." msgstr "Tak dapat membuka %s: Hak akses ditolak." # # File: src/filehandler.py, line: 222 #: src/filehandler.py:222 #, python-format msgid "Could not open %s: Unknown file type." msgstr "Tak dapat membuka %s: Tipe berkas tak diketahui." # # File: src/filehandler.py, line: 285 #: src/filehandler.py:285 #, python-format msgid "No images in '%s'" msgstr "Tak ada citra di '%s'" # # File: src/filehandler.py, line: 411 #: src/filehandler.py:413 msgid "Unknown filetype" msgstr "Tipe berkas tak diketahui" # # File: src/librarybackend.py, line: 272 # File: src/librarybackend.py, line: 274 #: src/librarybackend.py:273 src/librarybackend.py:275 msgid "(Copy)" msgstr "(Salin)" # # File: src/library.py, line: 38 #: src/library.py:38 msgid "Library" msgstr "Perpustakan" # # File: src/library.py, line: 150 #: src/library.py:150 msgid "Rename..." msgstr "Ganti Nama..." # # File: src/library.py, line: 152 #: src/library.py:152 msgid "Duplicate collection" msgstr "Duplikasi koleksi" # # File: src/library.py, line: 154 #: src/library.py:154 msgid "Remove collection..." msgstr "Hapus koleksi..." # # File: src/library.py, line: 202 #: src/library.py:202 msgid "All books" msgstr "Semua buku" # # File: src/library.py, line: 231 #: src/library.py:231 msgid "Remove collection from the library?" msgstr "Hapus koleksi dari pustaka?" # # File: src/library.py, line: 233 #: src/library.py:233 msgid "" "The selected collection will be removed from the library (but the books and " "subcollections in it will remain). Are you sure that you want to continue?" msgstr "" "Koleksi terpilih akan dihapus dari pustaka (tapi buku dan subkoleksi di " "dalamnya akan tetap terjaga). Apakah anda yakin ingin melanjutkan?" # # File: src/library.py, line: 251 #: src/library.py:251 msgid "Rename collection?" msgstr "Ganti nama koleksi?" # # File: src/library.py, line: 253 #: src/library.py:253 msgid "Please enter a new name for the selected collection." msgstr "Silakan masukkan nama baru untuk koleksi terpilih." # # File: src/library.py, line: 271 #: src/library.py:271 #, python-format msgid "Could not change the name to '%s'." msgstr "Tak dapat mengubah nama ke '%s'." # # File: src/library.py, line: 275 # File: src/library.py, line: 881 #: src/library.py:275 src/library.py:882 msgid "A collection by that name already exists." msgstr "Koleksi dengan nama tersebut telah ada." # # File: src/library.py, line: 285 #: src/library.py:285 msgid "Could not duplicate collection." msgstr "Tak dapat menduplikasi koleksi." # # File: src/library.py, line: 382 #: src/library.py:382 msgid "Root" msgstr "Root" # # File: src/library.py, line: 386 #: src/library.py:386 #, python-format msgid "" "Put the collection '%(subcollection)s' in the collection '%(supercollection)" "s'." msgstr "Taruh koleksi '%(subcollection)s' di koleksi '%(supercollection)s'." # # File: src/library.py, line: 407 #: src/library.py:407 #, python-format msgid "Add books to '%s'." msgstr "Tambah buku ke '%s'." # # File: src/library.py, line: 411 #: src/library.py:411 #, python-format msgid "" "Move books from '%(source collection)s' to '%(destination collection)s'." msgstr "" "Pindah buku dari '%(source collection)s' ke '%(destination collection)s'." # # File: src/library.py, line: 492 #: src/library.py:493 msgid "Remove from this collection" msgstr "Hapus dari koleksi ini" # # File: src/library.py, line: 495 #: src/library.py:496 msgid "Remove from the library..." msgstr "Hapus dari pustaka..." # # File: src/library.py, line: 588 #: src/library.py:589 #, python-format msgid "Removed %(num)d book(s) from '%(collection)s'." msgstr "Hapus %(num)d buku dari '%(collection)s'." # # File: src/library.py, line: 597 #: src/library.py:598 msgid "Remove books from the library?" msgstr "Hapus buku dari pustaka?" # # File: src/library.py, line: 599 #: src/library.py:600 msgid "" "The selected books will be removed from the library (but the original files " "will be untouched). Are you sure that you want to continue?" msgstr "" "Buku terpilih akan dihapus dari pustaka (tapi berkas aslinya akan tetap tak " "tersentuh). Anda yakin ingin melanjutkan?" # # File: src/library.py, line: 609 #: src/library.py:610 #, python-format msgid "Removed %d book(s) from the library." msgstr "Hapus %d buku dari pustaka." # # File: src/library.py, line: 769 #: src/library.py:770 msgid "Search" msgstr "Cari" # # File: src/library.py, line: 774 #: src/library.py:775 msgid "" "Display only those books that have the specified text string in their full " "path. The search is not case sensitive." msgstr "" "Hanya tampilkan buku yang mempunyai benang teks di alamat penuh mereka. " "Pencarian tidak sensitif huruf." # # File: src/library.py, line: 776 #: src/library.py:777 msgid "Cover size" msgstr "Ukuran sampul" # # File: src/library.py, line: 789 #: src/library.py:790 msgid "Add books" msgstr "Tambah buku" # # File: src/library.py, line: 793 #: src/library.py:794 msgid "Add more books to the library." msgstr "Tambah lebih banyak buku ke pustaka." # # File: src/library.py, line: 795 #: src/library.py:796 msgid "Add collection" msgstr "Tambah koleksi" # # File: src/library.py, line: 800 #: src/library.py:801 msgid "Add a new empty collection." msgstr "Tambah koleksi kosong baru." # # File: src/library.py, line: 806 #: src/library.py:807 msgid "Open the selected book." msgstr "Buka buku terpilih." # # File: src/library.py, line: 832 # File: src/properties.py, line: 113 #: src/library.py:833 src/properties.py:118 #, python-format msgid "%d pages" msgstr "%d halaman" # # File: src/library.py, line: 854 #: src/library.py:855 msgid "Add new collection?" msgstr "Tambah koleksi baru?" # # File: src/library.py, line: 856 #: src/library.py:857 msgid "Please enter a name for the new collection." msgstr "Silakan masukkan nama untuk koleksi baru." # # File: src/library.py, line: 862 #: src/library.py:863 msgid "New collection" msgstr "Koleksi baru" # # File: src/library.py, line: 876 #: src/library.py:877 #, python-format msgid "Could not add a new collection called '%s'." msgstr "Tak dapat menambah koleksi baru bernama '%s'." # # File: src/library.py, line: 910 #: src/library.py:911 msgid "Adding books" msgstr "Menambah buku" # # File: src/library.py, line: 930 #: src/library.py:931 msgid "Added books" msgstr "Buku yang ditambah" # # File: src/library.py, line: 952 #: src/library.py:953 #, python-format msgid "Adding '%s'..." msgstr "Menambah '%s'..." # # File: src/main.py, line: 666 #: src/main.py:699 msgid "SLIDESHOW" msgstr "SALINDIA" # # File: src/preferences.py, line: 78 #: src/preferences.py:80 msgid "Preferences" msgstr "Pengaturan" # # File: src/preferences.py, line: 93 #: src/preferences.py:95 msgid "Background" msgstr "Latar Belakang" # # File: src/preferences.py, line: 95 #: src/preferences.py:97 msgid "Use this colour as background" msgstr "Gunakan warna ini sebagai latar belakang" # # File: src/preferences.py, line: 97 #: src/preferences.py:99 msgid "Always use this selected colour as the background colour." msgstr "Selalu gunakan warna terpilih ini sebagai warna latar belakang." # # File: src/preferences.py, line: 102 #: src/preferences.py:104 msgid "Use dynamic background colour." msgstr "Gunakan warna latar belakang dinamis." # # File: src/preferences.py, line: 106 #: src/preferences.py:108 msgid "Automatically pick a background colour that fits the viewed image." msgstr "" "Secara otomatis mengambil warna latar belakang yang cocok dengan citra yang " "ditampilkan." # # File: src/preferences.py, line: 109 #: src/preferences.py:111 msgid "Thumbnails" msgstr "Miniatur gambar" # # File: src/preferences.py, line: 110 #: src/preferences.py:112 msgid "Thumbnail size (in pixels)" msgstr "Ukuran miniatur (dalam piksel)" # # File: src/preferences.py, line: 117 #: src/preferences.py:119 msgid "Show page numbers on thumbnails." msgstr "Tampilkan nomor halaman di miniatur." # # File: src/preferences.py, line: 124 #: src/preferences.py:126 msgid "Magnifying Glass" msgstr "Lensa Pembesar" # # File: src/preferences.py, line: 125 #: src/preferences.py:127 msgid "Magnifying glass size (in pixels)" msgstr "Ukuran lensa pembesar (dalam piksel)" # # File: src/preferences.py, line: 131 #: src/preferences.py:133 msgid "" "Set the size of the magnifying glass. It is a square with a side of this " "many pixels." msgstr "" "Atur ukuran lensa pembesar. Berupa kotak dengan sisi dari sebanyak ini " "piksel." # # File: src/preferences.py, line: 133 #: src/preferences.py:135 msgid "Magnification factor" msgstr "Faktor pembesaran" # # File: src/preferences.py, line: 140 #: src/preferences.py:142 msgid "Set the magnification factor of the magnifying glass." msgstr "Atur faktor pembesaran dari lensa pembesar." # # File: src/preferences.py, line: 143 #: src/preferences.py:145 msgid "Image scaling" msgstr "Skala citra" # # File: src/preferences.py, line: 144 #: src/preferences.py:146 msgid "Stretch small images." msgstr "Rentangkan citra kecil." # # File: src/preferences.py, line: 148 #: src/preferences.py:150 msgid "" "Stretch images to a size that is larger than their original size if the " "current zoom mode requests it. If this preference is unset, images are never " "scaled to be larger than their original size." msgstr "" "Rentangkan citra ke ukuran yang lebih besar dari ukuran asli jika mode " "pembesaran saat ini memintanya. Jika pengaturan ini tak diatur, citra tidak " "pernah diubah menjadi lebih besar dari ukuran aslinya." # # File: src/preferences.py, line: 151 #: src/preferences.py:153 msgid "Transparency" msgstr "Transparansi" # # File: src/preferences.py, line: 153 #: src/preferences.py:155 msgid "Use checkered background for transparent images." msgstr "Gunakan latar belakang yang telah diperiksa untuk citra transparan." # # File: src/preferences.py, line: 159 #: src/preferences.py:161 msgid "" "Use a grey checkered background for transparent images. If this preference " "is unset, the background is plain white instead." msgstr "" "Gunakan warna latar belakang yang telah diperiksa untuk citra transparan. " "Jika pengaturan ini tidak diatur, latar belakang menjadi putih polos." # # File: src/preferences.py, line: 161 #: src/preferences.py:163 msgid "Appearance" msgstr "Penampilan" # # File: src/preferences.py, line: 167 #: src/preferences.py:169 msgid "Scroll" msgstr "Gulung" # # File: src/preferences.py, line: 169 #: src/preferences.py:171 msgid "Use smart space key scrolling." msgstr "Gunakan penggulung tombol spasi cerdas." # # File: src/preferences.py, line: 174 #: src/preferences.py:176 msgid "" "Use smart scrolling with the space key. Normally the space key scrolls only " "right down (or up when shift is pressed), but with this preference set it " "also scrolls sideways and so tries to follow the natural reading order of " "the comic book." msgstr "" "Gunakan penggulung cerdas dengan tombol spasi. Normalnya tombol gulung spasi " "hanya bergerak dari kanan ke bawah (atau atas jika shift ditekan), tapi " "dengan pengaturan ini diatur tombol akan menggulung ke samping dan mencoba " "untuk mengikuti urutan membaca natural buku komik." #: src/preferences.py:180 msgid "Flip pages when scrolling off the edges of the page." msgstr "Lipat halaman ketika menggulung tepi halaman." #: src/preferences.py:185 msgid "" "Flip pages when scrolling \"off the page\" with the scroll wheel or with the " "arrow keys. It takes three consecutive \"steps\" with the scroll wheel or " "the arrow keys for the pages to be flipped." msgstr "" "Lipat halaman ketika menggulung \"tepi halaman\" dengan roda gulung atau " "tombol panah. Membutuhkan tiga \"langkah\" berurutan dengan menggunakan roda " "gulung atau tombol panah agar halaman terlipat." # # File: src/preferences.py, line: 177 # File: src/ui.py, line: 296 #: src/preferences.py:188 src/ui.py:298 msgid "Double page mode" msgstr "Mode halaman ganda" # # File: src/preferences.py, line: 179 #: src/preferences.py:190 msgid "Flip two pages in double page mode." msgstr "Lipat dua halaman dalam mode halaman ganda." # # File: src/preferences.py, line: 184 #: src/preferences.py:195 msgid "" "Flip two pages, instead of one, each time we flip pages in double page mode." msgstr "" "Lipat dua halaman, ketimbang satu, tiap kali kami menggulung dalam mode " "halaman ganda." # # File: src/preferences.py, line: 187 #: src/preferences.py:198 msgid "Show only one wide image in double page mode." msgstr "Hanya tampilkan satu citra lebar dalam mode halaman ganda." # # File: src/preferences.py, line: 193 #: src/preferences.py:204 msgid "" "Display only one image in double page mode, if the image's width exceeds its " "height. The result of this is that scans that span two pages are displayed " "properly (i.e. alone) also in double page mode." msgstr "" "Hanya tampilkan satu citra dalam mode halaman ganda, jika lebar citra " "melebihi tingginya. Hasil dari ini adalah pemindaian yang merentangkan dua " "halaman akan ditampilkan secara benar (misalnya sendiri) juga dalam mode " "halaman ganda." # # File: src/preferences.py, line: 196 #: src/preferences.py:207 msgid "Files" msgstr "Berkas" # # File: src/preferences.py, line: 198 #: src/preferences.py:209 msgid "Automatically open the next archive." msgstr "Otomatis membuka arsip berikutnya." # # File: src/preferences.py, line: 203 #: src/preferences.py:214 msgid "" "Automatically open the next archive in the directory when flipping past the " "last page, or the previous archive when flipping past the first page." msgstr "" "Otomatis membuka arsip berikutnya di direktori ketika melipat halaman " "terakhir, atau arsip sebelumnya ketika melipat halaman pertama." # # File: src/preferences.py, line: 206 #: src/preferences.py:217 msgid "Automatically open the last viewed file on startup." msgstr "Otomatis membuka berkas yang terakhir ditampilkan pada hidupkan." # # File: src/preferences.py, line: 211 #: src/preferences.py:222 msgid "" "Automatically open, on startup, the file that was open when Comix was last " "closed." msgstr "" "Otomatis membuka, pada hidupkan, berkas yang terbuka ketika Comix terakhir " "kali ditutup." # # File: src/preferences.py, line: 214 #: src/preferences.py:225 msgid "Store information about recently opened files." msgstr "Simpan informasi tentang berkas yang baru-baru ini terbuka." # # File: src/preferences.py, line: 219 #: src/preferences.py:230 msgid "" "Add information about all files opened from within Comix to the shared " "recent files list." msgstr "" "Tambah informasi tentang semua berkas yang dibuka dari dalam Comix ke " "senarai berkas terkini yang dikongsi." # # File: src/preferences.py, line: 222 #: src/preferences.py:233 msgid "Store thumbnails for opened files." msgstr "Simpan miniatur untuk berkas yang dibuka." # # File: src/preferences.py, line: 227 #: src/preferences.py:238 msgid "" "Store thumbnails for opened files according to the freedesktop.org " "specification. These thumbnails are shared by many other applications, such " "as most file managers." msgstr "" "Simpan miniatur untuk berkas yang dibuka menurut spesifikasi freedesktop." "org. Miniatur ini dikongsikan oleh banyak aplikasi lain, seperti kebanyakan " "manajer berkas." # # File: src/preferences.py, line: 230 #: src/preferences.py:241 msgid "Cache" msgstr "Tembolok" # # File: src/preferences.py, line: 231 #: src/preferences.py:242 msgid "Use a cache to speed up browsing." msgstr "Gunakan tembolok untuk meningkatkan kecepatan meramban." # # File: src/preferences.py, line: 235 #: src/preferences.py:246 msgid "" "Cache the images that are next to the currently viewed image in order to " "speed up browsing. Since the speed improvements are quite big, it is " "recommended that you have this preference set, unless you are running short " "on free RAM." msgstr "" "Tembolok citra yang ada di samping ke citra yang saat ini ditampilkan supaya " "meningkatkan kecepatan meramban. Karena peningkatan kecepatan cukup besar, " "disarankan agar anda mengatur pengaturan ini, kecuali anda kekurangan RAM " "bebas." # # File: src/preferences.py, line: 237 #: src/preferences.py:248 msgid "Behaviour" msgstr "Perilaku" # # File: src/preferences.py, line: 243 #: src/preferences.py:254 msgid "Default modes" msgstr "Mode standar" # # File: src/preferences.py, line: 245 #: src/preferences.py:256 msgid "Use double page mode by default." msgstr "Gunakan mode halaman gandar sebagai standar." # # File: src/preferences.py, line: 250 #: src/preferences.py:261 msgid "Use fullscreen by default." msgstr "Gunakan layar penuh sebagai standar." # # File: src/preferences.py, line: 255 #: src/preferences.py:266 msgid "Use manga mode by default." msgstr "Gunakan mode manga sebagai standar." # # File: src/preferences.py, line: 260 #: src/preferences.py:271 msgid "Default zoom mode" msgstr "Mode pembesaran standar" # # File: src/preferences.py, line: 262 # File: src/ui.py, line: 288 #: src/preferences.py:273 src/ui.py:290 msgid "Best fit mode" msgstr "Mode ukuran terbaik" # # File: src/preferences.py, line: 263 # File: src/ui.py, line: 290 #: src/preferences.py:274 src/ui.py:292 msgid "Fit width mode" msgstr "Mode sesuai lebar" # # File: src/preferences.py, line: 264 # File: src/ui.py, line: 292 #: src/preferences.py:275 src/ui.py:294 msgid "Fit height mode" msgstr "Mode sesuai tinggi" # # File: src/preferences.py, line: 265 # File: src/ui.py, line: 294 #: src/preferences.py:276 src/ui.py:296 msgid "Manual zoom mode" msgstr "Mode pembesaran manual" # # File: src/preferences.py, line: 271 #: src/preferences.py:282 msgid "Fullscreen" msgstr "Layar Penuh" # # File: src/preferences.py, line: 273 #: src/preferences.py:284 msgid "Automatically hide all toolbars in fullscreen." msgstr "Otomatis menyembunyikan semua batang alat di layar penuh." # # File: src/preferences.py, line: 279 #: src/preferences.py:290 msgid "Slideshow" msgstr "Presentasi" # # File: src/preferences.py, line: 280 #: src/preferences.py:291 msgid "Slideshow delay (in seconds)" msgstr "Jeda salindia (dalam detik)" # # File: src/preferences.py, line: 289 #: src/preferences.py:300 msgid "Comment extensions" msgstr "Ekstensi komentar" # # File: src/preferences.py, line: 295 #: src/preferences.py:306 msgid "" "Treat all files found within archives, that have one of these file endings, " "as comments." msgstr "" "Perlakukan semua berkas yang ditemukan dalam arsip, yang mempunyai salah " "satu akhiran berkas ini, sebagai komentarl." #: src/preferences.py:309 msgid "Rotation" msgstr "" #: src/preferences.py:311 msgid "Automatically rotate images according to their metadata." msgstr "" #: src/preferences.py:316 msgid "" "Automatically rotate images when an orientation is specified in the image " "metadata, such as in an Exif tag." msgstr "" # # File: src/preferences.py, line: 297 #: src/preferences.py:318 msgid "Display" msgstr "Tampilan" # # File: src/properties.py, line: 89 #: src/properties.py:94 msgid "Properties" msgstr "Properti" # # File: src/properties.py, line: 114 #: src/properties.py:119 #, python-format msgid "%d comments" msgstr "%d komentar" # # File: src/properties.py, line: 124 # File: src/properties.py, line: 159 #: src/properties.py:129 src/properties.py:164 msgid "Location" msgstr "Lokasi" # # File: src/properties.py, line: 126 # File: src/properties.py, line: 160 #: src/properties.py:131 src/properties.py:165 msgid "Accessed" msgstr "Diakses" # # File: src/properties.py, line: 128 # File: src/properties.py, line: 162 #: src/properties.py:133 src/properties.py:167 msgid "Modified" msgstr "Dimodifikasi" # # File: src/properties.py, line: 130 # File: src/properties.py, line: 164 #: src/properties.py:135 src/properties.py:169 msgid "Permissions" msgstr "Hak Akses" # # File: src/properties.py, line: 131 # File: src/properties.py, line: 165 #: src/properties.py:136 src/properties.py:170 msgid "Owner" msgstr "Pemilik" # # File: src/properties.py, line: 135 #: src/properties.py:140 msgid "Archive" msgstr "Arsip" # # File: src/properties.py, line: 169 #: src/properties.py:174 msgid "Image" msgstr "Gambar" # # File: src/thumbremover.py, line: 22 #: src/thumbremover.py:24 msgid "Thumbnail maintenance" msgstr "Pengelolaan miniatur" # # File: src/thumbremover.py, line: 24 #: src/thumbremover.py:26 msgid "Cleanup" msgstr "Bersihkan" # # File: src/thumbremover.py, line: 36 #: src/thumbremover.py:38 msgid "Cleanup thumbnails" msgstr "Bersihkan miniatur" # # File: src/thumbremover.py, line: 46 #: src/thumbremover.py:48 msgid "" "Thumbnails for files (such as image files and comic book archives) are " "stored in your home directory. Many different applications use and create " "these thumbnails, but sometimes thumbnails remain even though the original " "files have been removed - wasting space. This dialog can cleanup your stored " "thumbnails by removing orphaned and outdated thumbnails." msgstr "" "Miniatur untuk berkas (seperti berkas citra dan arsip buku komik) yang " "disimpan di direktori rumah anda. Banyak aplikasi yang berbeda menggunakan " "dan membuat miniatur ini, tapi terkadang miniatur akan tetap meskipun berkas " "aslinya telah dihapus - menghabiskan ruang. Dialog ini dapat membersihkan " "miniatur tersimpan anda dengan menghapus miniatur yatim dan kadaluwarsa." # # File: src/thumbremover.py, line: 58 #: src/thumbremover.py:60 msgid "Thumbnail directory" msgstr "Direktori miniatur" # # File: src/thumbremover.py, line: 65 #: src/thumbremover.py:67 msgid "Total number of thumbnails" msgstr "Jumlah total miniatur" # # File: src/thumbremover.py, line: 68 # File: src/thumbremover.py, line: 75 #: src/thumbremover.py:70 src/thumbremover.py:77 msgid "Calculating..." msgstr "Mengalkulasi..." # # File: src/thumbremover.py, line: 72 #: src/thumbremover.py:74 msgid "Total size of thumbnails" msgstr "Ukuran total miniatur" # # File: src/thumbremover.py, line: 80 #: src/thumbremover.py:82 msgid "Do you want to cleanup orphaned and outdated thumbnails now?" msgstr "Anda ingin menghapus miniatur yatim dan kadaluwarsa sekarang?" # # File: src/thumbremover.py, line: 116 #: src/thumbremover.py:118 msgid "Removing thumbnails" msgstr "Menghapus miniatur gambar" # # File: src/thumbremover.py, line: 135 #: src/thumbremover.py:137 msgid "Number of removed thumbnails" msgstr "Jumlah miniatur yatim" # # File: src/thumbremover.py, line: 142 #: src/thumbremover.py:144 msgid "Total size of removed thumbnails" msgstr "Ukuran total miniatur yang dihapus" # # File: src/thumbremover.py, line: 193 #: src/thumbremover.py:195 #, python-format msgid "Removed thumbnail for '%s'" msgstr "Hapus miniatur untuk '%s'" # # File: src/ui.py, line: 34 #: src/ui.py:34 msgid "_Next page" msgstr "Halaman _berikutnya" # # File: src/ui.py, line: 36 #: src/ui.py:36 msgid "_Previous page" msgstr "Halaman _sebelumnya" # # File: src/ui.py, line: 38 #: src/ui.py:38 msgid "_First page" msgstr "Halaman _pertama" # # File: src/ui.py, line: 40 #: src/ui.py:40 msgid "_Last page" msgstr "Halaman _terakhir" # # File: src/ui.py, line: 42 #: src/ui.py:42 msgid "_Zoom in" msgstr "_Pembesaran ke dalam" # # File: src/ui.py, line: 44 #: src/ui.py:44 msgid "Zoom _out" msgstr "Pembesaran _ke luar" # # File: src/ui.py, line: 46 #: src/ui.py:46 msgid "O_riginal size" msgstr "U_kuran asli" # # File: src/ui.py, line: 48 #: src/ui.py:48 msgid "_Close" msgstr "_Tutup" # # File: src/ui.py, line: 50 #: src/ui.py:50 msgid "_Quit" msgstr "_Keluar" # # File: src/ui.py, line: 52 #: src/ui.py:52 msgid "_Rotate 90 degrees CW" msgstr "_Rotasi 90 derajat searah jarum jam" # # File: src/ui.py, line: 54 #: src/ui.py:54 msgid "Rotate 180 de_grees" msgstr "Rotasi 180 de_rajat" # # File: src/ui.py, line: 56 #: src/ui.py:56 msgid "Rotat_e 90 degrees CCW" msgstr "Rotasi 90 derajat b_erlawanan arah jarum jam" # # File: src/ui.py, line: 58 #: src/ui.py:58 msgid "Fli_p horizontally" msgstr "Put_ar horizontal" # # File: src/ui.py, line: 60 #: src/ui.py:60 msgid "Flip _vertically" msgstr "Putar _vertikal" # # File: src/ui.py, line: 62 #: src/ui.py:62 msgid "Manual _Zoom" msgstr "Pembesaran _Manual" # # File: src/ui.py, line: 63 #: src/ui.py:63 msgid "Open _recent" msgstr "Buk_a terkini" # # File: src/ui.py, line: 64 #: src/ui.py:64 msgid "_Bookmarks" msgstr "B_ookmark" # # File: src/ui.py, line: 65 #: src/ui.py:65 msgid "T_oolbars" msgstr "B_atang alat" # # File: src/ui.py, line: 66 #: src/ui.py:66 msgid "_Edit" msgstr "_Sunting" # # File: src/ui.py, line: 67 #: src/ui.py:67 msgid "_File" msgstr "_Berkas" # # File: src/ui.py, line: 68 #: src/ui.py:68 msgid "_View" msgstr "_Tampilan" # # File: src/ui.py, line: 69 #: src/ui.py:69 msgid "_Go" msgstr "_Ke" # # File: src/ui.py, line: 70 #: src/ui.py:70 msgid "_Help" msgstr "Ba_ntuan" # # File: src/ui.py, line: 71 #: src/ui.py:71 msgid "_Transform" msgstr "_Ubah" # # File: src/ui.py, line: 75 #: src/ui.py:75 msgid "_Fullscreen" msgstr "La_yar penuh" # # File: src/ui.py, line: 77 #: src/ui.py:77 msgid "_Double page mode" msgstr "Mode _halaman ganda" # # File: src/ui.py, line: 79 #: src/ui.py:79 msgid "_Toolbar" msgstr "Batang _alat" # # File: src/ui.py, line: 81 #: src/ui.py:81 msgid "_Menubar" msgstr "Batang _menu" # # File: src/ui.py, line: 83 #: src/ui.py:83 msgid "St_atusbar" msgstr "Batang st_atus" # # File: src/ui.py, line: 85 #: src/ui.py:85 msgid "S_crollbars" msgstr "Batang _gulung" # # File: src/ui.py, line: 87 #: src/ui.py:87 msgid "Th_umbnails" msgstr "Miniat_ur" # # File: src/ui.py, line: 89 #: src/ui.py:89 msgid "H_ide all" msgstr "Sembuny_ikan semua" # # File: src/ui.py, line: 91 #: src/ui.py:91 msgid "_Manga mode" msgstr "_Mode manga" # # File: src/ui.py, line: 93 #: src/ui.py:93 msgid "_Keep transformation" msgstr "_Jaga transformasi" # # File: src/ui.py, line: 95 #: src/ui.py:95 msgid "Run _slideshow" msgstr "Jalankan _salindia" # # File: src/ui.py, line: 97 #: src/ui.py:97 msgid "Magnifying _glass" msgstr "Lensa _pembesar" # # File: src/ui.py, line: 101 #: src/ui.py:103 msgid "_Best fit mode" msgstr "Mode ukuran te_rbaik" # # File: src/ui.py, line: 103 #: src/ui.py:105 msgid "Fit _width mode" msgstr "Mode sesuai _lebar" # # File: src/ui.py, line: 105 #: src/ui.py:107 msgid "Fit _height mode" msgstr "Mode sesuai _tinggi" # # File: src/ui.py, line: 107 #: src/ui.py:109 msgid "M_anual zoom mode" msgstr "Mode pembesaran m_anual" # # File: src/ui.py, line: 113 #: src/ui.py:115 msgid "_About" msgstr "_Tentang" # # File: src/ui.py, line: 115 #: src/ui.py:117 msgid "_View comments..." msgstr "_Tampilkan komentar..." # # File: src/ui.py, line: 117 #: src/ui.py:119 msgid "_Edit archive..." msgstr "_Sunting arsip..." # # File: src/ui.py, line: 119 #: src/ui.py:121 msgid "_Open..." msgstr "B_uka..." # # File: src/ui.py, line: 121 #: src/ui.py:123 msgid "_Properties" msgstr "_Properti" # # File: src/ui.py, line: 123 #: src/ui.py:125 msgid "_Enhance image..." msgstr "Tingkatkan _citra..." # # File: src/ui.py, line: 126 #: src/ui.py:128 msgid "_Thumbnail maintenance..." msgstr "Pengelolaan _miniatur..." # # File: src/ui.py, line: 128 #: src/ui.py:130 msgid "Pr_eferences" msgstr "P_engaturan" # # File: src/ui.py, line: 132 #: src/ui.py:134 msgid "_Library..." msgstr "Pus_taka..." # # File: src/ui.py, line: 282 #: src/ui.py:284 msgid "First page" msgstr "Halaman pertama" # # File: src/ui.py, line: 284 #: src/ui.py:286 msgid "Previous page" msgstr "Halaman sebelumnya" # # File: src/ui.py, line: 285 #: src/ui.py:287 msgid "Next page" msgstr "Halaman berikutnya" # # File: src/ui.py, line: 286 #: src/ui.py:288 msgid "Last page" msgstr "Halaman terakhir" # # File: src/ui.py, line: 297 #: src/ui.py:299 msgid "Manga mode" msgstr "Mode manga" # # File: src/ui.py, line: 298 #: src/ui.py:300 msgid "Magnifying glass" msgstr "Lensa pembesar" comix-4.0.4/messages/id/LC_MESSAGES/comix.mo0000644000175000001440000005551211120774176017215 0ustar sorkusers<[\ )<LR[ wY 0< K X e o yM9 !.A]p.3P$RBZ      !4EI7+";"["~ %% +3H Zhz r]<  3 E R a o u       4!#!L!I" \"+g""" "" "" "###A&#h# |### ######$$!&$ H$ S$`$q$Hz$$$ $$$%% $%1% I%U% [%f% k%w%+%4%%u& & & & &O& ' '#'#B'f'{'''.'$'(5(I( \()f(((((( ( ( () ))5)UM) )-) ))* ***?G*+ +.++"{,,a- w- - - -#-)--|.1/E/Y/o/ /a/0 131L1 l1Xy11!1{202 222 3(3474gU4 4 4 44 44 55#5*5<5B5S5f5x5 ~5 5555 5 5 55 555 666,6F6 O6Z6`6r6{6 98 E8P8'X878888 889k9$9999 9 9 9 : :D:?b: ::":%:]:Z;9y;@;;"z<X<X<O=^=g=!{= ====>> >>>M?7_????-? ? @+)@'U@%}@(@0@@ A A'AAA XAeA}A AAAgB=B(C;CMC gCuCCCCCCCCC DD-D+ EV8EE E=EE F&F9F TF`F gFsFyFFLFF G G%G=G NGZGaGyGGGG$G GGG HI HjH oH|HHH HH HH HH I I II)8I2bII+J FJ RJ]JpJCyJ J JJJKK(K>K)UKKKKK K%KL,LIL]LpLLLLLLL+LNL 7M:AM$|M+MM MM@MlRnY)p|"zT:VI%3K!@7 vD]4UqXae&Hb<w/6t WsG~A\%d comments%d pages(Copy)A collection by that name already exists.A file named '%s' already exists. Do you want to replace it?AboutAccessedAdd a new empty collection.Add booksAdd books to '%s'.Add collectionAdd information about all files opened from within Comix to the shared recent files list.Add more books to the library.Add new collection?Added booksAdding '%s'...Adding booksAll ArchivesAll booksAll filesAll imagesAll stored bookmarks will be removed. Are you sure that you want to continue?Always use this selected colour as the background colour.AppearanceArchiveArchives are stored as ZIP files.Automatically add the books to this collectionAutomatically adjust contrast (both lightness and darkness), separately for each colour band.Automatically adjust contrast.Automatically hide all toolbars in fullscreen.Automatically open the last viewed file on startup.Automatically open the next archive in the directory when flipping past the last page, or the previous archive when flipping past the first page.Automatically open the next archive.Automatically open, on startup, the file that was open when Comix was last closed.Automatically pick a background colour that fits the viewed image.BackgroundBehaviourBest fit modeBrazilian Portuguese translationBrightnessBzip2 compressed tar archiveCacheCache the images that are next to the currently viewed image in order to speed up browsing. Since the speed improvements are quite big, it is recommended that you have this preference set, unless you are running short on free RAM.Calculating...Catalan translationCleanupCleanup thumbnailsClear all bookmarks?Comix is an image viewer specifically designed to handle comic books.Comix is licensed under the GNU General Public License.Comment extensionsCommentsContrastCould not add a new collection called '%s'.Could not change the name to '%s'.Could not duplicate collection.Could not find RAR file extractor!Could not open %s: Is a directory.Could not open %s: No such file.Could not open %s: Permission denied.Could not open %s: Unknown file type.Could not read %sCover sizeCreditsCroatian translationCzech translationDefault modesDefault zoom modeDefaultsDeveloperDisplayDisplay only one image in double page mode, if the image's width exceeds its height. The result of this is that scans that span two pages are displayed properly (i.e. alone) also in double page mode.Display only those books that have the specified text string in their full path. The search is not case sensitive.Do you want to cleanup orphaned and outdated thumbnails now?Double page modeDuplicate collectionDutch translationEdit archiveEdit bookmarksEnhance imageFilesFirst pageFit _height modeFit _width modeFit height modeFit width modeFli_p horizontallyFlip _verticallyFlip pages when scrolling "off the page" with the scroll wheel or with the arrow keys. It takes three consecutive "steps" with the scroll wheel or the arrow keys for the pages to be flipped.Flip pages when scrolling off the edges of the page.Flip two pages in double page mode.Flip two pages, instead of one, each time we flip pages in double page mode.French translationFullscreenGerman translation and Nautilus thumbnailerGreek translationGzip compressed tar archiveH_ide allHungarian translationIcon designImageImage scalingImagesImportIndonesian translationIt reads ZIP, RAR and tar archives, as well as plain image files.Italian translationJPEG imagesJapanese translationKorean translationLast pageLibraryLocationM_anual zoom modeMagnification factorMagnifying GlassMagnifying _glassMagnifying glassMagnifying glass size (in pixels)Manga modeManual _ZoomManual zoom modeModifiedMove books from '%(source collection)s' to '%(destination collection)s'.NameNew collectionNext pageNo images in '%s'Number of removed thumbnailsO_riginal sizeOpenOpen _recentOpen the selected book.Other filesOwnerPNG imagesPagePermissionsPersian translationPlease enter a name for the new collection.Please enter a new name for the selected collection.Please note that the only files that are automatically added to this list are those files in archives that Comix recognizes as comments.Polish translationPr_eferencesPreferencesPrevious pagePropertiesPut the collection '%(subcollection)s' in the collection '%(supercollection)s'.RAR archiveRAR archivesRemove books from the library?Remove collection from the library?Remove collection...Remove from archiveRemove from the library...Remove from this collectionRemoved %(num)d book(s) from '%(collection)s'.Removed %d book(s) from the library.Removed thumbnail for '%s'Removing thumbnailsRename collection?Rename...Replacing it will overwrite its contents.RootRotat_e 90 degrees CCWRotate 180 de_greesRun _slideshowRussian translationSLIDESHOWS_crollbarsSaturationSaveScrollSearchSet the magnification factor of the magnifying glass.Set the size of the magnifying glass. It is a square with a side of this many pixels.SharpnessShow only one wide image in double page mode.Show page numbers on thumbnails.Simplified Chinese translationSizeSlideshowSlideshow delay (in seconds)Some old files (that were used for storing preferences, the library, bookmarks etc. for older versions of Comix) were found on your computer. If you do not plan on using the older versions of Comix again, you should remove these files in order to save some disk space. Do you want these files to be removed for you now?Spanish translationSt_atusbarStore information about recently opened files.Store thumbnails for opened files according to the freedesktop.org specification. These thumbnails are shared by many other applications, such as most file managers.Store thumbnails for opened files.Stretch images to a size that is larger than their original size if the current zoom mode requests it. If this preference is unset, images are never scaled to be larger than their original size.Stretch small images.T_oolbarsTar archiveTar archivesTh_umbnailsThe new archive could not be saved!The original files have not been removed.The selected books will be removed from the library (but the original files will be untouched). Are you sure that you want to continue?The selected collection will be removed from the library (but the books and subcollections in it will remain). Are you sure that you want to continue?There are deprecated files left on your computer.Thumbnail directoryThumbnail maintenanceThumbnail size (in pixels)ThumbnailsThumbnails for files (such as image files and comic book archives) are stored in your home directory. Many different applications use and create these thumbnails, but sometimes thumbnails remain even though the original files have been removed - wasting space. This dialog can cleanup your stored thumbnails by removing orphaned and outdated thumbnails.Total number of thumbnailsTotal size of removed thumbnailsTotal size of thumbnailsTraditional Chinese translationTransparencyTreat all files found within archives, that have one of these file endings, as comments.Unknown filetypeUse a cache to speed up browsing.Use a grey checkered background for transparent images. If this preference is unset, the background is plain white instead.Use checkered background for transparent images.Use double page mode by default.Use dynamic background colour.Use fullscreen by default.Use manga mode by default.Use smart scrolling with the space key. Normally the space key scrolls only right down (or up when shift is pressed), but with this preference set it also scrolls sideways and so tries to follow the natural reading order of the comic book.Use smart space key scrolling.Use this colour as backgroundYou need either the rar or the unrar program installed in order to read RAR (.cbr) files.ZIP archiveZIP archivesZoom _out_About_Add bookmark_Best fit mode_Bookmarks_Clear bookmarks..._Close_Double page mode_Edit_Edit archive..._Edit bookmarks..._Enhance image..._File_First page_Fullscreen_Go_Help_Keep transformation_Last page_Library..._Manga mode_Menubar_Next page_Open..._Previous page_Properties_Quit_Rotate 90 degrees CW_Thumbnail maintenance..._Toolbar_Transform_View_View comments..._Zoom inProject-Id-Version: Comix-4.0.1 Report-Msgid-Bugs-To: POT-Creation-Date: 2008-11-22 02:42+0100 PO-Revision-Date: 2008-12-13 21:23+0700 Last-Translator: Andhika Padmawan Language-Team: Indonesia MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit Generated-By: pygettext.py 1.5 X-Poedit-Language: Indonesian X-Poedit-Country: INDONESIA X-Poedit-SourceCharset: utf-8 %d komentar%d halaman(Salin)Koleksi dengan nama tersebut telah ada.Berkas bernama '%s' telah ada. Anda ingin menggantinya?TentangDiaksesTambah koleksi kosong baru.Tambah bukuTambah buku ke '%s'.Tambah koleksiTambah informasi tentang semua berkas yang dibuka dari dalam Comix ke senarai berkas terkini yang dikongsi.Tambah lebih banyak buku ke pustaka.Tambah koleksi baru?Buku yang ditambahMenambah '%s'...Menambah bukuSemua ArsipSemua bukuSemua berkasSemua gambarSemua bookmark tersimpan akan dihapus. Anda yakin ingin melanjutkan?Selalu gunakan warna terpilih ini sebagai warna latar belakang.PenampilanArsipArsip disimpan sebagai berkas ZIP.Otomatis menambah buku ke koleksi iniOtomatis menyesuaikan kontras (baik kecerahan dan kegelapan), terpisah untuk tiap pita warna.Otomatis menyesuaikan kontras.Otomatis menyembunyikan semua batang alat di layar penuh.Otomatis membuka berkas yang terakhir ditampilkan pada hidupkan.Otomatis membuka arsip berikutnya di direktori ketika melipat halaman terakhir, atau arsip sebelumnya ketika melipat halaman pertama.Otomatis membuka arsip berikutnya.Otomatis membuka, pada hidupkan, berkas yang terbuka ketika Comix terakhir kali ditutup.Secara otomatis mengambil warna latar belakang yang cocok dengan citra yang ditampilkan.Latar BelakangPerilakuMode ukuran terbaikTerjemahan bahasa Portugis BrasilKecerahanArsip tar terkompres Bzip2TembolokTembolok citra yang ada di samping ke citra yang saat ini ditampilkan supaya meningkatkan kecepatan meramban. Karena peningkatan kecepatan cukup besar, disarankan agar anda mengatur pengaturan ini, kecuali anda kekurangan RAM bebas.Mengalkulasi...Terjemahan bahasa CatalanBersihkanBersihkan miniaturHapus semua bookmark?Comix adalah penampil gambar yang didesain khusus untuk menangani buku komik.Comix dilisensikan di bawah GNU General Public License.Ekstensi komentarKomentarKontrasTak dapat menambah koleksi baru bernama '%s'.Tak dapat mengubah nama ke '%s'.Tak dapat menduplikasi koleksi.Tak dapat menemukan pengekstrak berkas RAR!Tak dapat membuka %s: Sebuah direktori.Tak dapat membuka %s: Tak ada berkas.Tak dapat membuka %s: Hak akses ditolak.Tak dapat membuka %s: Tipe berkas tak diketahui.Tak dapat membaca %sUkuran sampulKreditTerjemahan bahasa KroasiaTerjemahan bahasa CekoMode standarMode pembesaran standarStandarPengembangTampilanHanya tampilkan satu citra dalam mode halaman ganda, jika lebar citra melebihi tingginya. Hasil dari ini adalah pemindaian yang merentangkan dua halaman akan ditampilkan secara benar (misalnya sendiri) juga dalam mode halaman ganda.Hanya tampilkan buku yang mempunyai benang teks di alamat penuh mereka. Pencarian tidak sensitif huruf.Anda ingin menghapus miniatur yatim dan kadaluwarsa sekarang?Mode halaman gandaDuplikasi koleksiTerjemahan bahasa BelandaSunting arsipSunting bookmarkTingkatkan citraBerkasHalaman pertamaMode sesuai _tinggiMode sesuai _lebarMode sesuai tinggiMode sesuai lebarPut_ar horizontalPutar _vertikalLipat halaman ketika menggulung "tepi halaman" dengan roda gulung atau tombol panah. Membutuhkan tiga "langkah" berurutan dengan menggunakan roda gulung atau tombol panah agar halaman terlipat.Lipat halaman ketika menggulung tepi halaman.Lipat dua halaman dalam mode halaman ganda.Lipat dua halaman, ketimbang satu, tiap kali kami menggulung dalam mode halaman ganda.Terjemahan bahasa PrancisLayar PenuhTerjemahan bahasa Jerman dan pembuat miniatur gambar NautilusTerjemahan bahasa YunaniArsip tar terkompres GzipSembuny_ikan semuaTerjemahan bahasa HungariaDesain ikonGambarSkala citraCitraImporTerjemahan bahasa IndonesiaComix membaca arsip ZIP, RAR dan tar, begitu pula dengan berkas citra biasa.Terjemahan bahasa ItaliaCitra JPEGTerjemahan bahasa JepangTerjemahan bahasa KoreaHalaman terakhirPerpustakanLokasiMode pembesaran m_anualFaktor pembesaranLensa PembesarLensa _pembesarLensa pembesarUkuran lensa pembesar (dalam piksel)Mode mangaPembesaran _ManualMode pembesaran manualDimodifikasiPindah buku dari '%(source collection)s' ke '%(destination collection)s'.NamaKoleksi baruHalaman berikutnyaTak ada citra di '%s'Jumlah miniatur yatimU_kuran asliBukaBuk_a terkiniBuka buku terpilih.Berkas lainPemilikCitra PNGHalamanHak AksesTerjemahan bahasa PersiaSilakan masukkan nama untuk koleksi baru.Silakan masukkan nama baru untuk koleksi terpilih.Perlu dicatat bahwa satu-satunya berkas yang secara otomatis ditambah ke senarai ini adalah berkas di dalam arsip yang Comix kenali sebagai komentar.Terjemahan bahasa PolandiaP_engaturanPengaturanHalaman sebelumnyaPropertiTaruh koleksi '%(subcollection)s' di koleksi '%(supercollection)s'.Arsip RARArsip RARHapus buku dari pustaka?Hapus koleksi dari pustaka?Hapus koleksi...Hapus dari arsipHapus dari pustaka...Hapus dari koleksi iniHapus %(num)d buku dari '%(collection)s'.Hapus %d buku dari pustaka.Hapus miniatur untuk '%s'Menghapus miniatur gambarGanti nama koleksi?Ganti Nama...Mengganti berkas akan menimpa isinya.RootRotasi 90 derajat b_erlawanan arah jarum jamRotasi 180 de_rajatJalankan _salindiaTerjemahan bahasa RusiaSALINDIABatang _gulungSaturasiSimpanGulungCariAtur faktor pembesaran dari lensa pembesar.Atur ukuran lensa pembesar. Berupa kotak dengan sisi dari sebanyak ini piksel.KetajamanHanya tampilkan satu citra lebar dalam mode halaman ganda.Tampilkan nomor halaman di miniatur.Terjemahan bahasa China yang disederhanakanUkuranPresentasiJeda salindia (dalam detik)Beberapa berkas lama (yang digunakan untuk pengaturan penyimpanan, pustaka, bookmark, dll. untuk versi lama Comix) ditemukan di komputer anda. Jika anda tidak berencana untuk menggunakan versi lama Comix lagi, anda harus menghapus berkas ini agar menghemat ruang kosong di cakram. Anda ingin berkas ini dihapus sekarang?Terjemahan bahasa SpanyolBatang st_atusSimpan informasi tentang berkas yang baru-baru ini terbuka.Simpan miniatur untuk berkas yang dibuka menurut spesifikasi freedesktop.org. Miniatur ini dikongsikan oleh banyak aplikasi lain, seperti kebanyakan manajer berkas.Simpan miniatur untuk berkas yang dibuka.Rentangkan citra ke ukuran yang lebih besar dari ukuran asli jika mode pembesaran saat ini memintanya. Jika pengaturan ini tak diatur, citra tidak pernah diubah menjadi lebih besar dari ukuran aslinya.Rentangkan citra kecil.B_atang alatArsip TarArsip TarMiniat_urBerkas baru tak dapat disimpan!Berkas asli belum dihapus.Buku terpilih akan dihapus dari pustaka (tapi berkas aslinya akan tetap tak tersentuh). Anda yakin ingin melanjutkan?Koleksi terpilih akan dihapus dari pustaka (tapi buku dan subkoleksi di dalamnya akan tetap terjaga). Apakah anda yakin ingin melanjutkan?Ada berkas tertinggal di komputer anda.Direktori miniaturPengelolaan miniaturUkuran miniatur (dalam piksel)Miniatur gambarMiniatur untuk berkas (seperti berkas citra dan arsip buku komik) yang disimpan di direktori rumah anda. Banyak aplikasi yang berbeda menggunakan dan membuat miniatur ini, tapi terkadang miniatur akan tetap meskipun berkas aslinya telah dihapus - menghabiskan ruang. Dialog ini dapat membersihkan miniatur tersimpan anda dengan menghapus miniatur yatim dan kadaluwarsa.Jumlah total miniaturUkuran total miniatur yang dihapusUkuran total miniaturTerjemahan bahasa China tradisionalTransparansiPerlakukan semua berkas yang ditemukan dalam arsip, yang mempunyai salah satu akhiran berkas ini, sebagai komentarl.Tipe berkas tak diketahuiGunakan tembolok untuk meningkatkan kecepatan meramban.Gunakan warna latar belakang yang telah diperiksa untuk citra transparan. Jika pengaturan ini tidak diatur, latar belakang menjadi putih polos.Gunakan latar belakang yang telah diperiksa untuk citra transparan.Gunakan mode halaman gandar sebagai standar.Gunakan warna latar belakang dinamis.Gunakan layar penuh sebagai standar.Gunakan mode manga sebagai standar.Gunakan penggulung cerdas dengan tombol spasi. Normalnya tombol gulung spasi hanya bergerak dari kanan ke bawah (atau atas jika shift ditekan), tapi dengan pengaturan ini diatur tombol akan menggulung ke samping dan mencoba untuk mengikuti urutan membaca natural buku komik.Gunakan penggulung tombol spasi cerdas.Gunakan warna ini sebagai latar belakangAnda memerlukan program rar atau unrar yang terinstal untuk dapat membaca berkas RAR (.cbr).Arsip ZIPArsip ZIPPembesaran _ke luar_Tentang_Tambah bookmarkMode ukuran te_rbaikB_ookmark_Hapus bookmark..._TutupMode _halaman ganda_Sunting_Sunting arsip..._Sunting bookmark...Tingkatkan _citra..._BerkasHalaman _pertamaLa_yar penuh_KeBa_ntuan_Jaga transformasiHalaman _terakhirPus_taka..._Mode mangaBatang _menuHalaman _berikutnyaB_uka...Halaman _sebelumnya_Properti_Keluar_Rotasi 90 derajat searah jarum jamPengelolaan _miniatur...Batang _alat_Ubah_Tampilan_Tampilkan komentar..._Pembesaran ke dalamcomix-4.0.4/messages/zh_TW/LC_MESSAGES/comix.po0000644000175000001440000006645111160243671017656 0ustar sorkusers# Comix Traditional Chinese (zh_TW) translation. # # Hsin-lin Cheng 2006. # Wayne Su , 2008. # # Please give any advice here: # http://www.ubuntu-tw.org/modules/newbb/viewtopic.php?topic_id=12432&forum=15 # msgid "" msgstr "" "Project-Id-Version: Comix 4.0\n" "POT-Creation-Date: \n" "PO-Revision-Date: 2009-03-11 14:57+0800\n" "Last-Translator: Wayne Su \n" "Language-Team: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Poedit-Language: Chinese\n" "X-Poedit-Country: TAIWAN\n" "X-Poedit-SourceCharset: utf-8\n" #: src/about.py:19 #: src/about.py:68 msgid "About" msgstr "關於" #: src/about.py:56 msgid "Comix is an image viewer specifically designed to handle comic books." msgstr "Comix 是一個特別設計來觀看漫畫書的圖片檢視器。" #: src/about.py:58 msgid "It reads ZIP, RAR and tar archives, as well as plain image files." msgstr "可以讀取圖片檔,又能讀取 ZIP、RAR、tar 壓縮檔 (含以 gzip、bzip2 壓縮的)。" #: src/about.py:60 msgid "Comix is licensed under the GNU General Public License." msgstr "Comix 係採用 GNU 通用公共授權條款。" #: src/about.py:83 msgid "Developer" msgstr "開發者" #: src/about.py:84 #: src/about.py:85 msgid "Simplified Chinese translation" msgstr "簡體中文翻譯" #: src/about.py:86 msgid "Spanish translation" msgstr "西班牙語翻譯" #: src/about.py:87 msgid "Brazilian Portuguese translation" msgstr "巴西葡萄牙語翻譯" #: src/about.py:88 msgid "German translation and Nautilus thumbnailer" msgstr "德語翻譯與 Nautilus 縮圖功能作者" #: src/about.py:89 #: src/about.py:90 msgid "Italian translation" msgstr "義大利語翻譯" #: src/about.py:91 msgid "Dutch translation" msgstr "荷蘭語翻譯" #: src/about.py:92 msgid "French translation" msgstr "法語翻譯" #: src/about.py:93 #: src/about.py:94 msgid "Polish translation" msgstr "波蘭語翻譯" #: src/about.py:95 msgid "Greek translation" msgstr "希臘語翻譯" #: src/about.py:96 msgid "Catalan translation" msgstr "加泰羅尼亞語翻譯" #: src/about.py:97 #: src/about.py:98 msgid "Traditional Chinese translation" msgstr "正體中文翻譯" #: src/about.py:99 msgid "Japanese translation" msgstr "日語翻譯" #: src/about.py:100 msgid "Hungarian translation" msgstr "匈牙利語翻譯" #: src/about.py:101 msgid "Russian translation" msgstr "俄語翻譯" #: src/about.py:102 msgid "Croatian translation" msgstr "克羅埃西亞語翻譯" #: src/about.py:103 msgid "Korean translation" msgstr "韓語翻譯" #: src/about.py:104 msgid "Persian translation" msgstr "波斯語翻譯" #: src/about.py:105 msgid "Indonesian translation" msgstr "印尼語翻譯" #: src/about.py:106 msgid "Czech translation" msgstr "捷克語翻譯" #: src/about.py:107 msgid "Icon design" msgstr "圖示設計" #: src/about.py:114 msgid "Credits" msgstr "致謝" #: src/archive.py:66 msgid "Could not find RAR file extractor!" msgstr "無法找到 RAR 檔解壓縮程式!" #: src/archive.py:68 msgid "You need either the rar or the unrar program installed in order to read RAR (.cbr) files." msgstr "您需要安裝 rarunrar 程式,才能讀取 RAR (.cbr) 檔。" #: src/archive.py:305 msgid "ZIP archive" msgstr "ZIP 壓縮檔" #: src/archive.py:306 msgid "Tar archive" msgstr "TAR 壓縮檔" #: src/archive.py:307 msgid "Gzip compressed tar archive" msgstr "以 GZIP 壓縮的 tar 壓縮檔" #: src/archive.py:308 msgid "Bzip2 compressed tar archive" msgstr "以 BZIP2 壓縮的 tar 壓縮檔" #: src/archive.py:309 msgid "RAR archive" msgstr "RAR 壓縮檔" #: src/bookmark.py:28 msgid "_Add bookmark" msgstr "加入書籤 (_A)" #: src/bookmark.py:30 msgid "_Edit bookmarks..." msgstr "編輯書籤... (_E)" #: src/bookmark.py:32 msgid "_Clear bookmarks..." msgstr "清除書籤... (_C)" #: src/bookmark.py:78 msgid "Clear all bookmarks?" msgstr "要清除所有書籤嗎?" #: src/bookmark.py:80 msgid "All stored bookmarks will be removed. Are you sure that you want to continue?" msgstr "所有保存的書籤都會被移除,您確定要這樣做嗎?" #: src/bookmark.py:230 msgid "Edit bookmarks" msgstr "編輯書籤" #: src/bookmark.py:256 #: src/edit.py:270 msgid "Name" msgstr "名稱" #: src/bookmark.py:257 msgid "Page" msgstr "頁次" #: src/comment.py:16 #: src/preferences.py:299 msgid "Comments" msgstr "註解" #: src/comment.py:53 #, python-format msgid "Could not read %s" msgstr "無法讀取 %s" #: src/deprecated.py:16 msgid "There are deprecated files left on your computer." msgstr "您的電腦中有一些已不再使用的檔案。" #: src/deprecated.py:22 msgid "Some old files (that were used for storing preferences, the library, bookmarks etc. for older versions of Comix) were found on your computer. If you do not plan on using the older versions of Comix again, you should remove these files in order to save some disk space. Do you want these files to be removed for you now?" msgstr "在您的電腦中有一些檔案,是舊版本 Comix 的設定檔、收藏庫、書籤等。如果您以後不會再使用舊版 Comix,可以刪除它們以節省磁碟空間。您想要現在就刪除這些檔案嗎?" #: src/edit.py:29 msgid "Edit archive" msgstr "編輯壓縮檔" #: src/edit.py:37 msgid "Import" msgstr "匯入" #: src/edit.py:51 msgid "Images" msgstr "圖片" #: src/edit.py:52 msgid "Other files" msgstr "其他檔案" #: src/edit.py:101 msgid "The new archive could not be saved!" msgstr "無法儲存新壓縮檔!" #: src/edit.py:103 msgid "The original files have not been removed." msgstr "原始檔案未被移除。" #: src/edit.py:117 msgid "Archives are stored as ZIP files." msgstr "已儲存 ZIP 壓縮檔。" #: src/edit.py:170 #: src/edit.py:288 msgid "Remove from archive" msgstr "從壓縮檔移除" #: src/edit.py:258 msgid "Please note that the only files that are automatically added to this list are those files in archives that Comix recognizes as comments." msgstr "請注意:只有壓縮檔內被 Comix 認為是註解的檔案,才會被自動加入這個清單。" #: src/edit.py:273 msgid "Size" msgstr "大小" #: src/enhance.py:51 msgid "Enhance image" msgstr "強化圖片" #: src/enhance.py:52 msgid "Defaults" msgstr "預設值" #: src/enhance.py:79 msgid "Brightness" msgstr "亮度" #: src/enhance.py:90 msgid "Contrast" msgstr "對比" #: src/enhance.py:101 msgid "Saturation" msgstr "飽和度" #: src/enhance.py:112 msgid "Sharpness" msgstr "清晰度" #: src/enhance.py:126 msgid "Automatically adjust contrast." msgstr "自動調整對比。" #: src/enhance.py:128 msgid "Automatically adjust contrast (both lightness and darkness), separately for each colour band." msgstr "分別為每個色帶自動調整明亮度對比。" #: src/filechooser.py:38 #: src/library.py:490 msgid "Open" msgstr "開啟" #: src/filechooser.py:42 msgid "Save" msgstr "儲存" #: src/filechooser.py:78 msgid "All files" msgstr "所有檔案" #: src/filechooser.py:81 msgid "All Archives" msgstr "所有壓縮檔" #: src/filechooser.py:85 msgid "ZIP archives" msgstr "ZIP 壓縮檔" #: src/filechooser.py:87 msgid "RAR archives" msgstr "RAR 壓縮檔" #: src/filechooser.py:89 msgid "Tar archives" msgstr "TAR 壓縮檔" #: src/filechooser.py:134 #, python-format msgid "A file named '%s' already exists. Do you want to replace it?" msgstr "檔案 %s 已存在,您要替換掉它嗎?" #: src/filechooser.py:137 msgid "Replacing it will overwrite its contents." msgstr "替換後將會覆蓋掉原有內容。" #: src/filechooser.py:182 #: src/filechooser.py:260 msgid "All images" msgstr "所有圖片" #: src/filechooser.py:184 #: src/filechooser.py:262 msgid "JPEG images" msgstr "JPEG 圖片" #: src/filechooser.py:185 #: src/filechooser.py:263 msgid "PNG images" msgstr "PNG 圖片" #: src/filechooser.py:206 msgid "Automatically add the books to this collection" msgstr "自動將此書籍加入收藏" #: src/filehandler.py:209 #, python-format msgid "Could not open %s: Is a directory." msgstr "無法開啟 %s:它是目錄。" #: src/filehandler.py:213 #, python-format msgid "Could not open %s: No such file." msgstr "無法開啟 %s:找不到檔案。" #: src/filehandler.py:217 #, python-format msgid "Could not open %s: Permission denied." msgstr "無法開啟 %s:沒有權限。" #: src/filehandler.py:222 #, python-format msgid "Could not open %s: Unknown file type." msgstr "無法開啟 %s:不明的檔案類型。" #: src/filehandler.py:285 #, python-format msgid "No images in '%s'" msgstr "%s 內沒有圖片" #: src/filehandler.py:413 msgid "Unknown filetype" msgstr "不明的檔案類型" #: src/librarybackend.py:273 #: src/librarybackend.py:275 msgid "(Copy)" msgstr "(複製)" #: src/library.py:38 msgid "Library" msgstr "收藏庫" #: src/library.py:150 msgid "Rename..." msgstr "重新命名..." #: src/library.py:152 msgid "Duplicate collection" msgstr "備份收藏" #: src/library.py:154 msgid "Remove collection..." msgstr "移除收藏..." #: src/library.py:202 msgid "All books" msgstr "所有書籍" #: src/library.py:231 msgid "Remove collection from the library?" msgstr "要從收藏庫中移除收藏嗎?" #: src/library.py:233 msgid "The selected collection will be removed from the library (but the books and subcollections in it will remain). Are you sure that you want to continue?" msgstr "這些收藏將從收藏庫中移除,但書籍與子收藏仍會留著。您確定要繼續嗎?" #: src/library.py:251 msgid "Rename collection?" msgstr "重新命名收藏?" #: src/library.py:253 msgid "Please enter a new name for the selected collection." msgstr "請輸入此收藏的新名稱。" #: src/library.py:271 #, python-format msgid "Could not change the name to '%s'." msgstr "無法變更名稱為「%s」。" #: src/library.py:275 #: src/library.py:882 msgid "A collection by that name already exists." msgstr "已有相同名稱的收藏。" #: src/library.py:285 msgid "Could not duplicate collection." msgstr "無法備份收藏。" #: src/library.py:382 msgid "Root" msgstr "Root" #: src/library.py:386 #, python-format msgid "Put the collection '%(subcollection)s' in the collection '%(supercollection)s'." msgstr "將收藏 %(subcollection)s 放到 %(supercollection)s 。" #: src/library.py:407 #, python-format msgid "Add books to '%s'." msgstr "將書籍加入 %s。" #: src/library.py:411 #, python-format msgid "Move books from '%(source collection)s' to '%(destination collection)s'." msgstr "將書籍從 %(source collection)s 移到 %(destination collection)s 。" #: src/library.py:493 msgid "Remove from this collection" msgstr "從此收藏移除" #: src/library.py:496 msgid "Remove from the library..." msgstr "從此收藏庫移除..." #: src/library.py:589 #, python-format msgid "Removed %(num)d book(s) from '%(collection)s'." msgstr "已移除 %(num)d 本 %(collection)s 收藏的書籍。" #: src/library.py:598 msgid "Remove books from the library?" msgstr "從此收藏庫移除書籍?" #: src/library.py:600 msgid "The selected books will be removed from the library (but the original files will be untouched). Are you sure that you want to continue?" msgstr "這些書籍將從收藏庫中移除,但原始檔案不會受影響。您確定要繼續嗎?" #: src/library.py:610 #, python-format msgid "Removed %d book(s) from the library." msgstr "已從收藏庫移除 %d 本書籍。" #: src/library.py:770 msgid "Search" msgstr "搜尋" #: src/library.py:775 msgid "Display only those books that have the specified text string in their full path. The search is not case sensitive." msgstr "只顯示完整路徑中有指定關鍵字的書籍,搜尋時不區分大小寫。" #: src/library.py:777 msgid "Cover size" msgstr "封面大小" #: src/library.py:790 msgid "Add books" msgstr "加入書籍" #: src/library.py:794 msgid "Add more books to the library." msgstr "加入更多書籍到收藏庫中。" #: src/library.py:796 msgid "Add collection" msgstr "加入收藏" #: src/library.py:801 msgid "Add a new empty collection." msgstr "加入新的空白收藏。" #: src/library.py:807 msgid "Open the selected book." msgstr "開啟選取的書籍。" #: src/library.py:833 #: src/properties.py:118 #, python-format msgid "%d pages" msgstr "%d 頁" #: src/library.py:855 msgid "Add new collection?" msgstr "加入新收藏嗎?" #: src/library.py:857 msgid "Please enter a name for the new collection." msgstr "請輸入新收藏的名稱。" #: src/library.py:863 msgid "New collection" msgstr "新收藏" #: src/library.py:877 #, python-format msgid "Could not add a new collection called '%s'." msgstr "無法新增收藏 %s 。" #: src/library.py:911 msgid "Adding books" msgstr "正在新增書籍" #: src/library.py:931 msgid "Added books" msgstr "已新增書籍" #: src/library.py:953 #, python-format msgid "Adding '%s'..." msgstr "正在新增 %s ..." #: src/main.py:699 msgid "SLIDESHOW" msgstr "投影片放映" #: src/preferences.py:80 msgid "Preferences" msgstr "偏好設定" #: src/preferences.py:95 msgid "Background" msgstr "背景" #: src/preferences.py:97 msgid "Use this colour as background" msgstr "使用此顏色當背景" #: src/preferences.py:99 msgid "Always use this selected colour as the background colour." msgstr "使用選取的顏色當背景顏色。" #: src/preferences.py:104 msgid "Use dynamic background colour." msgstr "使用動態背景顏色。" #: src/preferences.py:108 msgid "Automatically pick a background colour that fits the viewed image." msgstr "自動挑選適合觀看中圖片的背景顏色。" #: src/preferences.py:111 msgid "Thumbnails" msgstr "縮圖" #: src/preferences.py:112 msgid "Thumbnail size (in pixels)" msgstr "縮圖大小 (像素)" #: src/preferences.py:119 msgid "Show page numbers on thumbnails." msgstr "在縮圖上顯示頁碼。" #: src/preferences.py:126 msgid "Magnifying Glass" msgstr "放大鏡" #: src/preferences.py:127 msgid "Magnifying glass size (in pixels)" msgstr "放大鏡大小 (像素)" #: src/preferences.py:133 msgid "Set the size of the magnifying glass. It is a square with a side of this many pixels." msgstr "設定放大鏡的大小,請填入正方形的單邊長。" #: src/preferences.py:135 msgid "Magnification factor" msgstr "放大倍率" #: src/preferences.py:142 msgid "Set the magnification factor of the magnifying glass." msgstr "設定放大鏡的放大倍率。" #: src/preferences.py:145 msgid "Image scaling" msgstr "圖片縮放" #: src/preferences.py:146 msgid "Stretch small images." msgstr "伸展較小圖片。" #: src/preferences.py:150 msgid "Stretch images to a size that is larger than their original size if the current zoom mode requests it. If this preference is unset, images are never scaled to be larger than their original size." msgstr "配合目前的縮放模式,將圖片伸展放大到設定的大小。" #: src/preferences.py:153 msgid "Transparency" msgstr "透明度" #: src/preferences.py:155 msgid "Use checkered background for transparent images." msgstr "透明色圖片使用方格背景。" #: src/preferences.py:161 msgid "Use a grey checkered background for transparent images. If this preference is unset, the background is plain white instead." msgstr "透明色圖片使用灰色方格背景。如果未設定此項目,則將使用白色背景。" #: src/preferences.py:163 msgid "Appearance" msgstr "外觀" #: src/preferences.py:169 msgid "Scroll" msgstr "捲動" #: src/preferences.py:171 msgid "Use smart space key scrolling." msgstr "使用智慧型空白鍵捲動。" #: src/preferences.py:176 msgid "Use smart scrolling with the space key. Normally the space key scrolls only right down (or up when shift is pressed), but with this preference set it also scrolls sideways and so tries to follow the natural reading order of the comic book." msgstr "使用智慧型的空白鍵捲動。通常按下空白鍵時只會向下捲動 (若按住 shift 時則是下上捲動),但設定此項目後,也會側向捲動,以儘量配合一般的漫畫書閱讀順序。" #: src/preferences.py:180 msgid "Flip pages when scrolling off the edges of the page." msgstr "當捲動到頁面的頂端或底部時翻頁" #: src/preferences.py:185 msgid "Flip pages when scrolling \"off the page\" with the scroll wheel or with the arrow keys. It takes three consecutive \"steps\" with the scroll wheel or the arrow keys for the pages to be flipped." msgstr "以滾輪或方向鍵捲動到「超出本頁」時翻頁。要翻頁時,需要連續滾動滑鼠滾輪或按方向鍵「三次」。" #: src/preferences.py:188 #: src/ui.py:298 msgid "Double page mode" msgstr "雙頁模式" #: src/preferences.py:190 msgid "Flip two pages in double page mode." msgstr "雙頁模式時一次翻兩頁。" #: src/preferences.py:195 msgid "Flip two pages, instead of one, each time we flip pages in double page mode." msgstr "雙頁模式時一次翻兩頁,而不是只翻一頁。" #: src/preferences.py:198 msgid "Show only one wide image in double page mode." msgstr "雙頁模式時只顯示單張的寬幅圖片。" #: src/preferences.py:204 msgid "Display only one image in double page mode, if the image's width exceeds its height. The result of this is that scans that span two pages are displayed properly (i.e. alone) also in double page mode." msgstr "如果圖片寬度大於高度,則在雙頁模式時仍只顯示單張圖片。" #: src/preferences.py:207 msgid "Files" msgstr "檔案" #: src/preferences.py:209 msgid "Automatically open the next archive." msgstr "自動開啟下一個壓縮檔。" #: src/preferences.py:214 msgid "Automatically open the next archive in the directory when flipping past the last page, or the previous archive when flipping past the first page." msgstr "當在目前壓縮檔翻頁離開最後一頁時,自動開啟目錄中的下一個壓縮檔;當翻頁跳出第一頁時,則自動開啟上一個壓縮檔。" #: src/preferences.py:217 msgid "Automatically open the last viewed file on startup." msgstr "啟動時自動開啟最後檢視的檔案。" #: src/preferences.py:222 msgid "Automatically open, on startup, the file that was open when Comix was last closed." msgstr "當 Comix 啟動時,自動開啟上次最後開啟過的檔案。" #: src/preferences.py:225 msgid "Store information about recently opened files." msgstr "儲存最近開啟過的檔案資訊。" #: src/preferences.py:230 msgid "Add information about all files opened from within Comix to the shared recent files list." msgstr "將 Comix 開啟過的檔案資訊加入共享的「最近存取文件」清單中。" #: src/preferences.py:233 msgid "Store thumbnails for opened files." msgstr "替開啟過的檔案儲存縮圖。" #: src/preferences.py:238 msgid "Store thumbnails for opened files according to the freedesktop.org specification. These thumbnails are shared by many other applications, such as most file managers." msgstr "依據 freedesktop.org 的標準,替開啟過的檔案儲存縮圖。這些縮圖也可由檔案管理程式等其他各種應用程式分享共用。" #: src/preferences.py:241 msgid "Cache" msgstr "快取" #: src/preferences.py:242 msgid "Use a cache to speed up browsing." msgstr "使用快取以加速瀏覽。" #: src/preferences.py:246 msgid "Cache the images that are next to the currently viewed image in order to speed up browsing. Since the speed improvements are quite big, it is recommended that you have this preference set, unless you are running short on free RAM." msgstr "替下一張圖片建立快取以增加瀏覽速度。由於效果非常優異,除非是在記憶體較不足的系統上,不然建議您啟用此功能。" #: src/preferences.py:248 msgid "Behaviour" msgstr "行為" #: src/preferences.py:254 msgid "Default modes" msgstr "預設模式" #: src/preferences.py:256 msgid "Use double page mode by default." msgstr "預設使用雙頁模式。" #: src/preferences.py:261 msgid "Use fullscreen by default." msgstr "預設使用全螢幕。" #: src/preferences.py:266 msgid "Use manga mode by default." msgstr "預設使用漫畫模式。" #: src/preferences.py:271 msgid "Default zoom mode" msgstr "預設縮放模式" #: src/preferences.py:273 #: src/ui.py:290 msgid "Best fit mode" msgstr "最佳大小模式" #: src/preferences.py:274 #: src/ui.py:292 msgid "Fit width mode" msgstr "符合寬度模式" #: src/preferences.py:275 #: src/ui.py:294 msgid "Fit height mode" msgstr "符合高度模式" #: src/preferences.py:276 #: src/ui.py:296 msgid "Manual zoom mode" msgstr "手動縮放模式" #: src/preferences.py:282 msgid "Fullscreen" msgstr "全螢幕" #: src/preferences.py:284 msgid "Automatically hide all toolbars in fullscreen." msgstr "全螢幕時自動隱藏所有工具列。" #: src/preferences.py:290 msgid "Slideshow" msgstr "投影片放映" #: src/preferences.py:291 msgid "Slideshow delay (in seconds)" msgstr "投影片放映延遲 (秒)" #: src/preferences.py:300 msgid "Comment extensions" msgstr "註解的副檔名" #: src/preferences.py:306 msgid "Treat all files found within archives, that have one of these file endings, as comments." msgstr "壓縮檔內檔名結尾相符的檔案,將被認定為註解。" #: src/preferences.py:309 msgid "Rotation" msgstr "旋轉" #: src/preferences.py:311 msgid "Automatically rotate images according to their metadata." msgstr "根據內建資料自動旋轉圖片。" #: src/preferences.py:316 msgid "Automatically rotate images when an orientation is specified in the image metadata, such as in an Exif tag." msgstr "當圖片內建的資料 (如 EXTIF) 中有指定方向時,自動旋轉圖片。" #: src/preferences.py:318 msgid "Display" msgstr "顯示" #: src/properties.py:94 msgid "Properties" msgstr "屬性" #: src/properties.py:119 #, python-format msgid "%d comments" msgstr "%d 個註解" #: src/properties.py:129 #: src/properties.py:164 msgid "Location" msgstr "位置" #: src/properties.py:131 #: src/properties.py:165 msgid "Accessed" msgstr "存取時間" #: src/properties.py:133 #: src/properties.py:167 msgid "Modified" msgstr "修改時間" #: src/properties.py:135 #: src/properties.py:169 msgid "Permissions" msgstr "權限" #: src/properties.py:136 #: src/properties.py:170 msgid "Owner" msgstr "擁有者" #: src/properties.py:140 msgid "Archive" msgstr "壓縮檔" #: src/properties.py:174 msgid "Image" msgstr "圖片" #: src/thumbremover.py:24 msgid "Thumbnail maintenance" msgstr "縮圖管理" #: src/thumbremover.py:26 msgid "Cleanup" msgstr "清理" #: src/thumbremover.py:38 msgid "Cleanup thumbnails" msgstr "清理縮圖" #: src/thumbremover.py:48 msgid "Thumbnails for files (such as image files and comic book archives) are stored in your home directory. Many different applications use and create these thumbnails, but sometimes thumbnails remain even though the original files have been removed - wasting space. This dialog can cleanup your stored thumbnails by removing orphaned and outdated thumbnails." msgstr "各種應用程式儲存了許多圖片檔、壓縮檔的縮圖在您的個人目錄中,但很可能縮圖還在而原始檔案已經被移除了,因而浪費許多空間。這個項目可以清理、移除失效與過期的縮圖。" #: src/thumbremover.py:60 msgid "Thumbnail directory" msgstr "縮圖目錄" #: src/thumbremover.py:67 msgid "Total number of thumbnails" msgstr "縮圖總數" #: src/thumbremover.py:70 #: src/thumbremover.py:77 msgid "Calculating..." msgstr "計算中..." #: src/thumbremover.py:74 msgid "Total size of thumbnails" msgstr "縮圖總大小" #: src/thumbremover.py:82 msgid "Do you want to cleanup orphaned and outdated thumbnails now?" msgstr "您要立即清理失效與過期的縮圖嗎?" #: src/thumbremover.py:118 msgid "Removing thumbnails" msgstr "正在移除縮圖" #: src/thumbremover.py:137 msgid "Number of removed thumbnails" msgstr "已移除的縮圖數量" #: src/thumbremover.py:144 msgid "Total size of removed thumbnails" msgstr "已移除的縮圖總大小" #: src/thumbremover.py:195 #, python-format msgid "Removed thumbnail for '%s'" msgstr "已移除 %s 的縮圖" #: src/ui.py:34 msgid "_Next page" msgstr "下一頁 (_N)" #: src/ui.py:36 msgid "_Previous page" msgstr "上一頁 (_P)" #: src/ui.py:38 msgid "_First page" msgstr "第一頁 (_F)" #: src/ui.py:40 msgid "_Last page" msgstr "最後一頁 (_L)" #: src/ui.py:42 msgid "_Zoom in" msgstr "放大 (_Z)" #: src/ui.py:44 msgid "Zoom _out" msgstr "縮小 (_o)" #: src/ui.py:46 msgid "O_riginal size" msgstr "正常大小 (_r)" #: src/ui.py:48 msgid "_Close" msgstr "關閉 (_C)" #: src/ui.py:50 msgid "_Quit" msgstr "離開 (_Q)" #: src/ui.py:52 msgid "_Rotate 90 degrees CW" msgstr "順時針旋轉 90° (_R)" #: src/ui.py:54 msgid "Rotate 180 de_grees" msgstr "旋轉 180° (_g)" #: src/ui.py:56 msgid "Rotat_e 90 degrees CCW" msgstr "逆時針旋轉 90° (_e)" #: src/ui.py:58 msgid "Fli_p horizontally" msgstr "水平翻轉 (_p)" #: src/ui.py:60 msgid "Flip _vertically" msgstr "垂直翻轉 (_v)" #: src/ui.py:62 msgid "Manual _Zoom" msgstr "手動縮放 (_Z)" #: src/ui.py:63 msgid "Open _recent" msgstr "最近存取的檔案 (_r)" #: src/ui.py:64 msgid "_Bookmarks" msgstr "書籤 (_B)" #: src/ui.py:65 msgid "T_oolbars" msgstr "工具列 (_o)" #: src/ui.py:66 msgid "_Edit" msgstr "編輯 (_E)" #: src/ui.py:67 msgid "_File" msgstr "檔案 (_F)" #: src/ui.py:68 msgid "_View" msgstr "檢視 (_V)" #: src/ui.py:69 msgid "_Go" msgstr "前往 (_G)" #: src/ui.py:70 msgid "_Help" msgstr "說明 (_H)" #: src/ui.py:71 msgid "_Transform" msgstr "變換 (_T)" #: src/ui.py:75 msgid "_Fullscreen" msgstr "全螢幕 (_F)" #: src/ui.py:77 msgid "_Double page mode" msgstr "雙頁模式 (_D)" #: src/ui.py:79 msgid "_Toolbar" msgstr "工具列 (_T)" #: src/ui.py:81 msgid "_Menubar" msgstr "選單列 (_M)" #: src/ui.py:83 msgid "St_atusbar" msgstr "狀態列 (_a)" #: src/ui.py:85 msgid "S_crollbars" msgstr "捲軸 (_c)" #: src/ui.py:87 msgid "Th_umbnails" msgstr "縮圖 (_u)" #: src/ui.py:89 msgid "H_ide all" msgstr "全部隱藏 (_i)" #: src/ui.py:91 msgid "_Manga mode" msgstr "漫畫模式 (_M)" #: src/ui.py:93 msgid "_Keep transformation" msgstr "保持變換 (_K)" #: src/ui.py:95 msgid "Run _slideshow" msgstr "開始投影片放映 (_s)" #: src/ui.py:97 msgid "Magnifying _glass" msgstr "放大鏡 (_g)" #: src/ui.py:103 msgid "_Best fit mode" msgstr "最佳大小模式 (_B)" #: src/ui.py:105 msgid "Fit _width mode" msgstr "符合寬度模式 (_w)" #: src/ui.py:107 msgid "Fit _height mode" msgstr "符合高度模式 (_h)" #: src/ui.py:109 msgid "M_anual zoom mode" msgstr "手動縮放模式 (_a)" #: src/ui.py:115 msgid "_About" msgstr "關於 (_A)" #: src/ui.py:117 msgid "_View comments..." msgstr "檢視註解... (_V)" #: src/ui.py:119 msgid "_Edit archive..." msgstr "編輯壓縮檔... (_E)" #: src/ui.py:121 msgid "_Open..." msgstr "開啟... (_O)" #: src/ui.py:123 msgid "_Properties" msgstr "屬性 (_P)" #: src/ui.py:125 msgid "_Enhance image..." msgstr "強化圖片... (_E)" #: src/ui.py:128 msgid "_Thumbnail maintenance..." msgstr "縮圖管理... (_T)" #: src/ui.py:130 msgid "Pr_eferences" msgstr "偏好設定 (_e)" #: src/ui.py:134 msgid "_Library..." msgstr "收藏庫... (_L)" #: src/ui.py:284 msgid "First page" msgstr "第一頁" #: src/ui.py:286 msgid "Previous page" msgstr "上一頁" #: src/ui.py:287 msgid "Next page" msgstr "下一頁" #: src/ui.py:288 msgid "Last page" msgstr "最後一頁" #: src/ui.py:299 msgid "Manga mode" msgstr "漫畫模式" #: src/ui.py:300 msgid "Magnifying glass" msgstr "放大鏡" comix-4.0.4/messages/zh_TW/LC_MESSAGES/comix.mo0000644000175000001440000005265611160243671017655 0ustar sorkusersTa &)-<W YEd x     M9 T_!g.].53d$*ROB8k     !E67|+"("H"k %%  5 GUg pzrJ <   ! ! 2!?! N!\! b!m!~!!!!!!4"#"L"6# I#+T### ## ## ####A$U$ i$u$$ $$$$$$$%!% 5% @%M%^%Hg%%% %%%% & && 6&B& H&S& X&d&+x&4&&b' u' ' ' 'O' ' ((#/(S(h(|((.($()")6) I))S)})))))) ) ) )))*5 *UC* *-* **+ + +?=+}, ,.,,"q--W. m. w. . .#.)..r/1 0;0O0e0 0a01 2)2B2 b2Xo22!2{20w3 333445-5gK5 5 5 55 55 566 62686I6\6n6 t6 6666 6 6 66 666 67 7"7<7 E7P7V7h7Gq7 8888.8$9 +989 T9a9 w9U9$99:%:9:L: \: i: v:B:':: ::;39;m;*;-;;!<C<3<'=RA======!=== >>> >>B>/7?g?z??? ??&?!@$"@!G@*i@@ @@@@ @@ A AAQATnA0A A BBB .B ;BHB OBYBqBBBBBB-[C!C9C C C+C(D 8DYDkD ~DD DDDDaDE 2E >E KE XE eEoEvE E EE EE EEE FHF_F fF pFzFFFFFF F G GGG#G3G!RGgtGGG G HH:H WH eHsH$HHHHH7I%>IdI{III'IIII JJ /Jk8 YdrS=c)Wt%TLD#l ^ aERy[ b}{ChJV]/no2x .,59Mg+(~v?O$`jI|4GzZXP"QeUNi_q&@ %d comments%d pages(Copy)A collection by that name already exists.A file named '%s' already exists. Do you want to replace it?AboutAccessedAdd a new empty collection.Add booksAdd books to '%s'.Add collectionAdd information about all files opened from within Comix to the shared recent files list.Add more books to the library.Add new collection?Added booksAdding '%s'...Adding booksAll ArchivesAll booksAll filesAll imagesAll stored bookmarks will be removed. Are you sure that you want to continue?Always use this selected colour as the background colour.AppearanceArchiveArchives are stored as ZIP files.Automatically add the books to this collectionAutomatically adjust contrast (both lightness and darkness), separately for each colour band.Automatically adjust contrast.Automatically hide all toolbars in fullscreen.Automatically open the last viewed file on startup.Automatically open the next archive in the directory when flipping past the last page, or the previous archive when flipping past the first page.Automatically open the next archive.Automatically open, on startup, the file that was open when Comix was last closed.Automatically pick a background colour that fits the viewed image.Automatically rotate images according to their metadata.Automatically rotate images when an orientation is specified in the image metadata, such as in an Exif tag.BackgroundBehaviourBest fit modeBrazilian Portuguese translationBrightnessBzip2 compressed tar archiveCacheCache the images that are next to the currently viewed image in order to speed up browsing. Since the speed improvements are quite big, it is recommended that you have this preference set, unless you are running short on free RAM.Calculating...Catalan translationCleanupCleanup thumbnailsClear all bookmarks?Comix is an image viewer specifically designed to handle comic books.Comix is licensed under the GNU General Public License.Comment extensionsCommentsContrastCould not add a new collection called '%s'.Could not change the name to '%s'.Could not duplicate collection.Could not find RAR file extractor!Could not open %s: Is a directory.Could not open %s: No such file.Could not open %s: Permission denied.Could not open %s: Unknown file type.Could not read %sCover sizeCreditsCroatian translationCzech translationDefault modesDefault zoom modeDefaultsDeveloperDisplayDisplay only one image in double page mode, if the image's width exceeds its height. The result of this is that scans that span two pages are displayed properly (i.e. alone) also in double page mode.Display only those books that have the specified text string in their full path. The search is not case sensitive.Do you want to cleanup orphaned and outdated thumbnails now?Double page modeDuplicate collectionDutch translationEdit archiveEdit bookmarksEnhance imageFilesFirst pageFit _height modeFit _width modeFit height modeFit width modeFli_p horizontallyFlip _verticallyFlip pages when scrolling "off the page" with the scroll wheel or with the arrow keys. It takes three consecutive "steps" with the scroll wheel or the arrow keys for the pages to be flipped.Flip pages when scrolling off the edges of the page.Flip two pages in double page mode.Flip two pages, instead of one, each time we flip pages in double page mode.French translationFullscreenGerman translation and Nautilus thumbnailerGreek translationGzip compressed tar archiveH_ide allHungarian translationIcon designImageImage scalingImagesImportIndonesian translationIt reads ZIP, RAR and tar archives, as well as plain image files.Italian translationJPEG imagesJapanese translationKorean translationLast pageLibraryLocationM_anual zoom modeMagnification factorMagnifying GlassMagnifying _glassMagnifying glassMagnifying glass size (in pixels)Manga modeManual _ZoomManual zoom modeModifiedMove books from '%(source collection)s' to '%(destination collection)s'.NameNew collectionNext pageNo images in '%s'Number of removed thumbnailsO_riginal sizeOpenOpen _recentOpen the selected book.Other filesOwnerPNG imagesPagePermissionsPersian translationPlease enter a name for the new collection.Please enter a new name for the selected collection.Please note that the only files that are automatically added to this list are those files in archives that Comix recognizes as comments.Polish translationPr_eferencesPreferencesPrevious pagePropertiesPut the collection '%(subcollection)s' in the collection '%(supercollection)s'.RAR archiveRAR archivesRemove books from the library?Remove collection from the library?Remove collection...Remove from archiveRemove from the library...Remove from this collectionRemoved %(num)d book(s) from '%(collection)s'.Removed %d book(s) from the library.Removed thumbnail for '%s'Removing thumbnailsRename collection?Rename...Replacing it will overwrite its contents.RootRotat_e 90 degrees CCWRotate 180 de_greesRotationRun _slideshowRussian translationSLIDESHOWS_crollbarsSaturationSaveScrollSearchSet the magnification factor of the magnifying glass.Set the size of the magnifying glass. It is a square with a side of this many pixels.SharpnessShow only one wide image in double page mode.Show page numbers on thumbnails.Simplified Chinese translationSizeSlideshowSlideshow delay (in seconds)Some old files (that were used for storing preferences, the library, bookmarks etc. for older versions of Comix) were found on your computer. If you do not plan on using the older versions of Comix again, you should remove these files in order to save some disk space. Do you want these files to be removed for you now?Spanish translationSt_atusbarStore information about recently opened files.Store thumbnails for opened files according to the freedesktop.org specification. These thumbnails are shared by many other applications, such as most file managers.Store thumbnails for opened files.Stretch images to a size that is larger than their original size if the current zoom mode requests it. If this preference is unset, images are never scaled to be larger than their original size.Stretch small images.T_oolbarsTar archiveTar archivesTh_umbnailsThe new archive could not be saved!The original files have not been removed.The selected books will be removed from the library (but the original files will be untouched). Are you sure that you want to continue?The selected collection will be removed from the library (but the books and subcollections in it will remain). Are you sure that you want to continue?There are deprecated files left on your computer.Thumbnail directoryThumbnail maintenanceThumbnail size (in pixels)ThumbnailsThumbnails for files (such as image files and comic book archives) are stored in your home directory. Many different applications use and create these thumbnails, but sometimes thumbnails remain even though the original files have been removed - wasting space. This dialog can cleanup your stored thumbnails by removing orphaned and outdated thumbnails.Total number of thumbnailsTotal size of removed thumbnailsTotal size of thumbnailsTraditional Chinese translationTransparencyTreat all files found within archives, that have one of these file endings, as comments.Unknown filetypeUse a cache to speed up browsing.Use a grey checkered background for transparent images. If this preference is unset, the background is plain white instead.Use checkered background for transparent images.Use double page mode by default.Use dynamic background colour.Use fullscreen by default.Use manga mode by default.Use smart scrolling with the space key. Normally the space key scrolls only right down (or up when shift is pressed), but with this preference set it also scrolls sideways and so tries to follow the natural reading order of the comic book.Use smart space key scrolling.Use this colour as backgroundYou need either the rar or the unrar program installed in order to read RAR (.cbr) files.ZIP archiveZIP archivesZoom _out_About_Add bookmark_Best fit mode_Bookmarks_Clear bookmarks..._Close_Double page mode_Edit_Edit archive..._Edit bookmarks..._Enhance image..._File_First page_Fullscreen_Go_Help_Keep transformation_Last page_Library..._Manga mode_Menubar_Next page_Open..._Previous page_Properties_Quit_Rotate 90 degrees CW_Thumbnail maintenance..._Toolbar_Transform_View_View comments..._Zoom inProject-Id-Version: Comix 4.0 POT-Creation-Date: PO-Revision-Date: 2009-03-11 14:57+0800 Last-Translator: Wayne Su Language-Team: MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-Poedit-Language: Chinese X-Poedit-Country: TAIWAN X-Poedit-SourceCharset: utf-8 %d 個註解%d 頁(複製)已有相同名稱的收藏。檔案 %s 已存在,您要替換掉它嗎?關於存取時間加入新的空白收藏。加入書籍將書籍加入 %s。加入收藏將 Comix 開啟過的檔案資訊加入共享的「最近存取文件」清單中。加入更多書籍到收藏庫中。加入新收藏嗎?已新增書籍正在新增 %s ...正在新增書籍所有壓縮檔所有書籍所有檔案所有圖片所有保存的書籤都會被移除,您確定要這樣做嗎?使用選取的顏色當背景顏色。外觀壓縮檔已儲存 ZIP 壓縮檔。自動將此書籍加入收藏分別為每個色帶自動調整明亮度對比。自動調整對比。全螢幕時自動隱藏所有工具列。啟動時自動開啟最後檢視的檔案。當在目前壓縮檔翻頁離開最後一頁時,自動開啟目錄中的下一個壓縮檔;當翻頁跳出第一頁時,則自動開啟上一個壓縮檔。自動開啟下一個壓縮檔。當 Comix 啟動時,自動開啟上次最後開啟過的檔案。自動挑選適合觀看中圖片的背景顏色。根據內建資料自動旋轉圖片。當圖片內建的資料 (如 EXTIF) 中有指定方向時,自動旋轉圖片。背景行為最佳大小模式巴西葡萄牙語翻譯亮度以 BZIP2 壓縮的 tar 壓縮檔快取替下一張圖片建立快取以增加瀏覽速度。由於效果非常優異,除非是在記憶體較不足的系統上,不然建議您啟用此功能。計算中...加泰羅尼亞語翻譯清理清理縮圖要清除所有書籤嗎?Comix 是一個特別設計來觀看漫畫書的圖片檢視器。Comix 係採用 GNU 通用公共授權條款。註解的副檔名註解對比無法新增收藏 %s 。無法變更名稱為「%s」。無法備份收藏。無法找到 RAR 檔解壓縮程式!無法開啟 %s:它是目錄。無法開啟 %s:找不到檔案。無法開啟 %s:沒有權限。無法開啟 %s:不明的檔案類型。無法讀取 %s封面大小致謝克羅埃西亞語翻譯捷克語翻譯預設模式預設縮放模式預設值開發者顯示如果圖片寬度大於高度,則在雙頁模式時仍只顯示單張圖片。只顯示完整路徑中有指定關鍵字的書籍,搜尋時不區分大小寫。您要立即清理失效與過期的縮圖嗎?雙頁模式備份收藏荷蘭語翻譯編輯壓縮檔編輯書籤強化圖片檔案第一頁符合高度模式 (_h)符合寬度模式 (_w)符合高度模式符合寬度模式水平翻轉 (_p)垂直翻轉 (_v)以滾輪或方向鍵捲動到「超出本頁」時翻頁。要翻頁時,需要連續滾動滑鼠滾輪或按方向鍵「三次」。當捲動到頁面的頂端或底部時翻頁雙頁模式時一次翻兩頁。雙頁模式時一次翻兩頁,而不是只翻一頁。法語翻譯全螢幕德語翻譯與 Nautilus 縮圖功能作者希臘語翻譯以 GZIP 壓縮的 tar 壓縮檔全部隱藏 (_i)匈牙利語翻譯圖示設計圖片圖片縮放圖片匯入印尼語翻譯可以讀取圖片檔,又能讀取 ZIP、RAR、tar 壓縮檔 (含以 gzip、bzip2 壓縮的)。義大利語翻譯JPEG 圖片日語翻譯韓語翻譯最後一頁收藏庫位置手動縮放模式 (_a)放大倍率放大鏡放大鏡 (_g)放大鏡放大鏡大小 (像素)漫畫模式手動縮放 (_Z)手動縮放模式修改時間將書籍從 %(source collection)s 移到 %(destination collection)s 。名稱新收藏下一頁%s 內沒有圖片已移除的縮圖數量正常大小 (_r)開啟最近存取的檔案 (_r)開啟選取的書籍。其他檔案擁有者PNG 圖片頁次權限波斯語翻譯請輸入新收藏的名稱。請輸入此收藏的新名稱。請注意:只有壓縮檔內被 Comix 認為是註解的檔案,才會被自動加入這個清單。波蘭語翻譯偏好設定 (_e)偏好設定上一頁屬性將收藏 %(subcollection)s 放到 %(supercollection)s 。RAR 壓縮檔RAR 壓縮檔從此收藏庫移除書籍?要從收藏庫中移除收藏嗎?移除收藏...從壓縮檔移除從此收藏庫移除...從此收藏移除已移除 %(num)d 本 %(collection)s 收藏的書籍。已從收藏庫移除 %d 本書籍。已移除 %s 的縮圖正在移除縮圖重新命名收藏?重新命名...替換後將會覆蓋掉原有內容。Root逆時針旋轉 90° (_e)旋轉 180° (_g)旋轉開始投影片放映 (_s)俄語翻譯投影片放映捲軸 (_c)飽和度儲存捲動搜尋設定放大鏡的放大倍率。設定放大鏡的大小,請填入正方形的單邊長。清晰度雙頁模式時只顯示單張的寬幅圖片。在縮圖上顯示頁碼。簡體中文翻譯大小投影片放映投影片放映延遲 (秒)在您的電腦中有一些檔案,是舊版本 Comix 的設定檔、收藏庫、書籤等。如果您以後不會再使用舊版 Comix,可以刪除它們以節省磁碟空間。您想要現在就刪除這些檔案嗎?西班牙語翻譯狀態列 (_a)儲存最近開啟過的檔案資訊。依據 freedesktop.org 的標準,替開啟過的檔案儲存縮圖。這些縮圖也可由檔案管理程式等其他各種應用程式分享共用。替開啟過的檔案儲存縮圖。配合目前的縮放模式,將圖片伸展放大到設定的大小。伸展較小圖片。工具列 (_o)TAR 壓縮檔TAR 壓縮檔縮圖 (_u)無法儲存新壓縮檔!原始檔案未被移除。這些書籍將從收藏庫中移除,但原始檔案不會受影響。您確定要繼續嗎?這些收藏將從收藏庫中移除,但書籍與子收藏仍會留著。您確定要繼續嗎?您的電腦中有一些已不再使用的檔案。縮圖目錄縮圖管理縮圖大小 (像素)縮圖各種應用程式儲存了許多圖片檔、壓縮檔的縮圖在您的個人目錄中,但很可能縮圖還在而原始檔案已經被移除了,因而浪費許多空間。這個項目可以清理、移除失效與過期的縮圖。縮圖總數已移除的縮圖總大小縮圖總大小正體中文翻譯透明度壓縮檔內檔名結尾相符的檔案,將被認定為註解。不明的檔案類型使用快取以加速瀏覽。透明色圖片使用灰色方格背景。如果未設定此項目,則將使用白色背景。透明色圖片使用方格背景。預設使用雙頁模式。使用動態背景顏色。預設使用全螢幕。預設使用漫畫模式。使用智慧型的空白鍵捲動。通常按下空白鍵時只會向下捲動 (若按住 shift 時則是下上捲動),但設定此項目後,也會側向捲動,以儘量配合一般的漫畫書閱讀順序。使用智慧型空白鍵捲動。使用此顏色當背景您需要安裝 rarunrar 程式,才能讀取 RAR (.cbr) 檔。ZIP 壓縮檔ZIP 壓縮檔縮小 (_o)關於 (_A)加入書籤 (_A)最佳大小模式 (_B)書籤 (_B)清除書籤... (_C)關閉 (_C)雙頁模式 (_D)編輯 (_E)編輯壓縮檔... (_E)編輯書籤... (_E)強化圖片... (_E)檔案 (_F)第一頁 (_F)全螢幕 (_F)前往 (_G)說明 (_H)保持變換 (_K)最後一頁 (_L)收藏庫... (_L)漫畫模式 (_M)選單列 (_M)下一頁 (_N)開啟... (_O)上一頁 (_P)屬性 (_P)離開 (_Q)順時針旋轉 90° (_R)縮圖管理... (_T)工具列 (_T)變換 (_T)檢視 (_V)檢視註解... (_V)放大 (_Z)comix-4.0.4/messages/ja/LC_MESSAGES/comix.po0000644000175000001440000012316511137627234017216 0ustar sorkusersmsgid "" msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2008-11-22 02:42+0100\n" "PO-Revision-Date: 2008-12-13 01:34+0900\n" "Last-Translator: Mamoru Tasaka \n" "Language-Team: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Poedit-Language: Japanese\n" "X-Poedit-Country: JAPAN\n" "X-Poedit-SourceCharset: utf-8\n" # # File: src/about.py, line: 18 # File: src/about.py, line: 67 #: src/about.py:19 src/about.py:68 msgid "About" msgstr "Comixについて" # # File: src/about.py, line: 55 #: src/about.py:56 msgid "Comix is an image viewer specifically designed to handle comic books." msgstr "Comixは特にコミックを扱うためにデザインされた画像ビューアです。" # # File: src/about.py, line: 57 #: src/about.py:58 msgid "It reads ZIP, RAR and tar archives, as well as plain image files." msgstr "" "ZIP, RAR, tar形式の書庫ファイルや、普通の画像ファイルを読むことが出来ます。" # # File: src/about.py, line: 59 #: src/about.py:60 msgid "Comix is licensed under the GNU General Public License." msgstr "ComixはGPLでライセンスされています。" # # File: src/about.py, line: 75 #: src/about.py:83 msgid "Developer" msgstr "開発者" # # File: src/about.py, line: 77 #: src/about.py:84 src/about.py:85 msgid "Simplified Chinese translation" msgstr "簡体中国語への翻訳" # # File: src/about.py, line: 78 #: src/about.py:86 msgid "Spanish translation" msgstr "スペイン語への翻訳" # # File: src/about.py, line: 79 #: src/about.py:87 msgid "Brazilian Portuguese translation" msgstr "(ブラジル)ポルトガル語への翻訳" # # File: src/about.py, line: 81 #: src/about.py:88 msgid "German translation and Nautilus thumbnailer" msgstr "ドイツ語への翻訳とNautilusのサムネイル作成" # # File: src/about.py, line: 82 #: src/about.py:89 src/about.py:90 msgid "Italian translation" msgstr "イタリア語への翻訳" # # File: src/about.py, line: 83 #: src/about.py:91 msgid "Dutch translation" msgstr "オランダ語への翻訳" # # File: src/about.py, line: 84 #: src/about.py:92 msgid "French translation" msgstr "フランス語への翻訳" # # File: src/about.py, line: 85 #: src/about.py:93 src/about.py:94 msgid "Polish translation" msgstr "ポーランド語への翻訳" # # File: src/about.py, line: 86 #: src/about.py:95 msgid "Greek translation" msgstr "ギリシア語への翻訳" # # File: src/about.py, line: 87 #: src/about.py:96 msgid "Catalan translation" msgstr "カタロニア語への翻訳" # # File: src/about.py, line: 88 #: src/about.py:97 src/about.py:98 msgid "Traditional Chinese translation" msgstr "正體中国語への翻訳" # # File: src/about.py, line: 89 #: src/about.py:99 msgid "Japanese translation" msgstr "日本語への翻訳" # # File: src/about.py, line: 90 #: src/about.py:100 msgid "Hungarian translation" msgstr "ハンガリー語への翻訳" # # File: src/about.py, line: 91 #: src/about.py:101 msgid "Russian translation" msgstr "ロシア語への翻訳" # # File: src/about.py, line: 92 #: src/about.py:102 msgid "Croatian translation" msgstr "クロアチア語への翻訳" # # File: src/about.py, line: 93 #: src/about.py:103 msgid "Korean translation" msgstr "朝鮮語への翻訳" # # File: src/about.py, line: 94 #: src/about.py:104 msgid "Persian translation" msgstr "ペルシャ語への翻訳" # # File: src/about.py, line: 95 #: src/about.py:105 msgid "Indonesian translation" msgstr "インドネシア語への翻訳" # # File: src/about.py, line: 96 #: src/about.py:106 msgid "Czech translation" msgstr "チェコ語への翻訳" # # File: src/about.py, line: 97 #: src/about.py:107 msgid "Icon design" msgstr "アイコンのデザイン" # # File: src/about.py, line: 106 #: src/about.py:114 msgid "Credits" msgstr "クレジット" # # File: src/archive.py, line: 66 #: src/archive.py:66 msgid "Could not find RAR file extractor!" msgstr "RAR書庫ファイルを展開するプログラムが見つかりませんでした。" # # File: src/archive.py, line: 68 #: src/archive.py:68 msgid "" "You need either the rar or the unrar program installed in " "order to read RAR (.cbr) files." msgstr "" "RAR(.cbr)書庫ファイルを読むには、rar もしくは unrarプログラムが" "必要です。" # # File: src/archive.py, line: 301 #: src/archive.py:305 msgid "ZIP archive" msgstr "ZIP書庫ファイル" # # File: src/archive.py, line: 302 #: src/archive.py:306 msgid "Tar archive" msgstr "Tar書庫ファイル" # # File: src/archive.py, line: 303 #: src/archive.py:307 msgid "Gzip compressed tar archive" msgstr "GzipされたTar書庫ファイル" # # File: src/archive.py, line: 304 #: src/archive.py:308 msgid "Bzip2 compressed tar archive" msgstr "Bzip2されたTar書庫ファイル" # # File: src/archive.py, line: 305 #: src/archive.py:309 msgid "RAR archive" msgstr "RAR書庫ファイル" # # File: src/bookmark.py, line: 27 #: src/bookmark.py:28 msgid "_Add bookmark" msgstr "ブックマークに追加(_A)" # # File: src/bookmark.py, line: 29 #: src/bookmark.py:30 msgid "_Edit bookmarks..." msgstr "ブックマークの編集(_E)..." # # File: src/bookmark.py, line: 31 #: src/bookmark.py:32 msgid "_Clear bookmarks..." msgstr "ブックマークをクリア(_C)..." # # File: src/bookmark.py, line: 77 #: src/bookmark.py:78 msgid "Clear all bookmarks?" msgstr "全てのブックマークをクリアしますか?" # # File: src/bookmark.py, line: 79 #: src/bookmark.py:80 msgid "" "All stored bookmarks will be removed. Are you sure that you want to continue?" msgstr "保存されている全ブックマークが消去されます。よろしいですか?" # # File: src/bookmark.py, line: 229 #: src/bookmark.py:230 msgid "Edit bookmarks" msgstr "ブックマークを編集" # # File: src/bookmark.py, line: 255 # File: src/edit.py, line: 267 #: src/bookmark.py:256 src/edit.py:270 msgid "Name" msgstr "名前" # # File: src/bookmark.py, line: 256 #: src/bookmark.py:257 msgid "Page" msgstr "ページ" # # File: src/comment.py, line: 16 # File: src/preferences.py, line: 288 #: src/comment.py:16 src/preferences.py:299 msgid "Comments" msgstr "コメント" # # File: src/comment.py, line: 53 #: src/comment.py:53 #, python-format msgid "Could not read %s" msgstr "%sを読めませんでした" # # File: src/deprecated.py, line: 16 #: src/deprecated.py:16 msgid "There are deprecated files left on your computer." msgstr "コンピュータ上にもう使われないファイルがあります。" # # File: src/deprecated.py, line: 22 #: src/deprecated.py:22 msgid "" "Some old files (that were used for storing preferences, the library, " "bookmarks etc. for older versions of Comix) were found on your computer. If " "you do not plan on using the older versions of Comix again, you should " "remove these files in order to save some disk space. Do you want these files " "to be removed for you now?" msgstr "" "コンピュータ上に以前のバージョンのComixでしか使われない、設定やライブラリ、" "ブックマーク用のファイルがあります。もしもう以前のバージョンのComixを使う予定" "が無ければ、ディスクの容量を減らすためにこれらのファイルを削除することをおす" "すめします。これらのファイルを削除しますか?" # # File: src/edit.py, line: 28 #: src/edit.py:29 msgid "Edit archive" msgstr "書庫ファイルを編集" # # File: src/edit.py, line: 36 #: src/edit.py:37 msgid "Import" msgstr "インポート" # # File: src/edit.py, line: 50 #: src/edit.py:51 msgid "Images" msgstr "画像" # # File: src/edit.py, line: 51 #: src/edit.py:52 msgid "Other files" msgstr "その他のファイル" # # File: src/edit.py, line: 99 #: src/edit.py:101 msgid "The new archive could not be saved!" msgstr "新しい書庫ファイルが保存出来ませんでした。" # # File: src/edit.py, line: 101 #: src/edit.py:103 msgid "The original files have not been removed." msgstr "元のファイルは削除されません。" # # File: src/edit.py, line: 115 #: src/edit.py:117 msgid "Archives are stored as ZIP files." msgstr "書庫ファイルはZIP形式で保存されます。" # # File: src/edit.py, line: 168 # File: src/edit.py, line: 285 #: src/edit.py:170 src/edit.py:288 msgid "Remove from archive" msgstr "書庫ファイルの中から削除" # # File: src/edit.py, line: 255 #: src/edit.py:258 msgid "" "Please note that the only files that are automatically added to this list " "are those files in archives that Comix recognizes as comments." msgstr "" "注意:Comixがコメントファイルだと認識する書庫ファイル内のファイルだけが、自動" "的にこのリストに追加されます。" # # File: src/edit.py, line: 270 #: src/edit.py:273 msgid "Size" msgstr "サイズ" # # File: src/enhance.py, line: 51 #: src/enhance.py:51 msgid "Enhance image" msgstr "画像の調整" # # File: src/enhance.py, line: 52 #: src/enhance.py:52 msgid "Defaults" msgstr "デフォルト" # # File: src/enhance.py, line: 79 #: src/enhance.py:79 msgid "Brightness" msgstr "明度" # # File: src/enhance.py, line: 90 #: src/enhance.py:90 msgid "Contrast" msgstr "コントラスト" # # File: src/enhance.py, line: 101 #: src/enhance.py:101 msgid "Saturation" msgstr "彩度" # # File: src/enhance.py, line: 112 #: src/enhance.py:112 msgid "Sharpness" msgstr "シャープネス" # # File: src/enhance.py, line: 126 #: src/enhance.py:126 msgid "Automatically adjust contrast." msgstr "コントラストを自動調節する" # # File: src/enhance.py, line: 128 #: src/enhance.py:128 msgid "" "Automatically adjust contrast (both lightness and darkness), separately for " "each colour band." msgstr "各々のカラーバンド毎にコントラスト(明度と暗度)を自動調節します。" # # File: src/filechooser.py, line: 35 # File: src/library.py, line: 489 #: src/filechooser.py:38 src/library.py:490 msgid "Open" msgstr "開く" # # File: src/filechooser.py, line: 39 #: src/filechooser.py:42 msgid "Save" msgstr "保存" # # File: src/filechooser.py, line: 75 #: src/filechooser.py:78 msgid "All files" msgstr "全てのファイル" # # File: src/filechooser.py, line: 78 #: src/filechooser.py:81 msgid "All Archives" msgstr "全ての書庫ファイル" # # File: src/filechooser.py, line: 82 #: src/filechooser.py:85 msgid "ZIP archives" msgstr "ZIP書庫ファイル" # # File: src/filechooser.py, line: 84 #: src/filechooser.py:87 msgid "RAR archives" msgstr "RAR書庫ファイル" # # File: src/filechooser.py, line: 86 #: src/filechooser.py:89 msgid "Tar archives" msgstr "Tar書庫ファイル" # # File: src/filechooser.py, line: 125 #: src/filechooser.py:134 #, python-format msgid "A file named '%s' already exists. Do you want to replace it?" msgstr "'%s'という名前のファイルは既に存在します。上書きしますか?" # # File: src/filechooser.py, line: 128 #: src/filechooser.py:137 msgid "Replacing it will overwrite its contents." msgstr "上書きすると元のファイルの内容が失われます。" # # File: src/filechooser.py, line: 171 # File: src/filechooser.py, line: 249 #: src/filechooser.py:182 src/filechooser.py:260 msgid "All images" msgstr "全ての画像" # # File: src/filechooser.py, line: 173 # File: src/filechooser.py, line: 251 #: src/filechooser.py:184 src/filechooser.py:262 msgid "JPEG images" msgstr "JPEG画像" # # File: src/filechooser.py, line: 174 # File: src/filechooser.py, line: 252 #: src/filechooser.py:185 src/filechooser.py:263 msgid "PNG images" msgstr "PNG画像" # # File: src/filechooser.py, line: 195 #: src/filechooser.py:206 msgid "Automatically add the books to this collection" msgstr "本を自動的にこのコレクションに追加する" # # File: src/filehandler.py, line: 209 #: src/filehandler.py:209 #, python-format msgid "Could not open %s: Is a directory." msgstr "'%s'を開けませんでした。ディレクトリです。" # # File: src/filehandler.py, line: 213 #: src/filehandler.py:213 #, python-format msgid "Could not open %s: No such file." msgstr "'%s'を開けませんでした。ファイルが存在しません。" # # File: src/filehandler.py, line: 217 #: src/filehandler.py:217 #, python-format msgid "Could not open %s: Permission denied." msgstr "'%s'を開けませんでした。パーミッションが許可されていません。" # # File: src/filehandler.py, line: 222 #: src/filehandler.py:222 #, python-format msgid "Could not open %s: Unknown file type." msgstr "'%s'を開けませんでした。ファイル形式が分かりません。" # # File: src/filehandler.py, line: 285 #: src/filehandler.py:285 #, python-format msgid "No images in '%s'" msgstr "'%s'の中には画像がありません" # # File: src/filehandler.py, line: 411 #: src/filehandler.py:413 msgid "Unknown filetype" msgstr "ファイル形式が分かりません" # # File: src/librarybackend.py, line: 272 # File: src/librarybackend.py, line: 274 #: src/librarybackend.py:273 src/librarybackend.py:275 msgid "(Copy)" msgstr "(コピー)" # # File: src/library.py, line: 38 #: src/library.py:38 msgid "Library" msgstr "ライブラリ" # # File: src/library.py, line: 150 #: src/library.py:150 msgid "Rename..." msgstr "名前の変更..." # # File: src/library.py, line: 152 #: src/library.py:152 msgid "Duplicate collection" msgstr "コレクションを複製" # # File: src/library.py, line: 154 #: src/library.py:154 msgid "Remove collection..." msgstr "コレクションを削除..." # # File: src/library.py, line: 202 #: src/library.py:202 msgid "All books" msgstr "全ての本" # # File: src/library.py, line: 231 #: src/library.py:231 msgid "Remove collection from the library?" msgstr "コレクションをライブラリから削除しますか?" # # File: src/library.py, line: 233 #: src/library.py:233 msgid "" "The selected collection will be removed from the library (but the books and " "subcollections in it will remain). Are you sure that you want to continue?" msgstr "" "選択されたコレクションがライブラリから削除されます(コレクションの中の本とサ" "ブコレクションは削除されません)。よろしいですか?" # # File: src/library.py, line: 251 #: src/library.py:251 msgid "Rename collection?" msgstr "コレクションの名前を変更しますか?" # # File: src/library.py, line: 253 #: src/library.py:253 msgid "Please enter a new name for the selected collection." msgstr "選択されたコレクションの新しい名前を入力してください。" # # File: src/library.py, line: 271 #: src/library.py:271 #, python-format msgid "Could not change the name to '%s'." msgstr "'%s'の名前を変更出来ませんでした。" # # File: src/library.py, line: 275 # File: src/library.py, line: 881 #: src/library.py:275 src/library.py:882 msgid "A collection by that name already exists." msgstr "その名前のコレクションは既に存在します。" # # File: src/library.py, line: 285 #: src/library.py:285 msgid "Could not duplicate collection." msgstr "コレクションを複製出来ませんでした。" # # File: src/library.py, line: 382 #: src/library.py:382 msgid "Root" msgstr "ルート" # # File: src/library.py, line: 386 #: src/library.py:386 #, python-format msgid "" "Put the collection '%(subcollection)s' in the collection '%(supercollection)" "s'." msgstr "" "コレクション '%(subcollection)s' をコレクション '%(supercollection)s' の中に" "入れる" # # File: src/library.py, line: 407 #: src/library.py:407 #, python-format msgid "Add books to '%s'." msgstr "本を'%s'に加える" # # File: src/library.py, line: 411 #: src/library.py:411 #, python-format msgid "" "Move books from '%(source collection)s' to '%(destination collection)s'." msgstr "" "本をコレクション'%(source collection)s'から'%(destination collection)s'に移動" "させる" # # File: src/library.py, line: 492 #: src/library.py:493 msgid "Remove from this collection" msgstr "このコレクションから削除" # # File: src/library.py, line: 495 #: src/library.py:496 msgid "Remove from the library..." msgstr "ライブラリから削除..." # # File: src/library.py, line: 588 #: src/library.py:589 #, python-format msgid "Removed %(num)d book(s) from '%(collection)s'." msgstr "%(num)d 個の本が '%(collection)s'から削除されました。" # # File: src/library.py, line: 597 #: src/library.py:598 msgid "Remove books from the library?" msgstr "ライブラリから本を削除しますか?" # # File: src/library.py, line: 599 #: src/library.py:600 msgid "" "The selected books will be removed from the library (but the original files " "will be untouched). Are you sure that you want to continue?" msgstr "" "選択された本はライブラリから削除されます(元のファイルは変更されません)。よ" "ろしいですか?" # # File: src/library.py, line: 609 #: src/library.py:610 #, python-format msgid "Removed %d book(s) from the library." msgstr "%d 個の本がライブラリから削除されました。" # # File: src/library.py, line: 769 #: src/library.py:770 msgid "Search" msgstr "検索" # # File: src/library.py, line: 774 #: src/library.py:775 msgid "" "Display only those books that have the specified text string in their full " "path. The search is not case sensitive." msgstr "" "フルパス名に次の文字列が含まれている本のみを表示します。検索では大文字小文字" "を区別しません。" # # File: src/library.py, line: 776 #: src/library.py:777 msgid "Cover size" msgstr "カバーのサイズ" # # File: src/library.py, line: 789 #: src/library.py:790 msgid "Add books" msgstr "本を追加" # # File: src/library.py, line: 793 #: src/library.py:794 msgid "Add more books to the library." msgstr "ライブラリに本を追加する" # # File: src/library.py, line: 795 #: src/library.py:796 msgid "Add collection" msgstr "コレクションを追加する" # # File: src/library.py, line: 800 #: src/library.py:801 msgid "Add a new empty collection." msgstr "空のコレクションを新規作成する" # # File: src/library.py, line: 806 #: src/library.py:807 msgid "Open the selected book." msgstr "選択した本を開く" # # File: src/library.py, line: 832 # File: src/properties.py, line: 113 #: src/library.py:833 src/properties.py:118 #, python-format msgid "%d pages" msgstr "%d ページ" # # File: src/library.py, line: 854 #: src/library.py:855 msgid "Add new collection?" msgstr "新しいコレクションを追加しますか?" # # File: src/library.py, line: 856 #: src/library.py:857 msgid "Please enter a name for the new collection." msgstr "新しいコレクションの名前を入力してください。" # # File: src/library.py, line: 862 #: src/library.py:863 msgid "New collection" msgstr "新しいコレクション" # # File: src/library.py, line: 876 #: src/library.py:877 #, python-format msgid "Could not add a new collection called '%s'." msgstr "'%s'という名前の新しいコレクションを追加出来ませんでした。" # # File: src/library.py, line: 910 #: src/library.py:911 msgid "Adding books" msgstr "本を追加中" # # File: src/library.py, line: 930 #: src/library.py:931 msgid "Added books" msgstr "本を追加しました" # # File: src/library.py, line: 952 #: src/library.py:953 #, python-format msgid "Adding '%s'..." msgstr "'%s'を追加中..." # # File: src/main.py, line: 666 #: src/main.py:699 msgid "SLIDESHOW" msgstr "スライドショー" # # File: src/preferences.py, line: 78 #: src/preferences.py:80 msgid "Preferences" msgstr "設定" # # File: src/preferences.py, line: 93 #: src/preferences.py:95 msgid "Background" msgstr "背景" # # File: src/preferences.py, line: 95 #: src/preferences.py:97 msgid "Use this colour as background" msgstr "この色を背景に用いる" # # File: src/preferences.py, line: 97 #: src/preferences.py:99 msgid "Always use this selected colour as the background colour." msgstr "選択された色を常に背景色に用います。" # # File: src/preferences.py, line: 102 #: src/preferences.py:104 msgid "Use dynamic background colour." msgstr "背景色を自動選択する" # # File: src/preferences.py, line: 106 #: src/preferences.py:108 msgid "Automatically pick a background colour that fits the viewed image." msgstr "画像に合う背景色を自動的に表示します。" # # File: src/preferences.py, line: 109 #: src/preferences.py:111 msgid "Thumbnails" msgstr "サムネイル" # # File: src/preferences.py, line: 110 #: src/preferences.py:112 msgid "Thumbnail size (in pixels)" msgstr "サムネイルのサイズ(ピクセル数)" # # File: src/preferences.py, line: 117 #: src/preferences.py:119 msgid "Show page numbers on thumbnails." msgstr "サムネイルの上にページ数を表示する" # # File: src/preferences.py, line: 124 #: src/preferences.py:126 msgid "Magnifying Glass" msgstr "レンズの拡大" # # File: src/preferences.py, line: 125 #: src/preferences.py:127 msgid "Magnifying glass size (in pixels)" msgstr "拡大するサイズ(ピクセル数)" # # File: src/preferences.py, line: 131 #: src/preferences.py:133 msgid "" "Set the size of the magnifying glass. It is a square with a side of this " "many pixels." msgstr "" "レンズが拡大する範囲のサイズを設定します。一辺がこのピクセル数の正方形状の範" "囲が拡大されます。" # # File: src/preferences.py, line: 133 #: src/preferences.py:135 msgid "Magnification factor" msgstr "拡大率" # # File: src/preferences.py, line: 140 #: src/preferences.py:142 msgid "Set the magnification factor of the magnifying glass." msgstr "レンズの拡大率を設定します。" # # File: src/preferences.py, line: 143 #: src/preferences.py:145 msgid "Image scaling" msgstr "画像のスケーリング" # # File: src/preferences.py, line: 144 #: src/preferences.py:146 msgid "Stretch small images." msgstr "小さい画像を拡大する" # # File: src/preferences.py, line: 148 #: src/preferences.py:150 msgid "" "Stretch images to a size that is larger than their original size if the " "current zoom mode requests it. If this preference is unset, images are never " "scaled to be larger than their original size." msgstr "" "使用しているズームモードに応じて、元のサイズ以上に画像を拡大することを許可し" "ます。この項目が設定されていない場合、画像は元のサイズ以上には拡大されませ" "ん。" # # File: src/preferences.py, line: 151 #: src/preferences.py:153 msgid "Transparency" msgstr "透過画像" # # File: src/preferences.py, line: 153 #: src/preferences.py:155 msgid "Use checkered background for transparent images." msgstr "透過画像の背景に格子状の模様を用いる" # # File: src/preferences.py, line: 159 #: src/preferences.py:161 msgid "" "Use a grey checkered background for transparent images. If this preference " "is unset, the background is plain white instead." msgstr "" "透過画像の背景にグレーの格子状の模様を用います。この項目が設定されていない場" "合は、単色の白が使われます。" # # File: src/preferences.py, line: 161 #: src/preferences.py:163 msgid "Appearance" msgstr "外見" # # File: src/preferences.py, line: 167 #: src/preferences.py:169 msgid "Scroll" msgstr "スクロール" # # File: src/preferences.py, line: 169 #: src/preferences.py:171 msgid "Use smart space key scrolling." msgstr "スペースキーで「スマートスクロール」を行う" # # File: src/preferences.py, line: 174 #: src/preferences.py:176 msgid "" "Use smart scrolling with the space key. Normally the space key scrolls only " "right down (or up when shift is pressed), but with this preference set it " "also scrolls sideways and so tries to follow the natural reading order of " "the comic book." msgstr "" "スペースキーで「スマートスクロール」を行います。通常スペースキーを押すと画像" "は下に(SHIFTキーが押されている時は上に)スクロールされるだけですが、この設定" "がされていると画像は左右にもスクロールされ、コミックを読む自然な流れに従おう" "とします。" #: src/preferences.py:180 msgid "Flip pages when scrolling off the edges of the page." msgstr "スクロールがページの端を越えた時、ページを送る" #: src/preferences.py:185 msgid "" "Flip pages when scrolling \"off the page\" with the scroll wheel or with the " "arrow keys. It takes three consecutive \"steps\" with the scroll wheel or " "the arrow keys for the pages to be flipped." msgstr "" "マウスやカーソルキーでのスクロールで、ページの端に3回連続して触れた時に次の" "ページを表示します。" # # File: src/preferences.py, line: 177 # File: src/ui.py, line: 296 #: src/preferences.py:188 src/ui.py:298 msgid "Double page mode" msgstr "見開き表示" # # File: src/preferences.py, line: 179 #: src/preferences.py:190 msgid "Flip two pages in double page mode." msgstr "見開き表示の時、2ページずつページを送る" # # File: src/preferences.py, line: 184 #: src/preferences.py:195 msgid "" "Flip two pages, instead of one, each time we flip pages in double page mode." msgstr "見開き表示の時、1ページずつではなく、2ページずつ表示を進めます。" # # File: src/preferences.py, line: 187 #: src/preferences.py:198 msgid "Show only one wide image in double page mode." msgstr "見開き表示の時、幅が広い画像の時は1枚だけ表示する" # # File: src/preferences.py, line: 193 #: src/preferences.py:204 msgid "" "Display only one image in double page mode, if the image's width exceeds its " "height. The result of this is that scans that span two pages are displayed " "properly (i.e. alone) also in double page mode." msgstr "" "画像の高さより幅が大きい時は、見開き表示の時でも1枚だけ画像を表示します。2" "ページにわたる範囲をスキャンした画像は、見開き表示の時も適切に(つまりその画" "像だけ)表示されます。" # # File: src/preferences.py, line: 196 #: src/preferences.py:207 msgid "Files" msgstr "ファイル" # # File: src/preferences.py, line: 198 #: src/preferences.py:209 msgid "Automatically open the next archive." msgstr "次の書庫ファイルを自動的に開く" # # File: src/preferences.py, line: 203 #: src/preferences.py:214 msgid "" "Automatically open the next archive in the directory when flipping past the " "last page, or the previous archive when flipping past the first page." msgstr "" "書庫ファイルの最後のページの次に進もうとした時、同じディレクトリ内の次の書庫" "ファイルを、また最初のページの前に進もうとした時、前の書庫ファイルを自動的に開き" "ます。" # # File: src/preferences.py, line: 206 #: src/preferences.py:217 msgid "Automatically open the last viewed file on startup." msgstr "最後に見たファイルを起動時に自動で開く" # # File: src/preferences.py, line: 211 #: src/preferences.py:222 msgid "" "Automatically open, on startup, the file that was open when Comix was last " "closed." msgstr "" "Comixが最後に終了した時に開いていたファイルを、起動時に自動的に開きます。" # # File: src/preferences.py, line: 214 #: src/preferences.py:225 msgid "Store information about recently opened files." msgstr "最近開いたファイルの情報を保存する" # # File: src/preferences.py, line: 219 #: src/preferences.py:230 msgid "" "Add information about all files opened from within Comix to the shared " "recent files list." msgstr "" "Comixが開いた全ファイルの情報を、最近開いたファイルの共有リストに追加します。" # # File: src/preferences.py, line: 222 #: src/preferences.py:233 msgid "Store thumbnails for opened files." msgstr "開いたファイルのサムネイルを保存する" # # File: src/preferences.py, line: 227 #: src/preferences.py:238 msgid "" "Store thumbnails for opened files according to the freedesktop.org " "specification. These thumbnails are shared by many other applications, such " "as most file managers." msgstr "" "開いたファイルのサムネイルをfreedesktop.orgの規格に従って保存します。これらの" "サムネイルは、ほとんどのファイルマネージャー等、多くのアプリケーションが共有" "して使うことが出来ます。" # # File: src/preferences.py, line: 230 #: src/preferences.py:241 msgid "Cache" msgstr "キャッシュ" # # File: src/preferences.py, line: 231 #: src/preferences.py:242 msgid "Use a cache to speed up browsing." msgstr "キャッシュを使って表示を早くする" # # File: src/preferences.py, line: 235 #: src/preferences.py:246 msgid "" "Cache the images that are next to the currently viewed image in order to " "speed up browsing. Since the speed improvements are quite big, it is " "recommended that you have this preference set, unless you are running short " "on free RAM." msgstr "" "現在表示している次の画像をキャッシュして表示を早くします。表示速度の改良によ" "る効果は大きいので、RAMの空きが少ない場合を除いてはこの設定をおすすめします。" # # File: src/preferences.py, line: 237 #: src/preferences.py:248 msgid "Behaviour" msgstr "一般" # # File: src/preferences.py, line: 243 #: src/preferences.py:254 msgid "Default modes" msgstr "デフォルトのモード" # # File: src/preferences.py, line: 245 #: src/preferences.py:256 msgid "Use double page mode by default." msgstr "見開き表示にする" # # File: src/preferences.py, line: 250 #: src/preferences.py:261 msgid "Use fullscreen by default." msgstr "全画面表示にする" # # File: src/preferences.py, line: 255 #: src/preferences.py:266 msgid "Use manga mode by default." msgstr "マンガのページ順に表示する" # # File: src/preferences.py, line: 260 #: src/preferences.py:271 msgid "Default zoom mode" msgstr "デフォルトのズームモード" # # File: src/preferences.py, line: 262 # File: src/ui.py, line: 288 #: src/preferences.py:273 src/ui.py:290 msgid "Best fit mode" msgstr "ベストフィットモードにする" # # File: src/preferences.py, line: 263 # File: src/ui.py, line: 290 #: src/preferences.py:274 src/ui.py:292 msgid "Fit width mode" msgstr "横幅を合わせる" # # File: src/preferences.py, line: 264 # File: src/ui.py, line: 292 #: src/preferences.py:275 src/ui.py:294 msgid "Fit height mode" msgstr "縦幅を合わせる" # # File: src/preferences.py, line: 265 # File: src/ui.py, line: 294 #: src/preferences.py:276 src/ui.py:296 msgid "Manual zoom mode" msgstr "手動でズームを調整" # # File: src/preferences.py, line: 271 #: src/preferences.py:282 msgid "Fullscreen" msgstr "全画面表示" # # File: src/preferences.py, line: 273 #: src/preferences.py:284 msgid "Automatically hide all toolbars in fullscreen." msgstr "全画面表示の時全てのツールバーを隠す" # # File: src/preferences.py, line: 279 #: src/preferences.py:290 msgid "Slideshow" msgstr "スライドショー" # # File: src/preferences.py, line: 280 #: src/preferences.py:291 msgid "Slideshow delay (in seconds)" msgstr "スライドショーの間隔(秒単位)" # # File: src/preferences.py, line: 289 #: src/preferences.py:300 msgid "Comment extensions" msgstr "コメントファイルの拡張子" # # File: src/preferences.py, line: 295 #: src/preferences.py:306 msgid "" "Treat all files found within archives, that have one of these file endings, " "as comments." msgstr "" "書庫ファイルの中にある、これらの拡張子を持つファイルを全てコメントとして扱い" "ます。" #: src/preferences.py:309 msgid "Rotation" msgstr "回転" #: src/preferences.py:311 msgid "Automatically rotate images according to their metadata." msgstr "メタデータに従い画像を自動的に回転する" #: src/preferences.py:316 msgid "" "Automatically rotate images when an orientation is specified in the image " "metadata, such as in an Exif tag." msgstr "Exifタグのようなメタデータに画像の回転方向が示されている時は、" "自動的に画像を回転します。" # # File: src/preferences.py, line: 297 #: src/preferences.py:318 msgid "Display" msgstr "表示" # # File: src/properties.py, line: 89 #: src/properties.py:94 msgid "Properties" msgstr "プロパティ" # # File: src/properties.py, line: 114 #: src/properties.py:119 #, python-format msgid "%d comments" msgstr "%d個のコメント" # # File: src/properties.py, line: 124 # File: src/properties.py, line: 159 #: src/properties.py:129 src/properties.py:164 msgid "Location" msgstr "場所" # # File: src/properties.py, line: 126 # File: src/properties.py, line: 160 #: src/properties.py:131 src/properties.py:165 msgid "Accessed" msgstr "最終アクセス時" # # File: src/properties.py, line: 128 # File: src/properties.py, line: 162 #: src/properties.py:133 src/properties.py:167 msgid "Modified" msgstr "最終修正時" # # File: src/properties.py, line: 130 # File: src/properties.py, line: 164 #: src/properties.py:135 src/properties.py:169 msgid "Permissions" msgstr "パーミッション" # # File: src/properties.py, line: 131 # File: src/properties.py, line: 165 #: src/properties.py:136 src/properties.py:170 msgid "Owner" msgstr "所有者" # # File: src/properties.py, line: 135 #: src/properties.py:140 msgid "Archive" msgstr "書庫ファイル" # # File: src/properties.py, line: 169 #: src/properties.py:174 msgid "Image" msgstr "画像" # # File: src/thumbremover.py, line: 22 #: src/thumbremover.py:24 msgid "Thumbnail maintenance" msgstr "サムネイルの管理" # # File: src/thumbremover.py, line: 24 #: src/thumbremover.py:26 msgid "Cleanup" msgstr "クリーンアップ" # # File: src/thumbremover.py, line: 36 #: src/thumbremover.py:38 msgid "Cleanup thumbnails" msgstr "サムネイルをクリーンアップ" # # File: src/thumbremover.py, line: 46 #: src/thumbremover.py:48 msgid "" "Thumbnails for files (such as image files and comic book archives) are " "stored in your home directory. Many different applications use and create " "these thumbnails, but sometimes thumbnails remain even though the original " "files have been removed - wasting space. This dialog can cleanup your stored " "thumbnails by removing orphaned and outdated thumbnails." msgstr "" "画像ファイルや本の書庫ファイル等のファイルのサムネイルが、ホームディレクトリ" "以下に見つかりました。サムネイルは他のアプリケーションによっても作成され利用" "されますが、元のファイルが削除された後でもサムネイルが削除されずにディスクの" "無駄遣いになっていることがあります。このダイアログでは、古くて使われていない" "サムネイルをクリーンアップすることが出来ます。" # # File: src/thumbremover.py, line: 58 #: src/thumbremover.py:60 msgid "Thumbnail directory" msgstr "サムネイルのディレクトリ" # # File: src/thumbremover.py, line: 65 #: src/thumbremover.py:67 msgid "Total number of thumbnails" msgstr "全サムネイル数" # # File: src/thumbremover.py, line: 68 # File: src/thumbremover.py, line: 75 #: src/thumbremover.py:70 src/thumbremover.py:77 msgid "Calculating..." msgstr "計算中..." # # File: src/thumbremover.py, line: 72 #: src/thumbremover.py:74 msgid "Total size of thumbnails" msgstr "全サムネイルのサイズ" # # File: src/thumbremover.py, line: 80 #: src/thumbremover.py:82 msgid "Do you want to cleanup orphaned and outdated thumbnails now?" msgstr "古くて使われていないサムネイルをクリーンアップしますか?" # # File: src/thumbremover.py, line: 116 #: src/thumbremover.py:118 msgid "Removing thumbnails" msgstr "サムネイルを削除中" # # File: src/thumbremover.py, line: 135 #: src/thumbremover.py:137 msgid "Number of removed thumbnails" msgstr "削除されたサムネイル数" # # File: src/thumbremover.py, line: 142 #: src/thumbremover.py:144 msgid "Total size of removed thumbnails" msgstr "削除されたサムネイルの合計サイズ" # # File: src/thumbremover.py, line: 193 #: src/thumbremover.py:195 #, python-format msgid "Removed thumbnail for '%s'" msgstr "'%s'のサムネイルを削除しました" # # File: src/ui.py, line: 34 #: src/ui.py:34 msgid "_Next page" msgstr "次のページ(_N)" # # File: src/ui.py, line: 36 #: src/ui.py:36 msgid "_Previous page" msgstr "前のページ(_P)" # # File: src/ui.py, line: 38 #: src/ui.py:38 msgid "_First page" msgstr "最初のページ(_F)" # # File: src/ui.py, line: 40 #: src/ui.py:40 msgid "_Last page" msgstr "最後のページ(_L)" # # File: src/ui.py, line: 42 #: src/ui.py:42 msgid "_Zoom in" msgstr "ズームイン(_Z)" # # File: src/ui.py, line: 44 #: src/ui.py:44 msgid "Zoom _out" msgstr "ズームアウト(_o)" # # File: src/ui.py, line: 46 #: src/ui.py:46 msgid "O_riginal size" msgstr "元のサイズ(_r)" # # File: src/ui.py, line: 48 #: src/ui.py:48 msgid "_Close" msgstr "閉じる(_C)" # # File: src/ui.py, line: 50 #: src/ui.py:50 msgid "_Quit" msgstr "終了(_Q)" # # File: src/ui.py, line: 52 #: src/ui.py:52 msgid "_Rotate 90 degrees CW" msgstr "右回りに90度回転(_R)" # # File: src/ui.py, line: 54 #: src/ui.py:54 msgid "Rotate 180 de_grees" msgstr "180度回転(_g)" # # File: src/ui.py, line: 56 #: src/ui.py:56 msgid "Rotat_e 90 degrees CCW" msgstr "左回りに90度回転(_e)" # # File: src/ui.py, line: 58 #: src/ui.py:58 msgid "Fli_p horizontally" msgstr "左右をフリップ(_p)" # # File: src/ui.py, line: 60 #: src/ui.py:60 msgid "Flip _vertically" msgstr "上下をフリップ(_v)" # # File: src/ui.py, line: 62 #: src/ui.py:62 msgid "Manual _Zoom" msgstr "手動でズームを調整(_Z)" # # File: src/ui.py, line: 63 #: src/ui.py:63 msgid "Open _recent" msgstr "最近のファイルを開く(_r)" # # File: src/ui.py, line: 64 #: src/ui.py:64 msgid "_Bookmarks" msgstr "ブックマーク(_B)" # # File: src/ui.py, line: 65 #: src/ui.py:65 msgid "T_oolbars" msgstr "ツールバー(_o)" # # File: src/ui.py, line: 66 #: src/ui.py:66 msgid "_Edit" msgstr "編集(_E)" # # File: src/ui.py, line: 67 #: src/ui.py:67 msgid "_File" msgstr "ファイル(_F)" # # File: src/ui.py, line: 68 #: src/ui.py:68 msgid "_View" msgstr "表示(_V)" # # File: src/ui.py, line: 69 #: src/ui.py:69 msgid "_Go" msgstr "移動(_G)" # # File: src/ui.py, line: 70 #: src/ui.py:70 msgid "_Help" msgstr "ヘルプ(_H)" # # File: src/ui.py, line: 71 #: src/ui.py:71 msgid "_Transform" msgstr "画像の回転(_T)" # # File: src/ui.py, line: 75 #: src/ui.py:75 msgid "_Fullscreen" msgstr "全画面表示(_F)" # # File: src/ui.py, line: 77 #: src/ui.py:77 msgid "_Double page mode" msgstr "見開き表示(_D)" # # File: src/ui.py, line: 79 #: src/ui.py:79 msgid "_Toolbar" msgstr "ツールバー(_T)" # # File: src/ui.py, line: 81 #: src/ui.py:81 msgid "_Menubar" msgstr "メニューバー(_M)" # # File: src/ui.py, line: 83 #: src/ui.py:83 msgid "St_atusbar" msgstr "ステータスバー(_a)" # # File: src/ui.py, line: 85 #: src/ui.py:85 msgid "S_crollbars" msgstr "スクロールバー(_c)" # # File: src/ui.py, line: 87 #: src/ui.py:87 msgid "Th_umbnails" msgstr "サムネイル(_u)" # # File: src/ui.py, line: 89 #: src/ui.py:89 msgid "H_ide all" msgstr "全て隠す(_i)" # # File: src/ui.py, line: 91 #: src/ui.py:91 msgid "_Manga mode" msgstr "マンガのページ順に表示(_M)" # # File: src/ui.py, line: 93 #: src/ui.py:93 msgid "_Keep transformation" msgstr "回転の状態を維持する(_K)" # # File: src/ui.py, line: 95 #: src/ui.py:95 msgid "Run _slideshow" msgstr "スライドショーを動かす(_s)" # # File: src/ui.py, line: 97 #: src/ui.py:97 msgid "Magnifying _glass" msgstr "拡大する(_g)" # # File: src/ui.py, line: 101 #: src/ui.py:103 msgid "_Best fit mode" msgstr "ベストフィットモードにする(_B)" # # File: src/ui.py, line: 103 #: src/ui.py:105 msgid "Fit _width mode" msgstr "横幅を合わせる(_w)" # # File: src/ui.py, line: 105 #: src/ui.py:107 msgid "Fit _height mode" msgstr "縦幅を合わせる(_h)" # # File: src/ui.py, line: 107 #: src/ui.py:109 msgid "M_anual zoom mode" msgstr "手動でズームを調整する(_a)" # # File: src/ui.py, line: 113 #: src/ui.py:115 msgid "_About" msgstr "Comixについて(_A)" # # File: src/ui.py, line: 115 #: src/ui.py:117 msgid "_View comments..." msgstr "コメントを表示(_V)..." # # File: src/ui.py, line: 117 #: src/ui.py:119 msgid "_Edit archive..." msgstr "書庫ファイルを編集(_E)..." # # File: src/ui.py, line: 119 #: src/ui.py:121 msgid "_Open..." msgstr "開く(_O)..." # # File: src/ui.py, line: 121 #: src/ui.py:123 msgid "_Properties" msgstr "プロパティ(_P)" # # File: src/ui.py, line: 123 #: src/ui.py:125 msgid "_Enhance image..." msgstr "画像の調整(_E)..." # # File: src/ui.py, line: 126 #: src/ui.py:128 msgid "_Thumbnail maintenance..." msgstr "サムネイルの管理(_T)..." # # File: src/ui.py, line: 128 #: src/ui.py:130 msgid "Pr_eferences" msgstr "設定(_e)" # # File: src/ui.py, line: 132 #: src/ui.py:134 msgid "_Library..." msgstr "ライブラリ(_L)..." # # File: src/ui.py, line: 282 #: src/ui.py:284 msgid "First page" msgstr "最初のページ" # # File: src/ui.py, line: 284 #: src/ui.py:286 msgid "Previous page" msgstr "前のページ" # # File: src/ui.py, line: 285 #: src/ui.py:287 msgid "Next page" msgstr "次のページ" # # File: src/ui.py, line: 286 #: src/ui.py:288 msgid "Last page" msgstr "最後のページ" # # File: src/ui.py, line: 297 #: src/ui.py:299 msgid "Manga mode" msgstr "マンガのページ順に表示" # # File: src/ui.py, line: 298 #: src/ui.py:300 msgid "Magnifying glass" msgstr "拡大" comix-4.0.4/messages/ja/LC_MESSAGES/comix.mo0000644000175000001440000006376711137627234017226 0ustar sorkusersTa &)-<W YEd x     M9 T_!g.].53d$*ROB8k     !E67|+"("H"k %%  5 GUg pzrJ <   ! ! 2!?! N!\! b!m!~!!!!!!4"#"L"6# I#+T### ## ## ####A$U$ i$u$$ $$$$$$$%!% 5% @%M%^%Hg%%% %%%% & && 6&B& H&S& X&d&+x&4&&b' u' ' ' 'O' ' ((#/(S(h(|((.($()")6) I))S)})))))) ) ) )))*5 *UC* *-* **+ + +?=+}, ,.,,"q--W. m. w. . .#.)..r/1 0;0O0e0 0a01 2)2B2 b2Xo22!2{20w3 333445-5gK5 5 5 55 55 566 62686I6\6n6 t6 6666 6 6 66 666 67 7"7<7 E7P7V7h7vq78 8 9<9US999-9 9 :!#:qE:$:3:;);=;M; i;v;;Z;6;.<5<6H<9<c<'=6E=9|==->k>9D?9~??;@B@'I@0q@@#@@@ AAA'B6,B\cB2B$B C%CU8C1C6CWC=ODFDXDL-EzEEEEEE$F7F GFQFXF^GTG>HNHjHHHH HHHI"I8INIhIIEJ<WJ_JJK; K\K"xKKKKKK LL!!LjCLL LLLMM$M%+M QM[MnMM*M!MMMNcNNNN(N!NOO"O?OXO qO {O OOOBOQPVPP QQ&Q6QeFQQQ0Q? RIR$hRR$RCR<S+RS~S3SSBS $T.TJT[T%bTTTTTTTT*T!UUKU3VBV ^VhV-~VV@X\X3vXX6YYZZZ[+[??[-[[5\K\$?]d]0}]] ]_0_`2` N`{[`'`0`0a6abbk8 YdrS=c)Wt%TLD#l ^ aERy[ b}{ChJV]/no2x .,59Mg+(~v?O$`jI|4GzZXP"QeUNi_q&@ %d comments%d pages(Copy)A collection by that name already exists.A file named '%s' already exists. Do you want to replace it?AboutAccessedAdd a new empty collection.Add booksAdd books to '%s'.Add collectionAdd information about all files opened from within Comix to the shared recent files list.Add more books to the library.Add new collection?Added booksAdding '%s'...Adding booksAll ArchivesAll booksAll filesAll imagesAll stored bookmarks will be removed. Are you sure that you want to continue?Always use this selected colour as the background colour.AppearanceArchiveArchives are stored as ZIP files.Automatically add the books to this collectionAutomatically adjust contrast (both lightness and darkness), separately for each colour band.Automatically adjust contrast.Automatically hide all toolbars in fullscreen.Automatically open the last viewed file on startup.Automatically open the next archive in the directory when flipping past the last page, or the previous archive when flipping past the first page.Automatically open the next archive.Automatically open, on startup, the file that was open when Comix was last closed.Automatically pick a background colour that fits the viewed image.Automatically rotate images according to their metadata.Automatically rotate images when an orientation is specified in the image metadata, such as in an Exif tag.BackgroundBehaviourBest fit modeBrazilian Portuguese translationBrightnessBzip2 compressed tar archiveCacheCache the images that are next to the currently viewed image in order to speed up browsing. Since the speed improvements are quite big, it is recommended that you have this preference set, unless you are running short on free RAM.Calculating...Catalan translationCleanupCleanup thumbnailsClear all bookmarks?Comix is an image viewer specifically designed to handle comic books.Comix is licensed under the GNU General Public License.Comment extensionsCommentsContrastCould not add a new collection called '%s'.Could not change the name to '%s'.Could not duplicate collection.Could not find RAR file extractor!Could not open %s: Is a directory.Could not open %s: No such file.Could not open %s: Permission denied.Could not open %s: Unknown file type.Could not read %sCover sizeCreditsCroatian translationCzech translationDefault modesDefault zoom modeDefaultsDeveloperDisplayDisplay only one image in double page mode, if the image's width exceeds its height. The result of this is that scans that span two pages are displayed properly (i.e. alone) also in double page mode.Display only those books that have the specified text string in their full path. The search is not case sensitive.Do you want to cleanup orphaned and outdated thumbnails now?Double page modeDuplicate collectionDutch translationEdit archiveEdit bookmarksEnhance imageFilesFirst pageFit _height modeFit _width modeFit height modeFit width modeFli_p horizontallyFlip _verticallyFlip pages when scrolling "off the page" with the scroll wheel or with the arrow keys. It takes three consecutive "steps" with the scroll wheel or the arrow keys for the pages to be flipped.Flip pages when scrolling off the edges of the page.Flip two pages in double page mode.Flip two pages, instead of one, each time we flip pages in double page mode.French translationFullscreenGerman translation and Nautilus thumbnailerGreek translationGzip compressed tar archiveH_ide allHungarian translationIcon designImageImage scalingImagesImportIndonesian translationIt reads ZIP, RAR and tar archives, as well as plain image files.Italian translationJPEG imagesJapanese translationKorean translationLast pageLibraryLocationM_anual zoom modeMagnification factorMagnifying GlassMagnifying _glassMagnifying glassMagnifying glass size (in pixels)Manga modeManual _ZoomManual zoom modeModifiedMove books from '%(source collection)s' to '%(destination collection)s'.NameNew collectionNext pageNo images in '%s'Number of removed thumbnailsO_riginal sizeOpenOpen _recentOpen the selected book.Other filesOwnerPNG imagesPagePermissionsPersian translationPlease enter a name for the new collection.Please enter a new name for the selected collection.Please note that the only files that are automatically added to this list are those files in archives that Comix recognizes as comments.Polish translationPr_eferencesPreferencesPrevious pagePropertiesPut the collection '%(subcollection)s' in the collection '%(supercollection)s'.RAR archiveRAR archivesRemove books from the library?Remove collection from the library?Remove collection...Remove from archiveRemove from the library...Remove from this collectionRemoved %(num)d book(s) from '%(collection)s'.Removed %d book(s) from the library.Removed thumbnail for '%s'Removing thumbnailsRename collection?Rename...Replacing it will overwrite its contents.RootRotat_e 90 degrees CCWRotate 180 de_greesRotationRun _slideshowRussian translationSLIDESHOWS_crollbarsSaturationSaveScrollSearchSet the magnification factor of the magnifying glass.Set the size of the magnifying glass. It is a square with a side of this many pixels.SharpnessShow only one wide image in double page mode.Show page numbers on thumbnails.Simplified Chinese translationSizeSlideshowSlideshow delay (in seconds)Some old files (that were used for storing preferences, the library, bookmarks etc. for older versions of Comix) were found on your computer. If you do not plan on using the older versions of Comix again, you should remove these files in order to save some disk space. Do you want these files to be removed for you now?Spanish translationSt_atusbarStore information about recently opened files.Store thumbnails for opened files according to the freedesktop.org specification. These thumbnails are shared by many other applications, such as most file managers.Store thumbnails for opened files.Stretch images to a size that is larger than their original size if the current zoom mode requests it. If this preference is unset, images are never scaled to be larger than their original size.Stretch small images.T_oolbarsTar archiveTar archivesTh_umbnailsThe new archive could not be saved!The original files have not been removed.The selected books will be removed from the library (but the original files will be untouched). Are you sure that you want to continue?The selected collection will be removed from the library (but the books and subcollections in it will remain). Are you sure that you want to continue?There are deprecated files left on your computer.Thumbnail directoryThumbnail maintenanceThumbnail size (in pixels)ThumbnailsThumbnails for files (such as image files and comic book archives) are stored in your home directory. Many different applications use and create these thumbnails, but sometimes thumbnails remain even though the original files have been removed - wasting space. This dialog can cleanup your stored thumbnails by removing orphaned and outdated thumbnails.Total number of thumbnailsTotal size of removed thumbnailsTotal size of thumbnailsTraditional Chinese translationTransparencyTreat all files found within archives, that have one of these file endings, as comments.Unknown filetypeUse a cache to speed up browsing.Use a grey checkered background for transparent images. If this preference is unset, the background is plain white instead.Use checkered background for transparent images.Use double page mode by default.Use dynamic background colour.Use fullscreen by default.Use manga mode by default.Use smart scrolling with the space key. Normally the space key scrolls only right down (or up when shift is pressed), but with this preference set it also scrolls sideways and so tries to follow the natural reading order of the comic book.Use smart space key scrolling.Use this colour as backgroundYou need either the rar or the unrar program installed in order to read RAR (.cbr) files.ZIP archiveZIP archivesZoom _out_About_Add bookmark_Best fit mode_Bookmarks_Clear bookmarks..._Close_Double page mode_Edit_Edit archive..._Edit bookmarks..._Enhance image..._File_First page_Fullscreen_Go_Help_Keep transformation_Last page_Library..._Manga mode_Menubar_Next page_Open..._Previous page_Properties_Quit_Rotate 90 degrees CW_Thumbnail maintenance..._Toolbar_Transform_View_View comments..._Zoom inProject-Id-Version: Report-Msgid-Bugs-To: POT-Creation-Date: 2008-11-22 02:42+0100 PO-Revision-Date: 2008-12-13 01:34+0900 Last-Translator: Mamoru Tasaka Language-Team: MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Poedit-Language: Japanese X-Poedit-Country: JAPAN X-Poedit-SourceCharset: utf-8 %d個のコメント%d ページ(コピー)その名前のコレクションは既に存在します。'%s'という名前のファイルは既に存在します。上書きしますか?Comixについて最終アクセス時空のコレクションを新規作成する本を追加本を'%s'に加えるコレクションを追加するComixが開いた全ファイルの情報を、最近開いたファイルの共有リストに追加します。ライブラリに本を追加する新しいコレクションを追加しますか?本を追加しました'%s'を追加中...本を追加中全ての書庫ファイル全ての本全てのファイル全ての画像保存されている全ブックマークが消去されます。よろしいですか?選択された色を常に背景色に用います。外見書庫ファイル書庫ファイルはZIP形式で保存されます。本を自動的にこのコレクションに追加する各々のカラーバンド毎にコントラスト(明度と暗度)を自動調節します。コントラストを自動調節する全画面表示の時全てのツールバーを隠す最後に見たファイルを起動時に自動で開く書庫ファイルの最後のページの次に進もうとした時、同じディレクトリ内の次の書庫ファイルを、また最初のページの前に進もうとした時、前の書庫ファイルを自動的に開きます。次の書庫ファイルを自動的に開くComixが最後に終了した時に開いていたファイルを、起動時に自動的に開きます。画像に合う背景色を自動的に表示します。メタデータに従い画像を自動的に回転するExifタグのようなメタデータに画像の回転方向が示されている時は、自動的に画像を回転します。背景一般ベストフィットモードにする(ブラジル)ポルトガル語への翻訳明度Bzip2されたTar書庫ファイルキャッシュ現在表示している次の画像をキャッシュして表示を早くします。表示速度の改良による効果は大きいので、RAMの空きが少ない場合を除いてはこの設定をおすすめします。計算中...カタロニア語への翻訳クリーンアップサムネイルをクリーンアップ全てのブックマークをクリアしますか?Comixは特にコミックを扱うためにデザインされた画像ビューアです。ComixはGPLでライセンスされています。コメントファイルの拡張子コメントコントラスト'%s'という名前の新しいコレクションを追加出来ませんでした。'%s'の名前を変更出来ませんでした。コレクションを複製出来ませんでした。RAR書庫ファイルを展開するプログラムが見つかりませんでした。'%s'を開けませんでした。ディレクトリです。'%s'を開けませんでした。ファイルが存在しません。'%s'を開けませんでした。パーミッションが許可されていません。'%s'を開けませんでした。ファイル形式が分かりません。%sを読めませんでしたカバーのサイズクレジットクロアチア語への翻訳チェコ語への翻訳デフォルトのモードデフォルトのズームモードデフォルト開発者表示画像の高さより幅が大きい時は、見開き表示の時でも1枚だけ画像を表示します。2ページにわたる範囲をスキャンした画像は、見開き表示の時も適切に(つまりその画像だけ)表示されます。フルパス名に次の文字列が含まれている本のみを表示します。検索では大文字小文字を区別しません。古くて使われていないサムネイルをクリーンアップしますか?見開き表示コレクションを複製オランダ語への翻訳書庫ファイルを編集ブックマークを編集画像の調整ファイル最初のページ縦幅を合わせる(_h)横幅を合わせる(_w)縦幅を合わせる横幅を合わせる左右をフリップ(_p)上下をフリップ(_v)マウスやカーソルキーでのスクロールで、ページの端に3回連続して触れた時に次のページを表示します。スクロールがページの端を越えた時、ページを送る見開き表示の時、2ページずつページを送る見開き表示の時、1ページずつではなく、2ページずつ表示を進めます。フランス語への翻訳全画面表示ドイツ語への翻訳とNautilusのサムネイル作成ギリシア語への翻訳GzipされたTar書庫ファイル全て隠す(_i)ハンガリー語への翻訳アイコンのデザイン画像画像のスケーリング画像インポートインドネシア語への翻訳ZIP, RAR, tar形式の書庫ファイルや、普通の画像ファイルを読むことが出来ます。イタリア語への翻訳JPEG画像日本語への翻訳朝鮮語への翻訳最後のページライブラリ場所手動でズームを調整する(_a)拡大率レンズの拡大拡大する(_g)拡大拡大するサイズ(ピクセル数)マンガのページ順に表示手動でズームを調整(_Z)手動でズームを調整最終修正時本をコレクション'%(source collection)s'から'%(destination collection)s'に移動させる名前新しいコレクション次のページ'%s'の中には画像がありません削除されたサムネイル数元のサイズ(_r)開く最近のファイルを開く(_r)選択した本を開くその他のファイル所有者PNG画像ページパーミッションペルシャ語への翻訳新しいコレクションの名前を入力してください。選択されたコレクションの新しい名前を入力してください。注意:Comixがコメントファイルだと認識する書庫ファイル内のファイルだけが、自動的にこのリストに追加されます。ポーランド語への翻訳設定(_e)設定前のページプロパティコレクション '%(subcollection)s' をコレクション '%(supercollection)s' の中に入れるRAR書庫ファイルRAR書庫ファイルライブラリから本を削除しますか?コレクションをライブラリから削除しますか?コレクションを削除...書庫ファイルの中から削除ライブラリから削除...このコレクションから削除%(num)d 個の本が '%(collection)s'から削除されました。%d 個の本がライブラリから削除されました。'%s'のサムネイルを削除しましたサムネイルを削除中コレクションの名前を変更しますか?名前の変更...上書きすると元のファイルの内容が失われます。ルート左回りに90度回転(_e)180度回転(_g)回転スライドショーを動かす(_s)ロシア語への翻訳スライドショースクロールバー(_c)彩度保存スクロール検索レンズの拡大率を設定します。レンズが拡大する範囲のサイズを設定します。一辺がこのピクセル数の正方形状の範囲が拡大されます。シャープネス見開き表示の時、幅が広い画像の時は1枚だけ表示するサムネイルの上にページ数を表示する簡体中国語への翻訳サイズスライドショースライドショーの間隔(秒単位)コンピュータ上に以前のバージョンのComixでしか使われない、設定やライブラリ、ブックマーク用のファイルがあります。もしもう以前のバージョンのComixを使う予定が無ければ、ディスクの容量を減らすためにこれらのファイルを削除することをおすすめします。これらのファイルを削除しますか?スペイン語への翻訳ステータスバー(_a)最近開いたファイルの情報を保存する開いたファイルのサムネイルをfreedesktop.orgの規格に従って保存します。これらのサムネイルは、ほとんどのファイルマネージャー等、多くのアプリケーションが共有して使うことが出来ます。開いたファイルのサムネイルを保存する使用しているズームモードに応じて、元のサイズ以上に画像を拡大することを許可します。この項目が設定されていない場合、画像は元のサイズ以上には拡大されません。小さい画像を拡大するツールバー(_o)Tar書庫ファイルTar書庫ファイルサムネイル(_u)新しい書庫ファイルが保存出来ませんでした。元のファイルは削除されません。選択された本はライブラリから削除されます(元のファイルは変更されません)。よろしいですか?選択されたコレクションがライブラリから削除されます(コレクションの中の本とサブコレクションは削除されません)。よろしいですか?コンピュータ上にもう使われないファイルがあります。サムネイルのディレクトリサムネイルの管理サムネイルのサイズ(ピクセル数)サムネイル画像ファイルや本の書庫ファイル等のファイルのサムネイルが、ホームディレクトリ以下に見つかりました。サムネイルは他のアプリケーションによっても作成され利用されますが、元のファイルが削除された後でもサムネイルが削除されずにディスクの無駄遣いになっていることがあります。このダイアログでは、古くて使われていないサムネイルをクリーンアップすることが出来ます。全サムネイル数削除されたサムネイルの合計サイズ全サムネイルのサイズ正體中国語への翻訳透過画像書庫ファイルの中にある、これらの拡張子を持つファイルを全てコメントとして扱います。ファイル形式が分かりませんキャッシュを使って表示を早くする透過画像の背景にグレーの格子状の模様を用います。この項目が設定されていない場合は、単色の白が使われます。透過画像の背景に格子状の模様を用いる見開き表示にする背景色を自動選択する全画面表示にするマンガのページ順に表示するスペースキーで「スマートスクロール」を行います。通常スペースキーを押すと画像は下に(SHIFTキーが押されている時は上に)スクロールされるだけですが、この設定がされていると画像は左右にもスクロールされ、コミックを読む自然な流れに従おうとします。スペースキーで「スマートスクロール」を行うこの色を背景に用いるRAR(.cbr)書庫ファイルを読むには、rar もしくは unrarプログラムが必要です。ZIP書庫ファイルZIP書庫ファイルズームアウト(_o)Comixについて(_A)ブックマークに追加(_A)ベストフィットモードにする(_B)ブックマーク(_B)ブックマークをクリア(_C)...閉じる(_C)見開き表示(_D)編集(_E)書庫ファイルを編集(_E)...ブックマークの編集(_E)...画像の調整(_E)...ファイル(_F)最初のページ(_F)全画面表示(_F)移動(_G)ヘルプ(_H)回転の状態を維持する(_K)最後のページ(_L)ライブラリ(_L)...マンガのページ順に表示(_M)メニューバー(_M)次のページ(_N)開く(_O)...前のページ(_P)プロパティ(_P)終了(_Q)右回りに90度回転(_R)サムネイルの管理(_T)...ツールバー(_T)画像の回転(_T)表示(_V)コメントを表示(_V)...ズームイン(_Z)comix-4.0.4/messages/sv/LC_MESSAGES/comix.po0000644000175000001440000011604611137133373017250 0ustar sorkusers# Svensk katalog. # versatt 2005-2006 av # Pontus Ekberg . # msgid "" msgstr "" "Project-Id-Version: Comix 4.0\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2008-11-22 02:42+0100\n" "PO-Revision-Date: 2009-01-25 19:54+0100\n" "Last-Translator: \n" "Language-Team: Swedish \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=iso-8859-1\n" "Content-Transfer-Encoding: 8bit\n" "Generated-By: pygettext.py 1.5\n" # # File: src/about.py, line: 18 # File: src/about.py, line: 67 #: src/about.py:19 #: src/about.py:68 msgid "About" msgstr "Om" # # File: src/about.py, line: 55 #: src/about.py:56 msgid "Comix is an image viewer specifically designed to handle comic books." msgstr "Comix r en bildvisare som r srskilt designad fr att visa serier." # # File: src/about.py, line: 57 #: src/about.py:58 msgid "It reads ZIP, RAR and tar archives, as well as plain image files." msgstr "Den lser ZIP-, RAR- och tar-arkiv, samt vanliga bildfiler." # # File: src/about.py, line: 59 #: src/about.py:60 msgid "Comix is licensed under the GNU General Public License." msgstr "Comix r licensierat under GNU General Public License." # # File: src/about.py, line: 75 #: src/about.py:83 msgid "Developer" msgstr "Utvecklare" # # File: src/about.py, line: 77 #: src/about.py:84 #: src/about.py:85 msgid "Simplified Chinese translation" msgstr "Frenklad kinesisk versttning" # # File: src/about.py, line: 78 #: src/about.py:86 msgid "Spanish translation" msgstr "Spansk versttning" # # File: src/about.py, line: 79 #: src/about.py:87 msgid "Brazilian Portuguese translation" msgstr "Brasiliansk-portugisisk versttning" # # File: src/about.py, line: 81 #: src/about.py:88 msgid "German translation and Nautilus thumbnailer" msgstr "Tysk versttning och miniatyrbildsskapare fr Nautilus" # # File: src/about.py, line: 82 #: src/about.py:89 #: src/about.py:90 msgid "Italian translation" msgstr "Italiensk versttning" # # File: src/about.py, line: 83 #: src/about.py:91 msgid "Dutch translation" msgstr "Nederlndsk versttning" # # File: src/about.py, line: 84 #: src/about.py:92 msgid "French translation" msgstr "Fransk versttning" # # File: src/about.py, line: 85 #: src/about.py:93 #: src/about.py:94 msgid "Polish translation" msgstr "Polsk versttning" # # File: src/about.py, line: 86 #: src/about.py:95 msgid "Greek translation" msgstr "Grekisk versttning" # # File: src/about.py, line: 87 #: src/about.py:96 msgid "Catalan translation" msgstr "Katalansk versttning" # # File: src/about.py, line: 88 #: src/about.py:97 #: src/about.py:98 msgid "Traditional Chinese translation" msgstr "Traditionell kinesisk versttning" # # File: src/about.py, line: 89 #: src/about.py:99 msgid "Japanese translation" msgstr "Japansk versttning" # # File: src/about.py, line: 90 #: src/about.py:100 msgid "Hungarian translation" msgstr "Ungersk versttning" # # File: src/about.py, line: 91 #: src/about.py:101 msgid "Russian translation" msgstr "Rysk versttning" # # File: src/about.py, line: 92 #: src/about.py:102 msgid "Croatian translation" msgstr "Kroatisk versttning" # # File: src/about.py, line: 93 #: src/about.py:103 msgid "Korean translation" msgstr "Koreansk versttning" # # File: src/about.py, line: 94 #: src/about.py:104 msgid "Persian translation" msgstr "Persisk versttning" # # File: src/about.py, line: 95 #: src/about.py:105 msgid "Indonesian translation" msgstr "Indonesisk versttning" # # File: src/about.py, line: 96 #: src/about.py:106 msgid "Czech translation" msgstr "Tjeckisk versttning" # # File: src/about.py, line: 97 #: src/about.py:107 msgid "Icon design" msgstr "Ikondesign" # # File: src/about.py, line: 106 #: src/about.py:114 msgid "Credits" msgstr "Tack" # # File: src/archive.py, line: 66 #: src/archive.py:66 msgid "Could not find RAR file extractor!" msgstr "Kunde inte hitta RAR-filsuppackare!" # # File: src/archive.py, line: 68 #: src/archive.py:68 msgid "You need either the rar or the unrar program installed in order to read RAR (.cbr) files." msgstr "Du behver antingen programmet rar eller unrar installerat fr att kunna lsa RAR-filer (.cbr)." # # File: src/archive.py, line: 301 #: src/archive.py:305 msgid "ZIP archive" msgstr "ZIP-arkiv" # # File: src/archive.py, line: 302 #: src/archive.py:306 msgid "Tar archive" msgstr "Tar-arkiv" # # File: src/archive.py, line: 303 #: src/archive.py:307 msgid "Gzip compressed tar archive" msgstr "Gzip-komprimerat tar-arkiv" # # File: src/archive.py, line: 304 #: src/archive.py:308 msgid "Bzip2 compressed tar archive" msgstr "Bzip2-komprimerat tar-arkiv" # # File: src/archive.py, line: 305 #: src/archive.py:309 msgid "RAR archive" msgstr "RAR-arkiv" # # File: src/bookmark.py, line: 27 #: src/bookmark.py:28 msgid "_Add bookmark" msgstr "_Lgg till bokmrke" # # File: src/bookmark.py, line: 29 #: src/bookmark.py:30 msgid "_Edit bookmarks..." msgstr "R_edigera bokmrken..." # # File: src/bookmark.py, line: 31 #: src/bookmark.py:32 msgid "_Clear bookmarks..." msgstr "_Tm bokmrken..." # # File: src/bookmark.py, line: 77 #: src/bookmark.py:78 msgid "Clear all bookmarks?" msgstr "Tm alla bokmrken?" # # File: src/bookmark.py, line: 79 #: src/bookmark.py:80 msgid "All stored bookmarks will be removed. Are you sure that you want to continue?" msgstr "Alla lagrade bokmrken kommer att tas bort. r du sker p att du vill fortstta?" # # File: src/bookmark.py, line: 229 #: src/bookmark.py:230 msgid "Edit bookmarks" msgstr "Redigera bokmrken" # # File: src/bookmark.py, line: 255 # File: src/edit.py, line: 267 #: src/bookmark.py:256 #: src/edit.py:270 msgid "Name" msgstr "Namn" # # File: src/bookmark.py, line: 256 #: src/bookmark.py:257 msgid "Page" msgstr "Sida" # # File: src/comment.py, line: 16 # File: src/preferences.py, line: 288 #: src/comment.py:16 #: src/preferences.py:299 msgid "Comments" msgstr "Kommentarer" # # File: src/comment.py, line: 53 #: src/comment.py:53 #, python-format msgid "Could not read %s" msgstr "Kunde inte lsa %s" # # File: src/deprecated.py, line: 16 #: src/deprecated.py:16 msgid "There are deprecated files left on your computer." msgstr "Det finns utdaterade filer kvarlmnade p din dator." # # File: src/deprecated.py, line: 22 #: src/deprecated.py:22 msgid "Some old files (that were used for storing preferences, the library, bookmarks etc. for older versions of Comix) were found on your computer. If you do not plan on using the older versions of Comix again, you should remove these files in order to save some disk space. Do you want these files to be removed for you now?" msgstr "Ngra gamla filer (som anvndes fr att lagra instllningar, biblioteket, bokmrken etc. fr ldre versioner av Comix) har hittats p din dator. Om du inte planerar att anvnda de ldre versionerna av Comix igen, s br du ta bort dessa filer fr att spara diskutrymme. Vill du att dessa filer tas bort t dig nu?" # # File: src/edit.py, line: 28 #: src/edit.py:29 msgid "Edit archive" msgstr "Redigera arkiv" # # File: src/edit.py, line: 36 #: src/edit.py:37 msgid "Import" msgstr "Importera" # # File: src/edit.py, line: 50 #: src/edit.py:51 msgid "Images" msgstr "Bilder" # # File: src/edit.py, line: 51 #: src/edit.py:52 msgid "Other files" msgstr "Andra filer" # # File: src/edit.py, line: 99 #: src/edit.py:101 msgid "The new archive could not be saved!" msgstr "Det nya arkivet kunde inte sparas!" # # File: src/edit.py, line: 101 #: src/edit.py:103 msgid "The original files have not been removed." msgstr "Originalfilerna har inte tagits bort." # # File: src/edit.py, line: 115 #: src/edit.py:117 msgid "Archives are stored as ZIP files." msgstr "Arkiven sparas i ZIP-format." # # File: src/edit.py, line: 168 # File: src/edit.py, line: 285 #: src/edit.py:170 #: src/edit.py:288 msgid "Remove from archive" msgstr "Ta bort frn arkiv" # # File: src/edit.py, line: 255 #: src/edit.py:258 msgid "Please note that the only files that are automatically added to this list are those files in archives that Comix recognizes as comments." msgstr "Notera att de enda filer som automatiskt lggs till i denna lista r de filer i arkiv som Comix knner igen som kommentarer." # # File: src/edit.py, line: 270 #: src/edit.py:273 msgid "Size" msgstr "Storlek" # # File: src/enhance.py, line: 51 #: src/enhance.py:51 msgid "Enhance image" msgstr "Frbttra bild" # # File: src/enhance.py, line: 52 #: src/enhance.py:52 msgid "Defaults" msgstr "terstll" # # File: src/enhance.py, line: 79 #: src/enhance.py:79 msgid "Brightness" msgstr "Ljusstyrka" # # File: src/enhance.py, line: 90 #: src/enhance.py:90 msgid "Contrast" msgstr "Kontrast" # # File: src/enhance.py, line: 101 #: src/enhance.py:101 msgid "Saturation" msgstr "Frgmttnad" # # File: src/enhance.py, line: 112 #: src/enhance.py:112 msgid "Sharpness" msgstr "Skrpa" # # File: src/enhance.py, line: 126 #: src/enhance.py:126 msgid "Automatically adjust contrast." msgstr "Justera kontrast automatiskt." # # File: src/enhance.py, line: 128 #: src/enhance.py:128 msgid "Automatically adjust contrast (both lightness and darkness), separately for each colour band." msgstr "Justera kontrast automatiskt (bde ljushet och mrkhet), separat fr varje frgkomponent." # # File: src/filechooser.py, line: 35 # File: src/library.py, line: 489 #: src/filechooser.py:38 #: src/library.py:490 msgid "Open" msgstr "ppna" # # File: src/filechooser.py, line: 39 #: src/filechooser.py:42 msgid "Save" msgstr "Spara" # # File: src/filechooser.py, line: 75 #: src/filechooser.py:78 msgid "All files" msgstr "Alla filer" # # File: src/filechooser.py, line: 78 #: src/filechooser.py:81 msgid "All Archives" msgstr "Alla arkiv" # # File: src/filechooser.py, line: 82 #: src/filechooser.py:85 msgid "ZIP archives" msgstr "ZIP-arkiv" # # File: src/filechooser.py, line: 84 #: src/filechooser.py:87 msgid "RAR archives" msgstr "RAR-arkiv" # # File: src/filechooser.py, line: 86 #: src/filechooser.py:89 msgid "Tar archives" msgstr "Tar-arkiv" # # File: src/filechooser.py, line: 125 #: src/filechooser.py:134 #, python-format msgid "A file named '%s' already exists. Do you want to replace it?" msgstr "En fil med namnet '%s' finns redan. Vill du erstta den?" # # File: src/filechooser.py, line: 128 #: src/filechooser.py:137 msgid "Replacing it will overwrite its contents." msgstr "Erstts filen s kommer dess innehll att skrivas ver." # # File: src/filechooser.py, line: 171 # File: src/filechooser.py, line: 249 #: src/filechooser.py:182 #: src/filechooser.py:260 msgid "All images" msgstr "Alla bildfiler" # # File: src/filechooser.py, line: 173 # File: src/filechooser.py, line: 251 #: src/filechooser.py:184 #: src/filechooser.py:262 msgid "JPEG images" msgstr "JPEG-bilder" # # File: src/filechooser.py, line: 174 # File: src/filechooser.py, line: 252 #: src/filechooser.py:185 #: src/filechooser.py:263 msgid "PNG images" msgstr "PNG-bilder" # # File: src/filechooser.py, line: 195 #: src/filechooser.py:206 msgid "Automatically add the books to this collection" msgstr "Lgg automatiskt till bckerna till denna samling" # # File: src/filehandler.py, line: 209 #: src/filehandler.py:209 #, python-format msgid "Could not open %s: Is a directory." msgstr "Kunde inte ppna %s: r en katalog." # # File: src/filehandler.py, line: 213 #: src/filehandler.py:213 #, python-format msgid "Could not open %s: No such file." msgstr "Kunde inte ppna %s: Filen finns inte." # # File: src/filehandler.py, line: 217 #: src/filehandler.py:217 #, python-format msgid "Could not open %s: Permission denied." msgstr "Kunde inte ppna %s: Otillrckliga rttigheter." # # File: src/filehandler.py, line: 222 #: src/filehandler.py:222 #, python-format msgid "Could not open %s: Unknown file type." msgstr "Kunde inte ppna %s: Oknd filtyp." # # File: src/filehandler.py, line: 285 #: src/filehandler.py:285 #, python-format msgid "No images in '%s'" msgstr "Inga bilder i '%s'." # # File: src/filehandler.py, line: 411 #: src/filehandler.py:413 msgid "Unknown filetype" msgstr "Oknd filtyp" # # File: src/librarybackend.py, line: 272 # File: src/librarybackend.py, line: 274 #: src/librarybackend.py:273 #: src/librarybackend.py:275 msgid "(Copy)" msgstr "(Kopia)" # # File: src/library.py, line: 38 #: src/library.py:38 msgid "Library" msgstr "Bibliotek" # # File: src/library.py, line: 150 #: src/library.py:150 msgid "Rename..." msgstr "Dp om..." # # File: src/library.py, line: 152 #: src/library.py:152 msgid "Duplicate collection" msgstr "Duplicera samling" # # File: src/library.py, line: 154 #: src/library.py:154 msgid "Remove collection..." msgstr "Ta bort samling..." # # File: src/library.py, line: 202 #: src/library.py:202 msgid "All books" msgstr "Alla bcker" # # File: src/library.py, line: 231 #: src/library.py:231 msgid "Remove collection from the library?" msgstr "Ta bort samling frn biblioteket?" # # File: src/library.py, line: 233 #: src/library.py:233 msgid "The selected collection will be removed from the library (but the books and subcollections in it will remain). Are you sure that you want to continue?" msgstr "Den markerade samlingen kommer att tas bort frn biblioteket (men bckerna och undersamlingarna i den kommer att vara kvar). r du sker p att du vill fortstta?" # # File: src/library.py, line: 251 #: src/library.py:251 msgid "Rename collection?" msgstr "Dp om samling?" # # File: src/library.py, line: 253 #: src/library.py:253 msgid "Please enter a new name for the selected collection." msgstr "Ange ett nytt namn fr den markerade samlingen." # # File: src/library.py, line: 271 #: src/library.py:271 #, python-format msgid "Could not change the name to '%s'." msgstr "Kunde inte ndra namnet till '%s'." # # File: src/library.py, line: 275 # File: src/library.py, line: 881 #: src/library.py:275 #: src/library.py:882 msgid "A collection by that name already exists." msgstr "En samling med det namnet finns redan." # # File: src/library.py, line: 285 #: src/library.py:285 msgid "Could not duplicate collection." msgstr "Kunde inte duplicera samling." # # File: src/library.py, line: 382 #: src/library.py:382 msgid "Root" msgstr "Rot" # # File: src/library.py, line: 386 #: src/library.py:386 #, python-format msgid "Put the collection '%(subcollection)s' in the collection '%(supercollection)s'." msgstr "Lgg samlingen '%(subcollection)s' i samlingen '%(supercollection)s'." # # File: src/library.py, line: 407 #: src/library.py:407 #, python-format msgid "Add books to '%s'." msgstr "Lgg till bcker i '%s'." # # File: src/library.py, line: 411 #: src/library.py:411 #, python-format msgid "Move books from '%(source collection)s' to '%(destination collection)s'." msgstr "Flytta bcker frn '%(source collection)s' till '%(destination collection)s'." # # File: src/library.py, line: 492 #: src/library.py:493 msgid "Remove from this collection" msgstr "Ta bort frn den hr samlingen" # # File: src/library.py, line: 495 #: src/library.py:496 msgid "Remove from the library..." msgstr "Ta bort frn biblioteket..." # # File: src/library.py, line: 588 #: src/library.py:589 #, python-format msgid "Removed %(num)d book(s) from '%(collection)s'." msgstr "Tog bort %(num)d antal bcker frn '%(collection)s'." # # File: src/library.py, line: 597 #: src/library.py:598 msgid "Remove books from the library?" msgstr "Ta bort bcker frn biblioteket?" # # File: src/library.py, line: 599 #: src/library.py:600 msgid "The selected books will be removed from the library (but the original files will be untouched). Are you sure that you want to continue?" msgstr "De markerade bckerna kommer att tas bort frn biblioteket (men originalfilerna kommer att frbli orrda). r du sker p att du vill fortstta?" # # File: src/library.py, line: 609 #: src/library.py:610 #, python-format msgid "Removed %d book(s) from the library." msgstr "Tog bort %d antal bcker frn biblioteket." # # File: src/library.py, line: 769 #: src/library.py:770 msgid "Search" msgstr "Sk" # # File: src/library.py, line: 774 #: src/library.py:775 msgid "Display only those books that have the specified text string in their full path. The search is not case sensitive." msgstr "Visa endast de bcker dr den angivna textstrngen frekommer i deras skvg. Skningen r oberoende av gemener och versaler." # # File: src/library.py, line: 776 #: src/library.py:777 msgid "Cover size" msgstr "Omslagsstorlek" # # File: src/library.py, line: 789 #: src/library.py:790 msgid "Add books" msgstr "Lgg till bcker" # # File: src/library.py, line: 793 #: src/library.py:794 msgid "Add more books to the library." msgstr "Lgg till fler bcker till biblioteket." # # File: src/library.py, line: 795 #: src/library.py:796 msgid "Add collection" msgstr "Lgg till samling" # # File: src/library.py, line: 800 #: src/library.py:801 msgid "Add a new empty collection." msgstr "Lgg till en ny tom samling." # # File: src/library.py, line: 806 #: src/library.py:807 msgid "Open the selected book." msgstr "ppna den markerade boken." # # File: src/library.py, line: 832 # File: src/properties.py, line: 113 #: src/library.py:833 #: src/properties.py:118 #, python-format msgid "%d pages" msgstr "%d sidor" # # File: src/library.py, line: 854 #: src/library.py:855 msgid "Add new collection?" msgstr "Lgg till ny samling?" # # File: src/library.py, line: 856 #: src/library.py:857 msgid "Please enter a name for the new collection." msgstr "Ange ett namn t den nya samlingen." # # File: src/library.py, line: 862 #: src/library.py:863 msgid "New collection" msgstr "Ny samling" # # File: src/library.py, line: 876 #: src/library.py:877 #, python-format msgid "Could not add a new collection called '%s'." msgstr "Kunde inte lgga till en ny samling med namnet '%s'." # # File: src/library.py, line: 910 #: src/library.py:911 msgid "Adding books" msgstr "Lgger till bcker" # # File: src/library.py, line: 930 #: src/library.py:931 msgid "Added books" msgstr "Tillagda bcker" # # File: src/library.py, line: 952 #: src/library.py:953 #, python-format msgid "Adding '%s'..." msgstr "Lgger till '%s'..." # # File: src/main.py, line: 666 #: src/main.py:699 msgid "SLIDESHOW" msgstr "BILDSPEL" # # File: src/preferences.py, line: 78 #: src/preferences.py:80 msgid "Preferences" msgstr "Instllningar" # # File: src/preferences.py, line: 93 #: src/preferences.py:95 msgid "Background" msgstr "Bakgrundsfrg" # # File: src/preferences.py, line: 95 #: src/preferences.py:97 msgid "Use this colour as background" msgstr "Anvnd denna frg som bakgrundsfrg" # # File: src/preferences.py, line: 97 #: src/preferences.py:99 msgid "Always use this selected colour as the background colour." msgstr "Anvnd alltid denna valda frg som bakgrundsfrg." # # File: src/preferences.py, line: 102 #: src/preferences.py:104 msgid "Use dynamic background colour." msgstr "Anvnd dynamisk bakgrundsfrg." # # File: src/preferences.py, line: 106 #: src/preferences.py:108 msgid "Automatically pick a background colour that fits the viewed image." msgstr "Vlj automatiskt en bakgrundsfrg som passar den visade bilden." # # File: src/preferences.py, line: 109 #: src/preferences.py:111 msgid "Thumbnails" msgstr "Miniatyrbilder" # # File: src/preferences.py, line: 110 #: src/preferences.py:112 msgid "Thumbnail size (in pixels)" msgstr "Miniatyrbildsstorlek (i pixlar)" # # File: src/preferences.py, line: 117 #: src/preferences.py:119 msgid "Show page numbers on thumbnails." msgstr "Visa sidonummer p miniatyrbilder." # # File: src/preferences.py, line: 124 #: src/preferences.py:126 msgid "Magnifying Glass" msgstr "Frstoringsglas" # # File: src/preferences.py, line: 125 #: src/preferences.py:127 msgid "Magnifying glass size (in pixels)" msgstr "Frstoringsglasstorlek (i pixlar)" # # File: src/preferences.py, line: 131 #: src/preferences.py:133 msgid "Set the size of the magnifying glass. It is a square with a side of this many pixels." msgstr "Stll in storleken p frstoringsglaset. Det r en kvadrat vars sida r s hr mnga pixlar bred." # # File: src/preferences.py, line: 133 #: src/preferences.py:135 msgid "Magnification factor" msgstr "Frstoringsfaktor" # # File: src/preferences.py, line: 140 #: src/preferences.py:142 msgid "Set the magnification factor of the magnifying glass." msgstr "Stll in frstoringsfaktorn fr frstoringsglaset." # # File: src/preferences.py, line: 143 #: src/preferences.py:145 msgid "Image scaling" msgstr "Bildskalning" # # File: src/preferences.py, line: 144 #: src/preferences.py:146 msgid "Stretch small images." msgstr "Dra ut sm bilder." # # File: src/preferences.py, line: 148 #: src/preferences.py:150 msgid "Stretch images to a size that is larger than their original size if the current zoom mode requests it. If this preference is unset, images are never scaled to be larger than their original size." msgstr "Dra ut bilder till en storlek som r strre n deras originalstorlek om zoomningslget krver det. Om denna instllning r avaktiverad s blir bilder aldrig skalade till en storlek som vergr deras originalstorlek." # # File: src/preferences.py, line: 151 #: src/preferences.py:153 msgid "Transparency" msgstr "Transparens" # # File: src/preferences.py, line: 153 #: src/preferences.py:155 msgid "Use checkered background for transparent images." msgstr "Anvnd rutig bakgrund fr transparenta bilder." # # File: src/preferences.py, line: 159 #: src/preferences.py:161 msgid "Use a grey checkered background for transparent images. If this preference is unset, the background is plain white instead." msgstr "Anvnd en grrutig bakgrund till transparenta bilder. Om den hr instllningen r avaktiverad s anvnds en helvit bakgrund istllet." # # File: src/preferences.py, line: 161 #: src/preferences.py:163 msgid "Appearance" msgstr "Utseende" # # File: src/preferences.py, line: 167 #: src/preferences.py:169 msgid "Scroll" msgstr "Scrollning" # # File: src/preferences.py, line: 169 #: src/preferences.py:171 msgid "Use smart space key scrolling." msgstr "Anvnd smart scrollning med mellanslagstangenten." # # File: src/preferences.py, line: 174 #: src/preferences.py:176 msgid "Use smart scrolling with the space key. Normally the space key scrolls only right down (or up when shift is pressed), but with this preference set it also scrolls sideways and so tries to follow the natural reading order of the comic book." msgstr "Anvnd smart scrollning med mellanslagstangenten. Normalt s scrollar mellanslagstangenten bara rakt ner (eller upp om shift r intryckt), men med den hr instllningen aktiverad s scrollar den ocks i sidled och frsker p s vis att flja den naturliga lsriktningen av serieboken." #: src/preferences.py:180 msgid "Flip pages when scrolling off the edges of the page." msgstr "Vnd blad vid scrollning frbi sidans kanter. " #: src/preferences.py:185 msgid "Flip pages when scrolling \"off the page\" with the scroll wheel or with the arrow keys. It takes three consecutive \"steps\" with the scroll wheel or the arrow keys for the pages to be flipped." msgstr "Vnd blad nr du scrollar \"av sidan\" med scrollhjulet eller med piltangenterna. Det krvs tre p varandra fljande \"steg\" med scrollhjulet eller piltangenterna fr att sidan ska vndas." # # File: src/preferences.py, line: 177 # File: src/ui.py, line: 296 #: src/preferences.py:188 #: src/ui.py:298 msgid "Double page mode" msgstr "Dubbelsideslge" # # File: src/preferences.py, line: 179 #: src/preferences.py:190 msgid "Flip two pages in double page mode." msgstr "Blddra tv sidor i dubbelsideslge." # # File: src/preferences.py, line: 184 #: src/preferences.py:195 msgid "Flip two pages, instead of one, each time we flip pages in double page mode." msgstr "Blddra tv sidor, istllet fr en, varje gng vi byter sida i dubbelsideslge." # # File: src/preferences.py, line: 187 #: src/preferences.py:198 msgid "Show only one wide image in double page mode." msgstr "Visa endast en bred bild i dubbelsideslge." # # File: src/preferences.py, line: 193 #: src/preferences.py:204 msgid "Display only one image in double page mode, if the image's width exceeds its height. The result of this is that scans that span two pages are displayed properly (i.e. alone) also in double page mode." msgstr "Visa endast en bild i dubbelsideslge, om bildens bredd verstiger dess hjd. Effekten av detta r att en scan som innehller tv sidor visas ensam ocks i dubbelsideslge." # # File: src/preferences.py, line: 196 #: src/preferences.py:207 msgid "Files" msgstr "Filer" # # File: src/preferences.py, line: 198 #: src/preferences.py:209 msgid "Automatically open the next archive." msgstr "ppna automatiskt nsta arkiv." # # File: src/preferences.py, line: 203 #: src/preferences.py:214 msgid "Automatically open the next archive in the directory when flipping past the last page, or the previous archive when flipping past the first page." msgstr "ppna automatiskt nsta arkiv i katalogen nr vi blddrar frbi den sista sidan, eller det fregende arkivet nr vi blddrar frbi den frsta sidan." # # File: src/preferences.py, line: 206 #: src/preferences.py:217 msgid "Automatically open the last viewed file on startup." msgstr "ppna automatiskt den senast lsta filen vid uppstart." # # File: src/preferences.py, line: 211 #: src/preferences.py:222 msgid "Automatically open, on startup, the file that was open when Comix was last closed." msgstr "ppna automatiskt, vid uppstart, den fil som var ppnad nr Comix avslutades senast." # # File: src/preferences.py, line: 214 #: src/preferences.py:225 msgid "Store information about recently opened files." msgstr "Lagra information om de senast ppnade filerna." # # File: src/preferences.py, line: 219 #: src/preferences.py:230 msgid "Add information about all files opened from within Comix to the shared recent files list." msgstr "Lgg till information om alla filer som ppnas inifrn Comix till den delade listan med senast ppnade filer." # # File: src/preferences.py, line: 222 #: src/preferences.py:233 msgid "Store thumbnails for opened files." msgstr "Lagra miniatyrbilder fr ppnade filer." # # File: src/preferences.py, line: 227 #: src/preferences.py:238 msgid "Store thumbnails for opened files according to the freedesktop.org specification. These thumbnails are shared by many other applications, such as most file managers." msgstr "Lagra miniatyrbilder fr filer som ppnas, i enlighet med freedesktop.org-specifikationen. Dessa miniatyrbilder delas av mnga andra program, exempelvis de flesta filhanterare." # # File: src/preferences.py, line: 230 #: src/preferences.py:241 msgid "Cache" msgstr "Cache" # # File: src/preferences.py, line: 231 #: src/preferences.py:242 msgid "Use a cache to speed up browsing." msgstr "Anvnd en cache fr att snabba upp blddring." # # File: src/preferences.py, line: 235 #: src/preferences.py:246 msgid "Cache the images that are next to the currently viewed image in order to speed up browsing. Since the speed improvements are quite big, it is recommended that you have this preference set, unless you are running short on free RAM." msgstr "Anvnd en cache till att lagra bilderna intill den visade bilden, fr att snabba upp blddring. Eftersom hastighetsfrbttringen r relativt stor s rekommenderas du att ha den hr instllningen aktiverad, om du inte har ont om ledigt RAM-minne." # # File: src/preferences.py, line: 237 #: src/preferences.py:248 msgid "Behaviour" msgstr "Beteende" # # File: src/preferences.py, line: 243 #: src/preferences.py:254 msgid "Default modes" msgstr "Standardlgen" # # File: src/preferences.py, line: 245 #: src/preferences.py:256 msgid "Use double page mode by default." msgstr "Anvnd dubbelsideslge som standard." # # File: src/preferences.py, line: 250 #: src/preferences.py:261 msgid "Use fullscreen by default." msgstr "Anvnd helskrm som standard." # # File: src/preferences.py, line: 255 #: src/preferences.py:266 msgid "Use manga mode by default." msgstr "Anvnd mangalge som standard." # # File: src/preferences.py, line: 260 #: src/preferences.py:271 msgid "Default zoom mode" msgstr "Standardzoomlge" # # File: src/preferences.py, line: 262 # File: src/ui.py, line: 288 #: src/preferences.py:273 #: src/ui.py:290 msgid "Best fit mode" msgstr "Bsta anpassningslge" # # File: src/preferences.py, line: 263 # File: src/ui.py, line: 290 #: src/preferences.py:274 #: src/ui.py:292 msgid "Fit width mode" msgstr "Breddanpassningslge" # # File: src/preferences.py, line: 264 # File: src/ui.py, line: 292 #: src/preferences.py:275 #: src/ui.py:294 msgid "Fit height mode" msgstr "Hjdanpassningslge" # # File: src/preferences.py, line: 265 # File: src/ui.py, line: 294 #: src/preferences.py:276 #: src/ui.py:296 msgid "Manual zoom mode" msgstr "Manuellt zoomlge" # # File: src/preferences.py, line: 271 #: src/preferences.py:282 msgid "Fullscreen" msgstr "Helskrm" # # File: src/preferences.py, line: 273 #: src/preferences.py:284 msgid "Automatically hide all toolbars in fullscreen." msgstr "Gm automatiskt alla verktygsrader i helskrmslge." # # File: src/preferences.py, line: 279 #: src/preferences.py:290 msgid "Slideshow" msgstr "Bildspel" # # File: src/preferences.py, line: 280 #: src/preferences.py:291 msgid "Slideshow delay (in seconds)" msgstr "Bildspelsfrdrjning (i sekunder)" # # File: src/preferences.py, line: 289 #: src/preferences.py:300 msgid "Comment extensions" msgstr "Kommentarsfilndelser" # # File: src/preferences.py, line: 295 #: src/preferences.py:306 msgid "Treat all files found within archives, that have one of these file endings, as comments." msgstr "Behandla alla filer funna i arkiv, som har en av dessa filndelser, som kommentarer." #: src/preferences.py:309 msgid "Rotation" msgstr "Rotation" #: src/preferences.py:311 msgid "Automatically rotate images according to their metadata." msgstr "Rotera bilder automatiskt enligt deras metadata." #: src/preferences.py:316 msgid "Automatically rotate images when an orientation is specified in the image metadata, such as in an Exif tag." msgstr "Rotera bilder automatisk om en orientering finns specificerad i bildens metadata, exempelvis i en Exif-tagg." # # File: src/preferences.py, line: 297 #: src/preferences.py:318 msgid "Display" msgstr "Visning" # # File: src/properties.py, line: 89 #: src/properties.py:94 msgid "Properties" msgstr "Egenskaper" # # File: src/properties.py, line: 114 #: src/properties.py:119 #, python-format msgid "%d comments" msgstr "%d kommentarer" # # File: src/properties.py, line: 124 # File: src/properties.py, line: 159 #: src/properties.py:129 #: src/properties.py:164 msgid "Location" msgstr "Plats" # # File: src/properties.py, line: 126 # File: src/properties.py, line: 160 #: src/properties.py:131 #: src/properties.py:165 msgid "Accessed" msgstr "tkomsttid" # # File: src/properties.py, line: 128 # File: src/properties.py, line: 162 #: src/properties.py:133 #: src/properties.py:167 msgid "Modified" msgstr "Modifieringstid" # # File: src/properties.py, line: 130 # File: src/properties.py, line: 164 #: src/properties.py:135 #: src/properties.py:169 msgid "Permissions" msgstr "Rttigheter" # # File: src/properties.py, line: 131 # File: src/properties.py, line: 165 #: src/properties.py:136 #: src/properties.py:170 msgid "Owner" msgstr "gare" # # File: src/properties.py, line: 135 #: src/properties.py:140 msgid "Archive" msgstr "Arkiv" # # File: src/properties.py, line: 169 #: src/properties.py:174 msgid "Image" msgstr "Bild" # # File: src/thumbremover.py, line: 22 #: src/thumbremover.py:24 msgid "Thumbnail maintenance" msgstr "Miniatyrbildsunderhll" # # File: src/thumbremover.py, line: 24 #: src/thumbremover.py:26 msgid "Cleanup" msgstr "Rensa ut" # # File: src/thumbremover.py, line: 36 #: src/thumbremover.py:38 msgid "Cleanup thumbnails" msgstr "Rensa ut miniatyrbilder" # # File: src/thumbremover.py, line: 46 #: src/thumbremover.py:48 msgid "Thumbnails for files (such as image files and comic book archives) are stored in your home directory. Many different applications use and create these thumbnails, but sometimes thumbnails remain even though the original files have been removed - wasting space. This dialog can cleanup your stored thumbnails by removing orphaned and outdated thumbnails." msgstr "Miniatyrbilder fr filer (ssom bildfiler och serieboksarkiv) lagras i din hemkatalog. Mnga olika program anvnder och skapar dessa miniatyrbilder, men ibland blir de kvarlmnade trots att originalfilerna har blivit raderade, och dslar plats. Det hr dialogfnstret kan rensa ut dina lagrade miniatyrbilder genom att ta bort kvarglmda och utdaterade miniatyrbilder." # # File: src/thumbremover.py, line: 58 #: src/thumbremover.py:60 msgid "Thumbnail directory" msgstr "Miniatyrbildskatalog" # # File: src/thumbremover.py, line: 65 #: src/thumbremover.py:67 msgid "Total number of thumbnails" msgstr "Totalt antal miniatyrbilder" # # File: src/thumbremover.py, line: 68 # File: src/thumbremover.py, line: 75 #: src/thumbremover.py:70 #: src/thumbremover.py:77 msgid "Calculating..." msgstr "Berknar..." # # File: src/thumbremover.py, line: 72 #: src/thumbremover.py:74 msgid "Total size of thumbnails" msgstr "Total storlek p miniatyrbilder" # # File: src/thumbremover.py, line: 80 #: src/thumbremover.py:82 msgid "Do you want to cleanup orphaned and outdated thumbnails now?" msgstr "Vill du rensa ut kvarglmda och utdaterade miniatyrbilder nu?" # # File: src/thumbremover.py, line: 116 #: src/thumbremover.py:118 msgid "Removing thumbnails" msgstr "Raderar miniatyrbilder" # # File: src/thumbremover.py, line: 135 #: src/thumbremover.py:137 msgid "Number of removed thumbnails" msgstr "Antal borttagna miniatyrbilder" # # File: src/thumbremover.py, line: 142 #: src/thumbremover.py:144 msgid "Total size of removed thumbnails" msgstr "Total storlek p borttagna miniatyrbilder" # # File: src/thumbremover.py, line: 193 #: src/thumbremover.py:195 #, python-format msgid "Removed thumbnail for '%s'" msgstr "Tog bort miniatyrbild fr '%s'" # # File: src/ui.py, line: 34 #: src/ui.py:34 msgid "_Next page" msgstr "_Nsta sida" # # File: src/ui.py, line: 36 #: src/ui.py:36 msgid "_Previous page" msgstr "F_regende sida" # # File: src/ui.py, line: 38 #: src/ui.py:38 msgid "_First page" msgstr "_Frsta sidan" # # File: src/ui.py, line: 40 #: src/ui.py:40 msgid "_Last page" msgstr "_Sista sidan" # # File: src/ui.py, line: 42 #: src/ui.py:42 msgid "_Zoom in" msgstr "_Zooma in" # # File: src/ui.py, line: 44 #: src/ui.py:44 msgid "Zoom _out" msgstr "Zooma _ut" # # File: src/ui.py, line: 46 #: src/ui.py:46 msgid "O_riginal size" msgstr "O_riginalstorlek" # # File: src/ui.py, line: 48 #: src/ui.py:48 msgid "_Close" msgstr "_Stng" # # File: src/ui.py, line: 50 #: src/ui.py:50 msgid "_Quit" msgstr "_Avsluta" # # File: src/ui.py, line: 52 #: src/ui.py:52 msgid "_Rotate 90 degrees CW" msgstr "_Rotera 90 grader medsols" # # File: src/ui.py, line: 54 #: src/ui.py:54 msgid "Rotate 180 de_grees" msgstr "Rotera 180 _grader" # # File: src/ui.py, line: 56 #: src/ui.py:56 msgid "Rotat_e 90 degrees CCW" msgstr "Rot_era 90 grader motsols" # # File: src/ui.py, line: 58 #: src/ui.py:58 msgid "Fli_p horizontally" msgstr "S_pegelvnd horisontellt" # # File: src/ui.py, line: 60 #: src/ui.py:60 msgid "Flip _vertically" msgstr "Spegelvnd _vertikalt" # # File: src/ui.py, line: 62 #: src/ui.py:62 msgid "Manual _Zoom" msgstr "Manuell _zoom" # # File: src/ui.py, line: 63 #: src/ui.py:63 msgid "Open _recent" msgstr "ppna _senaste" # # File: src/ui.py, line: 64 #: src/ui.py:64 msgid "_Bookmarks" msgstr "_Bokmrken" # # File: src/ui.py, line: 65 #: src/ui.py:65 msgid "T_oolbars" msgstr "_Verktygsrader" # # File: src/ui.py, line: 66 #: src/ui.py:66 msgid "_Edit" msgstr "_Redigera" # # File: src/ui.py, line: 67 #: src/ui.py:67 msgid "_File" msgstr "_Arkiv" # # File: src/ui.py, line: 68 #: src/ui.py:68 msgid "_View" msgstr "_Visa" # # File: src/ui.py, line: 69 #: src/ui.py:69 msgid "_Go" msgstr "_G" # # File: src/ui.py, line: 70 #: src/ui.py:70 msgid "_Help" msgstr "_Hjlp" # # File: src/ui.py, line: 71 #: src/ui.py:71 msgid "_Transform" msgstr "_Transformera" # # File: src/ui.py, line: 75 #: src/ui.py:75 msgid "_Fullscreen" msgstr "_Helskrmslge" # # File: src/ui.py, line: 77 #: src/ui.py:77 msgid "_Double page mode" msgstr "_Dubbelsideslge" # # File: src/ui.py, line: 79 #: src/ui.py:79 msgid "_Toolbar" msgstr "_Verktygsrad" # # File: src/ui.py, line: 81 #: src/ui.py:81 msgid "_Menubar" msgstr "_Menyrad" # # File: src/ui.py, line: 83 #: src/ui.py:83 msgid "St_atusbar" msgstr "St_atusrad" # # File: src/ui.py, line: 85 #: src/ui.py:85 msgid "S_crollbars" msgstr "_Rullningslister" # # File: src/ui.py, line: 87 #: src/ui.py:87 msgid "Th_umbnails" msgstr "Miniat_yrbilder" # # File: src/ui.py, line: 89 #: src/ui.py:89 msgid "H_ide all" msgstr "_Gm alla" # # File: src/ui.py, line: 91 #: src/ui.py:91 msgid "_Manga mode" msgstr "_Mangalge" # # File: src/ui.py, line: 93 #: src/ui.py:93 msgid "_Keep transformation" msgstr "Behll transf_ormation" # # File: src/ui.py, line: 95 #: src/ui.py:95 msgid "Run _slideshow" msgstr "Kr _bildspel" # # File: src/ui.py, line: 97 #: src/ui.py:97 msgid "Magnifying _glass" msgstr "Frstorings_glas" # # File: src/ui.py, line: 101 #: src/ui.py:103 msgid "_Best fit mode" msgstr "_Bsta anpassningslge" # # File: src/ui.py, line: 103 #: src/ui.py:105 msgid "Fit _width mode" msgstr "Br_eddanpassningslge" # # File: src/ui.py, line: 105 #: src/ui.py:107 msgid "Fit _height mode" msgstr "H_jdanpassningslge" # # File: src/ui.py, line: 107 #: src/ui.py:109 msgid "M_anual zoom mode" msgstr "M_anuellt zoomlge" # # File: src/ui.py, line: 113 #: src/ui.py:115 msgid "_About" msgstr "_Om" # # File: src/ui.py, line: 115 #: src/ui.py:117 msgid "_View comments..." msgstr "Visa _kommentarer..." # # File: src/ui.py, line: 117 #: src/ui.py:119 msgid "_Edit archive..." msgstr "R_edigera arkiv..." # # File: src/ui.py, line: 119 #: src/ui.py:121 msgid "_Open..." msgstr "_ppna..." # # File: src/ui.py, line: 121 #: src/ui.py:123 msgid "_Properties" msgstr "_Egenskaper" # # File: src/ui.py, line: 123 #: src/ui.py:125 msgid "_Enhance image..." msgstr "F_rbttra bild..." # # File: src/ui.py, line: 126 #: src/ui.py:128 msgid "_Thumbnail maintenance..." msgstr "Minia_tyrsbildsunderhll..." # # File: src/ui.py, line: 128 #: src/ui.py:130 msgid "Pr_eferences" msgstr "Inst_llningar" # # File: src/ui.py, line: 132 #: src/ui.py:134 msgid "_Library..." msgstr "Bib_liotek..." # # File: src/ui.py, line: 282 #: src/ui.py:284 msgid "First page" msgstr "Frsta sidan" # # File: src/ui.py, line: 284 #: src/ui.py:286 msgid "Previous page" msgstr "Fregende sida" # # File: src/ui.py, line: 285 #: src/ui.py:287 msgid "Next page" msgstr "Nsta sida" # # File: src/ui.py, line: 286 #: src/ui.py:288 msgid "Last page" msgstr "Sista sidan" # # File: src/ui.py, line: 297 #: src/ui.py:299 msgid "Manga mode" msgstr "Mangalge" # # File: src/ui.py, line: 298 #: src/ui.py:300 msgid "Magnifying glass" msgstr "Frstoringsglas" #~ msgid "Automatically rotate images according to the EXIF data." #~ msgstr "Rotera bilder automatiskt enligt EXIF-datan." #~ msgid "" #~ "Automatically rotate images when an orientation is specified in the image " #~ "meta data, such as in an EXIF tag." #~ msgstr "" #~ "Rotera bilder automatiskt nr en orientering finns specificerad i bildens " #~ "metadata, exempelvis i en EXIF-tagg." #~ msgid "" #~ "Flip pages when scrolling \"off the page\" with the scroll wheel or with " #~ "the arrow keys, even when not in best fit mode. It takes three " #~ "consecutive \"steps\" with the scroll wheel or the arrow keys to trigger " #~ "this behaviour." #~ msgstr " " comix-4.0.4/messages/sv/LC_MESSAGES/comix.mo0000644000175000001440000005567111137133373017253 0ustar sorkusersTa &)-<W YEd x     M9 T_!g.].53d$*ROB8k     !E67|+"("H"k %%  5 GUg pzrJ <   ! ! 2!?! N!\! b!m!~!!!!!!4"#"L"6# I#+T### ## ## ####A$U$ i$u$$ $$$$$$$%!% 5% @%M%^%Hg%%% %%%% & && 6&B& H&S& X&d&+x&4&&b' u' ' ' 'O' ' ((#/(S(h(|((.($()")6) I))S)})))))) ) ) )))*5 *UC* *-* **+ + +?=+}, ,.,,"q--W. m. w. . .#.)..r/1 0;0O0e0 0a01 2)2B2 b2Xo22!2{20w3 333445-5gK5 5 5 55 55 566 62686I6\6n6 t6 6666 6 6 66 666 67 7"7<7 E7P7V7h79q7888&888+9 .999V9g99m9':(:>:N:b: u: : ::Q:1:*;3;9;1V;Y;;3<64<k<=T =?u=0=l= S>a>j>$> >>>> ???? @D @6e@@ @@4@"@A#=A#aA&A/A"AAB!B&Bk8 YdrS=c)Wt%TLD#l ^ aERy[ b}{ChJV]/no2x .,59Mg+(~v?O$`jI|4GzZXP"QeUNi_q&@ %d comments%d pages(Copy)A collection by that name already exists.A file named '%s' already exists. Do you want to replace it?AboutAccessedAdd a new empty collection.Add booksAdd books to '%s'.Add collectionAdd information about all files opened from within Comix to the shared recent files list.Add more books to the library.Add new collection?Added booksAdding '%s'...Adding booksAll ArchivesAll booksAll filesAll imagesAll stored bookmarks will be removed. Are you sure that you want to continue?Always use this selected colour as the background colour.AppearanceArchiveArchives are stored as ZIP files.Automatically add the books to this collectionAutomatically adjust contrast (both lightness and darkness), separately for each colour band.Automatically adjust contrast.Automatically hide all toolbars in fullscreen.Automatically open the last viewed file on startup.Automatically open the next archive in the directory when flipping past the last page, or the previous archive when flipping past the first page.Automatically open the next archive.Automatically open, on startup, the file that was open when Comix was last closed.Automatically pick a background colour that fits the viewed image.Automatically rotate images according to their metadata.Automatically rotate images when an orientation is specified in the image metadata, such as in an Exif tag.BackgroundBehaviourBest fit modeBrazilian Portuguese translationBrightnessBzip2 compressed tar archiveCacheCache the images that are next to the currently viewed image in order to speed up browsing. Since the speed improvements are quite big, it is recommended that you have this preference set, unless you are running short on free RAM.Calculating...Catalan translationCleanupCleanup thumbnailsClear all bookmarks?Comix is an image viewer specifically designed to handle comic books.Comix is licensed under the GNU General Public License.Comment extensionsCommentsContrastCould not add a new collection called '%s'.Could not change the name to '%s'.Could not duplicate collection.Could not find RAR file extractor!Could not open %s: Is a directory.Could not open %s: No such file.Could not open %s: Permission denied.Could not open %s: Unknown file type.Could not read %sCover sizeCreditsCroatian translationCzech translationDefault modesDefault zoom modeDefaultsDeveloperDisplayDisplay only one image in double page mode, if the image's width exceeds its height. The result of this is that scans that span two pages are displayed properly (i.e. alone) also in double page mode.Display only those books that have the specified text string in their full path. The search is not case sensitive.Do you want to cleanup orphaned and outdated thumbnails now?Double page modeDuplicate collectionDutch translationEdit archiveEdit bookmarksEnhance imageFilesFirst pageFit _height modeFit _width modeFit height modeFit width modeFli_p horizontallyFlip _verticallyFlip pages when scrolling "off the page" with the scroll wheel or with the arrow keys. It takes three consecutive "steps" with the scroll wheel or the arrow keys for the pages to be flipped.Flip pages when scrolling off the edges of the page.Flip two pages in double page mode.Flip two pages, instead of one, each time we flip pages in double page mode.French translationFullscreenGerman translation and Nautilus thumbnailerGreek translationGzip compressed tar archiveH_ide allHungarian translationIcon designImageImage scalingImagesImportIndonesian translationIt reads ZIP, RAR and tar archives, as well as plain image files.Italian translationJPEG imagesJapanese translationKorean translationLast pageLibraryLocationM_anual zoom modeMagnification factorMagnifying GlassMagnifying _glassMagnifying glassMagnifying glass size (in pixels)Manga modeManual _ZoomManual zoom modeModifiedMove books from '%(source collection)s' to '%(destination collection)s'.NameNew collectionNext pageNo images in '%s'Number of removed thumbnailsO_riginal sizeOpenOpen _recentOpen the selected book.Other filesOwnerPNG imagesPagePermissionsPersian translationPlease enter a name for the new collection.Please enter a new name for the selected collection.Please note that the only files that are automatically added to this list are those files in archives that Comix recognizes as comments.Polish translationPr_eferencesPreferencesPrevious pagePropertiesPut the collection '%(subcollection)s' in the collection '%(supercollection)s'.RAR archiveRAR archivesRemove books from the library?Remove collection from the library?Remove collection...Remove from archiveRemove from the library...Remove from this collectionRemoved %(num)d book(s) from '%(collection)s'.Removed %d book(s) from the library.Removed thumbnail for '%s'Removing thumbnailsRename collection?Rename...Replacing it will overwrite its contents.RootRotat_e 90 degrees CCWRotate 180 de_greesRotationRun _slideshowRussian translationSLIDESHOWS_crollbarsSaturationSaveScrollSearchSet the magnification factor of the magnifying glass.Set the size of the magnifying glass. It is a square with a side of this many pixels.SharpnessShow only one wide image in double page mode.Show page numbers on thumbnails.Simplified Chinese translationSizeSlideshowSlideshow delay (in seconds)Some old files (that were used for storing preferences, the library, bookmarks etc. for older versions of Comix) were found on your computer. If you do not plan on using the older versions of Comix again, you should remove these files in order to save some disk space. Do you want these files to be removed for you now?Spanish translationSt_atusbarStore information about recently opened files.Store thumbnails for opened files according to the freedesktop.org specification. These thumbnails are shared by many other applications, such as most file managers.Store thumbnails for opened files.Stretch images to a size that is larger than their original size if the current zoom mode requests it. If this preference is unset, images are never scaled to be larger than their original size.Stretch small images.T_oolbarsTar archiveTar archivesTh_umbnailsThe new archive could not be saved!The original files have not been removed.The selected books will be removed from the library (but the original files will be untouched). Are you sure that you want to continue?The selected collection will be removed from the library (but the books and subcollections in it will remain). Are you sure that you want to continue?There are deprecated files left on your computer.Thumbnail directoryThumbnail maintenanceThumbnail size (in pixels)ThumbnailsThumbnails for files (such as image files and comic book archives) are stored in your home directory. Many different applications use and create these thumbnails, but sometimes thumbnails remain even though the original files have been removed - wasting space. This dialog can cleanup your stored thumbnails by removing orphaned and outdated thumbnails.Total number of thumbnailsTotal size of removed thumbnailsTotal size of thumbnailsTraditional Chinese translationTransparencyTreat all files found within archives, that have one of these file endings, as comments.Unknown filetypeUse a cache to speed up browsing.Use a grey checkered background for transparent images. If this preference is unset, the background is plain white instead.Use checkered background for transparent images.Use double page mode by default.Use dynamic background colour.Use fullscreen by default.Use manga mode by default.Use smart scrolling with the space key. Normally the space key scrolls only right down (or up when shift is pressed), but with this preference set it also scrolls sideways and so tries to follow the natural reading order of the comic book.Use smart space key scrolling.Use this colour as backgroundYou need either the rar or the unrar program installed in order to read RAR (.cbr) files.ZIP archiveZIP archivesZoom _out_About_Add bookmark_Best fit mode_Bookmarks_Clear bookmarks..._Close_Double page mode_Edit_Edit archive..._Edit bookmarks..._Enhance image..._File_First page_Fullscreen_Go_Help_Keep transformation_Last page_Library..._Manga mode_Menubar_Next page_Open..._Previous page_Properties_Quit_Rotate 90 degrees CW_Thumbnail maintenance..._Toolbar_Transform_View_View comments..._Zoom inProject-Id-Version: Comix 4.0 Report-Msgid-Bugs-To: POT-Creation-Date: 2008-11-22 02:42+0100 PO-Revision-Date: 2009-01-25 19:54+0100 Last-Translator: Language-Team: Swedish MIME-Version: 1.0 Content-Type: text/plain; charset=iso-8859-1 Content-Transfer-Encoding: 8bit Generated-By: pygettext.py 1.5 %d kommentarer%d sidor(Kopia)En samling med det namnet finns redan.En fil med namnet '%s' finns redan. Vill du erstta den?OmtkomsttidLgg till en ny tom samling.Lgg till bckerLgg till bcker i '%s'.Lgg till samlingLgg till information om alla filer som ppnas inifrn Comix till den delade listan med senast ppnade filer.Lgg till fler bcker till biblioteket.Lgg till ny samling?Tillagda bckerLgger till '%s'...Lgger till bckerAlla arkivAlla bckerAlla filerAlla bildfilerAlla lagrade bokmrken kommer att tas bort. r du sker p att du vill fortstta?Anvnd alltid denna valda frg som bakgrundsfrg.UtseendeArkivArkiven sparas i ZIP-format.Lgg automatiskt till bckerna till denna samlingJustera kontrast automatiskt (bde ljushet och mrkhet), separat fr varje frgkomponent.Justera kontrast automatiskt.Gm automatiskt alla verktygsrader i helskrmslge.ppna automatiskt den senast lsta filen vid uppstart.ppna automatiskt nsta arkiv i katalogen nr vi blddrar frbi den sista sidan, eller det fregende arkivet nr vi blddrar frbi den frsta sidan.ppna automatiskt nsta arkiv.ppna automatiskt, vid uppstart, den fil som var ppnad nr Comix avslutades senast.Vlj automatiskt en bakgrundsfrg som passar den visade bilden.Rotera bilder automatiskt enligt deras metadata.Rotera bilder automatisk om en orientering finns specificerad i bildens metadata, exempelvis i en Exif-tagg.BakgrundsfrgBeteendeBsta anpassningslgeBrasiliansk-portugisisk versttningLjusstyrkaBzip2-komprimerat tar-arkivCacheAnvnd en cache till att lagra bilderna intill den visade bilden, fr att snabba upp blddring. Eftersom hastighetsfrbttringen r relativt stor s rekommenderas du att ha den hr instllningen aktiverad, om du inte har ont om ledigt RAM-minne.Berknar...Katalansk versttningRensa utRensa ut miniatyrbilderTm alla bokmrken?Comix r en bildvisare som r srskilt designad fr att visa serier.Comix r licensierat under GNU General Public License.KommentarsfilndelserKommentarerKontrastKunde inte lgga till en ny samling med namnet '%s'.Kunde inte ndra namnet till '%s'.Kunde inte duplicera samling.Kunde inte hitta RAR-filsuppackare!Kunde inte ppna %s: r en katalog.Kunde inte ppna %s: Filen finns inte.Kunde inte ppna %s: Otillrckliga rttigheter.Kunde inte ppna %s: Oknd filtyp.Kunde inte lsa %sOmslagsstorlekTackKroatisk versttningTjeckisk versttningStandardlgenStandardzoomlgeterstllUtvecklareVisningVisa endast en bild i dubbelsideslge, om bildens bredd verstiger dess hjd. Effekten av detta r att en scan som innehller tv sidor visas ensam ocks i dubbelsideslge.Visa endast de bcker dr den angivna textstrngen frekommer i deras skvg. Skningen r oberoende av gemener och versaler.Vill du rensa ut kvarglmda och utdaterade miniatyrbilder nu?DubbelsideslgeDuplicera samlingNederlndsk versttningRedigera arkivRedigera bokmrkenFrbttra bildFilerFrsta sidanH_jdanpassningslgeBr_eddanpassningslgeHjdanpassningslgeBreddanpassningslgeS_pegelvnd horisontelltSpegelvnd _vertikaltVnd blad nr du scrollar "av sidan" med scrollhjulet eller med piltangenterna. Det krvs tre p varandra fljande "steg" med scrollhjulet eller piltangenterna fr att sidan ska vndas.Vnd blad vid scrollning frbi sidans kanter. Blddra tv sidor i dubbelsideslge.Blddra tv sidor, istllet fr en, varje gng vi byter sida i dubbelsideslge.Fransk versttningHelskrmTysk versttning och miniatyrbildsskapare fr NautilusGrekisk versttningGzip-komprimerat tar-arkiv_Gm allaUngersk versttningIkondesignBildBildskalningBilderImporteraIndonesisk versttningDen lser ZIP-, RAR- och tar-arkiv, samt vanliga bildfiler.Italiensk versttningJPEG-bilderJapansk versttningKoreansk versttningSista sidanBibliotekPlatsM_anuellt zoomlgeFrstoringsfaktorFrstoringsglasFrstorings_glasFrstoringsglasFrstoringsglasstorlek (i pixlar)MangalgeManuell _zoomManuellt zoomlgeModifieringstidFlytta bcker frn '%(source collection)s' till '%(destination collection)s'.NamnNy samlingNsta sidaInga bilder i '%s'.Antal borttagna miniatyrbilderO_riginalstorlekppnappna _senasteppna den markerade boken.Andra filergarePNG-bilderSidaRttigheterPersisk versttningAnge ett namn t den nya samlingen.Ange ett nytt namn fr den markerade samlingen.Notera att de enda filer som automatiskt lggs till i denna lista r de filer i arkiv som Comix knner igen som kommentarer.Polsk versttningInst_llningarInstllningarFregende sidaEgenskaperLgg samlingen '%(subcollection)s' i samlingen '%(supercollection)s'.RAR-arkivRAR-arkivTa bort bcker frn biblioteket?Ta bort samling frn biblioteket?Ta bort samling...Ta bort frn arkivTa bort frn biblioteket...Ta bort frn den hr samlingenTog bort %(num)d antal bcker frn '%(collection)s'.Tog bort %d antal bcker frn biblioteket.Tog bort miniatyrbild fr '%s'Raderar miniatyrbilderDp om samling?Dp om...Erstts filen s kommer dess innehll att skrivas ver.RotRot_era 90 grader motsolsRotera 180 _graderRotationKr _bildspelRysk versttningBILDSPEL_RullningslisterFrgmttnadSparaScrollningSkStll in frstoringsfaktorn fr frstoringsglaset.Stll in storleken p frstoringsglaset. Det r en kvadrat vars sida r s hr mnga pixlar bred.SkrpaVisa endast en bred bild i dubbelsideslge.Visa sidonummer p miniatyrbilder.Frenklad kinesisk versttningStorlekBildspelBildspelsfrdrjning (i sekunder)Ngra gamla filer (som anvndes fr att lagra instllningar, biblioteket, bokmrken etc. fr ldre versioner av Comix) har hittats p din dator. Om du inte planerar att anvnda de ldre versionerna av Comix igen, s br du ta bort dessa filer fr att spara diskutrymme. Vill du att dessa filer tas bort t dig nu?Spansk versttningSt_atusradLagra information om de senast ppnade filerna.Lagra miniatyrbilder fr filer som ppnas, i enlighet med freedesktop.org-specifikationen. Dessa miniatyrbilder delas av mnga andra program, exempelvis de flesta filhanterare.Lagra miniatyrbilder fr ppnade filer.Dra ut bilder till en storlek som r strre n deras originalstorlek om zoomningslget krver det. Om denna instllning r avaktiverad s blir bilder aldrig skalade till en storlek som vergr deras originalstorlek.Dra ut sm bilder._VerktygsraderTar-arkivTar-arkivMiniat_yrbilderDet nya arkivet kunde inte sparas!Originalfilerna har inte tagits bort.De markerade bckerna kommer att tas bort frn biblioteket (men originalfilerna kommer att frbli orrda). r du sker p att du vill fortstta?Den markerade samlingen kommer att tas bort frn biblioteket (men bckerna och undersamlingarna i den kommer att vara kvar). r du sker p att du vill fortstta?Det finns utdaterade filer kvarlmnade p din dator.MiniatyrbildskatalogMiniatyrbildsunderhllMiniatyrbildsstorlek (i pixlar)MiniatyrbilderMiniatyrbilder fr filer (ssom bildfiler och serieboksarkiv) lagras i din hemkatalog. Mnga olika program anvnder och skapar dessa miniatyrbilder, men ibland blir de kvarlmnade trots att originalfilerna har blivit raderade, och dslar plats. Det hr dialogfnstret kan rensa ut dina lagrade miniatyrbilder genom att ta bort kvarglmda och utdaterade miniatyrbilder.Totalt antal miniatyrbilderTotal storlek p borttagna miniatyrbilderTotal storlek p miniatyrbilderTraditionell kinesisk versttningTransparensBehandla alla filer funna i arkiv, som har en av dessa filndelser, som kommentarer.Oknd filtypAnvnd en cache fr att snabba upp blddring.Anvnd en grrutig bakgrund till transparenta bilder. Om den hr instllningen r avaktiverad s anvnds en helvit bakgrund istllet.Anvnd rutig bakgrund fr transparenta bilder.Anvnd dubbelsideslge som standard.Anvnd dynamisk bakgrundsfrg.Anvnd helskrm som standard.Anvnd mangalge som standard.Anvnd smart scrollning med mellanslagstangenten. Normalt s scrollar mellanslagstangenten bara rakt ner (eller upp om shift r intryckt), men med den hr instllningen aktiverad s scrollar den ocks i sidled och frsker p s vis att flja den naturliga lsriktningen av serieboken.Anvnd smart scrollning med mellanslagstangenten.Anvnd denna frg som bakgrundsfrgDu behver antingen programmet rar eller unrar installerat fr att kunna lsa RAR-filer (.cbr).ZIP-arkivZIP-arkivZooma _ut_Om_Lgg till bokmrke_Bsta anpassningslge_Bokmrken_Tm bokmrken..._Stng_Dubbelsideslge_RedigeraR_edigera arkiv...R_edigera bokmrken...F_rbttra bild..._Arkiv_Frsta sidan_Helskrmslge_G_HjlpBehll transf_ormation_Sista sidanBib_liotek..._Mangalge_Menyrad_Nsta sida_ppna...F_regende sida_Egenskaper_Avsluta_Rotera 90 grader medsolsMinia_tyrsbildsunderhll..._Verktygsrad_Transformera_VisaVisa _kommentarer..._Zooma incomix-4.0.4/messages/ru/LC_MESSAGES/comix.po0000644000175000001440000013246711137150003017240 0ustar sorkusers# Russian translation for Comix # This file is distributed under the same license as the Comix package. # Translated by Artyom Smirnov , 2007 msgid "" msgstr "" "Project-Id-Version: Comix 3.6.3\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2008-11-22 02:42+0100\n" "PO-Revision-Date: 2009-01-25 23:47+0300\n" "Last-Translator: Artyom Smirnov \n" "Language-Team: Artyom Smirnov \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" "Generated-By: pygettext.py 1.5\n" "X-Poedit-Language: Russian\n" "X-Poedit-Country: RUSSIAN FEDERATION\n" "X-Poedit-SourceCharset: utf-8\n" # # File: src/about.py, line: 18 # File: src/about.py, line: 67 #: src/about.py:19 #: src/about.py:68 msgid "About" msgstr "О программе" # # File: src/about.py, line: 55 #: src/about.py:56 msgid "Comix is an image viewer specifically designed to handle comic books." msgstr "Comix - это просмотрщик ориентированный на комиксы." # # File: src/about.py, line: 57 #: src/about.py:58 msgid "It reads ZIP, RAR and tar archives, as well as plain image files." msgstr "Он читает ZIP, RAR и tar архивы также хорошо, как обыкновенные файлы изображений." # # File: src/about.py, line: 59 #: src/about.py:60 msgid "Comix is licensed under the GNU General Public License." msgstr "Comix распространяется согласно лицензии GNU General Public License." # # File: src/about.py, line: 75 #: src/about.py:83 msgid "Developer" msgstr "Разработчик" # # File: src/about.py, line: 77 #: src/about.py:84 #: src/about.py:85 msgid "Simplified Chinese translation" msgstr "Упрощенный Китайский перевод" # # File: src/about.py, line: 78 #: src/about.py:86 msgid "Spanish translation" msgstr "Испанский перевод" # # File: src/about.py, line: 79 #: src/about.py:87 msgid "Brazilian Portuguese translation" msgstr "Бразильский Португальский перевод" # # File: src/about.py, line: 81 #: src/about.py:88 msgid "German translation and Nautilus thumbnailer" msgstr "Немецкий перевод и генератор миниатюр для Nautilus" # # File: src/about.py, line: 82 #: src/about.py:89 #: src/about.py:90 msgid "Italian translation" msgstr "Итальянский перевод" # # File: src/about.py, line: 83 #: src/about.py:91 msgid "Dutch translation" msgstr "Голландский перевод" # # File: src/about.py, line: 84 #: src/about.py:92 msgid "French translation" msgstr "Французский перевод" # # File: src/about.py, line: 85 #: src/about.py:93 #: src/about.py:94 msgid "Polish translation" msgstr "Польский перевод" # # File: src/about.py, line: 86 #: src/about.py:95 msgid "Greek translation" msgstr "Греческий перевод" # # File: src/about.py, line: 87 #: src/about.py:96 msgid "Catalan translation" msgstr "Каталанский перевод" # # File: src/about.py, line: 88 #: src/about.py:97 #: src/about.py:98 msgid "Traditional Chinese translation" msgstr "Традиционный Китайский перевод" # # File: src/about.py, line: 89 #: src/about.py:99 msgid "Japanese translation" msgstr "Японский перевод" # # File: src/about.py, line: 90 #: src/about.py:100 msgid "Hungarian translation" msgstr "Венгерский перевод" # # File: src/about.py, line: 91 #: src/about.py:101 msgid "Russian translation" msgstr "Русский перевод" # # File: src/about.py, line: 92 #: src/about.py:102 msgid "Croatian translation" msgstr "Хорватский перевод" # # File: src/about.py, line: 93 #: src/about.py:103 msgid "Korean translation" msgstr "Корейский перевод" # # File: src/about.py, line: 94 #: src/about.py:104 msgid "Persian translation" msgstr "Персидский перевод" # # File: src/about.py, line: 95 #: src/about.py:105 msgid "Indonesian translation" msgstr "Индонезийский перевод" # # File: src/about.py, line: 96 #: src/about.py:106 msgid "Czech translation" msgstr "Чешский перевод" # # File: src/about.py, line: 97 #: src/about.py:107 msgid "Icon design" msgstr "Дизайн иконок" # # File: src/about.py, line: 106 #: src/about.py:114 msgid "Credits" msgstr "О нас" # # File: src/archive.py, line: 66 #: src/archive.py:66 msgid "Could not find RAR file extractor!" msgstr "Не могу найти разархиватор RAR файлов!" # # File: src/archive.py, line: 68 #: src/archive.py:68 msgid "You need either the rar or the unrar program installed in order to read RAR (.cbr) files." msgstr "Вам необходимо установить программу rar или unrar, для чтения RAR (.cbr) файлов." # # File: src/archive.py, line: 301 #: src/archive.py:305 msgid "ZIP archive" msgstr "ZIP архив" # # File: src/archive.py, line: 302 #: src/archive.py:306 msgid "Tar archive" msgstr "Tar архив" # # File: src/archive.py, line: 303 #: src/archive.py:307 msgid "Gzip compressed tar archive" msgstr "Tar архив сжатый gzip" # # File: src/archive.py, line: 304 #: src/archive.py:308 msgid "Bzip2 compressed tar archive" msgstr "Tar архив сжатый bzip2" # # File: src/archive.py, line: 305 #: src/archive.py:309 msgid "RAR archive" msgstr "RAR архивы" # # File: src/bookmark.py, line: 27 #: src/bookmark.py:28 msgid "_Add bookmark" msgstr "_Добавить закладку" # # File: src/bookmark.py, line: 29 #: src/bookmark.py:30 msgid "_Edit bookmarks..." msgstr "_Редактировать закладки..." # # File: src/bookmark.py, line: 31 #: src/bookmark.py:32 msgid "_Clear bookmarks..." msgstr "_Очистить закладки..." # # File: src/bookmark.py, line: 77 #: src/bookmark.py:78 msgid "Clear all bookmarks?" msgstr "Очистить все закладки?" # # File: src/bookmark.py, line: 79 #: src/bookmark.py:80 msgid "All stored bookmarks will be removed. Are you sure that you want to continue?" msgstr "Все сохраненные закладки будут удалены. Вы уверены, что хотите продолжить?" # # File: src/bookmark.py, line: 229 #: src/bookmark.py:230 msgid "Edit bookmarks" msgstr "Редактировать закладки" # # File: src/bookmark.py, line: 255 # File: src/edit.py, line: 267 #: src/bookmark.py:256 #: src/edit.py:270 msgid "Name" msgstr "Имя" # # File: src/bookmark.py, line: 256 #: src/bookmark.py:257 msgid "Page" msgstr "Страница" # # File: src/comment.py, line: 16 # File: src/preferences.py, line: 288 #: src/comment.py:16 #: src/preferences.py:299 msgid "Comments" msgstr "Комментарии" # # File: src/comment.py, line: 53 #: src/comment.py:53 #, python-format msgid "Could not read %s" msgstr "Не могу прочитать %s" # # File: src/deprecated.py, line: 16 #: src/deprecated.py:16 msgid "There are deprecated files left on your computer." msgstr "На вашем компьютере остались устаревшие файлы." # # File: src/deprecated.py, line: 22 #: src/deprecated.py:22 msgid "Some old files (that were used for storing preferences, the library, bookmarks etc. for older versions of Comix) were found on your computer. If you do not plan on using the older versions of Comix again, you should remove these files in order to save some disk space. Do you want these files to be removed for you now?" msgstr "Некоторые устаревшие файлы (которые использовались для сохранения настроек, библиотеки, закладок и т. д. в старой версии Comix) были найдены на вашем компьютере. Если вы не планируете использовать старые версии Comix, вы можете удалить эти файлы и освободить немного места на диске. Вы хотите, чтобы эти файлы были удалены сейчас?" # # File: src/edit.py, line: 28 #: src/edit.py:29 msgid "Edit archive" msgstr "Редактировать архив" # # File: src/edit.py, line: 36 #: src/edit.py:37 msgid "Import" msgstr "Импорт" # # File: src/edit.py, line: 50 #: src/edit.py:51 msgid "Images" msgstr "Изображения" # # File: src/edit.py, line: 51 #: src/edit.py:52 msgid "Other files" msgstr "Другие файлы" # # File: src/edit.py, line: 99 #: src/edit.py:101 msgid "The new archive could not be saved!" msgstr "Новый архив не может быть сохранен!" # # File: src/edit.py, line: 101 #: src/edit.py:103 msgid "The original files have not been removed." msgstr "Оригинальные файлы не были удалены." # # File: src/edit.py, line: 115 #: src/edit.py:117 msgid "Archives are stored as ZIP files." msgstr "Архивы сохраняются как ZIP файлы." # # File: src/edit.py, line: 168 # File: src/edit.py, line: 285 #: src/edit.py:170 #: src/edit.py:288 msgid "Remove from archive" msgstr "Удалить из архива" # # File: src/edit.py, line: 255 #: src/edit.py:258 msgid "Please note that the only files that are automatically added to this list are those files in archives that Comix recognizes as comments." msgstr "Заметьте, в этом списке только те файлы, которые Comix считает комментариями." # # File: src/edit.py, line: 270 #: src/edit.py:273 msgid "Size" msgstr "Размер" # # File: src/enhance.py, line: 51 #: src/enhance.py:51 msgid "Enhance image" msgstr "Улучшение изображения" # # File: src/enhance.py, line: 52 #: src/enhance.py:52 msgid "Defaults" msgstr "По умолчанию" # # File: src/enhance.py, line: 79 #: src/enhance.py:79 msgid "Brightness" msgstr "Яркость" # # File: src/enhance.py, line: 90 #: src/enhance.py:90 msgid "Contrast" msgstr "Контрастность" # # File: src/enhance.py, line: 101 #: src/enhance.py:101 msgid "Saturation" msgstr "Насыщенность" # # File: src/enhance.py, line: 112 #: src/enhance.py:112 msgid "Sharpness" msgstr "Резкость" # # File: src/enhance.py, line: 126 #: src/enhance.py:126 msgid "Automatically adjust contrast." msgstr "Автоматически подстроить контрастность." # # File: src/enhance.py, line: 128 #: src/enhance.py:128 msgid "Automatically adjust contrast (both lightness and darkness), separately for each colour band." msgstr "Автоматически подстраивать контрастность (светлые и темные участки), отдельно для каждой цветовой полосы." # # File: src/filechooser.py, line: 35 # File: src/library.py, line: 489 #: src/filechooser.py:38 #: src/library.py:490 msgid "Open" msgstr "Открыть" # # File: src/filechooser.py, line: 39 #: src/filechooser.py:42 msgid "Save" msgstr "Сохранить" # # File: src/filechooser.py, line: 75 #: src/filechooser.py:78 msgid "All files" msgstr "Все файлы" # # File: src/filechooser.py, line: 78 #: src/filechooser.py:81 msgid "All Archives" msgstr "Все архивы" # # File: src/filechooser.py, line: 82 #: src/filechooser.py:85 msgid "ZIP archives" msgstr "ZIP архивы" # # File: src/filechooser.py, line: 84 #: src/filechooser.py:87 msgid "RAR archives" msgstr "RAR архивы" # # File: src/filechooser.py, line: 86 #: src/filechooser.py:89 msgid "Tar archives" msgstr "Tar архивы" # # File: src/filechooser.py, line: 125 #: src/filechooser.py:134 #, python-format msgid "A file named '%s' already exists. Do you want to replace it?" msgstr "Файл с именем '%s' уже существует. Вы хотите заменить его?" # # File: src/filechooser.py, line: 128 #: src/filechooser.py:137 msgid "Replacing it will overwrite its contents." msgstr "Замена перепишет его содержимое." # # File: src/filechooser.py, line: 171 # File: src/filechooser.py, line: 249 #: src/filechooser.py:182 #: src/filechooser.py:260 msgid "All images" msgstr "Изображения" # # File: src/filechooser.py, line: 173 # File: src/filechooser.py, line: 251 #: src/filechooser.py:184 #: src/filechooser.py:262 msgid "JPEG images" msgstr "JPEG изображения" # # File: src/filechooser.py, line: 174 # File: src/filechooser.py, line: 252 #: src/filechooser.py:185 #: src/filechooser.py:263 msgid "PNG images" msgstr "PNG изображения" # # File: src/filechooser.py, line: 195 #: src/filechooser.py:206 msgid "Automatically add the books to this collection" msgstr "Автоматически добавить книги в эту коллекцию." # # File: src/filehandler.py, line: 209 #: src/filehandler.py:209 #, python-format msgid "Could not open %s: Is a directory." msgstr "Не могу открыть %s: Это каталог." # # File: src/filehandler.py, line: 213 #: src/filehandler.py:213 #, python-format msgid "Could not open %s: No such file." msgstr "Не могу открыть %s: Нет такого файла." # # File: src/filehandler.py, line: 217 #: src/filehandler.py:217 #, python-format msgid "Could not open %s: Permission denied." msgstr "Не могу открыть %s: Не хватает прав." # # File: src/filehandler.py, line: 222 #: src/filehandler.py:222 #, python-format msgid "Could not open %s: Unknown file type." msgstr "Не могу открыть %s: Неизвестный тип файла." # # File: src/filehandler.py, line: 285 #: src/filehandler.py:285 #, python-format msgid "No images in '%s'" msgstr "Нет изображений в '%s'" # # File: src/filehandler.py, line: 411 #: src/filehandler.py:413 msgid "Unknown filetype" msgstr "Неизвестный тип файла" # # File: src/librarybackend.py, line: 272 # File: src/librarybackend.py, line: 274 #: src/librarybackend.py:273 #: src/librarybackend.py:275 msgid "(Copy)" msgstr "(Копия)" # # File: src/library.py, line: 38 #: src/library.py:38 msgid "Library" msgstr "Библиотека" # # File: src/library.py, line: 150 #: src/library.py:150 msgid "Rename..." msgstr "Переименовать..." # # File: src/library.py, line: 152 #: src/library.py:152 msgid "Duplicate collection" msgstr "Копировать коллекцию" # # File: src/library.py, line: 154 #: src/library.py:154 msgid "Remove collection..." msgstr "Удалить коллекцию..." # # File: src/library.py, line: 202 #: src/library.py:202 msgid "All books" msgstr "Все книги" # # File: src/library.py, line: 231 #: src/library.py:231 msgid "Remove collection from the library?" msgstr "Удалить коллекцию из библиотеки?" # # File: src/library.py, line: 233 #: src/library.py:233 msgid "The selected collection will be removed from the library (but the books and subcollections in it will remain). Are you sure that you want to continue?" msgstr "Выбранная коллекция будет удалена из библиотеки (но книги и подколлекции в ней останутся). Вы уверены, что хотите продолжить?" # # File: src/library.py, line: 251 #: src/library.py:251 msgid "Rename collection?" msgstr "Переименовать коллекцию?" # # File: src/library.py, line: 253 #: src/library.py:253 msgid "Please enter a new name for the selected collection." msgstr "Пожалуйста, введите новое имя для выбранной коллекции." # # File: src/library.py, line: 271 #: src/library.py:271 #, python-format msgid "Could not change the name to '%s'." msgstr "Невозможно изменить имя на '%s'." # # File: src/library.py, line: 275 # File: src/library.py, line: 881 #: src/library.py:275 #: src/library.py:882 msgid "A collection by that name already exists." msgstr "Коллекция с таким именем уже существует." # # File: src/library.py, line: 285 #: src/library.py:285 msgid "Could not duplicate collection." msgstr "Не могу скопировать коллекцию." # # File: src/library.py, line: 382 #: src/library.py:382 msgid "Root" msgstr "Корень" # # File: src/library.py, line: 386 #: src/library.py:386 #, python-format msgid "Put the collection '%(subcollection)s' in the collection '%(supercollection)s'." msgstr "Поместить коллекцию '%(subcollection)s' в коллекцию '%(supercollection)s'." # # File: src/library.py, line: 407 #: src/library.py:407 #, python-format msgid "Add books to '%s'." msgstr "Добавить книги в '%s'." # # File: src/library.py, line: 411 #: src/library.py:411 #, python-format msgid "Move books from '%(source collection)s' to '%(destination collection)s'." msgstr "Переместить книги из '%(source collection)s' в '%(destination collection)s'." # # File: src/library.py, line: 492 #: src/library.py:493 msgid "Remove from this collection" msgstr "Удалить из коллекции" # # File: src/library.py, line: 495 #: src/library.py:496 msgid "Remove from the library..." msgstr "Удалить из библиотеки..." # # File: src/library.py, line: 588 #: src/library.py:589 #, python-format msgid "Removed %(num)d book(s) from '%(collection)s'." msgstr "Удалено %(num)d книг(а, и) из '%(collection)s'." # # File: src/library.py, line: 597 #: src/library.py:598 msgid "Remove books from the library?" msgstr "Удалить книги из библиотеки?" # # File: src/library.py, line: 599 #: src/library.py:600 msgid "The selected books will be removed from the library (but the original files will be untouched). Are you sure that you want to continue?" msgstr "Выбранные книги будут удалены из библиотеки (но оригинальные файлы останутся не тронутыми). Вы уверены, что хотите продолжить?" # # File: src/library.py, line: 609 #: src/library.py:610 #, python-format msgid "Removed %d book(s) from the library." msgstr "Удалено %d книг(а, и) из коллекции." # # File: src/library.py, line: 769 #: src/library.py:770 msgid "Search" msgstr "Поиск" # # File: src/library.py, line: 774 #: src/library.py:775 msgid "Display only those books that have the specified text string in their full path. The search is not case sensitive." msgstr "Показывать только те книги, в полном пути которых есть указанная строка. Поиск нечувствителен к регистру." # # File: src/library.py, line: 776 #: src/library.py:777 msgid "Cover size" msgstr "Размер обложки" # # File: src/library.py, line: 789 #: src/library.py:790 msgid "Add books" msgstr "Добавить книги" # # File: src/library.py, line: 793 #: src/library.py:794 msgid "Add more books to the library." msgstr "Добавить еще книг в библиотеку." # # File: src/library.py, line: 795 #: src/library.py:796 msgid "Add collection" msgstr "Добавить коллекцию" # # File: src/library.py, line: 800 #: src/library.py:801 msgid "Add a new empty collection." msgstr "Добавить новую пустую коллекцию." # # File: src/library.py, line: 806 #: src/library.py:807 msgid "Open the selected book." msgstr "Открыть выбранную книгу." # # File: src/library.py, line: 832 # File: src/properties.py, line: 113 #: src/library.py:833 #: src/properties.py:118 #, python-format msgid "%d pages" msgstr "%d страниц" # # File: src/library.py, line: 854 #: src/library.py:855 msgid "Add new collection?" msgstr "Добавить новую коллекцию?" # # File: src/library.py, line: 856 #: src/library.py:857 msgid "Please enter a name for the new collection." msgstr "Пожалуйста, введите новое имя коллекции." # # File: src/library.py, line: 862 #: src/library.py:863 msgid "New collection" msgstr "Новая коллекция" # # File: src/library.py, line: 876 #: src/library.py:877 #, python-format msgid "Could not add a new collection called '%s'." msgstr "Не могу добавить новую коллекцию '%s'." # # File: src/library.py, line: 910 #: src/library.py:911 msgid "Adding books" msgstr "Добавление книг" # # File: src/library.py, line: 930 #: src/library.py:931 msgid "Added books" msgstr "Добавлены книги" # # File: src/library.py, line: 952 #: src/library.py:953 #, python-format msgid "Adding '%s'..." msgstr "Добавление '%s'..." # # File: src/main.py, line: 666 #: src/main.py:699 msgid "SLIDESHOW" msgstr "СЛАЙДШОУ" # # File: src/preferences.py, line: 78 #: src/preferences.py:80 msgid "Preferences" msgstr "Настройки" # # File: src/preferences.py, line: 93 #: src/preferences.py:95 msgid "Background" msgstr "Фон" # # File: src/preferences.py, line: 95 #: src/preferences.py:97 msgid "Use this colour as background" msgstr "Использовать этот цвет как фон" # # File: src/preferences.py, line: 97 #: src/preferences.py:99 msgid "Always use this selected colour as the background colour." msgstr "Всегда использовать выбранный цвет, как цвет фона." # # File: src/preferences.py, line: 102 #: src/preferences.py:104 msgid "Use dynamic background colour." msgstr "Использовать динамический цвет фона." # # File: src/preferences.py, line: 106 #: src/preferences.py:108 msgid "Automatically pick a background colour that fits the viewed image." msgstr "Автоматически подбирать цвет фона, который подходит к показываемому изображению." # # File: src/preferences.py, line: 109 #: src/preferences.py:111 msgid "Thumbnails" msgstr "Миниатюры" # # File: src/preferences.py, line: 110 #: src/preferences.py:112 msgid "Thumbnail size (in pixels)" msgstr "Размер миниатюр (в пикселях)" # # File: src/preferences.py, line: 117 #: src/preferences.py:119 msgid "Show page numbers on thumbnails." msgstr "Показывать номера страниц на миниатюрах." # # File: src/preferences.py, line: 124 #: src/preferences.py:126 msgid "Magnifying Glass" msgstr "Лупа" # # File: src/preferences.py, line: 125 #: src/preferences.py:127 msgid "Magnifying glass size (in pixels)" msgstr "Размер лупы (в пикселях)" # # File: src/preferences.py, line: 131 #: src/preferences.py:133 msgid "Set the size of the magnifying glass. It is a square with a side of this many pixels." msgstr "Устанавливает размер стороны квадратной лупы." # # File: src/preferences.py, line: 133 #: src/preferences.py:135 msgid "Magnification factor" msgstr "Коэффициент увеличения" # # File: src/preferences.py, line: 140 #: src/preferences.py:142 msgid "Set the magnification factor of the magnifying glass." msgstr "Устанавливает коэффициент увеличения лупы." # # File: src/preferences.py, line: 143 #: src/preferences.py:145 msgid "Image scaling" msgstr "Масштабирование изображений" # # File: src/preferences.py, line: 144 #: src/preferences.py:146 msgid "Stretch small images." msgstr "Растягивать небольшие изображения." # # File: src/preferences.py, line: 148 #: src/preferences.py:150 msgid "Stretch images to a size that is larger than their original size if the current zoom mode requests it. If this preference is unset, images are never scaled to be larger than their original size." msgstr "Растягивать изображения на размеры большие оригинальных, если текущий режим масштабирования предусматривает это. Если эта опция отключена, изображение никогда не будет растянуто больше чем на свой размер." # # File: src/preferences.py, line: 151 #: src/preferences.py:153 msgid "Transparency" msgstr "Прозрачность" # # File: src/preferences.py, line: 153 #: src/preferences.py:155 msgid "Use checkered background for transparent images." msgstr "Использовать клетчатый фон для прозрачных изображений." # # File: src/preferences.py, line: 159 #: src/preferences.py:161 msgid "Use a grey checkered background for transparent images. If this preference is unset, the background is plain white instead." msgstr "Использовать серый клетчатый фон для прозрачных изображений. Если это опция отключена, в качестве фона будет использоваться сплошной белый цвет." # # File: src/preferences.py, line: 161 #: src/preferences.py:163 msgid "Appearance" msgstr "Внешний вид" # # File: src/preferences.py, line: 167 #: src/preferences.py:169 msgid "Scroll" msgstr "Скроллирование" # # File: src/preferences.py, line: 169 #: src/preferences.py:171 msgid "Use smart space key scrolling." msgstr "Использовать умное скроллирование клавишей пробел." # # File: src/preferences.py, line: 174 #: src/preferences.py:176 msgid "Use smart scrolling with the space key. Normally the space key scrolls only right down (or up when shift is pressed), but with this preference set it also scrolls sideways and so tries to follow the natural reading order of the comic book." msgstr "Обычно пробел скроллирует только вниз (или вверх, если нажат Shift), с этой опцией пробел будет скроллировать горизонтально, имитируя обыкновенное направление чтения комикса." #: src/preferences.py:180 msgid "Flip pages when scrolling off the edges of the page." msgstr "Перелистывать при достижении края страницы." #: src/preferences.py:185 msgid "Flip pages when scrolling \"off the page\" with the scroll wheel or with the arrow keys. It takes three consecutive \"steps\" with the scroll wheel or the arrow keys for the pages to be flipped." msgstr "Перелистывать при скроллировании \"за страницу\" колесиком или стрелками." # # File: src/preferences.py, line: 177 # File: src/ui.py, line: 296 #: src/preferences.py:188 #: src/ui.py:298 msgid "Double page mode" msgstr "Двухстраничный режим" # # File: src/preferences.py, line: 179 #: src/preferences.py:190 msgid "Flip two pages in double page mode." msgstr "Перелистывать по две страницы в двухстраничном режиме." # # File: src/preferences.py, line: 184 #: src/preferences.py:195 msgid "Flip two pages, instead of one, each time we flip pages in double page mode." msgstr "Перелистывать две страницы вместо одной в двухстраничном режиме." # # File: src/preferences.py, line: 187 #: src/preferences.py:198 msgid "Show only one wide image in double page mode." msgstr "Показывать только одно широкое изображение в двухстраничном режиме." # # File: src/preferences.py, line: 193 #: src/preferences.py:204 msgid "Display only one image in double page mode, if the image's width exceeds its height. The result of this is that scans that span two pages are displayed properly (i.e. alone) also in double page mode." msgstr "Показывать только одно изображение в двухстраничном режиме, если его ширина больше высоты. В этом случае сканы, которые захватывают две страницы, будут отображаться корректно (т. е. по одному) в двухстраничном режиме." # # File: src/preferences.py, line: 196 #: src/preferences.py:207 msgid "Files" msgstr "Файлы" # # File: src/preferences.py, line: 198 #: src/preferences.py:209 msgid "Automatically open the next archive." msgstr "Автоматически открывать следующий архив." # # File: src/preferences.py, line: 203 #: src/preferences.py:214 msgid "Automatically open the next archive in the directory when flipping past the last page, or the previous archive when flipping past the first page." msgstr "Автоматически открывать следующий архив в текущей директории, при переворачивании последней страницы, или предыдущий архив, при переворачивании первой страницы назад." # # File: src/preferences.py, line: 206 #: src/preferences.py:217 msgid "Automatically open the last viewed file on startup." msgstr "Автоматически открывать последний просмотренный файл при запуске." # # File: src/preferences.py, line: 211 #: src/preferences.py:222 msgid "Automatically open, on startup, the file that was open when Comix was last closed." msgstr "Автоматически при запуске открывать тот файл, который был открыт при выходе из Comix в последний раз." # # File: src/preferences.py, line: 214 #: src/preferences.py:225 msgid "Store information about recently opened files." msgstr "Сохранять информацию о последних открытых файлах." # # File: src/preferences.py, line: 219 #: src/preferences.py:230 msgid "Add information about all files opened from within Comix to the shared recent files list." msgstr "Добавлять информацию о файлах открытых Comix в общий список недавно использовавшихся документов." # # File: src/preferences.py, line: 222 #: src/preferences.py:233 msgid "Store thumbnails for opened files." msgstr "Сохранять миниатюры для открытых файлов." # # File: src/preferences.py, line: 227 #: src/preferences.py:238 msgid "Store thumbnails for opened files according to the freedesktop.org specification. These thumbnails are shared by many other applications, such as most file managers." msgstr "Сохранять миниатюры открываемых файлов согласно спецификации freedesktop.org. Эти миниатюры используются многими другими приложениями, например большинством файловых менеджеров." # # File: src/preferences.py, line: 230 #: src/preferences.py:241 msgid "Cache" msgstr "Кэш" # # File: src/preferences.py, line: 231 #: src/preferences.py:242 msgid "Use a cache to speed up browsing." msgstr "Использовать кэш для ускорения просмотра." # # File: src/preferences.py, line: 235 #: src/preferences.py:246 msgid "Cache the images that are next to the currently viewed image in order to speed up browsing. Since the speed improvements are quite big, it is recommended that you have this preference set, unless you are running short on free RAM." msgstr "Кэшировать следующее изображение, для увеличения скорости. Улучшение производительности заметно, поэтому рекомендуется включить эту опцию, но только если у вас достаточно свободной памяти." # # File: src/preferences.py, line: 237 #: src/preferences.py:248 msgid "Behaviour" msgstr "Поведение" # # File: src/preferences.py, line: 243 #: src/preferences.py:254 msgid "Default modes" msgstr "Режимы по умолчанию" # # File: src/preferences.py, line: 245 #: src/preferences.py:256 msgid "Use double page mode by default." msgstr "Двухстраничный режим." # # File: src/preferences.py, line: 250 #: src/preferences.py:261 msgid "Use fullscreen by default." msgstr "Полноэкранный режим." # # File: src/preferences.py, line: 255 #: src/preferences.py:266 msgid "Use manga mode by default." msgstr "Режим манги." # # File: src/preferences.py, line: 260 #: src/preferences.py:271 msgid "Default zoom mode" msgstr "Режим масштабирования по умолчанию" # # File: src/preferences.py, line: 262 # File: src/ui.py, line: 288 #: src/preferences.py:273 #: src/ui.py:290 msgid "Best fit mode" msgstr "Наилучший масштаб" # # File: src/preferences.py, line: 263 # File: src/ui.py, line: 290 #: src/preferences.py:274 #: src/ui.py:292 msgid "Fit width mode" msgstr "Растянуть по ширине" # # File: src/preferences.py, line: 264 # File: src/ui.py, line: 292 #: src/preferences.py:275 #: src/ui.py:294 msgid "Fit height mode" msgstr "Растянуть по высоте" # # File: src/preferences.py, line: 265 # File: src/ui.py, line: 294 #: src/preferences.py:276 #: src/ui.py:296 msgid "Manual zoom mode" msgstr "Ручное масштабирование" # # File: src/preferences.py, line: 271 #: src/preferences.py:282 msgid "Fullscreen" msgstr "Полноэкранный режим" # # File: src/preferences.py, line: 273 #: src/preferences.py:284 msgid "Automatically hide all toolbars in fullscreen." msgstr "Автоматически скрывать все панели инструментов в полноэкранном режиме." # # File: src/preferences.py, line: 279 #: src/preferences.py:290 msgid "Slideshow" msgstr "Слайдшоу" # # File: src/preferences.py, line: 280 #: src/preferences.py:291 msgid "Slideshow delay (in seconds)" msgstr "Задержка слайдшоу (в секундах)" # # File: src/preferences.py, line: 289 #: src/preferences.py:300 msgid "Comment extensions" msgstr "Расширения комментариев" # # File: src/preferences.py, line: 295 #: src/preferences.py:306 msgid "Treat all files found within archives, that have one of these file endings, as comments." msgstr "Считать все файлы, найденные внутри архивов, которые имеют эти расширения, комментариями" #: src/preferences.py:309 msgid "Rotation" msgstr "Поворот" #: src/preferences.py:311 msgid "Automatically rotate images according to their metadata." msgstr "Автоматически разворачивать изображения в соответствии с метаданными" #: src/preferences.py:316 msgid "Automatically rotate images when an orientation is specified in the image metadata, such as in an Exif tag." msgstr "Автоматически разворачивать изображения, если ориентация указана в метаданных, например в Exif тэге." # # File: src/preferences.py, line: 297 #: src/preferences.py:318 msgid "Display" msgstr "Вид" # # File: src/properties.py, line: 89 #: src/properties.py:94 msgid "Properties" msgstr "Свойства" # # File: src/properties.py, line: 114 #: src/properties.py:119 #, python-format msgid "%d comments" msgstr "%d комментариев" # # File: src/properties.py, line: 124 # File: src/properties.py, line: 159 #: src/properties.py:129 #: src/properties.py:164 msgid "Location" msgstr "Расположение" # # File: src/properties.py, line: 126 # File: src/properties.py, line: 160 #: src/properties.py:131 #: src/properties.py:165 msgid "Accessed" msgstr "Доступ" # # File: src/properties.py, line: 128 # File: src/properties.py, line: 162 #: src/properties.py:133 #: src/properties.py:167 msgid "Modified" msgstr "Модифицирован" # # File: src/properties.py, line: 130 # File: src/properties.py, line: 164 #: src/properties.py:135 #: src/properties.py:169 msgid "Permissions" msgstr "Права" # # File: src/properties.py, line: 131 # File: src/properties.py, line: 165 #: src/properties.py:136 #: src/properties.py:170 msgid "Owner" msgstr "Владелец" # # File: src/properties.py, line: 135 #: src/properties.py:140 msgid "Archive" msgstr "Архив" # # File: src/properties.py, line: 169 #: src/properties.py:174 msgid "Image" msgstr "Изображение" # # File: src/thumbremover.py, line: 22 #: src/thumbremover.py:24 msgid "Thumbnail maintenance" msgstr "Управление миниатюрами" # # File: src/thumbremover.py, line: 24 #: src/thumbremover.py:26 msgid "Cleanup" msgstr "Очистить" # # File: src/thumbremover.py, line: 36 #: src/thumbremover.py:38 msgid "Cleanup thumbnails" msgstr "Очистить миниатюры" # # File: src/thumbremover.py, line: 46 #: src/thumbremover.py:48 msgid "Thumbnails for files (such as image files and comic book archives) are stored in your home directory. Many different applications use and create these thumbnails, but sometimes thumbnails remain even though the original files have been removed - wasting space. This dialog can cleanup your stored thumbnails by removing orphaned and outdated thumbnails." msgstr "Миниатюры для файлов (например изображений и архивов комиксов) хранятся в вашей домашней директории. Много различных приложений использует и создает эти миниатюры, но иногда миниатюры остаются, даже когда оригинальные файлы удалены, и занимают место на диске. Этот диалог очищает сохраненные миниатюры, удаляя осиротевшие и устаревшие." # # File: src/thumbremover.py, line: 58 #: src/thumbremover.py:60 msgid "Thumbnail directory" msgstr "Каталог миниатюр" # # File: src/thumbremover.py, line: 65 #: src/thumbremover.py:67 msgid "Total number of thumbnails" msgstr "Общее количество миниатюр" # # File: src/thumbremover.py, line: 68 # File: src/thumbremover.py, line: 75 #: src/thumbremover.py:70 #: src/thumbremover.py:77 msgid "Calculating..." msgstr "Подсчет..." # # File: src/thumbremover.py, line: 72 #: src/thumbremover.py:74 msgid "Total size of thumbnails" msgstr "Общий размер миниатюр" # # File: src/thumbremover.py, line: 80 #: src/thumbremover.py:82 msgid "Do you want to cleanup orphaned and outdated thumbnails now?" msgstr "Вы хотите удалить осиротевшие и устаревшие миниатюры?" # # File: src/thumbremover.py, line: 116 #: src/thumbremover.py:118 msgid "Removing thumbnails" msgstr "Удаление миниатюр" # # File: src/thumbremover.py, line: 135 #: src/thumbremover.py:137 msgid "Number of removed thumbnails" msgstr "Количество удаленных миниатюр" # # File: src/thumbremover.py, line: 142 #: src/thumbremover.py:144 msgid "Total size of removed thumbnails" msgstr "Общий размер удаленных миниатюр" # # File: src/thumbremover.py, line: 193 #: src/thumbremover.py:195 #, python-format msgid "Removed thumbnail for '%s'" msgstr "Удалена миниатюра для '%s'" # # File: src/ui.py, line: 34 #: src/ui.py:34 msgid "_Next page" msgstr "_Следующая страница" # # File: src/ui.py, line: 36 #: src/ui.py:36 msgid "_Previous page" msgstr "П_редыдущая страница" # # File: src/ui.py, line: 38 #: src/ui.py:38 msgid "_First page" msgstr "_Первая страница" # # File: src/ui.py, line: 40 #: src/ui.py:40 msgid "_Last page" msgstr "П_оследняя страница" # # File: src/ui.py, line: 42 #: src/ui.py:42 msgid "_Zoom in" msgstr "_Приблизить" # # File: src/ui.py, line: 44 #: src/ui.py:44 msgid "Zoom _out" msgstr "_Отдалить" # # File: src/ui.py, line: 46 #: src/ui.py:46 msgid "O_riginal size" msgstr "О_ригинальный размер" # # File: src/ui.py, line: 48 #: src/ui.py:48 msgid "_Close" msgstr "_Закрыть" # # File: src/ui.py, line: 50 #: src/ui.py:50 msgid "_Quit" msgstr "_Выход" # # File: src/ui.py, line: 52 #: src/ui.py:52 msgid "_Rotate 90 degrees CW" msgstr "Повернуть на 90 градусов по _часовой стрелке" # # File: src/ui.py, line: 54 #: src/ui.py:54 msgid "Rotate 180 de_grees" msgstr "П_овернуть на 180 градусов" # # File: src/ui.py, line: 56 #: src/ui.py:56 msgid "Rotat_e 90 degrees CCW" msgstr "Повернуть на 90 градусов _против часовой стрелки" # # File: src/ui.py, line: 58 #: src/ui.py:58 msgid "Fli_p horizontally" msgstr "Отразить по _горизонтали" # # File: src/ui.py, line: 60 #: src/ui.py:60 msgid "Flip _vertically" msgstr "Отразить по _вертикали" # # File: src/ui.py, line: 62 #: src/ui.py:62 msgid "Manual _Zoom" msgstr "Ручное масш_табирование" # # File: src/ui.py, line: 63 #: src/ui.py:63 msgid "Open _recent" msgstr "Открыть _недавние" # # File: src/ui.py, line: 64 #: src/ui.py:64 msgid "_Bookmarks" msgstr "_Закладки" # # File: src/ui.py, line: 65 #: src/ui.py:65 msgid "T_oolbars" msgstr "_Инструменты" # # File: src/ui.py, line: 66 #: src/ui.py:66 msgid "_Edit" msgstr "_Редактировать" # # File: src/ui.py, line: 67 #: src/ui.py:67 msgid "_File" msgstr "_Файл" # # File: src/ui.py, line: 68 #: src/ui.py:68 msgid "_View" msgstr "_Вид" # # File: src/ui.py, line: 69 #: src/ui.py:69 msgid "_Go" msgstr "_Перейти" # # File: src/ui.py, line: 70 #: src/ui.py:70 msgid "_Help" msgstr "_Помощь" # # File: src/ui.py, line: 71 #: src/ui.py:71 msgid "_Transform" msgstr "_Преобразовать" # # File: src/ui.py, line: 75 #: src/ui.py:75 msgid "_Fullscreen" msgstr "Полно_экранный режим" # # File: src/ui.py, line: 77 #: src/ui.py:77 msgid "_Double page mode" msgstr "_Двухстраничный страниц" # # File: src/ui.py, line: 79 #: src/ui.py:79 msgid "_Toolbar" msgstr "_Панель инструментов" # # File: src/ui.py, line: 81 #: src/ui.py:81 msgid "_Menubar" msgstr "_Меню" # # File: src/ui.py, line: 83 #: src/ui.py:83 msgid "St_atusbar" msgstr "_Строка состояния" # # File: src/ui.py, line: 85 #: src/ui.py:85 msgid "S_crollbars" msgstr "С_кроллеры" # # File: src/ui.py, line: 87 #: src/ui.py:87 msgid "Th_umbnails" msgstr "Ми_ниатюры" # # File: src/ui.py, line: 89 #: src/ui.py:89 msgid "H_ide all" msgstr "Скрыть _все" # # File: src/ui.py, line: 91 #: src/ui.py:91 msgid "_Manga mode" msgstr "Режим _манги" # # File: src/ui.py, line: 93 #: src/ui.py:93 msgid "_Keep transformation" msgstr "_Сохранить преобразования" # # File: src/ui.py, line: 95 #: src/ui.py:95 msgid "Run _slideshow" msgstr "Слайд_шоу" # # File: src/ui.py, line: 97 #: src/ui.py:97 msgid "Magnifying _glass" msgstr "_Лупа" # # File: src/ui.py, line: 101 #: src/ui.py:103 msgid "_Best fit mode" msgstr "_Наилучший масштаб" # # File: src/ui.py, line: 103 #: src/ui.py:105 msgid "Fit _width mode" msgstr "Растянуть по _ширине" # # File: src/ui.py, line: 105 #: src/ui.py:107 msgid "Fit _height mode" msgstr "Растянуть по _высоте" # # File: src/ui.py, line: 107 #: src/ui.py:109 msgid "M_anual zoom mode" msgstr "_Ручное масштабирование" # # File: src/ui.py, line: 113 #: src/ui.py:115 msgid "_About" msgstr "_О программе" # # File: src/ui.py, line: 115 #: src/ui.py:117 msgid "_View comments..." msgstr "_Показать комментарии..." # # File: src/ui.py, line: 117 #: src/ui.py:119 msgid "_Edit archive..." msgstr "_Редактировать архив..." # # File: src/ui.py, line: 119 #: src/ui.py:121 msgid "_Open..." msgstr "_Открыть..." # # File: src/ui.py, line: 121 #: src/ui.py:123 msgid "_Properties" msgstr "_Свойства" # # File: src/ui.py, line: 123 #: src/ui.py:125 msgid "_Enhance image..." msgstr "_Улучшение изображения..." # # File: src/ui.py, line: 126 #: src/ui.py:128 msgid "_Thumbnail maintenance..." msgstr "_Управление миниатюрами... " # # File: src/ui.py, line: 128 #: src/ui.py:130 msgid "Pr_eferences" msgstr "_Настройки" # # File: src/ui.py, line: 132 #: src/ui.py:134 msgid "_Library..." msgstr "_Библиотека..." # # File: src/ui.py, line: 282 #: src/ui.py:284 msgid "First page" msgstr "Первая страница" # # File: src/ui.py, line: 284 #: src/ui.py:286 msgid "Previous page" msgstr "Предыдущая страница" # # File: src/ui.py, line: 285 #: src/ui.py:287 msgid "Next page" msgstr "Следующая страница" # # File: src/ui.py, line: 286 #: src/ui.py:288 msgid "Last page" msgstr "Последняя страница" # # File: src/ui.py, line: 297 #: src/ui.py:299 msgid "Manga mode" msgstr "Режим манги" # # File: src/ui.py, line: 298 #: src/ui.py:300 msgid "Magnifying glass" msgstr "Лупа" comix-4.0.4/messages/ru/LC_MESSAGES/comix.mo0000644000175000001440000007342611137150003017234 0ustar sorkusersTa &)-<W YEd x     M9 T_!g.].53d$*ROB8k     !E67|+"("H"k %%  5 GUg pzrJ <   ! ! 2!?! N!\! b!m!~!!!!!!4"#"L"6# I#+T### ## ## ####A$U$ i$u$$ $$$$$$$%!% 5% @%M%^%Hg%%% %%%% & && 6&B& H&S& X&d&+x&4&&b' u' ' ' 'O' ' ((#/(S(h(|((.($()")6) I))S)})))))) ) ) )))*5 *UC* *-* **+ + +?=+}, ,.,,"q--W. m. w. . .#.)..r/1 0;0O0e0 0a01 2)2B2 b2Xo22!2{20w3 333445-5gK5 5 5 55 55 566 62686I6\6n6 t6 6666 6 6 66 666 67 7"7<7 E7P7V7h7q7=9Y9 k9Jx9e9): ?:<L::$:#::9;/;<&<C<a<u<<<<\9== =:=T=G>K ?W?{?6X@LAAB(CCbDiD!|D@DD!DE^EvF%FF#F)FY GdgG-GGHB,H7oH8HCH7$I@\I>IJI#'JKJ gJ#qJJ$JAJK2KIKPKLcM'N'+N%SN%yN+N)N NO%O%DO$jO$O-O)O PQPePxIQ%Q%QVR!eR RR#RRR5SHS _S)lSS%!TGTcT!T#TTT,T+$UPU YUcU+lUU,U+UV_"VVV#V%V8V&*WQW `W-WWWWW X#XJ3Xd~XXlYYY%YYfYQZbZ4sZ<Z$Z [++[&W[>~[;[-[!'\.I\x\<\ \W\-8]f]u]]]]]]] ^P^Uo^^~^KU_6_ __7_O.`!~b b\b@cK_d{dA'fiffff@fAf8g hVi\i+|i3iiji0Zl;l(l:l+mDm(mMn _nfko(oDo&@pgp<~p_q8rTrrrss".s"Qsts%ss,ss)t//t-_t tt&tt t0t$,uQuju u$uu&uu uOv0Xv&vvv+vw7H*0\;F:-pw6uKf'm<3ABs1!>k8 YdrS=c)Wt%TLD#l ^ aERy[ b}{ChJV]/no2x .,59Mg+(~v?O$`jI|4GzZXP"QeUNi_q&@ %d comments%d pages(Copy)A collection by that name already exists.A file named '%s' already exists. Do you want to replace it?AboutAccessedAdd a new empty collection.Add booksAdd books to '%s'.Add collectionAdd information about all files opened from within Comix to the shared recent files list.Add more books to the library.Add new collection?Added booksAdding '%s'...Adding booksAll ArchivesAll booksAll filesAll imagesAll stored bookmarks will be removed. Are you sure that you want to continue?Always use this selected colour as the background colour.AppearanceArchiveArchives are stored as ZIP files.Automatically add the books to this collectionAutomatically adjust contrast (both lightness and darkness), separately for each colour band.Automatically adjust contrast.Automatically hide all toolbars in fullscreen.Automatically open the last viewed file on startup.Automatically open the next archive in the directory when flipping past the last page, or the previous archive when flipping past the first page.Automatically open the next archive.Automatically open, on startup, the file that was open when Comix was last closed.Automatically pick a background colour that fits the viewed image.Automatically rotate images according to their metadata.Automatically rotate images when an orientation is specified in the image metadata, such as in an Exif tag.BackgroundBehaviourBest fit modeBrazilian Portuguese translationBrightnessBzip2 compressed tar archiveCacheCache the images that are next to the currently viewed image in order to speed up browsing. Since the speed improvements are quite big, it is recommended that you have this preference set, unless you are running short on free RAM.Calculating...Catalan translationCleanupCleanup thumbnailsClear all bookmarks?Comix is an image viewer specifically designed to handle comic books.Comix is licensed under the GNU General Public License.Comment extensionsCommentsContrastCould not add a new collection called '%s'.Could not change the name to '%s'.Could not duplicate collection.Could not find RAR file extractor!Could not open %s: Is a directory.Could not open %s: No such file.Could not open %s: Permission denied.Could not open %s: Unknown file type.Could not read %sCover sizeCreditsCroatian translationCzech translationDefault modesDefault zoom modeDefaultsDeveloperDisplayDisplay only one image in double page mode, if the image's width exceeds its height. The result of this is that scans that span two pages are displayed properly (i.e. alone) also in double page mode.Display only those books that have the specified text string in their full path. The search is not case sensitive.Do you want to cleanup orphaned and outdated thumbnails now?Double page modeDuplicate collectionDutch translationEdit archiveEdit bookmarksEnhance imageFilesFirst pageFit _height modeFit _width modeFit height modeFit width modeFli_p horizontallyFlip _verticallyFlip pages when scrolling "off the page" with the scroll wheel or with the arrow keys. It takes three consecutive "steps" with the scroll wheel or the arrow keys for the pages to be flipped.Flip pages when scrolling off the edges of the page.Flip two pages in double page mode.Flip two pages, instead of one, each time we flip pages in double page mode.French translationFullscreenGerman translation and Nautilus thumbnailerGreek translationGzip compressed tar archiveH_ide allHungarian translationIcon designImageImage scalingImagesImportIndonesian translationIt reads ZIP, RAR and tar archives, as well as plain image files.Italian translationJPEG imagesJapanese translationKorean translationLast pageLibraryLocationM_anual zoom modeMagnification factorMagnifying GlassMagnifying _glassMagnifying glassMagnifying glass size (in pixels)Manga modeManual _ZoomManual zoom modeModifiedMove books from '%(source collection)s' to '%(destination collection)s'.NameNew collectionNext pageNo images in '%s'Number of removed thumbnailsO_riginal sizeOpenOpen _recentOpen the selected book.Other filesOwnerPNG imagesPagePermissionsPersian translationPlease enter a name for the new collection.Please enter a new name for the selected collection.Please note that the only files that are automatically added to this list are those files in archives that Comix recognizes as comments.Polish translationPr_eferencesPreferencesPrevious pagePropertiesPut the collection '%(subcollection)s' in the collection '%(supercollection)s'.RAR archiveRAR archivesRemove books from the library?Remove collection from the library?Remove collection...Remove from archiveRemove from the library...Remove from this collectionRemoved %(num)d book(s) from '%(collection)s'.Removed %d book(s) from the library.Removed thumbnail for '%s'Removing thumbnailsRename collection?Rename...Replacing it will overwrite its contents.RootRotat_e 90 degrees CCWRotate 180 de_greesRotationRun _slideshowRussian translationSLIDESHOWS_crollbarsSaturationSaveScrollSearchSet the magnification factor of the magnifying glass.Set the size of the magnifying glass. It is a square with a side of this many pixels.SharpnessShow only one wide image in double page mode.Show page numbers on thumbnails.Simplified Chinese translationSizeSlideshowSlideshow delay (in seconds)Some old files (that were used for storing preferences, the library, bookmarks etc. for older versions of Comix) were found on your computer. If you do not plan on using the older versions of Comix again, you should remove these files in order to save some disk space. Do you want these files to be removed for you now?Spanish translationSt_atusbarStore information about recently opened files.Store thumbnails for opened files according to the freedesktop.org specification. These thumbnails are shared by many other applications, such as most file managers.Store thumbnails for opened files.Stretch images to a size that is larger than their original size if the current zoom mode requests it. If this preference is unset, images are never scaled to be larger than their original size.Stretch small images.T_oolbarsTar archiveTar archivesTh_umbnailsThe new archive could not be saved!The original files have not been removed.The selected books will be removed from the library (but the original files will be untouched). Are you sure that you want to continue?The selected collection will be removed from the library (but the books and subcollections in it will remain). Are you sure that you want to continue?There are deprecated files left on your computer.Thumbnail directoryThumbnail maintenanceThumbnail size (in pixels)ThumbnailsThumbnails for files (such as image files and comic book archives) are stored in your home directory. Many different applications use and create these thumbnails, but sometimes thumbnails remain even though the original files have been removed - wasting space. This dialog can cleanup your stored thumbnails by removing orphaned and outdated thumbnails.Total number of thumbnailsTotal size of removed thumbnailsTotal size of thumbnailsTraditional Chinese translationTransparencyTreat all files found within archives, that have one of these file endings, as comments.Unknown filetypeUse a cache to speed up browsing.Use a grey checkered background for transparent images. If this preference is unset, the background is plain white instead.Use checkered background for transparent images.Use double page mode by default.Use dynamic background colour.Use fullscreen by default.Use manga mode by default.Use smart scrolling with the space key. Normally the space key scrolls only right down (or up when shift is pressed), but with this preference set it also scrolls sideways and so tries to follow the natural reading order of the comic book.Use smart space key scrolling.Use this colour as backgroundYou need either the rar or the unrar program installed in order to read RAR (.cbr) files.ZIP archiveZIP archivesZoom _out_About_Add bookmark_Best fit mode_Bookmarks_Clear bookmarks..._Close_Double page mode_Edit_Edit archive..._Edit bookmarks..._Enhance image..._File_First page_Fullscreen_Go_Help_Keep transformation_Last page_Library..._Manga mode_Menubar_Next page_Open..._Previous page_Properties_Quit_Rotate 90 degrees CW_Thumbnail maintenance..._Toolbar_Transform_View_View comments..._Zoom inProject-Id-Version: Comix 3.6.3 Report-Msgid-Bugs-To: POT-Creation-Date: 2008-11-22 02:42+0100 PO-Revision-Date: 2009-01-25 23:47+0300 Last-Translator: Artyom Smirnov Language-Team: Artyom Smirnov MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit Generated-By: pygettext.py 1.5 X-Poedit-Language: Russian X-Poedit-Country: RUSSIAN FEDERATION X-Poedit-SourceCharset: utf-8 %d комментариев%d страниц(Копия)Коллекция с таким именем уже существует.Файл с именем '%s' уже существует. Вы хотите заменить его?О программеДоступДобавить новую пустую коллекцию.Добавить книгиДобавить книги в '%s'.Добавить коллекциюДобавлять информацию о файлах открытых Comix в общий список недавно использовавшихся документов.Добавить еще книг в библиотеку.Добавить новую коллекцию?Добавлены книгиДобавление '%s'...Добавление книгВсе архивыВсе книгиВсе файлыИзображенияВсе сохраненные закладки будут удалены. Вы уверены, что хотите продолжить?Всегда использовать выбранный цвет, как цвет фона.Внешний видАрхивАрхивы сохраняются как ZIP файлы.Автоматически добавить книги в эту коллекцию.Автоматически подстраивать контрастность (светлые и темные участки), отдельно для каждой цветовой полосы.Автоматически подстроить контрастность.Автоматически скрывать все панели инструментов в полноэкранном режиме.Автоматически открывать последний просмотренный файл при запуске.Автоматически открывать следующий архив в текущей директории, при переворачивании последней страницы, или предыдущий архив, при переворачивании первой страницы назад.Автоматически открывать следующий архив.Автоматически при запуске открывать тот файл, который был открыт при выходе из Comix в последний раз.Автоматически подбирать цвет фона, который подходит к показываемому изображению.Автоматически разворачивать изображения в соответствии с метаданнымиАвтоматически разворачивать изображения, если ориентация указана в метаданных, например в Exif тэге.ФонПоведениеНаилучший масштабБразильский Португальский переводЯркостьTar архив сжатый bzip2КэшКэшировать следующее изображение, для увеличения скорости. Улучшение производительности заметно, поэтому рекомендуется включить эту опцию, но только если у вас достаточно свободной памяти.Подсчет...Каталанский переводОчиститьОчистить миниатюрыОчистить все закладки?Comix - это просмотрщик ориентированный на комиксы.Comix распространяется согласно лицензии GNU General Public License.Расширения комментариевКомментарииКонтрастностьНе могу добавить новую коллекцию '%s'.Невозможно изменить имя на '%s'.Не могу скопировать коллекцию.Не могу найти разархиватор RAR файлов!Не могу открыть %s: Это каталог.Не могу открыть %s: Нет такого файла.Не могу открыть %s: Не хватает прав.Не могу открыть %s: Неизвестный тип файла.Не могу прочитать %sРазмер обложкиО насХорватский переводЧешский переводРежимы по умолчаниюРежим масштабирования по умолчаниюПо умолчаниюРазработчикВидПоказывать только одно изображение в двухстраничном режиме, если его ширина больше высоты. В этом случае сканы, которые захватывают две страницы, будут отображаться корректно (т. е. по одному) в двухстраничном режиме.Показывать только те книги, в полном пути которых есть указанная строка. Поиск нечувствителен к регистру.Вы хотите удалить осиротевшие и устаревшие миниатюры?Двухстраничный режимКопировать коллекциюГолландский переводРедактировать архивРедактировать закладкиУлучшение изображенияФайлыПервая страницаРастянуть по _высотеРастянуть по _ширинеРастянуть по высотеРастянуть по ширинеОтразить по _горизонталиОтразить по _вертикалиПерелистывать при скроллировании "за страницу" колесиком или стрелками.Перелистывать при достижении края страницы.Перелистывать по две страницы в двухстраничном режиме.Перелистывать две страницы вместо одной в двухстраничном режиме.Французский переводПолноэкранный режимНемецкий перевод и генератор миниатюр для NautilusГреческий переводTar архив сжатый gzipСкрыть _всеВенгерский переводДизайн иконокИзображениеМасштабирование изображенийИзображенияИмпортИндонезийский переводОн читает ZIP, RAR и tar архивы также хорошо, как обыкновенные файлы изображений.Итальянский переводJPEG изображенияЯпонский переводКорейский переводПоследняя страницаБиблиотекаРасположение_Ручное масштабированиеКоэффициент увеличенияЛупа_ЛупаЛупаРазмер лупы (в пикселях)Режим мангиРучное масш_табированиеРучное масштабированиеМодифицированПереместить книги из '%(source collection)s' в '%(destination collection)s'.ИмяНовая коллекцияСледующая страницаНет изображений в '%s'Количество удаленных миниатюрО_ригинальный размерОткрытьОткрыть _недавниеОткрыть выбранную книгу.Другие файлыВладелецPNG изображенияСтраницаПраваПерсидский переводПожалуйста, введите новое имя коллекции.Пожалуйста, введите новое имя для выбранной коллекции.Заметьте, в этом списке только те файлы, которые Comix считает комментариями.Польский перевод_НастройкиНастройкиПредыдущая страницаСвойстваПоместить коллекцию '%(subcollection)s' в коллекцию '%(supercollection)s'.RAR архивыRAR архивыУдалить книги из библиотеки?Удалить коллекцию из библиотеки?Удалить коллекцию...Удалить из архиваУдалить из библиотеки...Удалить из коллекцииУдалено %(num)d книг(а, и) из '%(collection)s'.Удалено %d книг(а, и) из коллекции.Удалена миниатюра для '%s'Удаление миниатюрПереименовать коллекцию?Переименовать...Замена перепишет его содержимое.КореньПовернуть на 90 градусов _против часовой стрелкиП_овернуть на 180 градусовПоворотСлайд_шоуРусский переводСЛАЙДШОУС_кроллерыНасыщенностьСохранитьСкроллированиеПоискУстанавливает коэффициент увеличения лупы.Устанавливает размер стороны квадратной лупы.РезкостьПоказывать только одно широкое изображение в двухстраничном режиме.Показывать номера страниц на миниатюрах.Упрощенный Китайский переводРазмерСлайдшоуЗадержка слайдшоу (в секундах)Некоторые устаревшие файлы (которые использовались для сохранения настроек, библиотеки, закладок и т. д. в старой версии Comix) были найдены на вашем компьютере. Если вы не планируете использовать старые версии Comix, вы можете удалить эти файлы и освободить немного места на диске. Вы хотите, чтобы эти файлы были удалены сейчас?Испанский перевод_Строка состоянияСохранять информацию о последних открытых файлах.Сохранять миниатюры открываемых файлов согласно спецификации freedesktop.org. Эти миниатюры используются многими другими приложениями, например большинством файловых менеджеров.Сохранять миниатюры для открытых файлов.Растягивать изображения на размеры большие оригинальных, если текущий режим масштабирования предусматривает это. Если эта опция отключена, изображение никогда не будет растянуто больше чем на свой размер.Растягивать небольшие изображения._ИнструментыTar архивTar архивыМи_ниатюрыНовый архив не может быть сохранен!Оригинальные файлы не были удалены.Выбранные книги будут удалены из библиотеки (но оригинальные файлы останутся не тронутыми). Вы уверены, что хотите продолжить?Выбранная коллекция будет удалена из библиотеки (но книги и подколлекции в ней останутся). Вы уверены, что хотите продолжить?На вашем компьютере остались устаревшие файлы.Каталог миниатюрУправление миниатюрамиРазмер миниатюр (в пикселях)МиниатюрыМиниатюры для файлов (например изображений и архивов комиксов) хранятся в вашей домашней директории. Много различных приложений использует и создает эти миниатюры, но иногда миниатюры остаются, даже когда оригинальные файлы удалены, и занимают место на диске. Этот диалог очищает сохраненные миниатюры, удаляя осиротевшие и устаревшие.Общее количество миниатюрОбщий размер удаленных миниатюрОбщий размер миниатюрТрадиционный Китайский переводПрозрачностьСчитать все файлы, найденные внутри архивов, которые имеют эти расширения, комментариямиНеизвестный тип файлаИспользовать кэш для ускорения просмотра.Использовать серый клетчатый фон для прозрачных изображений. Если это опция отключена, в качестве фона будет использоваться сплошной белый цвет.Использовать клетчатый фон для прозрачных изображений.Двухстраничный режим.Использовать динамический цвет фона.Полноэкранный режим.Режим манги.Обычно пробел скроллирует только вниз (или вверх, если нажат Shift), с этой опцией пробел будет скроллировать горизонтально, имитируя обыкновенное направление чтения комикса.Использовать умное скроллирование клавишей пробел.Использовать этот цвет как фонВам необходимо установить программу rar или unrar, для чтения RAR (.cbr) файлов.ZIP архивZIP архивы_Отдалить_О программе_Добавить закладку_Наилучший масштаб_Закладки_Очистить закладки..._Закрыть_Двухстраничный страниц_Редактировать_Редактировать архив..._Редактировать закладки..._Улучшение изображения..._Файл_Первая страницаПолно_экранный режим_Перейти_Помощь_Сохранить преобразованияП_оследняя страница_Библиотека...Режим _манги_Меню_Следующая страница_Открыть...П_редыдущая страница_Свойства_ВыходПовернуть на 90 градусов по _часовой стрелке_Управление миниатюрами... _Панель инструментов_Преобразовать_Вид_Показать комментарии..._Приблизитьcomix-4.0.4/messages/ca/LC_MESSAGES/comix.po0000644000175000001440000011606211137627234017205 0ustar sorkusers# Catalan/Valencian translaton of comix. # Copyright (C) 2005-2006 Pontus Ekberg # Pontus Ekberg , 2005 2006. # msgid "" msgstr "" "Project-Id-Version: Comix 3.2\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2008-11-22 02:42+0100\n" "PO-Revision-Date: 2009-01-25 22:33+0100\n" "Last-Translator: Carles Escrig i Royo \n" "Language-Team: CA \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" "Generated-By: pygettext.py 1.5\n" "X-Poedit-Language: Catalan\n" "X-Poedit-Country: SPAIN\n" # # File: src/about.py, line: 18 # File: src/about.py, line: 67 #: src/about.py:19 #: src/about.py:68 msgid "About" msgstr "Quant a" # # File: src/about.py, line: 55 #: src/about.py:56 msgid "Comix is an image viewer specifically designed to handle comic books." msgstr "Comix és un visualitzador d'imatges especialment dissenyat per a manipular còmics." # # File: src/about.py, line: 57 #: src/about.py:58 msgid "It reads ZIP, RAR and tar archives, as well as plain image files." msgstr "Llegeix arxius ZIP, RAR i tar, així com fitxers d'imatge." # # File: src/about.py, line: 59 #: src/about.py:60 msgid "Comix is licensed under the GNU General Public License." msgstr "Comix està llicenciat sota la Llicència Pública General GNU." # # File: src/about.py, line: 75 #: src/about.py:83 msgid "Developer" msgstr "Desenvolupador" # # File: src/about.py, line: 77 #: src/about.py:84 #: src/about.py:85 msgid "Simplified Chinese translation" msgstr "Traducció al xinès simplificat" # # File: src/about.py, line: 78 #: src/about.py:86 msgid "Spanish translation" msgstr "Traducció al castellà" # # File: src/about.py, line: 79 #: src/about.py:87 msgid "Brazilian Portuguese translation" msgstr "Traducció al portuguès brasiler" # # File: src/about.py, line: 81 #: src/about.py:88 msgid "German translation and Nautilus thumbnailer" msgstr "Traducció a l'alemany i generador de miniatures" # # File: src/about.py, line: 82 #: src/about.py:89 #: src/about.py:90 msgid "Italian translation" msgstr "Traducció a l'italià" # # File: src/about.py, line: 83 #: src/about.py:91 msgid "Dutch translation" msgstr "Traducció a l'holandès" # # File: src/about.py, line: 84 #: src/about.py:92 msgid "French translation" msgstr "Traducció al francès" # # File: src/about.py, line: 85 #: src/about.py:93 #: src/about.py:94 msgid "Polish translation" msgstr "Traducció al polonès" # # File: src/about.py, line: 86 #: src/about.py:95 msgid "Greek translation" msgstr "Traducció al grec" # # File: src/about.py, line: 87 #: src/about.py:96 msgid "Catalan translation" msgstr "Traducció al català" # # File: src/about.py, line: 88 #: src/about.py:97 #: src/about.py:98 msgid "Traditional Chinese translation" msgstr "Traducció al xinès tradicional" # # File: src/about.py, line: 89 #: src/about.py:99 msgid "Japanese translation" msgstr "Traducció al japonès" # # File: src/about.py, line: 90 #: src/about.py:100 msgid "Hungarian translation" msgstr "Traducció a l'hongarès" # # File: src/about.py, line: 91 #: src/about.py:101 msgid "Russian translation" msgstr "Traducció al rus" # # File: src/about.py, line: 92 #: src/about.py:102 msgid "Croatian translation" msgstr "Traducció al croat" # # File: src/about.py, line: 93 #: src/about.py:103 msgid "Korean translation" msgstr "Traducció al coreà" # # File: src/about.py, line: 94 #: src/about.py:104 msgid "Persian translation" msgstr "Traducció al persa" # # File: src/about.py, line: 95 #: src/about.py:105 msgid "Indonesian translation" msgstr "Traducció a l'indonesi" # # File: src/about.py, line: 96 #: src/about.py:106 msgid "Czech translation" msgstr "Traducció al xec" # # File: src/about.py, line: 97 #: src/about.py:107 msgid "Icon design" msgstr "Disseny d'icones" # # File: src/about.py, line: 106 #: src/about.py:114 msgid "Credits" msgstr "Crèdits" # # File: src/archive.py, line: 66 #: src/archive.py:66 msgid "Could not find RAR file extractor!" msgstr "No s'ha pogut trobar el descompressor RAR!" # # File: src/archive.py, line: 68 #: src/archive.py:68 msgid "You need either the rar or the unrar program installed in order to read RAR (.cbr) files." msgstr "Necessiteu tenir instal·lada l'aplicació rar o unrar per a poder llegir fitxers RAR (.cbr)." # # File: src/archive.py, line: 301 #: src/archive.py:305 msgid "ZIP archive" msgstr "Arxiu ZIP" # # File: src/archive.py, line: 302 #: src/archive.py:306 msgid "Tar archive" msgstr "Arxiu tar" # # File: src/archive.py, line: 303 #: src/archive.py:307 msgid "Gzip compressed tar archive" msgstr "Arxiu tar comprimit amb gzip" # # File: src/archive.py, line: 304 #: src/archive.py:308 msgid "Bzip2 compressed tar archive" msgstr "Arxiu tar comprimit amb bzip2" # # File: src/archive.py, line: 305 #: src/archive.py:309 msgid "RAR archive" msgstr "Arxiu RAR" # # File: src/bookmark.py, line: 27 #: src/bookmark.py:28 msgid "_Add bookmark" msgstr "_Afegeix un marcador" # # File: src/bookmark.py, line: 29 #: src/bookmark.py:30 msgid "_Edit bookmarks..." msgstr "_Edita els marcadors..." # # File: src/bookmark.py, line: 31 #: src/bookmark.py:32 msgid "_Clear bookmarks..." msgstr "_Esborra els marcadors..." # # File: src/bookmark.py, line: 77 #: src/bookmark.py:78 msgid "Clear all bookmarks?" msgstr "Voleu esborrar tots els marcadors?" # # File: src/bookmark.py, line: 79 #: src/bookmark.py:80 msgid "All stored bookmarks will be removed. Are you sure that you want to continue?" msgstr "S'esborraran tots els marcadors desats. Esteu segur que voleu continuar?" # # File: src/bookmark.py, line: 229 #: src/bookmark.py:230 msgid "Edit bookmarks" msgstr "Edita els marcadors" # # File: src/bookmark.py, line: 255 # File: src/edit.py, line: 267 #: src/bookmark.py:256 #: src/edit.py:270 msgid "Name" msgstr "Nom" # # File: src/bookmark.py, line: 256 #: src/bookmark.py:257 msgid "Page" msgstr "Pàgina" # # File: src/comment.py, line: 16 # File: src/preferences.py, line: 288 #: src/comment.py:16 #: src/preferences.py:299 msgid "Comments" msgstr "Comentaris" # # File: src/comment.py, line: 53 #: src/comment.py:53 #, python-format msgid "Could not read %s" msgstr "No s'ha pogut llegir %s" # # File: src/deprecated.py, line: 16 #: src/deprecated.py:16 msgid "There are deprecated files left on your computer." msgstr "Hi han fitxers antics a l'ordinador." # # File: src/deprecated.py, line: 22 #: src/deprecated.py:22 msgid "Some old files (that were used for storing preferences, the library, bookmarks etc. for older versions of Comix) were found on your computer. If you do not plan on using the older versions of Comix again, you should remove these files in order to save some disk space. Do you want these files to be removed for you now?" msgstr "S'han trobat alguns fitxers antics (que s'usaven en versions antigues de Comix per a desar les preferències, la biblioteca, els marcadors, etc.). Si no preteneu tornar a usar les versions antigues de Comix, hauríeu d'esborrar-los per tal d'estalviar espai. Voleu esborrar aquests fitxers ara?" # # File: src/edit.py, line: 28 #: src/edit.py:29 msgid "Edit archive" msgstr "Edita l'arxiu" # # File: src/edit.py, line: 36 #: src/edit.py:37 msgid "Import" msgstr "Importa" # # File: src/edit.py, line: 50 #: src/edit.py:51 msgid "Images" msgstr "Imatges" # # File: src/edit.py, line: 51 #: src/edit.py:52 msgid "Other files" msgstr "Altres fitxers" # # File: src/edit.py, line: 99 #: src/edit.py:101 msgid "The new archive could not be saved!" msgstr "No s'ha pogut desar l'arxiu nou!" # # File: src/edit.py, line: 101 #: src/edit.py:103 msgid "The original files have not been removed." msgstr "No s'han eliminat els fitxers originals." # # File: src/edit.py, line: 115 #: src/edit.py:117 msgid "Archives are stored as ZIP files." msgstr "Els arxius es desen en format ZIP." # # File: src/edit.py, line: 168 # File: src/edit.py, line: 285 #: src/edit.py:170 #: src/edit.py:288 msgid "Remove from archive" msgstr "Suprimeix del fitxer" # # File: src/edit.py, line: 255 #: src/edit.py:258 msgid "Please note that the only files that are automatically added to this list are those files in archives that Comix recognizes as comments." msgstr "Teniu en compte que només s'afegeixen automàticament a la llista els fitxers que hi ha als arxius que Comix reconeix com a comentaris." # # File: src/edit.py, line: 270 #: src/edit.py:273 msgid "Size" msgstr "Mida" # # File: src/enhance.py, line: 51 #: src/enhance.py:51 msgid "Enhance image" msgstr "Millora la imatge" # # File: src/enhance.py, line: 52 #: src/enhance.py:52 msgid "Defaults" msgstr "Predeterminats" # # File: src/enhance.py, line: 79 #: src/enhance.py:79 msgid "Brightness" msgstr "Brillantor" # # File: src/enhance.py, line: 90 #: src/enhance.py:90 msgid "Contrast" msgstr "Contrast" # # File: src/enhance.py, line: 101 #: src/enhance.py:101 msgid "Saturation" msgstr "Saturació" # # File: src/enhance.py, line: 112 #: src/enhance.py:112 msgid "Sharpness" msgstr "Agudesa" # # File: src/enhance.py, line: 126 #: src/enhance.py:126 msgid "Automatically adjust contrast." msgstr "Ajusta automàticament el contrast." # # File: src/enhance.py, line: 128 #: src/enhance.py:128 msgid "Automatically adjust contrast (both lightness and darkness), separately for each colour band." msgstr "Ajusta automàticament el contrast (tant la claror com la foscor), de manera independent per a cada banda de color." # # File: src/filechooser.py, line: 35 # File: src/library.py, line: 489 #: src/filechooser.py:38 #: src/library.py:490 msgid "Open" msgstr "Obre" # # File: src/filechooser.py, line: 39 #: src/filechooser.py:42 msgid "Save" msgstr "Desa" # # File: src/filechooser.py, line: 75 #: src/filechooser.py:78 msgid "All files" msgstr "Tots els fitxers" # # File: src/filechooser.py, line: 78 #: src/filechooser.py:81 msgid "All Archives" msgstr "Tots els arxius" # # File: src/filechooser.py, line: 82 #: src/filechooser.py:85 msgid "ZIP archives" msgstr "Arxius ZIP" # # File: src/filechooser.py, line: 84 #: src/filechooser.py:87 msgid "RAR archives" msgstr "Arxius RAR" # # File: src/filechooser.py, line: 86 #: src/filechooser.py:89 msgid "Tar archives" msgstr "Arxius tar" # # File: src/filechooser.py, line: 125 #: src/filechooser.py:134 #, python-format msgid "A file named '%s' already exists. Do you want to replace it?" msgstr "Ja existeix un fitxer anomenat '%s'. Voleu substituir-lo?" # # File: src/filechooser.py, line: 128 #: src/filechooser.py:137 msgid "Replacing it will overwrite its contents." msgstr "Substituint-lo hi sobreescriureu els continguts." # # File: src/filechooser.py, line: 171 # File: src/filechooser.py, line: 249 #: src/filechooser.py:182 #: src/filechooser.py:260 msgid "All images" msgstr "Totes les imatges" # # File: src/filechooser.py, line: 173 # File: src/filechooser.py, line: 251 #: src/filechooser.py:184 #: src/filechooser.py:262 msgid "JPEG images" msgstr "Imatges JPEG" # # File: src/filechooser.py, line: 174 # File: src/filechooser.py, line: 252 #: src/filechooser.py:185 #: src/filechooser.py:263 msgid "PNG images" msgstr "Imatges PNG" # # File: src/filechooser.py, line: 195 #: src/filechooser.py:206 msgid "Automatically add the books to this collection" msgstr "Afegeix automàticament els llibres a aquesta colecció" # # File: src/filehandler.py, line: 209 #: src/filehandler.py:209 #, python-format msgid "Could not open %s: Is a directory." msgstr "No s'ha pogut obrir %s: És un directori." # # File: src/filehandler.py, line: 213 #: src/filehandler.py:213 #, python-format msgid "Could not open %s: No such file." msgstr "No s'ha pogut obrir %s: No existeix el fitxer." # # File: src/filehandler.py, line: 217 #: src/filehandler.py:217 #, python-format msgid "Could not open %s: Permission denied." msgstr "No s'ha pogut obrir %s: S'ha denegat el permís." # # File: src/filehandler.py, line: 222 #: src/filehandler.py:222 #, python-format msgid "Could not open %s: Unknown file type." msgstr "No s'ha pogut obrir %s: Tipus de fitxer desconegut." # # File: src/filehandler.py, line: 285 #: src/filehandler.py:285 #, python-format msgid "No images in '%s'" msgstr "No hi ha imatges a '%s'" # # File: src/filehandler.py, line: 411 #: src/filehandler.py:413 msgid "Unknown filetype" msgstr "Tipus de fitxer desconegut" # # File: src/librarybackend.py, line: 272 # File: src/librarybackend.py, line: 274 #: src/librarybackend.py:273 #: src/librarybackend.py:275 msgid "(Copy)" msgstr "(Copia)" # # File: src/library.py, line: 38 #: src/library.py:38 msgid "Library" msgstr "Biblioteca" # # File: src/library.py, line: 150 #: src/library.py:150 msgid "Rename..." msgstr "Reanomena..." # # File: src/library.py, line: 152 #: src/library.py:152 msgid "Duplicate collection" msgstr "Duplica la col·lecció" # # File: src/library.py, line: 154 #: src/library.py:154 msgid "Remove collection..." msgstr "Elimina la col·lecció..." # # File: src/library.py, line: 202 #: src/library.py:202 msgid "All books" msgstr "Tots els llibres" # # File: src/library.py, line: 231 #: src/library.py:231 msgid "Remove collection from the library?" msgstr "Voleu eliminar la col·lecció de la biblioteca?" # # File: src/library.py, line: 233 #: src/library.py:233 msgid "The selected collection will be removed from the library (but the books and subcollections in it will remain). Are you sure that you want to continue?" msgstr "La col·lecció seleccionada s'esborrarà de la biblioteca (però els llibres i les subcol·leccions hi romandran). Esteu segur que voleu continuar?" # # File: src/library.py, line: 251 #: src/library.py:251 msgid "Rename collection?" msgstr "Voleu reanomenar la col·lecció?" # # File: src/library.py, line: 253 #: src/library.py:253 msgid "Please enter a new name for the selected collection." msgstr "Introduïu un nom nou per a la col·lecció seleccionada." # # File: src/library.py, line: 271 #: src/library.py:271 #, python-format msgid "Could not change the name to '%s'." msgstr "No s'ha pogut canviar el nom a '%s'." # # File: src/library.py, line: 275 # File: src/library.py, line: 881 #: src/library.py:275 #: src/library.py:882 msgid "A collection by that name already exists." msgstr "Ja existeix una col·lecció amb aquest nom." # # File: src/library.py, line: 285 #: src/library.py:285 msgid "Could not duplicate collection." msgstr "No s'ha pogut duplicar la col·lecció." # # File: src/library.py, line: 382 #: src/library.py:382 msgid "Root" msgstr "Arrel" # # File: src/library.py, line: 386 #: src/library.py:386 #, python-format msgid "Put the collection '%(subcollection)s' in the collection '%(supercollection)s'." msgstr "Col·loca la col·lecció '%(subcollection)s' en la col·lecció '%(supercollection)s'." # # File: src/library.py, line: 407 #: src/library.py:407 #, python-format msgid "Add books to '%s'." msgstr "Afegeix llibres a '%s'." # # File: src/library.py, line: 411 #: src/library.py:411 #, python-format msgid "Move books from '%(source collection)s' to '%(destination collection)s'." msgstr "Mou els llibres de '%(source collection)s' a '%(destination collection)s'." # # File: src/library.py, line: 492 #: src/library.py:493 msgid "Remove from this collection" msgstr "Elimina d'aquesta col·lecció" # # File: src/library.py, line: 495 #: src/library.py:496 msgid "Remove from the library..." msgstr "Elimina de la biblioteca..." # # File: src/library.py, line: 588 #: src/library.py:589 #, python-format msgid "Removed %(num)d book(s) from '%(collection)s'." msgstr "S'han esborrat %(num)d llibres de '%(collection)s'." # # File: src/library.py, line: 597 #: src/library.py:598 msgid "Remove books from the library?" msgstr "Voleu esborrar els llibres de la biblioteca?" # # File: src/library.py, line: 599 #: src/library.py:600 msgid "The selected books will be removed from the library (but the original files will be untouched). Are you sure that you want to continue?" msgstr "S'esborraran de la biblioteca els llibres seleccionats (però els fitxers originals romandran intactes). Esteu segur que voleu continuar?" # # File: src/library.py, line: 609 #: src/library.py:610 #, python-format msgid "Removed %d book(s) from the library." msgstr "S'han esborrat %d llibres de la biblioteca." # # File: src/library.py, line: 769 #: src/library.py:770 msgid "Search" msgstr "Cerca" # # File: src/library.py, line: 774 #: src/library.py:775 msgid "Display only those books that have the specified text string in their full path. The search is not case sensitive." msgstr "Mostra només els llibres que tenen la cadena de text especificada en el nom complet. Les majúscules i minúscules no es tindran en compte." # # File: src/library.py, line: 776 #: src/library.py:777 msgid "Cover size" msgstr "Mida de la portada" # # File: src/library.py, line: 789 #: src/library.py:790 msgid "Add books" msgstr "Afegeix llibres" # # File: src/library.py, line: 793 #: src/library.py:794 msgid "Add more books to the library." msgstr "Afegeix més llibres a la biblioteca." # # File: src/library.py, line: 795 #: src/library.py:796 msgid "Add collection" msgstr "Afegeix una col·lecció" # # File: src/library.py, line: 800 #: src/library.py:801 msgid "Add a new empty collection." msgstr "Afegeix una col·lecció nova buida." # # File: src/library.py, line: 806 #: src/library.py:807 msgid "Open the selected book." msgstr "Obre el llibre seleccionat." # # File: src/library.py, line: 832 # File: src/properties.py, line: 113 #: src/library.py:833 #: src/properties.py:118 #, python-format msgid "%d pages" msgstr "%d pàgines" # # File: src/library.py, line: 854 #: src/library.py:855 msgid "Add new collection?" msgstr "Voleu afegir una nova col·lecció?" # # File: src/library.py, line: 856 #: src/library.py:857 msgid "Please enter a name for the new collection." msgstr "Introduïu un nom per a la nova col·lecció." # # File: src/library.py, line: 862 #: src/library.py:863 msgid "New collection" msgstr "Nova col·lecció" # # File: src/library.py, line: 876 #: src/library.py:877 #, python-format msgid "Could not add a new collection called '%s'." msgstr "No s'ha pogut afegir una nova col·lecció amb el nom '%s'." # # File: src/library.py, line: 910 #: src/library.py:911 msgid "Adding books" msgstr "Afegint llibres" # # File: src/library.py, line: 930 #: src/library.py:931 msgid "Added books" msgstr "Llibres afegits" # # File: src/library.py, line: 952 #: src/library.py:953 #, python-format msgid "Adding '%s'..." msgstr "Afegint '%s'..." # # File: src/main.py, line: 666 #: src/main.py:699 msgid "SLIDESHOW" msgstr "PRESENTACIÓ" # # File: src/preferences.py, line: 78 #: src/preferences.py:80 msgid "Preferences" msgstr "Preferències" # # File: src/preferences.py, line: 93 #: src/preferences.py:95 msgid "Background" msgstr "Fons" # # File: src/preferences.py, line: 95 #: src/preferences.py:97 msgid "Use this colour as background" msgstr "Usa aquest color com a fons" # # File: src/preferences.py, line: 97 #: src/preferences.py:99 msgid "Always use this selected colour as the background colour." msgstr "Usa sempre aquest color per al fons." # # File: src/preferences.py, line: 102 #: src/preferences.py:104 msgid "Use dynamic background colour." msgstr "Color de fons dinàmic." # # File: src/preferences.py, line: 106 #: src/preferences.py:108 msgid "Automatically pick a background colour that fits the viewed image." msgstr "Selecciona automàticament un color per al fons que combine amb la imatge." # # File: src/preferences.py, line: 109 #: src/preferences.py:111 msgid "Thumbnails" msgstr "Miniatures" # # File: src/preferences.py, line: 110 #: src/preferences.py:112 msgid "Thumbnail size (in pixels)" msgstr "Mida de les miniatures (en píxels)" # # File: src/preferences.py, line: 117 #: src/preferences.py:119 msgid "Show page numbers on thumbnails." msgstr "Mostra el número de la pàgina a la miniatura." # # File: src/preferences.py, line: 124 #: src/preferences.py:126 msgid "Magnifying Glass" msgstr "Lupa" # # File: src/preferences.py, line: 125 #: src/preferences.py:127 msgid "Magnifying glass size (in pixels)" msgstr "Mida de la lupa (en píxels)" # # File: src/preferences.py, line: 131 #: src/preferences.py:133 msgid "Set the size of the magnifying glass. It is a square with a side of this many pixels." msgstr "Configura la mida de la lupa. Es tracta d'un quadrat d'aquest nombre de píxels." # # File: src/preferences.py, line: 133 #: src/preferences.py:135 msgid "Magnification factor" msgstr "Factor d'augment" # # File: src/preferences.py, line: 140 #: src/preferences.py:142 msgid "Set the magnification factor of the magnifying glass." msgstr "Configura el factor d'augment de la lupa." # # File: src/preferences.py, line: 143 #: src/preferences.py:145 msgid "Image scaling" msgstr "Escalat" # # File: src/preferences.py, line: 144 #: src/preferences.py:146 msgid "Stretch small images." msgstr "Expandeix les imatges menudes." # # File: src/preferences.py, line: 148 #: src/preferences.py:150 msgid "Stretch images to a size that is larger than their original size if the current zoom mode requests it. If this preference is unset, images are never scaled to be larger than their original size." msgstr "Expandeix les imatges a una mida més gran que l'original si la modalitat de zoom ho requereix. Si aquesta opció està inhabilitada, les imatges mai es mostraran a una mida més gran que l'original." # # File: src/preferences.py, line: 151 #: src/preferences.py:153 msgid "Transparency" msgstr "Transparència" # # File: src/preferences.py, line: 153 #: src/preferences.py:155 msgid "Use checkered background for transparent images." msgstr "Usa un fons a quadrats per a les imatges transparents." # # File: src/preferences.py, line: 159 #: src/preferences.py:161 msgid "Use a grey checkered background for transparent images. If this preference is unset, the background is plain white instead." msgstr "Usa un fons a quadrats gris per a les imatges transparents. Si aquesta opció està inhabilitada, el fons serà completament blanc." # # File: src/preferences.py, line: 161 #: src/preferences.py:163 msgid "Appearance" msgstr "Aspecte" # # File: src/preferences.py, line: 167 #: src/preferences.py:169 msgid "Scroll" msgstr "Desplaçament" # # File: src/preferences.py, line: 169 #: src/preferences.py:171 msgid "Use smart space key scrolling." msgstr "Usa el desplaçament intel·ligent." # # File: src/preferences.py, line: 174 #: src/preferences.py:176 msgid "Use smart scrolling with the space key. Normally the space key scrolls only right down (or up when shift is pressed), but with this preference set it also scrolls sideways and so tries to follow the natural reading order of the comic book." msgstr "Usa el desplaçament intel·ligent amb la barra espaiadora. Normalment la barra espaiadora desplaça cap avall (o cap amunt si es prem Majúscules), però amb aquesta opció habilitada també desplaçarà lateralment i per tant intenta seguir el curs natural de lectura del còmic." #: src/preferences.py:180 msgid "Flip pages when scrolling off the edges of the page." msgstr "Passa de pàgina quan ens desplacem fora dels límits de la pàgina." #: src/preferences.py:185 msgid "Flip pages when scrolling \"off the page\" with the scroll wheel or with the arrow keys. It takes three consecutive \"steps\" with the scroll wheel or the arrow keys for the pages to be flipped." msgstr "Passa de pàgina quan ens desplacem \"fora de la pàgina\" amb la roda del ratolí o amb les tecles de cursor. Girar la pàgina costa tres \"passos\" consecutius amb la roda de desplaçament o amb les tecles de cursor." # # File: src/preferences.py, line: 177 # File: src/ui.py, line: 296 #: src/preferences.py:188 #: src/ui.py:298 msgid "Double page mode" msgstr "Mode de doble pàgina" # # File: src/preferences.py, line: 179 #: src/preferences.py:190 msgid "Flip two pages in double page mode." msgstr "Gira dues pàgines en el mode de doble pàgina." # # File: src/preferences.py, line: 184 #: src/preferences.py:195 msgid "Flip two pages, instead of one, each time we flip pages in double page mode." msgstr "Gira dues pàgines, en lloc de una, cada cop que canviem de pàgina en el mode de doble pàgina." # # File: src/preferences.py, line: 187 #: src/preferences.py:198 msgid "Show only one wide image in double page mode." msgstr "Mostra una única imatge ampla en el mode de doble pàgina." # # File: src/preferences.py, line: 193 #: src/preferences.py:204 msgid "Display only one image in double page mode, if the image's width exceeds its height. The result of this is that scans that span two pages are displayed properly (i.e. alone) also in double page mode." msgstr "Mostra una única imatge en el mode de doble pàgina, si l'amplada de la imatge sobrepassa l'alçada. Com a resultat, les pàgines escannejades juntes es veuen bé (es a dir, soles) també en el mode de doble pàgina." # # File: src/preferences.py, line: 196 #: src/preferences.py:207 msgid "Files" msgstr "Fitxers" # # File: src/preferences.py, line: 198 #: src/preferences.py:209 msgid "Automatically open the next archive." msgstr "Obre automàticament el següent arxiu." # # File: src/preferences.py, line: 203 #: src/preferences.py:214 msgid "Automatically open the next archive in the directory when flipping past the last page, or the previous archive when flipping past the first page." msgstr "Obre automàticament el següent arxiu del directori quan passem de l'última pàgina, o l'arxiu anterior si girem la primera pàgina." # # File: src/preferences.py, line: 206 #: src/preferences.py:217 msgid "Automatically open the last viewed file on startup." msgstr "Obre automàticament a l'inici l'últim arxiu vist." # # File: src/preferences.py, line: 211 #: src/preferences.py:222 msgid "Automatically open, on startup, the file that was open when Comix was last closed." msgstr "Obre automàticament, a l'inici, l'arxiu que era obert quan Comix es va tancar per últim cop." # # File: src/preferences.py, line: 214 #: src/preferences.py:225 msgid "Store information about recently opened files." msgstr "Desa informació dels últims fitxers oberts." # # File: src/preferences.py, line: 219 #: src/preferences.py:230 msgid "Add information about all files opened from within Comix to the shared recent files list." msgstr "Afegeix la informació de tots els fitxers oberts des de Comix a la llista compartida de fitxers recents." # # File: src/preferences.py, line: 222 #: src/preferences.py:233 msgid "Store thumbnails for opened files." msgstr "Desa les miniatures dels fitxers oberts." # # File: src/preferences.py, line: 227 #: src/preferences.py:238 msgid "Store thumbnails for opened files according to the freedesktop.org specification. These thumbnails are shared by many other applications, such as most file managers." msgstr "Desa les miniatures dels fitxers oberts d'acord amb l'especificació freedesktop.org. Aquestes miniatures es comparteixen amb moltes altres aplicacions, com ara bé la majoria de gestors de fitxers." # # File: src/preferences.py, line: 230 #: src/preferences.py:241 msgid "Cache" msgstr "Memòria cau" # # File: src/preferences.py, line: 231 #: src/preferences.py:242 msgid "Use a cache to speed up browsing." msgstr "Usa una memòria cau per a accelerar la navegació." # # File: src/preferences.py, line: 235 #: src/preferences.py:246 msgid "Cache the images that are next to the currently viewed image in order to speed up browsing. Since the speed improvements are quite big, it is recommended that you have this preference set, unless you are running short on free RAM." msgstr "Llegeix per avançat les imatges anterior i posterior a l'actual per tal d'accelerar-ne la navegació. Com que la millora en la velocitat és prou gran, es recomana habilitar aquesta opció, a no ser que aneu curts de memòria RAM." # # File: src/preferences.py, line: 237 #: src/preferences.py:248 msgid "Behaviour" msgstr "Comportament" # # File: src/preferences.py, line: 243 #: src/preferences.py:254 msgid "Default modes" msgstr "Modes per defecte" # # File: src/preferences.py, line: 245 #: src/preferences.py:256 msgid "Use double page mode by default." msgstr "Usa per defecte el mode de doble pàgina." # # File: src/preferences.py, line: 250 #: src/preferences.py:261 msgid "Use fullscreen by default." msgstr "Usa per defecte el mode de pantalla completa." # # File: src/preferences.py, line: 255 #: src/preferences.py:266 msgid "Use manga mode by default." msgstr "Usa per defecte el mode manga." # # File: src/preferences.py, line: 260 #: src/preferences.py:271 msgid "Default zoom mode" msgstr "Mode de zoom per defecte" # # File: src/preferences.py, line: 262 # File: src/ui.py, line: 288 #: src/preferences.py:273 #: src/ui.py:290 msgid "Best fit mode" msgstr "Millor encaix" # # File: src/preferences.py, line: 263 # File: src/ui.py, line: 290 #: src/preferences.py:274 #: src/ui.py:292 msgid "Fit width mode" msgstr "Ajusta a l'amplada" # # File: src/preferences.py, line: 264 # File: src/ui.py, line: 292 #: src/preferences.py:275 #: src/ui.py:294 msgid "Fit height mode" msgstr "Ajusta a l'alçada" # # File: src/preferences.py, line: 265 # File: src/ui.py, line: 294 #: src/preferences.py:276 #: src/ui.py:296 msgid "Manual zoom mode" msgstr "Zoom manual" # # File: src/preferences.py, line: 271 #: src/preferences.py:282 msgid "Fullscreen" msgstr "Pantalla completa" # # File: src/preferences.py, line: 273 #: src/preferences.py:284 msgid "Automatically hide all toolbars in fullscreen." msgstr "Oculta automàticament totes les barres d'eines." # # File: src/preferences.py, line: 279 #: src/preferences.py:290 msgid "Slideshow" msgstr "Projecció de diapositives" # # File: src/preferences.py, line: 280 #: src/preferences.py:291 msgid "Slideshow delay (in seconds)" msgstr "Retard (en segons)" # # File: src/preferences.py, line: 289 #: src/preferences.py:300 msgid "Comment extensions" msgstr "Extensions dels comentaris" # # File: src/preferences.py, line: 295 #: src/preferences.py:306 msgid "Treat all files found within archives, that have one of these file endings, as comments." msgstr "Tracta tots els fitxers que hi ha dintre dels arxius, que tinguen una d'aquestes extensions, com a comentaris." #: src/preferences.py:309 msgid "Rotation" msgstr "Rotació" #: src/preferences.py:311 msgid "Automatically rotate images according to their metadata." msgstr "Rotar automàticament les imatges d'acord amb les metadades." #: src/preferences.py:316 msgid "Automatically rotate images when an orientation is specified in the image metadata, such as in an Exif tag." msgstr "Rota automàticament les imatges quan s'hi especifique una orientació a les metadades de la imatge, com per exemple a les etiquetes Exif." # # File: src/preferences.py, line: 297 #: src/preferences.py:318 msgid "Display" msgstr "Visualització" # # File: src/properties.py, line: 89 #: src/properties.py:94 msgid "Properties" msgstr "Propietats" # # File: src/properties.py, line: 114 #: src/properties.py:119 #, python-format msgid "%d comments" msgstr "%d comentaris" # # File: src/properties.py, line: 124 # File: src/properties.py, line: 159 #: src/properties.py:129 #: src/properties.py:164 msgid "Location" msgstr "Ubicació" # # File: src/properties.py, line: 126 # File: src/properties.py, line: 160 #: src/properties.py:131 #: src/properties.py:165 msgid "Accessed" msgstr "Accedit" # # File: src/properties.py, line: 128 # File: src/properties.py, line: 162 #: src/properties.py:133 #: src/properties.py:167 msgid "Modified" msgstr "Modificat" # # File: src/properties.py, line: 130 # File: src/properties.py, line: 164 #: src/properties.py:135 #: src/properties.py:169 msgid "Permissions" msgstr "Permisos" # # File: src/properties.py, line: 131 # File: src/properties.py, line: 165 #: src/properties.py:136 #: src/properties.py:170 msgid "Owner" msgstr "Propietari" # # File: src/properties.py, line: 135 #: src/properties.py:140 msgid "Archive" msgstr "Arxiu" # # File: src/properties.py, line: 169 #: src/properties.py:174 msgid "Image" msgstr "Imatge" # # File: src/thumbremover.py, line: 22 #: src/thumbremover.py:24 msgid "Thumbnail maintenance" msgstr "Manteniment " # # File: src/thumbremover.py, line: 24 #: src/thumbremover.py:26 msgid "Cleanup" msgstr "Neteja" # # File: src/thumbremover.py, line: 36 #: src/thumbremover.py:38 msgid "Cleanup thumbnails" msgstr "Neteja de miniatures" # # File: src/thumbremover.py, line: 46 #: src/thumbremover.py:48 msgid "Thumbnails for files (such as image files and comic book archives) are stored in your home directory. Many different applications use and create these thumbnails, but sometimes thumbnails remain even though the original files have been removed - wasting space. This dialog can cleanup your stored thumbnails by removing orphaned and outdated thumbnails." msgstr "Les miniatures dels fitxers (com ara bé imatges o arxius de còmics) es desen al directori d'usuari. Moltes aplicacions diferents creen i usen aquestes miniatures, en ocasions tot i haver esborrat els fitxers originals, les miniatures hi romanen, malbaratant espai. Aquest diàleg permet netejar les miniatures esborrant-ne les òrfenes o antigues." # # File: src/thumbremover.py, line: 58 #: src/thumbremover.py:60 msgid "Thumbnail directory" msgstr "Directori de les miniatures" # # File: src/thumbremover.py, line: 65 #: src/thumbremover.py:67 msgid "Total number of thumbnails" msgstr "Nombre total de miniatures" # # File: src/thumbremover.py, line: 68 # File: src/thumbremover.py, line: 75 #: src/thumbremover.py:70 #: src/thumbremover.py:77 msgid "Calculating..." msgstr "Calculant..." # # File: src/thumbremover.py, line: 72 #: src/thumbremover.py:74 msgid "Total size of thumbnails" msgstr "Mida total de les miniatures" # # File: src/thumbremover.py, line: 80 #: src/thumbremover.py:82 msgid "Do you want to cleanup orphaned and outdated thumbnails now?" msgstr "Voleu esborrar ara les miniatures òrfenes o antigues?" # # File: src/thumbremover.py, line: 116 #: src/thumbremover.py:118 msgid "Removing thumbnails" msgstr "Esborrant les miniatures" # # File: src/thumbremover.py, line: 135 #: src/thumbremover.py:137 msgid "Number of removed thumbnails" msgstr "Nombre de miniatures esborrades" # # File: src/thumbremover.py, line: 142 #: src/thumbremover.py:144 msgid "Total size of removed thumbnails" msgstr "Mida total de les miniatures esborrades" # # File: src/thumbremover.py, line: 193 #: src/thumbremover.py:195 #, python-format msgid "Removed thumbnail for '%s'" msgstr "S'ha esborrat la miniatura de '%s'" # # File: src/ui.py, line: 34 #: src/ui.py:34 msgid "_Next page" msgstr "Pàgi_na següent" # # File: src/ui.py, line: 36 #: src/ui.py:36 msgid "_Previous page" msgstr "_Pàgina anterior" # # File: src/ui.py, line: 38 #: src/ui.py:38 msgid "_First page" msgstr "Pr_imera pàgina" # # File: src/ui.py, line: 40 #: src/ui.py:40 msgid "_Last page" msgstr "Ú_ltima pàgina" # # File: src/ui.py, line: 42 #: src/ui.py:42 msgid "_Zoom in" msgstr "Apr_opa" # # File: src/ui.py, line: 44 #: src/ui.py:44 msgid "Zoom _out" msgstr "_Allunya" # # File: src/ui.py, line: 46 #: src/ui.py:46 msgid "O_riginal size" msgstr "Mida o_riginal" # # File: src/ui.py, line: 48 #: src/ui.py:48 msgid "_Close" msgstr "Tan_ca" # # File: src/ui.py, line: 50 #: src/ui.py:50 msgid "_Quit" msgstr "I_x" # # File: src/ui.py, line: 52 #: src/ui.py:52 msgid "_Rotate 90 degrees CW" msgstr "_Rota 90 graus a la dreta" # # File: src/ui.py, line: 54 #: src/ui.py:54 msgid "Rotate 180 de_grees" msgstr "Rota 180 _graus" # # File: src/ui.py, line: 56 #: src/ui.py:56 msgid "Rotat_e 90 degrees CCW" msgstr "Rota 90 graus a l'_esquerra" # # File: src/ui.py, line: 58 #: src/ui.py:58 msgid "Fli_p horizontally" msgstr "Inverteix _horitzontalment" # # File: src/ui.py, line: 60 #: src/ui.py:60 msgid "Flip _vertically" msgstr "Inverteix _verticalment" # # File: src/ui.py, line: 62 #: src/ui.py:62 msgid "Manual _Zoom" msgstr "_Zoom manual" # # File: src/ui.py, line: 63 #: src/ui.py:63 msgid "Open _recent" msgstr "Obre els _recents" # # File: src/ui.py, line: 64 #: src/ui.py:64 msgid "_Bookmarks" msgstr "_Marcadors" # # File: src/ui.py, line: 65 #: src/ui.py:65 msgid "T_oolbars" msgstr "Barres d'_eines" # # File: src/ui.py, line: 66 #: src/ui.py:66 msgid "_Edit" msgstr "_Edita" # # File: src/ui.py, line: 67 #: src/ui.py:67 msgid "_File" msgstr "_Fitxer" # # File: src/ui.py, line: 68 #: src/ui.py:68 msgid "_View" msgstr "_Visualitza" # # File: src/ui.py, line: 69 #: src/ui.py:69 msgid "_Go" msgstr "Vé_s" # # File: src/ui.py, line: 70 #: src/ui.py:70 msgid "_Help" msgstr "_Ajuda" # # File: src/ui.py, line: 71 #: src/ui.py:71 msgid "_Transform" msgstr "_Transforma" # # File: src/ui.py, line: 75 #: src/ui.py:75 msgid "_Fullscreen" msgstr "_Pantalla completa" # # File: src/ui.py, line: 77 #: src/ui.py:77 msgid "_Double page mode" msgstr "_Doble pàgina" # # File: src/ui.py, line: 79 #: src/ui.py:79 msgid "_Toolbar" msgstr "_Barra d'eines" # # File: src/ui.py, line: 81 #: src/ui.py:81 msgid "_Menubar" msgstr "Barra de m_enú" # # File: src/ui.py, line: 83 #: src/ui.py:83 msgid "St_atusbar" msgstr "B_arra d'estat" # # File: src/ui.py, line: 85 #: src/ui.py:85 msgid "S_crollbars" msgstr "Barres de _desplaçament" # # File: src/ui.py, line: 87 #: src/ui.py:87 msgid "Th_umbnails" msgstr "Miniat_ures" # # File: src/ui.py, line: 89 #: src/ui.py:89 msgid "H_ide all" msgstr "Amaga-ho _tot" # # File: src/ui.py, line: 91 #: src/ui.py:91 msgid "_Manga mode" msgstr "_Mode manga" # # File: src/ui.py, line: 93 #: src/ui.py:93 msgid "_Keep transformation" msgstr "_Manté la transformació" # # File: src/ui.py, line: 95 #: src/ui.py:95 msgid "Run _slideshow" msgstr "Projecció de _diapositives" # # File: src/ui.py, line: 97 #: src/ui.py:97 msgid "Magnifying _glass" msgstr "_Lupa" # # File: src/ui.py, line: 101 #: src/ui.py:103 msgid "_Best fit mode" msgstr "Millor ajus_t" # # File: src/ui.py, line: 103 #: src/ui.py:105 msgid "Fit _width mode" msgstr "A_justa a l'amplada" # # File: src/ui.py, line: 105 #: src/ui.py:107 msgid "Fit _height mode" msgstr "Ajusta a l'al_çada" # # File: src/ui.py, line: 107 #: src/ui.py:109 msgid "M_anual zoom mode" msgstr "Zoom m_anual" # # File: src/ui.py, line: 113 #: src/ui.py:115 msgid "_About" msgstr "Qu_ant a" # # File: src/ui.py, line: 115 #: src/ui.py:117 msgid "_View comments..." msgstr "Mostra els _comentaris..." # # File: src/ui.py, line: 117 #: src/ui.py:119 msgid "_Edit archive..." msgstr "_Edita l'arxiu..." # # File: src/ui.py, line: 119 #: src/ui.py:121 msgid "_Open..." msgstr "_Obre..." # # File: src/ui.py, line: 121 #: src/ui.py:123 msgid "_Properties" msgstr "_Propietats" # # File: src/ui.py, line: 123 #: src/ui.py:125 msgid "_Enhance image..." msgstr "Millora la _imatge..." # # File: src/ui.py, line: 126 #: src/ui.py:128 msgid "_Thumbnail maintenance..." msgstr "_Manteniment de les miniatures..." # # File: src/ui.py, line: 128 #: src/ui.py:130 msgid "Pr_eferences" msgstr "Pr_eferències" # # File: src/ui.py, line: 132 #: src/ui.py:134 msgid "_Library..." msgstr "_Biblioteca..." # # File: src/ui.py, line: 282 #: src/ui.py:284 msgid "First page" msgstr "Primera pàgina" # # File: src/ui.py, line: 284 #: src/ui.py:286 msgid "Previous page" msgstr "Pàgina anterior" # # File: src/ui.py, line: 285 #: src/ui.py:287 msgid "Next page" msgstr "Pàgina següent" # # File: src/ui.py, line: 286 #: src/ui.py:288 msgid "Last page" msgstr "Última pàgina" # # File: src/ui.py, line: 297 #: src/ui.py:299 msgid "Manga mode" msgstr "Mode manga" # # File: src/ui.py, line: 298 #: src/ui.py:300 msgid "Magnifying glass" msgstr "Lupa" comix-4.0.4/messages/ca/LC_MESSAGES/comix.mo0000644000175000001440000005705711137627234017212 0ustar sorkusersTa &)-<W YEd x     M9 T_!g.].53d$*ROB8k     !E67|+"("H"k %%  5 GUg pzrJ <   ! ! 2!?! N!\! b!m!~!!!!!!4"#"L"6# I#+T### ## ## ####A$U$ i$u$$ $$$$$$$%!% 5% @%M%^%Hg%%% %%%% & && 6&B& H&S& X&d&+x&4&&b' u' ' ' 'O' ' ((#/(S(h(|((.($()")6) I))S)})))))) ) ) )))*5 *UC* *-* **+ + +?=+}, ,.,,"q--W. m. w. . .#.)..r/1 0;0O0e0 0a01 2)2B2 b2Xo22!2{20w3 333445-5gK5 5 5 55 55 566 62686I6\6n6 t6 6666 6 6 66 666 67 7"7<7 E7P7V7h7q7 9 99,'99T999$9999i:%n:#:::::: ;;H,;$u;;;";7;s<#w<0<3<='=^=J><Y>>!? &? 3?!A? c?n? ?? @@@@"@T@?8AxA AA;A$A'B*0B)[B.B0B3BC1CDCMCaCsCCCCCCD62EiEEE EEEEEEF$F7FJFeF}FDTG/G`G*HAH0SHHH HHHHHHI I:#I^I uIIII I I IIIIIJ J )J 6J BJJLJJJJJJJK KK8K GK RK^KfKoK-K9KKtLL LL LWL M &M,1M0^MMMMM3M+.N"ZN}N!N N0NNNO(O1OMO _OlO OO OO)OPO$P;,P/hP PPPP&PR+R-:RhR(/SXS T?T OT YT dT pT(TTDU$UU V#'V KV]VVW'WW X5XnDXX3XY6Y)YY-Y-ZLZ#f[[ \ \'\0\9\ N\ \\g\\\\\\\\\\ ]]]1]B] Q]]]m]]] ]]]!]] ] ^ ^'^7H*0\;F:-pw6uKf'm<3ABs1!>k8 YdrS=c)Wt%TLD#l ^ aERy[ b}{ChJV]/no2x .,59Mg+(~v?O$`jI|4GzZXP"QeUNi_q&@ %d comments%d pages(Copy)A collection by that name already exists.A file named '%s' already exists. Do you want to replace it?AboutAccessedAdd a new empty collection.Add booksAdd books to '%s'.Add collectionAdd information about all files opened from within Comix to the shared recent files list.Add more books to the library.Add new collection?Added booksAdding '%s'...Adding booksAll ArchivesAll booksAll filesAll imagesAll stored bookmarks will be removed. Are you sure that you want to continue?Always use this selected colour as the background colour.AppearanceArchiveArchives are stored as ZIP files.Automatically add the books to this collectionAutomatically adjust contrast (both lightness and darkness), separately for each colour band.Automatically adjust contrast.Automatically hide all toolbars in fullscreen.Automatically open the last viewed file on startup.Automatically open the next archive in the directory when flipping past the last page, or the previous archive when flipping past the first page.Automatically open the next archive.Automatically open, on startup, the file that was open when Comix was last closed.Automatically pick a background colour that fits the viewed image.Automatically rotate images according to their metadata.Automatically rotate images when an orientation is specified in the image metadata, such as in an Exif tag.BackgroundBehaviourBest fit modeBrazilian Portuguese translationBrightnessBzip2 compressed tar archiveCacheCache the images that are next to the currently viewed image in order to speed up browsing. Since the speed improvements are quite big, it is recommended that you have this preference set, unless you are running short on free RAM.Calculating...Catalan translationCleanupCleanup thumbnailsClear all bookmarks?Comix is an image viewer specifically designed to handle comic books.Comix is licensed under the GNU General Public License.Comment extensionsCommentsContrastCould not add a new collection called '%s'.Could not change the name to '%s'.Could not duplicate collection.Could not find RAR file extractor!Could not open %s: Is a directory.Could not open %s: No such file.Could not open %s: Permission denied.Could not open %s: Unknown file type.Could not read %sCover sizeCreditsCroatian translationCzech translationDefault modesDefault zoom modeDefaultsDeveloperDisplayDisplay only one image in double page mode, if the image's width exceeds its height. The result of this is that scans that span two pages are displayed properly (i.e. alone) also in double page mode.Display only those books that have the specified text string in their full path. The search is not case sensitive.Do you want to cleanup orphaned and outdated thumbnails now?Double page modeDuplicate collectionDutch translationEdit archiveEdit bookmarksEnhance imageFilesFirst pageFit _height modeFit _width modeFit height modeFit width modeFli_p horizontallyFlip _verticallyFlip pages when scrolling "off the page" with the scroll wheel or with the arrow keys. It takes three consecutive "steps" with the scroll wheel or the arrow keys for the pages to be flipped.Flip pages when scrolling off the edges of the page.Flip two pages in double page mode.Flip two pages, instead of one, each time we flip pages in double page mode.French translationFullscreenGerman translation and Nautilus thumbnailerGreek translationGzip compressed tar archiveH_ide allHungarian translationIcon designImageImage scalingImagesImportIndonesian translationIt reads ZIP, RAR and tar archives, as well as plain image files.Italian translationJPEG imagesJapanese translationKorean translationLast pageLibraryLocationM_anual zoom modeMagnification factorMagnifying GlassMagnifying _glassMagnifying glassMagnifying glass size (in pixels)Manga modeManual _ZoomManual zoom modeModifiedMove books from '%(source collection)s' to '%(destination collection)s'.NameNew collectionNext pageNo images in '%s'Number of removed thumbnailsO_riginal sizeOpenOpen _recentOpen the selected book.Other filesOwnerPNG imagesPagePermissionsPersian translationPlease enter a name for the new collection.Please enter a new name for the selected collection.Please note that the only files that are automatically added to this list are those files in archives that Comix recognizes as comments.Polish translationPr_eferencesPreferencesPrevious pagePropertiesPut the collection '%(subcollection)s' in the collection '%(supercollection)s'.RAR archiveRAR archivesRemove books from the library?Remove collection from the library?Remove collection...Remove from archiveRemove from the library...Remove from this collectionRemoved %(num)d book(s) from '%(collection)s'.Removed %d book(s) from the library.Removed thumbnail for '%s'Removing thumbnailsRename collection?Rename...Replacing it will overwrite its contents.RootRotat_e 90 degrees CCWRotate 180 de_greesRotationRun _slideshowRussian translationSLIDESHOWS_crollbarsSaturationSaveScrollSearchSet the magnification factor of the magnifying glass.Set the size of the magnifying glass. It is a square with a side of this many pixels.SharpnessShow only one wide image in double page mode.Show page numbers on thumbnails.Simplified Chinese translationSizeSlideshowSlideshow delay (in seconds)Some old files (that were used for storing preferences, the library, bookmarks etc. for older versions of Comix) were found on your computer. If you do not plan on using the older versions of Comix again, you should remove these files in order to save some disk space. Do you want these files to be removed for you now?Spanish translationSt_atusbarStore information about recently opened files.Store thumbnails for opened files according to the freedesktop.org specification. These thumbnails are shared by many other applications, such as most file managers.Store thumbnails for opened files.Stretch images to a size that is larger than their original size if the current zoom mode requests it. If this preference is unset, images are never scaled to be larger than their original size.Stretch small images.T_oolbarsTar archiveTar archivesTh_umbnailsThe new archive could not be saved!The original files have not been removed.The selected books will be removed from the library (but the original files will be untouched). Are you sure that you want to continue?The selected collection will be removed from the library (but the books and subcollections in it will remain). Are you sure that you want to continue?There are deprecated files left on your computer.Thumbnail directoryThumbnail maintenanceThumbnail size (in pixels)ThumbnailsThumbnails for files (such as image files and comic book archives) are stored in your home directory. Many different applications use and create these thumbnails, but sometimes thumbnails remain even though the original files have been removed - wasting space. This dialog can cleanup your stored thumbnails by removing orphaned and outdated thumbnails.Total number of thumbnailsTotal size of removed thumbnailsTotal size of thumbnailsTraditional Chinese translationTransparencyTreat all files found within archives, that have one of these file endings, as comments.Unknown filetypeUse a cache to speed up browsing.Use a grey checkered background for transparent images. If this preference is unset, the background is plain white instead.Use checkered background for transparent images.Use double page mode by default.Use dynamic background colour.Use fullscreen by default.Use manga mode by default.Use smart scrolling with the space key. Normally the space key scrolls only right down (or up when shift is pressed), but with this preference set it also scrolls sideways and so tries to follow the natural reading order of the comic book.Use smart space key scrolling.Use this colour as backgroundYou need either the rar or the unrar program installed in order to read RAR (.cbr) files.ZIP archiveZIP archivesZoom _out_About_Add bookmark_Best fit mode_Bookmarks_Clear bookmarks..._Close_Double page mode_Edit_Edit archive..._Edit bookmarks..._Enhance image..._File_First page_Fullscreen_Go_Help_Keep transformation_Last page_Library..._Manga mode_Menubar_Next page_Open..._Previous page_Properties_Quit_Rotate 90 degrees CW_Thumbnail maintenance..._Toolbar_Transform_View_View comments..._Zoom inProject-Id-Version: Comix 3.2 Report-Msgid-Bugs-To: POT-Creation-Date: 2008-11-22 02:42+0100 PO-Revision-Date: 2009-01-25 22:33+0100 Last-Translator: Carles Escrig i Royo Language-Team: CA MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit Generated-By: pygettext.py 1.5 X-Poedit-Language: Catalan X-Poedit-Country: SPAIN %d comentaris%d pàgines(Copia)Ja existeix una col·lecció amb aquest nom.Ja existeix un fitxer anomenat '%s'. Voleu substituir-lo?Quant aAcceditAfegeix una col·lecció nova buida.Afegeix llibresAfegeix llibres a '%s'.Afegeix una col·leccióAfegeix la informació de tots els fitxers oberts des de Comix a la llista compartida de fitxers recents.Afegeix més llibres a la biblioteca.Voleu afegir una nova col·lecció?Llibres afegitsAfegint '%s'...Afegint llibresTots els arxiusTots els llibresTots els fitxersTotes les imatgesS'esborraran tots els marcadors desats. Esteu segur que voleu continuar?Usa sempre aquest color per al fons.AspecteArxiuEls arxius es desen en format ZIP.Afegeix automàticament els llibres a aquesta coleccióAjusta automàticament el contrast (tant la claror com la foscor), de manera independent per a cada banda de color.Ajusta automàticament el contrast.Oculta automàticament totes les barres d'eines.Obre automàticament a l'inici l'últim arxiu vist.Obre automàticament el següent arxiu del directori quan passem de l'última pàgina, o l'arxiu anterior si girem la primera pàgina.Obre automàticament el següent arxiu.Obre automàticament, a l'inici, l'arxiu que era obert quan Comix es va tancar per últim cop.Selecciona automàticament un color per al fons que combine amb la imatge.Rotar automàticament les imatges d'acord amb les metadades.Rota automàticament les imatges quan s'hi especifique una orientació a les metadades de la imatge, com per exemple a les etiquetes Exif.FonsComportamentMillor encaixTraducció al portuguès brasilerBrillantorArxiu tar comprimit amb bzip2Memòria cauLlegeix per avançat les imatges anterior i posterior a l'actual per tal d'accelerar-ne la navegació. Com que la millora en la velocitat és prou gran, es recomana habilitar aquesta opció, a no ser que aneu curts de memòria RAM.Calculant...Traducció al catalàNetejaNeteja de miniaturesVoleu esborrar tots els marcadors?Comix és un visualitzador d'imatges especialment dissenyat per a manipular còmics.Comix està llicenciat sota la Llicència Pública General GNU.Extensions dels comentarisComentarisContrastNo s'ha pogut afegir una nova col·lecció amb el nom '%s'.No s'ha pogut canviar el nom a '%s'.No s'ha pogut duplicar la col·lecció.No s'ha pogut trobar el descompressor RAR!No s'ha pogut obrir %s: És un directori.No s'ha pogut obrir %s: No existeix el fitxer.No s'ha pogut obrir %s: S'ha denegat el permís.No s'ha pogut obrir %s: Tipus de fitxer desconegut.No s'ha pogut llegir %sMida de la portadaCrèditsTraducció al croatTraducció al xecModes per defecteMode de zoom per defectePredeterminatsDesenvolupadorVisualitzacióMostra una única imatge en el mode de doble pàgina, si l'amplada de la imatge sobrepassa l'alçada. Com a resultat, les pàgines escannejades juntes es veuen bé (es a dir, soles) també en el mode de doble pàgina.Mostra només els llibres que tenen la cadena de text especificada en el nom complet. Les majúscules i minúscules no es tindran en compte.Voleu esborrar ara les miniatures òrfenes o antigues?Mode de doble pàginaDuplica la col·leccióTraducció a l'holandèsEdita l'arxiuEdita els marcadorsMillora la imatgeFitxersPrimera pàginaAjusta a l'al_çadaA_justa a l'ampladaAjusta a l'alçadaAjusta a l'ampladaInverteix _horitzontalmentInverteix _verticalmentPassa de pàgina quan ens desplacem "fora de la pàgina" amb la roda del ratolí o amb les tecles de cursor. Girar la pàgina costa tres "passos" consecutius amb la roda de desplaçament o amb les tecles de cursor.Passa de pàgina quan ens desplacem fora dels límits de la pàgina.Gira dues pàgines en el mode de doble pàgina.Gira dues pàgines, en lloc de una, cada cop que canviem de pàgina en el mode de doble pàgina.Traducció al francèsPantalla completaTraducció a l'alemany i generador de miniaturesTraducció al grecArxiu tar comprimit amb gzipAmaga-ho _totTraducció a l'hongarèsDisseny d'iconesImatgeEscalatImatgesImportaTraducció a l'indonesiLlegeix arxius ZIP, RAR i tar, així com fitxers d'imatge.Traducció a l'italiàImatges JPEGTraducció al japonèsTraducció al coreàÚltima pàginaBibliotecaUbicacióZoom m_anualFactor d'augmentLupa_LupaLupaMida de la lupa (en píxels)Mode manga_Zoom manualZoom manualModificatMou els llibres de '%(source collection)s' a '%(destination collection)s'.NomNova col·leccióPàgina següentNo hi ha imatges a '%s'Nombre de miniatures esborradesMida o_riginalObreObre els _recentsObre el llibre seleccionat.Altres fitxersPropietariImatges PNGPàginaPermisosTraducció al persaIntroduïu un nom per a la nova col·lecció.Introduïu un nom nou per a la col·lecció seleccionada.Teniu en compte que només s'afegeixen automàticament a la llista els fitxers que hi ha als arxius que Comix reconeix com a comentaris.Traducció al polonèsPr_eferènciesPreferènciesPàgina anteriorPropietatsCol·loca la col·lecció '%(subcollection)s' en la col·lecció '%(supercollection)s'.Arxiu RARArxius RARVoleu esborrar els llibres de la biblioteca?Voleu eliminar la col·lecció de la biblioteca?Elimina la col·lecció...Suprimeix del fitxerElimina de la biblioteca...Elimina d'aquesta col·leccióS'han esborrat %(num)d llibres de '%(collection)s'.S'han esborrat %d llibres de la biblioteca.S'ha esborrat la miniatura de '%s'Esborrant les miniaturesVoleu reanomenar la col·lecció?Reanomena...Substituint-lo hi sobreescriureu els continguts.ArrelRota 90 graus a l'_esquerraRota 180 _grausRotacióProjecció de _diapositivesTraducció al rusPRESENTACIÓBarres de _desplaçamentSaturacióDesaDesplaçamentCercaConfigura el factor d'augment de la lupa.Configura la mida de la lupa. Es tracta d'un quadrat d'aquest nombre de píxels.AgudesaMostra una única imatge ampla en el mode de doble pàgina.Mostra el número de la pàgina a la miniatura.Traducció al xinès simplificatMidaProjecció de diapositivesRetard (en segons)S'han trobat alguns fitxers antics (que s'usaven en versions antigues de Comix per a desar les preferències, la biblioteca, els marcadors, etc.). Si no preteneu tornar a usar les versions antigues de Comix, hauríeu d'esborrar-los per tal d'estalviar espai. Voleu esborrar aquests fitxers ara?Traducció al castellàB_arra d'estatDesa informació dels últims fitxers oberts.Desa les miniatures dels fitxers oberts d'acord amb l'especificació freedesktop.org. Aquestes miniatures es comparteixen amb moltes altres aplicacions, com ara bé la majoria de gestors de fitxers.Desa les miniatures dels fitxers oberts.Expandeix les imatges a una mida més gran que l'original si la modalitat de zoom ho requereix. Si aquesta opció està inhabilitada, les imatges mai es mostraran a una mida més gran que l'original.Expandeix les imatges menudes.Barres d'_einesArxiu tarArxius tarMiniat_uresNo s'ha pogut desar l'arxiu nou!No s'han eliminat els fitxers originals.S'esborraran de la biblioteca els llibres seleccionats (però els fitxers originals romandran intactes). Esteu segur que voleu continuar?La col·lecció seleccionada s'esborrarà de la biblioteca (però els llibres i les subcol·leccions hi romandran). Esteu segur que voleu continuar?Hi han fitxers antics a l'ordinador.Directori de les miniaturesManteniment Mida de les miniatures (en píxels)MiniaturesLes miniatures dels fitxers (com ara bé imatges o arxius de còmics) es desen al directori d'usuari. Moltes aplicacions diferents creen i usen aquestes miniatures, en ocasions tot i haver esborrat els fitxers originals, les miniatures hi romanen, malbaratant espai. Aquest diàleg permet netejar les miniatures esborrant-ne les òrfenes o antigues.Nombre total de miniaturesMida total de les miniatures esborradesMida total de les miniaturesTraducció al xinès tradicionalTransparènciaTracta tots els fitxers que hi ha dintre dels arxius, que tinguen una d'aquestes extensions, com a comentaris.Tipus de fitxer desconegutUsa una memòria cau per a accelerar la navegació.Usa un fons a quadrats gris per a les imatges transparents. Si aquesta opció està inhabilitada, el fons serà completament blanc.Usa un fons a quadrats per a les imatges transparents.Usa per defecte el mode de doble pàgina.Color de fons dinàmic.Usa per defecte el mode de pantalla completa.Usa per defecte el mode manga.Usa el desplaçament intel·ligent amb la barra espaiadora. Normalment la barra espaiadora desplaça cap avall (o cap amunt si es prem Majúscules), però amb aquesta opció habilitada també desplaçarà lateralment i per tant intenta seguir el curs natural de lectura del còmic.Usa el desplaçament intel·ligent.Usa aquest color com a fonsNecessiteu tenir instal·lada l'aplicació rar o unrar per a poder llegir fitxers RAR (.cbr).Arxiu ZIPArxius ZIP_AllunyaQu_ant a_Afegeix un marcadorMillor ajus_t_Marcadors_Esborra els marcadors...Tan_ca_Doble pàgina_Edita_Edita l'arxiu..._Edita els marcadors...Millora la _imatge..._FitxerPr_imera pàgina_Pantalla completaVé_s_Ajuda_Manté la transformacióÚ_ltima pàgina_Biblioteca..._Mode mangaBarra de m_enúPàgi_na següent_Obre..._Pàgina anterior_PropietatsI_x_Rota 90 graus a la dreta_Manteniment de les miniatures..._Barra d'eines_Transforma_VisualitzaMostra els _comentaris...Apr_opacomix-4.0.4/mime/icons/16x16/application-x-cbz.png0000644000175000001440000000103410746230545020420 0ustar sorkusersPNG  IHDRabKGDC pHYs B(xtIME IDAT8˭1hTAww=b A I#MR (X( ;H) h,Ebl"*Q]۱x9#xQفٙ4h0lڑВF4ѳWc[6#H>/bJi"/3sV,1;ZEsSpZ8vKo[G-Cb 4ET }W(Pٲ ٰ|r@ UPmҏHV?1(>9! d Bj}Xk`<h~pb+@zP$3_F0׌Q3_Aszy]❇{ 3Al'2=֮G%J=.]q{ klf_o҇)IENDB`comix-4.0.4/mime/icons/24x24/application-x-cbz.png0000644000175000001440000000200610746230545020416 0ustar sorkusersPNG  IHDRbKGDC pHYs oy vpAgxLIDATXVKQ7?֝u7-RCtiNEt$R!- +Uvqvug^c݆]C~. pC ^u H,G&''ܷJ_F:inoU(%[q!I#BB:!@$]*GԳgWR%xoo,L_ ɬ%H)F퀢pʲm8r͑^40jK˩Si./r۷B{X*P*˪ ʧO@\*mB!,,˲4͝ f fcc#%ח?~$˗\]}{pD›`@X[sgd$%V`i/\yhk;w51TUCڻRY\.ƊESM67ОXLTD"!r2tzqϞpXZ;q\WUw/?sׁT*^%`~~lzH>|CoB&'><~c}}ccs3m@QNw'g{ENc{clT,׏Dt]$ѝ^K}{j<}<2RRAXw͛[[B]]˗}B8@Ǡ98MM,@L ˍP.+JuDs9n& ˂867]bg$ zyT]nMeMƍ'D#Ai>_,261}{uL!/D&OA8̭q+/*(IEfen 7Q &ϟ8S@{,濻'ݳz/,Yp.\dEv"_}E\x& lUDod͕b~EИyjDcb^) uq"^EJ/8;93  ݿ=7tǍ*b`_wCbQuQDy4F5v3ΈĶ.o(x~OVp v7mtc nF|:|mgw fL%8v^ݒ&JLB H6d%(m u!7܌6~6R|TܸB+%+_ )(k1;.taQ"颭 -h+ZbwEThN ^|@Ypt'ZZ#7%F{p+ 3Xf(ٯ(rҲp ru) eJZQ.9NvCH'9?S`Fڡ*nm(;p/ `~n7`4h\1Z}*8zB06Rx3/+mGM.vY0U- Zjݮ/21gcn)Zdcʬ~d">ߠm@d{S`G"@$+KV>;mli1d!W*8t %sn+Va kX] 8@+@mo6 ׶cIENDB`comix-4.0.4/mime/icons/48x48/application-x-cbz.png0000644000175000001440000000356510746230545020445 0ustar sorkusersPNG  IHDR00WbKGDtIME  b;IDAThkU־993 N " %ZPR#mkD.mP0A@5"6P Be.ps33F&&wa0c!o[u)r4#%7A(}(ukC5rœ^>ش0^H@ /4SŎA(Bڠle!VZXna h[ Shq3J Wj=px3b}akm<%@I)J %% @J$Jxgv,ɤ9h!~sdHrҥ4Z=m|g> EѴ}~N/3n$)0 Q#%" ^^B'Zf:6b=-g7 c=i6׬ jX|UQ'dO-Ё;fpǔT@6%8DZ%&#OE6i"mPD_Iйfб ٢o:;K kϧ[qÕhIg_;DW }7Gkyڐ1n H,Ak'U?,V`)(![DƯki0aN 5ny{}E{ak"89wG;KèOb)BkA}}Ckhm?({Et1G❧K bħ83-x!S8~%5^s~ :q¯O~lUEUpK|i$_ĔEϧP)z>EPH*0F#m .c:vk+A*B&GME#}NKe|c9wuzk6ntG~ jhǺ+,*ce3GtVf${멌h -]sf>,3B{n82t8{n1n0m'.\|PIy"W a}6مc*BR2ĸbc eZ0 ?{=.$/ޣ~0(#Xἱjvm6fr1& Yn~!|9oZ\eR5^#]mYR31'_~Q[:j-?rQ|@ɌH_za3f=D< mZ#83l_(wYeq?Ko (3m+xHz=kWvEZJa9n .KЋW߀eHw[+@I ۾\ZУH%I )?"Hea9W9)}#ЖB} IAYvb)U>r곕QBx(D!*ve"#-!D&Rb$R@БYDXK֔:õA{J5ДLov6എP㧞1&B UQ [V$FhpR*ׂ JND}c?Xm*;͝/%˥x͍}ǼW)Fpyj{=v ' >d(M H-t8]5*(@ so E# .vJdLݳ( WWQ z`5GIIENDB`