def option_parser(): from calibre.gui2.main_window import option_parser parser = option_parser(_('''\ %prog [options] file View an e-book. ''')) a = parser.add_option a('--raise-window', default=False, action='store_true', help=_('If specified, the E-book viewer window will try to come to the ' 'front when started.')) a('--full-screen', '--fullscreen', '-f', default=False, action='store_true', help=_('If specified, the E-book viewer window will try to open ' 'full screen when started.')) a('--force-reload', default=False, action='store_true', help=_('Force reload of all opened books')) a('--open-at', default=None, help=_( 'The position at which to open the specified book. The position is ' 'a location or position you can get by using the Go to->Location action in the viewer controls. ' 'Alternately, you can use the form toc:something and it will open ' 'at the location of the first Table of Contents entry that contains ' 'the string "something". The form toc-href:something will match the ' 'href (internal link destination) of toc nodes. The matching is exact, ' 'If you want to match a substring, use the form toc-href-contains:something. ' 'The form ref:something will use Reference mode references.')) a('--continue', default=False, action='store_true', dest='continue_reading', help=_('Continue reading the last opened book')) setup_gui_option_parser(parser) return parser
def main(args=sys.argv): # Ensure viewer can continue to function if GUI is closed os.environ.pop('CALIBRE_WORKER_TEMP_DIR', None) reset_base_dir() scheme = QWebEngineUrlScheme(FAKE_PROTOCOL.encode('ascii')) scheme.setSyntax(QWebEngineUrlScheme.Syntax.Host) scheme.setFlags(QWebEngineUrlScheme.Flag.SecureScheme) QWebEngineUrlScheme.registerScheme(scheme) override = 'calibre-ebook-viewer' if islinux else None processed_args = [] internal_book_data = internal_book_data_path = None for arg in args: if arg.startswith('--internal-book-data='): internal_book_data_path = arg.split('=', 1)[1] continue processed_args.append(arg) if internal_book_data_path: try: with lopen(internal_book_data_path, 'rb') as f: internal_book_data = json.load(f) finally: try: os.remove(internal_book_data_path) except OSError: pass args = processed_args app = Application(args, override_program_name=override, windows_app_uid=VIEWER_APP_UID) parser = option_parser() opts, args = parser.parse_args(args) oat = opts.open_at if oat and not ( oat.startswith('toc:') or oat.startswith('toc-href:') or oat.startswith('toc-href-contains:') or oat.startswith('epubcfi(/') or is_float(oat) or oat.startswith('ref:')): raise SystemExit('Not a valid --open-at value: {}'.format(opts.open_at)) if get_session_pref('singleinstance', False): from calibre.utils.lock import SingleInstance from calibre.gui2.listener import Listener with SingleInstance(singleinstance_name) as si: if si: try: listener = Listener(address=viewer_socket_address(), parent=app) listener.start_listening() except Exception as err: error_dialog(None, _('Failed to start listener'), _( 'Could not start the listener used for single instance viewers. Try rebooting your computer.'), det_msg=str(err), show=True) else: with closing(listener): run_gui(app, opts, args, internal_book_data, listener=listener) else: send_message_to_viewer_instance(args, opts.open_at) else: run_gui(app, opts, args, internal_book_data)
def main(args=sys.argv): # Ensure viewer can continue to function if GUI is closed os.environ.pop('CALIBRE_WORKER_TEMP_DIR', None) reset_base_dir() scheme = QWebEngineUrlScheme(FAKE_PROTOCOL.encode('ascii')) scheme.setSyntax(QWebEngineUrlScheme.Syntax.Host) scheme.setFlags(QWebEngineUrlScheme.SecureScheme) QWebEngineUrlScheme.registerScheme(scheme) override = 'calibre-ebook-viewer' if islinux else None app = Application(args, override_program_name=override, windows_app_uid=VIEWER_APP_UID) parser = option_parser() opts, args = parser.parse_args(args) oat = opts.open_at if oat and not ( oat.startswith('toc:') or oat.startswith('toc-href:') or oat.startswith('toc-href-contains:') or oat.startswith('epubcfi(/') or is_float(oat)): raise SystemExit('Not a valid --open-at value: {}'.format(opts.open_at)) listener = None if get_session_pref('singleinstance', False): try: listener = ensure_single_instance(args, opts.open_at) except Exception as e: import traceback error_dialog(None, _('Failed to start viewer'), as_unicode(e), det_msg=traceback.format_exc(), show=True) raise SystemExit(1) acc = EventAccumulator(app) app.file_event_hook = acc app.load_builtin_fonts() app.setWindowIcon(QIcon(I('viewer.png'))) migrate_previous_viewer_prefs() main = EbookViewer(open_at=opts.open_at, continue_reading=opts.continue_reading, force_reload=opts.force_reload) main.set_exception_handler() if len(args) > 1: acc.events.append(os.path.abspath(args[-1])) acc.got_file.connect(main.handle_commandline_arg) main.show() main.msg_from_anotherinstance.connect(main.another_instance_wants_to_talk, type=Qt.QueuedConnection) if listener is not None: t = Thread(name='ConnListener', target=listen, args=(listener, main.msg_from_anotherinstance)) t.daemon = True t.start() QTimer.singleShot(0, acc.flush) if opts.raise_window: main.raise_() if opts.full_screen: main.set_full_screen(True) app.exec_() if listener is not None: listener.close()
def option_parser(): from calibre.gui2.main_window import option_parser parser = option_parser( _( """\ %prog [options] book.lrf Read the LRF ebook book.lrf """ ) ) parser.add_option( "--verbose", default=False, action="store_true", dest="verbose", help=_("Print more information about the rendering process"), ) parser.add_option( "--visual-debug", help=_("Turn on visual aids to debugging the rendering engine"), default=False, action="store_true", dest="visual_debug", ) parser.add_option( "--disable-hyphenation", dest="hyphenate", default=True, action="store_false", help=_("Disable hyphenation. Should significantly speed up rendering."), ) parser.add_option( "--white-background", dest="white_background", default=False, action="store_true", help=_( "By default the background is off white as I find this easier on the eyes. Use this option to make the background pure white." ), ) parser.add_option( "--profile", dest="profile", default=False, action="store_true", help=_("Profile the LRF renderer") ) return parser
def option_parser(): from calibre.gui2.main_window import option_parser parser = option_parser(_('''\ %prog [options] book.lrf Read the LRF e-book book.lrf ''')) parser.add_option('--verbose', default=False, action='store_true', dest='verbose', help=_('Print more information about the rendering process')) parser.add_option('--visual-debug', help=_('Turn on visual aids to debugging the rendering engine'), default=False, action='store_true', dest='visual_debug') parser.add_option('--disable-hyphenation', dest='hyphenate', default=True, action='store_false', help=_('Disable hyphenation. Should significantly speed up rendering.')) parser.add_option('--white-background', dest='white_background', default=False, action='store_true', help=_('By default the background is off white as I find this easier on the eyes. Use this option to make the background pure white.')) parser.add_option('--profile', dest='profile', default=False, action='store_true', help=_('Profile the LRF renderer')) return parser
def main(args=sys.argv, logger=None): parser = option_parser() opts, args = parser.parse_args(args) if hasattr(opts, 'help'): parser.print_help() return 1 pid = os.fork() if (islinux or isbsd) else -1 if pid <= 0: override = 'calibre-lrf-viewer' if islinux else None app = Application(args, override_program_name=override) app.setWindowIcon(QIcon(I('viewer.png'))) opts = normalize_settings(parser, opts) stream = open(args[1], 'rb') if len(args) > 1 else None main = file_renderer(stream, opts, logger=logger) main.set_exception_handler() main.show() main.render() main.activateWindow() main.raise_() return app.exec_() return 0
def option_parser(): from calibre.gui2.main_window import option_parser parser = option_parser(_('''\ %prog [options] file View an e-book. ''')) a = parser.add_option a('--raise-window', default=False, action='store_true', help=_('If specified, viewer window will try to come to the ' 'front when started.')) a('--full-screen', '--fullscreen', '-f', default=False, action='store_true', help=_('If specified, viewer window will try to open ' 'full screen when started.')) a('--open-at', default=None, help=_( 'The position at which to open the specified book. The position is ' 'a location you can get by using the Goto action in the viewer controls. ' 'Alternately, you can use the form toc:something and it will open ' 'at the location of the first Table of Contents entry that contains ' 'the string "something".')) a('--continue', default=False, action='store_true', dest='continue_reading', help=_('Continue reading at the previously opened book')) setup_gui_option_parser(parser) return parser