eric6/Helpviewer/UserAgent/UserAgentModel.py

changeset 6942
2602857055c5
parent 6645
ad476851d7e0
equal deleted inserted replaced
6941:f99d60d6b59b 6942:2602857055c5
1 # -*- coding: utf-8 -*-
2
3 # Copyright (c) 2012 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
4 #
5
6 """
7 Module implementing a model for user agent management.
8 """
9
10 from __future__ import unicode_literals
11
12 from PyQt5.QtCore import Qt, QModelIndex, QAbstractTableModel
13
14
15 class UserAgentModel(QAbstractTableModel):
16 """
17 Class implementing a model for user agent management.
18 """
19 def __init__(self, manager, parent=None):
20 """
21 Constructor
22
23 @param manager reference to the user agent manager (UserAgentManager)
24 @param parent reference to the parent object (QObject)
25 """
26 super(UserAgentModel, self).__init__(parent)
27
28 self.__manager = manager
29 self.__manager.changed.connect(self.__userAgentsChanged)
30
31 self.__headers = [
32 self.tr("Host"),
33 self.tr("User Agent String"),
34 ]
35
36 def __userAgentsChanged(self):
37 """
38 Private slot handling a change of the registered user agent strings.
39 """
40 self.beginResetModel()
41 self.endResetModel()
42
43 def removeRows(self, row, count, parent=None):
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 is None:
53 parent = QModelIndex()
54
55 if parent.isValid():
56 return False
57
58 if count <= 0:
59 return False
60
61 lastRow = row + count - 1
62
63 self.beginRemoveRows(parent, row, lastRow)
64
65 hostsList = self.__manager.allHostNames()
66 for index in range(row, lastRow + 1):
67 self.__manager.removeUserAgent(hostsList[index])
68
69 # removeEngine emits changed()
70 #self.endRemoveRows()
71
72 return True
73
74 def rowCount(self, parent=None):
75 """
76 Public method to get the number of rows of the model.
77
78 @param parent parent index (QModelIndex)
79 @return number of rows (integer)
80 """
81 if parent is None:
82 parent = QModelIndex()
83
84 if parent.isValid():
85 return 0
86 else:
87 return self.__manager.hostsCount()
88
89 def columnCount(self, parent=None):
90 """
91 Public method to get the number of columns of the model.
92
93 @param parent parent index (QModelIndex) (Unused)
94 @return number of columns (integer)
95 """
96 return len(self.__headers)
97
98 def data(self, index, role):
99 """
100 Public method to get data from the model.
101
102 @param index index to get data for (QModelIndex)
103 @param role role of the data to retrieve (integer)
104 @return requested data
105 """
106 if index.row() >= self.__manager.hostsCount() or index.row() < 0:
107 return None
108
109 host = self.__manager.allHostNames()[index.row()]
110 userAgent = self.__manager.userAgent(host)
111
112 if userAgent is None:
113 return None
114
115 if role == Qt.DisplayRole:
116 if index.column() == 0:
117 return host
118 elif index.column() == 1:
119 return userAgent
120
121 return None
122
123 def headerData(self, section, orientation, role=Qt.DisplayRole):
124 """
125 Public method to get the header data.
126
127 @param section section number (integer)
128 @param orientation header orientation (Qt.Orientation)
129 @param role data role (integer)
130 @return header data
131 """
132 if orientation == Qt.Horizontal and role == Qt.DisplayRole:
133 try:
134 return self.__headers[section]
135 except IndexError:
136 pass
137
138 return None

eric ide

mercurial