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

View File

@ -53,6 +53,8 @@ def config(defaults=None):
else: else:
c = StringConfig(defaults, desc) c = StringConfig(defaults, desc)
c.add_opt('remember_window_size', default=False,
help=_('Remember last used window size'))
c.add_opt('user_css', default='', c.add_opt('user_css', default='',
help=_('Set the user CSS stylesheet. This can be used to customize the look of all books.')) 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) self.setupUi(self)
opts = config().parse() opts = config().parse()
self.opt_remember_window_size.setChecked(opts.remember_window_size)
self.serif_family.setCurrentFont(QFont(opts.serif_family)) self.serif_family.setCurrentFont(QFont(opts.serif_family))
self.sans_family.setCurrentFont(QFont(opts.sans_family)) self.sans_family.setCurrentFont(QFont(opts.sans_family))
self.mono_family.setCurrentFont(QFont(opts.mono_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('mono_font_size', self.mono_font_size.value())
c.set('standard_font', {0:'serif', 1:'sans', 2:'mono'}[self.standard_font.currentIndex()]) c.set('standard_font', {0:'serif', 1:'sans', 2:'mono'}[self.standard_font.currentIndex()])
c.set('user_css', unicode(self.css.toPlainText())) c.set('user_css', unicode(self.css.toPlainText()))
c.set('remember_window_size', self.opt_remember_window_size.isChecked())
return QDialog.accept(self, *args) 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.ebooks import DRMError
from calibre.gui2.dialogs.conversion_error import ConversionErrorDialog from calibre.gui2.dialogs.conversion_error import ConversionErrorDialog
from calibre.constants import islinux 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.gui2.library import SearchBox
from calibre.ebooks.metadata import MetaInformation from calibre.ebooks.metadata import MetaInformation
@ -198,6 +198,7 @@ class EbookViewer(MainWindow, Ui_EbookViewer):
self.pending_reference = None self.pending_reference = None
self.pending_bookmark = None self.pending_bookmark = None
self.selected_text = None self.selected_text = None
self.read_settings()
self.history = History(self.action_back, self.action_forward) self.history = History(self.action_back, self.action_forward)
self.metadata = Metadata(self) self.metadata = Metadata(self)
self.pos = DoubleSpinBox() self.pos = DoubleSpinBox()
@ -570,10 +571,22 @@ class EbookViewer(MainWindow, Ui_EbookViewer):
return self return self
def __exit__(self, *args): def __exit__(self, *args):
self.write_settings()
if self.iterator is not None: if self.iterator is not None:
self.save_current_position() self.save_current_position()
self.iterator.__exit__(*args) 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): def config(defaults=None):
desc = _('Options to control the ebook viewer') desc = _('Options to control the ebook viewer')
@ -585,6 +598,9 @@ def config(defaults=None):
c.add_opt('raise_window', ['--raise-window'], default=False, c.add_opt('raise_window', ['--raise-window'], default=False,
help=_('If specified, viewer window will try to come to the ' help=_('If specified, viewer window will try to come to the '
'front when started.')) 'front when started.'))
c.add_opt('remember_window_size', default=False,
help=_('Remember last used window size'))
return c return c
def option_parser(): def option_parser():