WebBrowser/ZoomManager/ZoomValuesModel.py

branch
QtWebEngine
changeset 4726
c26e2a2dc0cb
parent 4631
5c1a96925da4
child 5389
9b1c800daff3
equal deleted inserted replaced
4725:b19ff70ba509 4726:c26e2a2dc0cb
1 # -*- coding: utf-8 -*-
2
3 # Copyright (c) 2015 - 2016 Detlev Offenbach <detlev@die-offenbachs.de>
4 #
5
6 """
7 Module implementing a model for zoom values management.
8 """
9
10 from __future__ import unicode_literals
11
12 from PyQt5.QtCore import Qt, QModelIndex, QAbstractTableModel
13
14
15 class ZoomValuesModel(QAbstractTableModel):
16 """
17 Class implementing a model for zoom values management.
18 """
19 def __init__(self, manager, parent=None):
20 """
21 Constructor
22
23 @param manager reference to the zoom values manager (ZoomManager)
24 @param parent reference to the parent object (QObject)
25 """
26 super(ZoomValuesModel, self).__init__(parent)
27
28 self.__manager = manager
29 manager.changed.connect(self.__zoomValuesChanged)
30
31 self.__headers = [
32 self.tr("Website"),
33 self.tr("Zoom Value [%]"),
34 ]
35
36 def __zoomValuesChanged(self):
37 """
38 Private slot handling a change of the registered zoom values.
39 """
40 self.beginResetModel()
41 self.endResetModel()
42
43 def removeRows(self, row, count, parent=QModelIndex()):
44 """
45 Public method to remove entries from the model.
46
47 @param row start row (integer)
48 @param count number of rows to remove (integer)
49 @param parent parent index (QModelIndex)
50 @return flag indicating success (boolean)
51 """
52 if parent.isValid():
53 return False
54
55 if count <= 0:
56 return False
57
58 lastRow = row + count - 1
59
60 self.beginRemoveRows(parent, row, lastRow)
61
62 siteList = self.__manager.allSiteNames()
63 for index in range(row, lastRow + 1):
64 self.__manager.removeZoomValue(siteList[index])
65
66 return True
67
68 def rowCount(self, parent=QModelIndex()):
69 """
70 Public method to get the number of rows of the model.
71
72 @param parent parent index (QModelIndex)
73 @return number of rows (integer)
74 """
75 if parent.isValid():
76 return 0
77 else:
78 return self.__manager.sitesCount()
79
80 def columnCount(self, parent=QModelIndex()):
81 """
82 Public method to get the number of columns of the model.
83
84 @param parent parent index (QModelIndex)
85 @return number of columns (integer)
86 """
87 return len(self.__headers)
88
89 def data(self, index, role):
90 """
91 Public method to get data from the model.
92
93 @param index index to get data for (QModelIndex)
94 @param role role of the data to retrieve (integer)
95 @return requested data
96 """
97 if index.row() >= self.__manager.sitesCount() or index.row() < 0:
98 return None
99
100 site = self.__manager.allSiteNames()[index.row()]
101 siteInfo = self.__manager.siteInfo(site)
102
103 if siteInfo is None:
104 return None
105
106 if role == Qt.DisplayRole:
107 if index.column() == 0:
108 return site
109 elif index.column() == 1:
110 return siteInfo
111
112 return None
113
114 def headerData(self, section, orientation, role=Qt.DisplayRole):
115 """
116 Public method to get the header data.
117
118 @param section section number (integer)
119 @param orientation header orientation (Qt.Orientation)
120 @param role data role (integer)
121 @return header data
122 """
123 if orientation == Qt.Horizontal and role == Qt.DisplayRole:
124 try:
125 return self.__headers[section]
126 except IndexError:
127 pass
128
129 return None

eric ide

mercurial