From 2c260742f6607986615c7af00223f8fd4f5f6f9f Mon Sep 17 00:00:00 2001 From: Virgil Dupras Date: Fri, 23 Sep 2011 10:29:25 -0400 Subject: [PATCH] [#82] Added table font size pref (Qt). --- qt/base/app.py | 3 +++ qt/base/preferences.py | 5 +++++ qt/base/preferences_dialog.py | 12 +++++++++--- qt/base/result_window.py | 1 - qt/base/results_model.py | 19 +++++++++++++++---- 5 files changed, 32 insertions(+), 8 deletions(-) diff --git a/qt/base/app.py b/qt/base/app.py index c53ef84e..fa237f61 100644 --- a/qt/base/app.py +++ b/qt/base/app.py @@ -67,6 +67,7 @@ class DupeGuru(QObject): self.prefs.load() self.model = self.MODELCLASS(view=self, appdata=appdata) self._setup() + self.prefsChanged.emit(self.prefs) #--- Private def _setup(self): @@ -193,6 +194,7 @@ class DupeGuru(QObject): #--- Signals willSavePrefs = pyqtSignal() + prefsChanged = pyqtSignal(object) #--- Events def finishedLaunching(self): @@ -237,6 +239,7 @@ class DupeGuru(QObject): self.preferences_dialog.save() self.prefs.save() self._update_options() + self.prefsChanged.emit(self.prefs) def quitTriggered(self): self.directories_dialog.close() diff --git a/qt/base/preferences.py b/qt/base/preferences.py index 749ed719..d95804fa 100644 --- a/qt/base/preferences.py +++ b/qt/base/preferences.py @@ -6,6 +6,8 @@ # which should be included with this package. The terms are also available at # http://www.hardcoded.net/licenses/bsd_license +from PyQt4.QtGui import QApplication + from qtlib.preferences import Preferences as PreferencesBase class Preferences(PreferencesBase): @@ -39,6 +41,7 @@ class Preferences(PreferencesBase): self.columns_width[index] = width self.columns_visible = get('ColumnsVisible', self.columns_visible) + self.tableFontSize = get('TableFontSize', self.tableFontSize) self.resultWindowIsMaximized = get('ResultWindowIsMaximized', self.resultWindowIsMaximized) self.resultWindowRect = self.get_rect('ResultWindowRect', self.resultWindowRect) self.detailsWindowRect = self.get_rect('DetailsWindowRect', self.detailsWindowRect) @@ -65,6 +68,7 @@ class Preferences(PreferencesBase): self.custom_command = '' self.language = '' + self.tableFontSize = QApplication.font().pointSize() self.resultWindowIsMaximized = False self.resultWindowRect = None self.detailsWindowRect = None @@ -98,6 +102,7 @@ class Preferences(PreferencesBase): set_('ColumnsVisible', self.columns_visible) set_('Language', self.language) + set_('TableFontSize', self.tableFontSize) set_('ResultWindowIsMaximized', self.resultWindowIsMaximized) self.set_rect('ResultWindowRect', self.resultWindowRect) self.set_rect('DetailsWindowRect', self.detailsWindowRect) diff --git a/qt/base/preferences_dialog.py b/qt/base/preferences_dialog.py index 37ad6dcf..9357ae29 100644 --- a/qt/base/preferences_dialog.py +++ b/qt/base/preferences_dialog.py @@ -8,10 +8,11 @@ from PyQt4.QtCore import SIGNAL, Qt, QSize from PyQt4.QtGui import (QDialog, QDialogButtonBox, QVBoxLayout, QHBoxLayout, QLabel, QComboBox, - QSlider, QSizePolicy, QSpacerItem, QCheckBox, QLineEdit, QMessageBox) + QSlider, QSizePolicy, QSpacerItem, QCheckBox, QLineEdit, QMessageBox, QSpinBox) from hscommon.plat import ISOSX, ISLINUX from hscommon.trans import tr, trmsg +from qtlib.util import horizontalWrap class PreferencesDialogBase(QDialog): def __init__(self, parent, app): @@ -79,14 +80,17 @@ class PreferencesDialogBase(QDialog): def _setupBottomPart(self): # The bottom part of the pref panel is always the same in all editions. + self.fontSizeLabel = QLabel(tr("Font size:")) + self.fontSizeSpinBox = QSpinBox() + self.fontSizeSpinBox.setMinimum(5) + self.widgetsVLayout.addLayout(horizontalWrap([self.fontSizeLabel, self.fontSizeSpinBox, None])) self.languageLabel = QLabel(tr("Language:"), self) - self.widgetsVLayout.addWidget(self.languageLabel) self.languageComboBox = QComboBox(self) self.languageComboBox.addItem(tr("English")) self.languageComboBox.addItem(tr("French")) self.languageComboBox.addItem(tr("German")) self.languageComboBox.addItem(tr("Chinese (Simplified)")) - self.widgetsVLayout.addWidget(self.languageComboBox) + self.widgetsVLayout.addLayout(horizontalWrap([self.languageLabel, self.languageComboBox, None])) self.copyMoveLabel = QLabel(self) self.copyMoveLabel.setText(tr("Copy and Move:")) self.widgetsVLayout.addWidget(self.copyMoveLabel) @@ -149,6 +153,7 @@ class PreferencesDialogBase(QDialog): setchecked(self.debugModeBox, prefs.debug_mode) self.copyMoveDestinationComboBox.setCurrentIndex(prefs.destination_type) self.customCommandEdit.setText(prefs.custom_command) + self.fontSizeSpinBox.setValue(prefs.tableFontSize) langindex = { 'fr': 1, 'de': 2, @@ -168,6 +173,7 @@ class PreferencesDialogBase(QDialog): prefs.debug_mode = ischecked(self.debugModeBox) prefs.destination_type = self.copyMoveDestinationComboBox.currentIndex() prefs.custom_command = str(self.customCommandEdit.text()) + prefs.tableFontSize = self.fontSizeSpinBox.value() langs = ['en', 'fr', 'de', 'zh_CN'] lang = langs[self.languageComboBox.currentIndex()] oldlang = self.app.prefs.language diff --git a/qt/base/result_window.py b/qt/base/result_window.py index e5a0ce5d..dd1bdbcc 100644 --- a/qt/base/result_window.py +++ b/qt/base/result_window.py @@ -177,7 +177,6 @@ class ResultWindow(QMainWindow): self.resultsView.setSelectionBehavior(QAbstractItemView.SelectRows) self.resultsView.setSortingEnabled(True) self.resultsView.verticalHeader().setVisible(False) - self.resultsView.verticalHeader().setDefaultSectionSize(18) h = self.resultsView.horizontalHeader() h.setHighlightSections(False) h.setMovable(True) diff --git a/qt/base/results_model.py b/qt/base/results_model.py index 7bbbc58d..5123f60f 100644 --- a/qt/base/results_model.py +++ b/qt/base/results_model.py @@ -6,8 +6,8 @@ # which should be included with this package. The terms are also available at # http://www.hardcoded.net/licenses/bsd_license -from PyQt4.QtCore import SIGNAL, Qt -from PyQt4.QtGui import QBrush, QFont, QTableView, QColor +from PyQt4.QtCore import SIGNAL, Qt, QSize +from PyQt4.QtGui import QBrush, QFont, QFontMetrics, QTableView, QColor from qtlib.table import Table @@ -20,6 +20,8 @@ class ResultsModel(Table): self._delta_columns = app.model.DELTA_COLUMNS Table.__init__(self, model, view) self.model.connect() + + app.prefsChanged.connect(self.appPrefsChanged) def columnCount(self, parent): return len(self._app.COLUMNS) @@ -61,8 +63,9 @@ class ResultsModel(Table): return flags def headerData(self, section, orientation, role): - if orientation == Qt.Horizontal and role == Qt.DisplayRole and section < len(self._app.COLUMNS): - return self._app.COLUMNS[section].display + if role == Qt.DisplayRole: + if orientation == Qt.Horizontal and section < len(self._app.COLUMNS): + return self._app.COLUMNS[section].display return None def setData(self, index, value, role): @@ -99,6 +102,14 @@ class ResultsModel(Table): def delta_values(self, value): self.model.delta_values = value + #--- Events + def appPrefsChanged(self, prefs): + font = self.view.font() + font.setPointSize(prefs.tableFontSize) + self.view.setFont(font) + fm = QFontMetrics(font) + self.view.verticalHeader().setDefaultSectionSize(fm.height()+2) + #--- model --> view def invalidate_markings(self): # redraw view