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