Add an option to viewer preferences, to remeber last used window size. Fixes #2406 (set default ebook viewer window size?)

This commit is contained in:
Kovid Goyal 2009-05-09 10:00:15 -07:00
parent b839cc76e1
commit 59a52e927a
3 changed files with 104 additions and 76 deletions

View File

@ -1,7 +1,8 @@
<ui version="4.0" >
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>Dialog</class>
<widget class="QDialog" name="Dialog" >
<property name="geometry" >
<widget class="QDialog" name="Dialog">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
@ -9,150 +10,157 @@
<height>574</height>
</rect>
</property>
<property name="windowTitle" >
<property name="windowTitle">
<string>Configure Ebook viewer</string>
</property>
<property name="windowIcon" >
<iconset resource="../images.qrc" >
<property name="windowIcon">
<iconset resource="../images.qrc">
<normaloff>:/images/config.svg</normaloff>:/images/config.svg</iconset>
</property>
<layout class="QGridLayout" name="gridLayout_4" >
<item row="0" column="0" >
<widget class="QGroupBox" name="groupBox" >
<property name="title" >
<layout class="QGridLayout" name="gridLayout_4">
<item row="0" column="0">
<widget class="QGroupBox" name="groupBox">
<property name="title">
<string>&amp;Font options</string>
</property>
<layout class="QGridLayout" name="gridLayout_3" >
<item row="0" column="0" >
<layout class="QGridLayout" name="gridLayout" >
<item row="0" column="0" >
<widget class="QLabel" name="label" >
<property name="text" >
<layout class="QGridLayout" name="gridLayout_3">
<item row="0" column="0">
<layout class="QGridLayout" name="gridLayout">
<item row="0" column="0">
<widget class="QLabel" name="label">
<property name="text">
<string>Se&amp;rif family:</string>
</property>
<property name="buddy" >
<property name="buddy">
<cstring>serif_family</cstring>
</property>
</widget>
</item>
<item row="0" column="1" >
<widget class="QFontComboBox" name="serif_family" />
<item row="0" column="1">
<widget class="QFontComboBox" name="serif_family"/>
</item>
<item row="1" column="0" >
<widget class="QLabel" name="label_2" >
<property name="text" >
<item row="1" column="0">
<widget class="QLabel" name="label_2">
<property name="text">
<string>&amp;Sans family:</string>
</property>
<property name="buddy" >
<property name="buddy">
<cstring>sans_family</cstring>
</property>
</widget>
</item>
<item row="1" column="1" >
<widget class="QFontComboBox" name="sans_family" />
<item row="1" column="1">
<widget class="QFontComboBox" name="sans_family"/>
</item>
<item row="2" column="0" >
<widget class="QLabel" name="label_3" >
<property name="text" >
<item row="2" column="0">
<widget class="QLabel" name="label_3">
<property name="text">
<string>&amp;Monospace family:</string>
</property>
<property name="buddy" >
<property name="buddy">
<cstring>mono_family</cstring>
</property>
</widget>
</item>
<item row="2" column="1" >
<widget class="QFontComboBox" name="mono_family" />
<item row="2" column="1">
<widget class="QFontComboBox" name="mono_family"/>
</item>
</layout>
</item>
<item row="1" column="0" >
<layout class="QGridLayout" name="gridLayout_2" >
<item row="0" column="0" >
<widget class="QLabel" name="label_4" >
<property name="text" >
<item row="1" column="0">
<layout class="QGridLayout" name="gridLayout_2">
<item row="0" column="0">
<widget class="QLabel" name="label_4">
<property name="text">
<string>&amp;Default font size:</string>
</property>
<property name="buddy" >
<property name="buddy">
<cstring>default_font_size</cstring>
</property>
</widget>
</item>
<item row="0" column="1" >
<widget class="QSpinBox" name="default_font_size" >
<property name="suffix" >
<item row="0" column="1">
<widget class="QSpinBox" name="default_font_size">
<property name="suffix">
<string> px</string>
</property>
<property name="minimum" >
<property name="minimum">
<number>8</number>
</property>
<property name="maximum" >
<property name="maximum">
<number>40</number>
</property>
</widget>
</item>
<item row="1" column="0" >
<widget class="QLabel" name="label_5" >
<property name="text" >
<item row="1" column="0">
<widget class="QLabel" name="label_5">
<property name="text">
<string>Monospace &amp;font size:</string>
</property>
<property name="buddy" >
<property name="buddy">
<cstring>mono_font_size</cstring>
</property>
</widget>
</item>
<item row="1" column="1" >
<widget class="QSpinBox" name="mono_font_size" >
<property name="suffix" >
<item row="1" column="1">
<widget class="QSpinBox" name="mono_font_size">
<property name="suffix">
<string> px</string>
</property>
<property name="minimum" >
<property name="minimum">
<number>8</number>
</property>
<property name="maximum" >
<property name="maximum">
<number>50</number>
</property>
</widget>
</item>
<item row="2" column="0" >
<widget class="QLabel" name="label_6" >
<property name="text" >
<item row="2" column="0">
<widget class="QLabel" name="label_6">
<property name="text">
<string>S&amp;tandard font:</string>
</property>
<property name="buddy" >
<property name="buddy">
<cstring>standard_font</cstring>
</property>
</widget>
</item>
<item row="2" column="1" >
<widget class="QComboBox" name="standard_font" >
<item row="2" column="1">
<widget class="QComboBox" name="standard_font">
<item>
<property name="text" >
<property name="text">
<string>Serif</string>
</property>
</item>
<item>
<property name="text" >
<property name="text">
<string>Sans-serif</string>
</property>
</item>
<item>
<property name="text" >
<property name="text">
<string>Monospace</string>
</property>
</item>
</widget>
</item>
<item row="3" column="0" colspan="2">
<widget class="QCheckBox" name="opt_remember_window_size">
<property name="text">
<string>Remember last used &amp;window size</string>
</property>
</widget>
</item>
</layout>
</item>
<item row="2" column="0" >
<widget class="QGroupBox" name="groupBox_2" >
<property name="title" >
<item row="2" column="0">
<widget class="QGroupBox" name="groupBox_2">
<property name="title">
<string>&amp;User stylesheet</string>
</property>
<layout class="QGridLayout" name="gridLayout_5" >
<item row="0" column="0" >
<widget class="QPlainTextEdit" name="css" />
<layout class="QGridLayout" name="gridLayout_5">
<item row="0" column="0">
<widget class="QPlainTextEdit" name="css"/>
</item>
</layout>
</widget>
@ -160,12 +168,12 @@
</layout>
</widget>
</item>
<item row="1" column="0" >
<widget class="QDialogButtonBox" name="buttonBox" >
<property name="orientation" >
<item row="1" column="0">
<widget class="QDialogButtonBox" name="buttonBox">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="standardButtons" >
<property name="standardButtons">
<set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set>
</property>
</widget>
@ -173,7 +181,7 @@
</layout>
</widget>
<resources>
<include location="../images.qrc" />
<include location="../images.qrc"/>
</resources>
<connections>
<connection>
@ -182,11 +190,11 @@
<receiver>Dialog</receiver>
<slot>accept()</slot>
<hints>
<hint type="sourcelabel" >
<hint type="sourcelabel">
<x>248</x>
<y>254</y>
</hint>
<hint type="destinationlabel" >
<hint type="destinationlabel">
<x>157</x>
<y>274</y>
</hint>
@ -198,11 +206,11 @@
<receiver>Dialog</receiver>
<slot>reject()</slot>
<hints>
<hint type="sourcelabel" >
<hint type="sourcelabel">
<x>316</x>
<y>260</y>
</hint>
<hint type="destinationlabel" >
<hint type="destinationlabel">
<x>286</x>
<y>274</y>
</hint>

View File

@ -53,6 +53,8 @@ def config(defaults=None):
else:
c = StringConfig(defaults, desc)
c.add_opt('remember_window_size', default=False,
help=_('Remember last used window size'))
c.add_opt('user_css', default='',
help=_('Set the user CSS stylesheet. This can be used to customize the look of all books.'))
@ -76,6 +78,7 @@ class ConfigDialog(QDialog, Ui_Dialog):
self.setupUi(self)
opts = config().parse()
self.opt_remember_window_size.setChecked(opts.remember_window_size)
self.serif_family.setCurrentFont(QFont(opts.serif_family))
self.sans_family.setCurrentFont(QFont(opts.sans_family))
self.mono_family.setCurrentFont(QFont(opts.mono_family))
@ -94,6 +97,7 @@ class ConfigDialog(QDialog, Ui_Dialog):
c.set('mono_font_size', self.mono_font_size.value())
c.set('standard_font', {0:'serif', 1:'sans', 2:'mono'}[self.standard_font.currentIndex()])
c.set('user_css', unicode(self.css.toPlainText()))
c.set('remember_window_size', self.opt_remember_window_size.isChecked())
return QDialog.accept(self, *args)

View File

@ -20,7 +20,7 @@ from calibre.ebooks.epub.from_any import SOURCE_FORMATS
from calibre.ebooks import DRMError
from calibre.gui2.dialogs.conversion_error import ConversionErrorDialog
from calibre.constants import islinux
from calibre.utils.config import Config, StringConfig
from calibre.utils.config import Config, StringConfig, dynamic
from calibre.gui2.library import SearchBox
from calibre.ebooks.metadata import MetaInformation
@ -198,6 +198,7 @@ class EbookViewer(MainWindow, Ui_EbookViewer):
self.pending_reference = None
self.pending_bookmark = None
self.selected_text = None
self.read_settings()
self.history = History(self.action_back, self.action_forward)
self.metadata = Metadata(self)
self.pos = DoubleSpinBox()
@ -570,10 +571,22 @@ class EbookViewer(MainWindow, Ui_EbookViewer):
return self
def __exit__(self, *args):
self.write_settings()
if self.iterator is not None:
self.save_current_position()
self.iterator.__exit__(*args)
def write_settings(self):
dynamic.set('viewer_window_geometry', self.saveGeometry())
def read_settings(self):
c = config().parse()
wg = dynamic['viewer_window_geometry']
if wg is not None and c.remember_window_size:
self.restoreGeometry(wg)
def config(defaults=None):
desc = _('Options to control the ebook viewer')
@ -585,6 +598,9 @@ def config(defaults=None):
c.add_opt('raise_window', ['--raise-window'], default=False,
help=_('If specified, viewer window will try to come to the '
'front when started.'))
c.add_opt('remember_window_size', default=False,
help=_('Remember last used window size'))
return c
def option_parser():