Optional views remember their sizes when closed and re-opened

This commit is contained in:
Kovid Goyal 2010-05-06 09:19:06 -06:00
parent 9263615615
commit 887ee0b32c
2 changed files with 26 additions and 5 deletions

View File

@ -147,12 +147,21 @@ class SideBar(QToolBar):
tb_state = dynamic.get('tag_browser_state', None)
if tb_state is not None:
self.horizontal_splitter.restoreState(tb_state)
tb_last_open_state = dynamic.get('tag_browser_last_open_state', None)
if tb_last_open_state is not None and \
not self.horizontal_splitter.is_side_index_hidden:
self.horizontal_splitter.restoreState(tb_last_open_state)
bi_state = dynamic.get('book_info_state', None)
if bi_state is not None:
self.vertical_splitter.restoreState(bi_state)
self.horizontal_splitter.initialize()
self.vertical_splitter.initialize()
bi_last_open_state = dynamic.get('book_info_last_open_state', None)
if bi_last_open_state is not None and \
not self.vertical_splitter.is_side_index_hidden:
self.vertical_splitter.restoreState(bi_last_open_state)
self.horizontal_splitter.initialize(name='tag_browser')
self.vertical_splitter.initialize(name='book_info')
self.view_status_changed('book_info', not
self.vertical_splitter.is_side_index_hidden)
self.view_status_changed('tag_browser', not

View File

@ -14,7 +14,7 @@ from PyQt4.Qt import QListView, QIcon, QFont, QLabel, QListWidget, \
QMenu, QStringListModel, QCompleter, QStringList
from calibre.gui2 import human_readable, NONE, TableView, \
error_dialog, pixmap_to_data
error_dialog, pixmap_to_data, dynamic
from calibre.gui2.dialogs.job_view_ui import Ui_Dialog
from calibre.gui2.filename_pattern_ui import Ui_Form
from calibre import fit_image
@ -991,7 +991,9 @@ class Splitter(QSplitter):
def createHandle(self):
return SplitterHandle(self.orientation(), self)
def initialize(self):
def initialize(self, name=None):
if name is not None:
self._name = name
for i in range(self.count()):
h = self.handle(i)
if h is not None:
@ -1014,13 +1016,23 @@ class Splitter(QSplitter):
self.double_clicked(None)
def double_clicked(self, handle):
visible = not self.is_side_index_hidden
sizes = list(self.sizes())
if 0 in sizes:
idx = sizes.index(0)
sizes[idx] = 80
else:
sizes[self.side_index] = 0
self.setSizes(sizes)
if visible:
dynamic.set(self._name + '_last_open_state', str(self.saveState()))
self.setSizes(sizes)
else:
state = dynamic.get(self._name+ '_last_open_state', None)
if state is not None:
self.restoreState(state)
else:
self.setSizes(sizes)
self.initialize()