This commit is contained in:
Kovid Goyal 2007-08-11 02:44:32 +00:00
parent a1c8fcff51
commit 6c909065c4
2 changed files with 38 additions and 14 deletions

View File

@ -22,7 +22,8 @@ from PyQt4.QtGui import QTableView, QProgressDialog, QAbstractItemView, QColor,
QPen, QStyle, QPainter, QLineEdit, QApplication, \ QPen, QStyle, QPainter, QLineEdit, QApplication, \
QPalette QPalette
from PyQt4.QtCore import QAbstractTableModel, QVariant, Qt, QString, \ from PyQt4.QtCore import QAbstractTableModel, QVariant, Qt, QString, \
QCoreApplication, SIGNAL, QObject, QSize, QModelIndex QCoreApplication, SIGNAL, QObject, QSize, QModelIndex, \
QSettings
from libprs500.ptempfile import PersistentTemporaryFile from libprs500.ptempfile import PersistentTemporaryFile
from libprs500.library.database import LibraryDatabase from libprs500.library.database import LibraryDatabase
@ -355,10 +356,26 @@ class BooksView(QTableView):
QObject.connect(self.model(), SIGNAL('rowsInserted(QModelIndex, int, int)'), self.resizeRowsToContents) QObject.connect(self.model(), SIGNAL('rowsInserted(QModelIndex, int, int)'), self.resizeRowsToContents)
# Resetting the model should resize rows (model is reset after search and sort operations) # Resetting the model should resize rows (model is reset after search and sort operations)
QObject.connect(self.model(), SIGNAL('modelReset()'), self.resizeRowsToContents) QObject.connect(self.model(), SIGNAL('modelReset()'), self.resizeRowsToContents)
self.cw = str(QSettings().value(self.__class__.__name__ + ' column widths', QVariant('')).toString())
self.cw = tuple(int(i) for i in self.cw.split(','))
def write_settings(self):
settings = QSettings()
settings.setValue(self.__class__.__name__ + ' column widths',
QVariant(','.join(str(self.columnWidth(i))
for i in range(self.model().columnCount(None)))))
def restore_column_widths(self):
if self.cw and len(self.cw):
for i in range(len(self.cw)):
self.setColumnWidth(i, self.cw[i])
return True
return False
def set_database(self, db): def set_database(self, db):
self._model.set_database(db) self._model.set_database(db)
def migrate_database(self): def migrate_database(self):
if self._model.database_needs_migration(): if self._model.database_needs_migration():
print 'Migrating database from pre 0.4.0 version' print 'Migrating database from pre 0.4.0 version'

View File

@ -118,8 +118,9 @@ class Main(QObject, Ui_MainWindow):
window.show() window.show()
self.stack.setCurrentIndex(0) self.stack.setCurrentIndex(0)
self.library_view.migrate_database() self.library_view.migrate_database()
self.library_view.sortByColumn(3, Qt.DescendingOrder) self.library_view.sortByColumn(3, Qt.DescendingOrder)
self.library_view.resizeColumnsToContents() if not self.library_view.restore_column_widths():
self.library_view.resizeColumnsToContents()
self.library_view.resizeRowsToContents() self.library_view.resizeRowsToContents()
self.search.setFocus(Qt.OtherFocusReason) self.search.setFocus(Qt.OtherFocusReason)
@ -192,11 +193,11 @@ class Main(QObject, Ui_MainWindow):
self.memory_view.set_database(mainlist) self.memory_view.set_database(mainlist)
self.card_view.set_database(cardlist) self.card_view.set_database(cardlist)
for view in (self.memory_view, self.card_view): for view in (self.memory_view, self.card_view):
view.sortByColumn(3, Qt.DescendingOrder) view.sortByColumn(3, Qt.DescendingOrder)
view.resizeColumnsToContents() if not view.restore_column_widths():
view.resizeColumnsToContents()
view.resizeRowsToContents() view.resizeRowsToContents()
view.resize_on_select = not view.isVisible() view.resize_on_select = not view.isVisible()
#self.location_selected('main')
############################################################################ ############################################################################
@ -456,7 +457,8 @@ class Main(QObject, Ui_MainWindow):
if view: if view:
if view.resize_on_select: if view.resize_on_select:
view.resizeRowsToContents() view.resizeRowsToContents()
view.resizeColumnsToContents() if not view.restore_column_widths():
view.resizeColumnsToContents()
view.resize_on_select = False view.resize_on_select = False
self.status_bar.reset_info() self.status_bar.reset_info()
self.current_view().clearSelection() self.current_view().clearSelection()
@ -494,7 +496,7 @@ class Main(QObject, Ui_MainWindow):
def read_settings(self): def read_settings(self):
settings = QSettings() settings = QSettings()
settings.beginGroup("MainWindow") settings.beginGroup("Main Window")
self.window.resize(settings.value("size", QVariant(QSize(800, 600))).toSize()) self.window.resize(settings.value("size", QVariant(QSize(800, 600))).toSize())
settings.endGroup() settings.endGroup()
self.database_path = settings.value("database path", self.database_path = settings.value("database path",
@ -502,9 +504,13 @@ class Main(QObject, Ui_MainWindow):
def write_settings(self): def write_settings(self):
settings = QSettings() settings = QSettings()
settings.beginGroup("MainWindow") settings.beginGroup("Main Window")
settings.setValue("size", QVariant(self.window.size())) settings.setValue("size", QVariant(self.window.size()))
settings.endGroup() settings.endGroup()
settings.beginGroup('Book Views')
for view in (self.library_view, self.memory_view):
view.write_settings()
settings.endGroup()
def close_event(self, e): def close_event(self, e):
msg = 'There are active jobs. Are you sure you want to quit?' msg = 'There are active jobs. Are you sure you want to quit?'
@ -517,11 +523,12 @@ class Main(QObject, Ui_MainWindow):
QMessageBox.Yes|QMessageBox.No, self.window) QMessageBox.Yes|QMessageBox.No, self.window)
d.setIconPixmap(QPixmap(':/images/dialog_warning.svg')) d.setIconPixmap(QPixmap(':/images/dialog_warning.svg'))
d.setDefaultButton(QMessageBox.No) d.setDefaultButton(QMessageBox.No)
if d.exec_() == QMessageBox.Yes: if d.exec_() != QMessageBox.Yes:
self.write_settings()
e.accept()
else:
e.ignore() e.ignore()
return
self.write_settings()
e.accept()
def unhandled_exception(self, type, value, tb): def unhandled_exception(self, type, value, tb):
sio = StringIO.StringIO() sio = StringIO.StringIO()