Helpviewer/UserAgent/UserAgentModel.py

changeset 1596
8d59e4f3c828
child 2302
f29e9405c851
equal deleted inserted replaced
1593:470b03ae90e7 1596:8d59e4f3c828
1 # -*- coding: utf-8 -*-
2
3 # Copyright (c) 2012 Detlev Offenbach <detlev@die-offenbachs.de>
4 #
5
6 """
7 Module implementing a model for user agent management.
8 """
9
10 from PyQt4.QtCore import Qt, QModelIndex, QAbstractTableModel
11
12
13 class UserAgentModel(QAbstractTableModel):
14 """
15 Class implementing a model for user agent management.
16 """
17 def __init__(self, manager, parent=None):
18 """
19 Constructor
20
21 @param manager reference to the user agent manager (UserAgentManager)
22 @param parent reference to the parent object (QObject)
23 """
24 super().__init__(parent)
25
26 self.__manager = manager
27 self.__manager.changed.connect(self.__userAgentsChanged)
28
29 self.__headers = [
30 self.trUtf8("Host"),
31 self.trUtf8("User Agent String"),
32 ]
33
34 def __userAgentsChanged(self):
35 """
36 Private slot handling a change of the registered user agent strings.
37 """
38 self.reset()
39
40 def removeRows(self, row, count, parent=QModelIndex()):
41 """
42 Public method to remove entries from the model.
43
44 @param row start row (integer)
45 @param count number of rows to remove (integer)
46 @param parent parent index (QModelIndex)
47 @return flag indicating success (boolean)
48 """
49 if parent.isValid():
50 return False
51
52 if count <= 0:
53 return False
54
55 lastRow = row + count - 1
56
57 self.beginRemoveRows(parent, row, lastRow)
58
59 hostsList = self.__manager.allHostNames()
60 for index in range(row, lastRow + 1):
61 self.__manager.removeUserAgent(hostsList[index])
62
63 # removeEngine emits changed()
64 #self.endRemoveRows()
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.hostsCount()
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.hostsCount() or index.row() < 0:
98 return None
99
100 host = self.__manager.allHostNames()[index.row()]
101 userAgent = self.__manager.userAgent(host)
102
103 if userAgent is None:
104 return None
105
106 if role == Qt.DisplayRole:
107 if index.column() == 0:
108 return host
109 elif index.column() == 1:
110 return userAgent
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