diff --git a/src/calibre/gui2/__init__.py b/src/calibre/gui2/__init__.py
index 83ade61200..715696a89e 100644
--- a/src/calibre/gui2/__init__.py
+++ b/src/calibre/gui2/__init__.py
@@ -98,6 +98,7 @@
]
gprefs.defaults['default_author_link'] = 'http://en.wikipedia.org/w/index.php?search={author}'
gprefs.defaults['preserve_date_on_ctl'] = True
+gprefs.defaults['cb_fullscreen'] = False
# }}}
diff --git a/src/calibre/gui2/cover_flow.py b/src/calibre/gui2/cover_flow.py
index ca108a592e..67a8f08bcd 100644
--- a/src/calibre/gui2/cover_flow.py
+++ b/src/calibre/gui2/cover_flow.py
@@ -9,8 +9,8 @@
import sys, os, time
-from PyQt4.Qt import (QImage, QSizePolicy, QTimer, QDialog, Qt, QSize,
- QStackedLayout, QLabel, QByteArray, pyqtSignal)
+from PyQt4.Qt import (QImage, QSizePolicy, QTimer, QDialog, Qt, QSize, QAction,
+ QStackedLayout, QLabel, QByteArray, pyqtSignal, QKeySequence)
from calibre import plugins
from calibre.gui2 import config, available_height, available_width, gprefs
@@ -150,12 +150,39 @@ def __init__(self, parent, cover_flow):
if not self.restoreGeometry(geom):
h, w = available_height()-60, int(available_width()/1.5)
self.resize(w, h)
+ self.action_fs_toggle = a = QAction(self)
+ self.addAction(a)
+ a.setShortcuts([QKeySequence('F11', QKeySequence.PortableText),
+ QKeySequence('Ctrl+Shift+F', QKeySequence.PortableText)])
+ a.triggered.connect(self.toggle_fullscreen)
+ self.action_esc_fs = a = QAction(self)
+ a.triggered.connect(self.show_normal)
+ self.addAction(a)
+ a.setShortcuts([QKeySequence('Esc', QKeySequence.PortableText)])
+
+ self.pre_fs_geom = None
def closeEvent(self, *args):
- geom = bytearray(self.saveGeometry())
- gprefs['cover_browser_dialog_geometry'] = geom
+ if not self.isFullScreen():
+ geom = bytearray(self.saveGeometry())
+ gprefs['cover_browser_dialog_geometry'] = geom
self.closed.emit()
+ def show_normal(self):
+ self.showNormal()
+ if self.pre_fs_geom is not None:
+ self.restoreGeometry(self.pre_fs_geom)
+ self.pre_fs_geom = None
+
+ def toggle_fullscreen(self, *args):
+ if self.isFullScreen():
+ self.show_normal()
+ else:
+ self.pre_fs_geom = bytearray(self.saveGeometry())
+ self.showFullScreen()
+
+
+
class CoverFlowMixin(object):
def __init__(self):
@@ -228,7 +255,7 @@ def show_cover_browser(self):
d.addAction(self.cb_splitter.action_toggle)
self.cover_flow.setVisible(True)
self.cover_flow.setFocus(Qt.OtherFocusReason)
- d.show()
+ d.showFullScreen() if gprefs['cb_fullscreen'] else d.show()
self.cb_splitter.button.set_state_to_hide()
d.closed.connect(self.cover_browser_closed)
self.cb_dialog = d
diff --git a/src/calibre/gui2/preferences/look_feel.py b/src/calibre/gui2/preferences/look_feel.py
index c87cad7cad..c017fe69c2 100644
--- a/src/calibre/gui2/preferences/look_feel.py
+++ b/src/calibre/gui2/preferences/look_feel.py
@@ -6,7 +6,7 @@
__docformat__ = 'restructuredtext en'
from PyQt4.Qt import (QApplication, QFont, QFontInfo, QFontDialog,
- QAbstractListModel, Qt, QIcon)
+ QAbstractListModel, Qt, QIcon, QKeySequence)
from calibre.gui2.preferences import ConfigWidgetBase, test_widget, CommaSeparatedList
from calibre.gui2.preferences.look_feel_ui import Ui_Form
@@ -129,6 +129,7 @@ def get_esc_lang(l):
r('disable_tray_notification', config)
r('use_roman_numerals_for_series_number', config)
r('separate_cover_flow', config, restart_required=True)
+ r('cb_fullscreen', gprefs)
choices = [(_('Off'), 'off'), (_('Small'), 'small'),
(_('Medium'), 'medium'), (_('Large'), 'large')]
@@ -170,6 +171,11 @@ def get_esc_lang(l):
self.tabWidget.addTab(self.edit_rules,
QIcon(I('format-fill-color.png')), _('Column coloring'))
self.tabWidget.setCurrentIndex(0)
+ keys = [QKeySequence('F11', QKeySequence.PortableText), QKeySequence(
+ 'Ctrl+Shift+F', QKeySequence.PortableText)]
+ keys = [unicode(x.toString(QKeySequence.NativeText)) for x in keys]
+ self.fs_help_msg.setText(unicode(self.fs_help_msg.text())%(
+ _(' or ').join(keys)))
def initialize(self):
ConfigWidgetBase.initialize(self)
diff --git a/src/calibre/gui2/preferences/look_feel.ui b/src/calibre/gui2/preferences/look_feel.ui
index 07d533fdef..498013a68b 100644
--- a/src/calibre/gui2/preferences/look_feel.ui
+++ b/src/calibre/gui2/preferences/look_feel.ui
@@ -417,7 +417,7 @@ then the tags will be displayed each on their own line.
-
- -
+
-
Qt::Vertical
@@ -430,6 +430,26 @@ then the tags will be displayed each on their own line.
+ -
+
+
+ When showing cover browser in separate window, show it &fullscreen
+
+
+
+ -
+
+
+ margin-left: 1.5em
+
+
+ You can press the %s keys to toggle full screen mode.
+
+
+ true
+
+
+