Helpviewer/ZoomManager/ZoomValuesDialog.py

changeset 4612
c9982bcd00f8
child 4631
5c1a96925da4
equal deleted inserted replaced
4610:93732395fc1d 4612:c9982bcd00f8
1 # -*- coding: utf-8 -*-
2
3 # Copyright (c) 2015 Detlev Offenbach <detlev@die-offenbachs.de>
4 #
5
6 """
7 Module implementing a dialog to show all saved zoom values.
8 """
9
10 from __future__ import unicode_literals
11
12 from PyQt5.QtCore import QSortFilterProxyModel
13 from PyQt5.QtGui import QFont, QFontMetrics
14 from PyQt5.QtWidgets import QDialog
15
16 from .Ui_ZoomValuesDialog import Ui_ZoomValuesDialog
17
18
19 class ZoomValuesDialog(QDialog, Ui_ZoomValuesDialog):
20 """
21 Class implementing a dialog to show all saved zoom values.
22 """
23 def __init__(self, parent=None):
24 """
25 Constructor
26
27 @param parent reference to the parent widget (QWidget)
28 """
29 super(ZoomValuesDialog, self).__init__(parent)
30 self.setupUi(self)
31
32 self.removeButton.clicked.connect(
33 self.zoomValuesTable.removeSelected)
34 self.removeAllButton.clicked.connect(self.zoomValuesTable.removeAll)
35
36 import Helpviewer.HelpWindow
37 from .ZoomValuesModel import ZoomValuesModel
38
39 self.zoomValuesTable.verticalHeader().hide()
40 self.__zoomValuesModel = ZoomValuesModel(
41 Helpviewer.HelpWindow.HelpWindow.zoomManager(), self)
42 self.__proxyModel = QSortFilterProxyModel(self)
43 self.__proxyModel.setSourceModel(self.__zoomValuesModel)
44 self.searchEdit.textChanged.connect(
45 self.__proxyModel.setFilterFixedString)
46 self.zoomValuesTable.setModel(self.__proxyModel)
47
48 fm = QFontMetrics(QFont())
49 height = fm.height() + fm.height() // 3
50 self.zoomValuesTable.verticalHeader().setDefaultSectionSize(height)
51 self.zoomValuesTable.verticalHeader().setMinimumSectionSize(-1)
52
53 self.__calculateHeaderSizes()
54
55 def __calculateHeaderSizes(self):
56 """
57 Private method to calculate the section sizes of the horizontal header.
58 """
59 fm = QFontMetrics(QFont())
60 for section in range(self.__zoomValuesModel.columnCount()):
61 header = self.zoomValuesTable.horizontalHeader()\
62 .sectionSizeHint(section)
63 if section == 0:
64 header = fm.width("extraveryveryverylongsitename")
65 elif section == 1:
66 header = fm.width("averagelongzoomvalue")
67 buffer = fm.width("mm")
68 header += buffer
69 self.zoomValuesTable.horizontalHeader()\
70 .resizeSection(section, header)
71 self.zoomValuesTable.horizontalHeader().setStretchLastSection(True)

eric ide

mercurial