[#82] Added table font size pref (Qt).

This commit is contained in:
Virgil Dupras 2011-09-23 10:29:25 -04:00
parent b8ac192d2a
commit 2c260742f6
5 changed files with 32 additions and 8 deletions

View File

@ -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()

View File

@ -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)

View File

@ -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

View File

@ -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)

View File

@ -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