diff --git a/src/calibre/gui2/viewer/config.py b/src/calibre/gui2/viewer/config.py index 8643ce63d0..afef45af4b 100644 --- a/src/calibre/gui2/viewer/config.py +++ b/src/calibre/gui2/viewer/config.py @@ -59,6 +59,8 @@ def config(defaults=None): help=_('Show reading position in fullscreen mode.')) c.add_opt('fullscreen_scrollbar', default=True, action='store_false', help=_('Show the scrollbar in fullscreen mode.')) + c.add_opt('start_in_fullscreen', default=False, action='store_true', + help=_('Start viewer in full screen mode')) c.add_opt('cols_per_screen', default=1) c.add_opt('use_book_margins', default=False, action='store_true') c.add_opt('top_margin', default=20) @@ -206,6 +208,7 @@ class ConfigDialog(QDialog, Ui_Dialog): self.opt_fit_images.setChecked(opts.fit_images) self.opt_fullscreen_clock.setChecked(opts.fullscreen_clock) self.opt_fullscreen_scrollbar.setChecked(opts.fullscreen_scrollbar) + self.opt_start_in_fullscreen.setChecked(opts.start_in_fullscreen) self.opt_fullscreen_pos.setChecked(opts.fullscreen_pos) self.opt_cols_per_screen.setValue(opts.cols_per_screen) self.opt_override_book_margins.setChecked(not opts.use_book_margins) @@ -279,6 +282,7 @@ class ConfigDialog(QDialog, Ui_Dialog): c.set('fullscreen_clock', self.opt_fullscreen_clock.isChecked()) c.set('fullscreen_pos', self.opt_fullscreen_pos.isChecked()) c.set('fullscreen_scrollbar', self.opt_fullscreen_scrollbar.isChecked()) + c.set('start_in_fullscreen', self.opt_start_in_fullscreen.isChecked()) c.set('cols_per_screen', int(self.opt_cols_per_screen.value())) c.set('use_book_margins', not self.opt_override_book_margins.isChecked()) diff --git a/src/calibre/gui2/viewer/config.ui b/src/calibre/gui2/viewer/config.ui index f91462e5b2..f3fe8c7f1d 100644 --- a/src/calibre/gui2/viewer/config.ui +++ b/src/calibre/gui2/viewer/config.ui @@ -388,20 +388,27 @@ QToolBox::tab:hover { - + Show reading &position in full screen mode - + Show &scrollbar in full screen mode + + + + &Start viewer in full screen mode + + + diff --git a/src/calibre/gui2/viewer/documentview.py b/src/calibre/gui2/viewer/documentview.py index d528b1c0d8..5566f00c19 100644 --- a/src/calibre/gui2/viewer/documentview.py +++ b/src/calibre/gui2/viewer/documentview.py @@ -145,6 +145,7 @@ class Document(QWebPage): # {{{ self.fullscreen_clock = opts.fullscreen_clock self.fullscreen_scrollbar = opts.fullscreen_scrollbar self.fullscreen_pos = opts.fullscreen_pos + self.start_in_fullscreen = opts.start_in_fullscreen self.use_book_margins = opts.use_book_margins self.cols_per_screen = opts.cols_per_screen self.side_margin = opts.side_margin diff --git a/src/calibre/gui2/viewer/main.py b/src/calibre/gui2/viewer/main.py index 9d5049d25a..395d14abda 100644 --- a/src/calibre/gui2/viewer/main.py +++ b/src/calibre/gui2/viewer/main.py @@ -21,7 +21,7 @@ from calibre.gui2 import (Application, ORG_NAME, APP_UID, choose_files, info_dialog, error_dialog, open_url, available_height) from calibre.ebooks.oeb.iterator.book import EbookIterator from calibre.ebooks import DRMError -from calibre.constants import islinux, isbsd, filesystem_encoding +from calibre.constants import islinux, filesystem_encoding from calibre.utils.config import Config, StringConfig, JSONConfig from calibre.gui2.search_box import SearchBox2 from calibre.ebooks.metadata import MetaInformation @@ -160,7 +160,8 @@ class EbookViewer(MainWindow, Ui_EbookViewer): PAGED_MODE_TT = _('Switch to flow mode - where the text is not broken up ' 'into pages') - def __init__(self, pathtoebook=None, debug_javascript=False, open_at=None): + def __init__(self, pathtoebook=None, debug_javascript=False, open_at=None, + start_in_fullscreen=False): MainWindow.__init__(self, None) self.setupUi(self) self.view.initialize_view(debug_javascript) @@ -360,6 +361,8 @@ class EbookViewer(MainWindow, Ui_EbookViewer): self.restore_state() self.action_toggle_paged_mode.toggled[bool].connect(self.toggle_paged_mode) + if (start_in_fullscreen or self.view.document.start_in_fullscreen): + self.action_full_screen.trigger() def toggle_paged_mode(self, checked, at_start=False): in_paged_mode = not self.action_toggle_paged_mode.isChecked() @@ -399,7 +402,7 @@ class EbookViewer(MainWindow, Ui_EbookViewer): count += 1 def shutdown(self): - if self.isFullScreen(): + if self.isFullScreen() and not self.view.document.start_in_fullscreen: self.action_full_screen.trigger() return False self.save_state() @@ -1134,32 +1137,29 @@ def main(args=sys.argv): parser = option_parser() opts, args = parser.parse_args(args) - pid = os.fork() if False and (islinux or isbsd) else -1 try: open_at = float(opts.open_at) except: open_at = None - if pid <= 0: - override = 'calibre-ebook-viewer' if islinux else None - app = Application(args, override_program_name=override) - app.load_builtin_fonts() - app.setWindowIcon(QIcon(I('viewer.png'))) - QApplication.setOrganizationName(ORG_NAME) - QApplication.setApplicationName(APP_UID) - main = EbookViewer(args[1] if len(args) > 1 else None, - debug_javascript=opts.debug_javascript, open_at=open_at) - # This is needed for paged mode. Without it, the first document that is - # loaded will have extra blank space at the bottom, as - # turn_off_internal_scrollbars does not take effect for the first - # rendered document - main.view.load_path(P('viewer/blank.html', allow_user_override=False)) + override = 'calibre-ebook-viewer' if islinux else None + app = Application(args, override_program_name=override) + app.load_builtin_fonts() + app.setWindowIcon(QIcon(I('viewer.png'))) + QApplication.setOrganizationName(ORG_NAME) + QApplication.setApplicationName(APP_UID) + main = EbookViewer(args[1] if len(args) > 1 else None, + debug_javascript=opts.debug_javascript, open_at=open_at, + start_in_fullscreen=opts.full_screen) + # This is needed for paged mode. Without it, the first document that is + # loaded will have extra blank space at the bottom, as + # turn_off_internal_scrollbars does not take effect for the first + # rendered document + main.view.load_path(P('viewer/blank.html', allow_user_override=False)) - sys.excepthook = main.unhandled_exception - main.show() - if opts.raise_window: - main.raise_() - if opts.full_screen: - main.action_full_screen.trigger() + sys.excepthook = main.unhandled_exception + main.show() + if opts.raise_window: + main.raise_() with main: return app.exec_() return 0