src/eric7/WebBrowser/ZoomManager/ZoomValuesDialog.py

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

eric ide

mercurial