##// END OF EJS Templates
-PRUEBAS DEL MODELO DEL ARBOL (VISTA DERECHA)
Alexander Valdez -
r347:45e9225a34fc
parent child
Show More
@@ -1,241 +1,258
1 1 from PyQt4 import QtCore
2 2
3 3 HORIZONTAL_HEADERS = ("ITEM :"," DATOS : " )
4 4
5 5 HORIZONTAL = ("RAMA :",)
6 6
7 7 class treeModel(QtCore.QAbstractItemModel):
8 8 '''
9 9 a model to display a few names, ordered by encabezado
10 10 '''
11 11 name=None
12 12 directorio=None
13 13 workspace=None
14 14 remode=None
15 15 dataformat=None
16 16 date=None
17 17 initTime=None
18 18 endTime=None
19 19 timezone=None
20 20 Summary=None
21 21
22 description=None
23
22 24 def __init__(self ,parent=None):
23 25 super(treeModel, self).__init__(parent)
24 26 self.people = []
25 27
28
29 def properties_projecto(self,description):
30 self.caracteristica="Project_Properties"
31 self.principal ="Name"
32 self.description =description
33 exam_project=person_class(self.caracteristica,self.principal,self.description)
34 return exam_project
35
36
37
26 38 def arbol(self):
27 39 for caracteristica,principal, descripcion in (("Properties","Name",self.name),
28 40 ("Properties","Data Path",self.directorio),
29 41 ("Properties","Workspace",self.workspace),
30 42 ("Parameters", "Read Mode ",self.remode),
31 43 ("Parameters", "DataType ",self.dataformat),
32 44 ("Parameters", "Date ",self.date),
33 45 ("Parameters", "Init Time ",self.initTime),
34 46 ("Parameters", "Final Time ",self.endTime),
35 47 ("Parameters", " Time zone ",self.timezone),
36 48 ("Parameters", "Profiles ","1"),
37 49 ("Description", "Summary ", self.Summary),
38 50 ):
39 51 person = person_class(caracteristica, principal, descripcion)
40 52 self.people.append(person)
53 def addProjectproperties(self,person):
54 self.people.append(person)
41 55
42 self.rootItem = TreeItem(None, "ALL", None)
43 self.parents = {0 : self.rootItem}
44 self.setupModelData()
45
56
46 57 #def veamos(self):
47 58 # self.update= MainWindow(self)
48 59 # self.update.dataProyectTxt.text()
49 60 # return self.update.dataProyectTxt.text()
61
62 def showtree(self):
63 self.rootItem = TreeItem(None, "ALL", None)
64 self.parents = {0 : self.rootItem}
65 self.setupModelData()
66
50 67 def setParams(self,name,directorio,workspace,remode,dataformat,date,initTime,endTime,timezone,Summary):
51 68 self.name=name
52 69 self.workspace=workspace
53 70 self.directorio= directorio
54 71 self.remode=remode
55 72 self.dataformat=dataformat
56 73 self.date=date
57 74 self.initTime=initTime
58 75 self.endTime=endTime
59 76 self.timezone=timezone
60 77 self.Summary=Summary
61 78
62 79
63 80 def columnCount(self, parent=None):
64 81 if parent and parent.isValid():
65 82 return parent.internalPointer().columnCount()
66 83 else:
67 84 return len(HORIZONTAL_HEADERS)
68 85
69 86 def data(self, index, role):
70 87 if not index.isValid():
71 88 return QtCore.QVariant()
72 89
73 90 item = index.internalPointer()
74 91 if role == QtCore.Qt.DisplayRole:
75 92 return item.data(index.column())
76 93 if role == QtCore.Qt.UserRole:
77 94 if item:
78 95 return item.person
79 96
80 97 return QtCore.QVariant()
81 98
82 99 def headerData(self, column, orientation, role):
83 100 if (orientation == QtCore.Qt.Horizontal and
84 101 role == QtCore.Qt.DisplayRole):
85 102 try:
86 103 return QtCore.QVariant(HORIZONTAL_HEADERS[column])
87 104 except IndexError:
88 105 pass
89 106
90 107 return QtCore.QVariant()
91 108
92 109 def index(self, row, column, parent):
93 110 if not self.hasIndex(row, column, parent):
94 111 return QtCore.QModelIndex()
95 112
96 113 if not parent.isValid():
97 114 parentItem = self.rootItem
98 115 else:
99 116 parentItem = parent.internalPointer()
100 117
101 118 childItem = parentItem.child(row)
102 119 if childItem:
103 120 return self.createIndex(row, column, childItem)
104 121 else:
105 122 return QtCore.QModelIndex()
106 123
107 124 def parent(self, index):
108 125 if not index.isValid():
109 126 return QtCore.QModelIndex()
110 127
111 128 childItem = index.internalPointer()
112 129 if not childItem:
113 130 return QtCore.QModelIndex()
114 131
115 132 parentItem = childItem.parent()
116 133
117 134 if parentItem == self.rootItem:
118 135 return QtCore.QModelIndex()
119 136
120 137 return self.createIndex(parentItem.row(), 0, parentItem)
121 138
122 139 def rowCount(self, parent=QtCore.QModelIndex()):
123 140 if parent.column() > 0:
124 141 return 0
125 142 if not parent.isValid():
126 143 p_Item = self.rootItem
127 144 else:
128 145 p_Item = parent.internalPointer()
129 146 return p_Item.childCount()
130 147
131 148 def setupModelData(self):
132 149 for person in self.people:
133 150 if person.descripcion:
134 151 encabezado = person.caracteristica
135 152
136 153
137 154 if not self.parents.has_key(encabezado):
138 155 newparent = TreeItem(None, encabezado, self.rootItem)
139 156 self.rootItem.appendChild(newparent)
140 157
141 158 self.parents[encabezado] = newparent
142 159
143 160 parentItem = self.parents[encabezado]
144 161 newItem = TreeItem(person, "", parentItem)
145 162 parentItem.appendChild(newItem)
146 163
147 164 def searchModel(self, person):
148 165 '''
149 166 get the modelIndex for a given appointment
150 167 '''
151 168 def searchNode(node):
152 169 '''
153 170 a function called recursively, looking at all nodes beneath node
154 171 '''
155 172 for child in node.childItems:
156 173 if person == child.person:
157 174 index = self.createIndex(child.row(), 0, child)
158 175 return index
159 176
160 177 if child.childCount() > 0:
161 178 result = searchNode(child)
162 179 if result:
163 180 return result
164 181
165 182 retarg = searchNode(self.parents[0])
166 183 #print retarg
167 184 return retarg
168 185
169 186 def find_GivenName(self, principal):
170 187 app = None
171 188 for person in self.people:
172 189 if person.principal == principal:
173 190 app = person
174 191 break
175 192 if app != None:
176 193 index = self.searchModel(app)
177 194 return (True, index)
178 195 return (False, None)
179 196
180 197
181 198
182 199
183 200
184 201
185 202
186 203 class person_class(object):
187 204 '''
188 205 a trivial custom data object
189 206 '''
190 207 def __init__(self, caracteristica, principal, descripcion):
191 208 self.caracteristica = caracteristica
192 209 self.principal = principal
193 210 self.descripcion = descripcion
194 211
195 212 def __repr__(self):
196 213 return "PERSON - %s %s"% (self.principal, self.caracteristica)
197 214
198 215 class TreeItem(object):
199 216 '''
200 217 a python object used to return row/column data, and keep note of
201 218 it's parents and/or children
202 219 '''
203 220 def __init__(self, person, header, parentItem):
204 221 self.person = person
205 222 self.parentItem = parentItem
206 223 self.header = header
207 224 self.childItems = []
208 225
209 226 def appendChild(self, item):
210 227 self.childItems.append(item)
211 228
212 229 def child(self, row):
213 230 return self.childItems[row]
214 231
215 232 def childCount(self):
216 233 return len(self.childItems)
217 234
218 235 def columnCount(self):
219 236 return 2
220 237
221 238 def data(self, column):
222 239 if self.person == None:
223 240 if column == 0:
224 241 return QtCore.QVariant(self.header)
225 242 if column == 1:
226 243 return QtCore.QVariant("")
227 244 else:
228 245 if column == 0:
229 246 return QtCore.QVariant(self.person.principal)
230 247 if column == 1:
231 248 return QtCore.QVariant(self.person.descripcion)
232 249 return QtCore.QVariant()
233 250
234 251 def parent(self):
235 252 return self.parentItem
236 253
237 254 def row(self):
238 255 if self.parentItem:
239 256 return self.parentItem.childItems.index(self)
240 257 return 0
241 258 No newline at end of file
General Comments 0
You need to be logged in to leave comments. Login now