modelProperties.py
240 lines
| 7.9 KiB
| text/x-python
|
PythonLexer
|
r208 | from PyQt4 import QtCore | |
|
r235 | HORIZONTAL_HEADERS = ("ITEM :"," DATOS : " ) | |
HORIZONTAL = ("RAMA :",) | |||
class treeModel(QtCore.QAbstractItemModel): | |||
''' | |||
a model to display a few names, ordered by encabezado | |||
''' | |||
name=None | |||
directorio=None | |||
workspace=None | |||
remode=None | |||
dataformat=None | |||
date=None | |||
initTime=None | |||
endTime=None | |||
timezone=None | |||
Summary=None | |||
def __init__(self ,parent=None): | |||
super(treeModel, self).__init__(parent) | |||
self.people = [] | |||
def arbol(self): | |||
for caracteristica,principal, descripcion in (("Properties","Name",self.name), | |||
("Properties","Data Path",self.directorio), | |||
("Properties","Workspace",self.workspace), | |||
("Parameters", "Read Mode ",self.remode), | |||
("Parameters", "DataType ",self.dataformat), | |||
("Parameters", "Date ",self.date), | |||
("Parameters", "Init Time ",self.initTime), | |||
("Parameters", "Final Time ",self.endTime), | |||
("Parameters", " Time zone ",self.timezone), | |||
("Parameters", "Profiles ","1"), | |||
("Description", "Summary ", self.Summary), | |||
): | |||
person = person_class(caracteristica, principal, descripcion) | |||
self.people.append(person) | |||
self.rootItem = TreeItem(None, "ALL", None) | |||
self.parents = {0 : self.rootItem} | |||
self.setupModelData() | |||
#def veamos(self): | |||
# self.update= MainWindow(self) | |||
# self.update.dataProyectTxt.text() | |||
# return self.update.dataProyectTxt.text() | |||
def setParams(self,name,directorio,workspace,remode,dataformat,date,initTime,endTime,timezone,Summary): | |||
self.name=name | |||
self.workspace=workspace | |||
self.directorio= directorio | |||
self.remode=remode | |||
self.dataformat=dataformat | |||
self.date=date | |||
self.initTime=initTime | |||
self.endTime=endTime | |||
self.timezone=timezone | |||
self.Summary=Summary | |||
def columnCount(self, parent=None): | |||
if parent and parent.isValid(): | |||
return parent.internalPointer().columnCount() | |||
else: | |||
return len(HORIZONTAL_HEADERS) | |||
def data(self, index, role): | |||
if not index.isValid(): | |||
return QtCore.QVariant() | |||
item = index.internalPointer() | |||
if role == QtCore.Qt.DisplayRole: | |||
return item.data(index.column()) | |||
if role == QtCore.Qt.UserRole: | |||
if item: | |||
return item.person | |||
return QtCore.QVariant() | |||
def headerData(self, column, orientation, role): | |||
if (orientation == QtCore.Qt.Horizontal and | |||
role == QtCore.Qt.DisplayRole): | |||
try: | |||
return QtCore.QVariant(HORIZONTAL_HEADERS[column]) | |||
except IndexError: | |||
pass | |||
return QtCore.QVariant() | |||
def index(self, row, column, parent): | |||
if not self.hasIndex(row, column, parent): | |||
return QtCore.QModelIndex() | |||
if not parent.isValid(): | |||
parentItem = self.rootItem | |||
else: | |||
parentItem = parent.internalPointer() | |||
childItem = parentItem.child(row) | |||
if childItem: | |||
return self.createIndex(row, column, childItem) | |||
else: | |||
return QtCore.QModelIndex() | |||
def parent(self, index): | |||
if not index.isValid(): | |||
return QtCore.QModelIndex() | |||
childItem = index.internalPointer() | |||
if not childItem: | |||
return QtCore.QModelIndex() | |||
parentItem = childItem.parent() | |||
if parentItem == self.rootItem: | |||
return QtCore.QModelIndex() | |||
return self.createIndex(parentItem.row(), 0, parentItem) | |||
def rowCount(self, parent=QtCore.QModelIndex()): | |||
if parent.column() > 0: | |||
return 0 | |||
if not parent.isValid(): | |||
p_Item = self.rootItem | |||
else: | |||
p_Item = parent.internalPointer() | |||
return p_Item.childCount() | |||
def setupModelData(self): | |||
for person in self.people: | |||
if person.descripcion: | |||
encabezado = person.caracteristica | |||
if not self.parents.has_key(encabezado): | |||
newparent = TreeItem(None, encabezado, self.rootItem) | |||
self.rootItem.appendChild(newparent) | |||
self.parents[encabezado] = newparent | |||
parentItem = self.parents[encabezado] | |||
newItem = TreeItem(person, "", parentItem) | |||
parentItem.appendChild(newItem) | |||
def searchModel(self, person): | |||
''' | |||
get the modelIndex for a given appointment | |||
''' | |||
def searchNode(node): | |||
''' | |||
a function called recursively, looking at all nodes beneath node | |||
''' | |||
for child in node.childItems: | |||
if person == child.person: | |||
index = self.createIndex(child.row(), 0, child) | |||
return index | |||
if child.childCount() > 0: | |||
result = searchNode(child) | |||
if result: | |||
return result | |||
retarg = searchNode(self.parents[0]) | |||
#print retarg | |||
return retarg | |||
def find_GivenName(self, principal): | |||
app = None | |||
for person in self.people: | |||
if person.principal == principal: | |||
app = person | |||
break | |||
if app != None: | |||
index = self.searchModel(app) | |||
return (True, index) | |||
return (False, None) | |||
|
r208 | class person_class(object): | |
''' | |||
a trivial custom data object | |||
''' | |||
def __init__(self, caracteristica, principal, descripcion): | |||
self.caracteristica = caracteristica | |||
self.principal = principal | |||
self.descripcion = descripcion | |||
def __repr__(self): | |||
return "PERSON - %s %s"% (self.principal, self.caracteristica) | |||
class TreeItem(object): | |||
''' | |||
a python object used to return row/column data, and keep note of | |||
it's parents and/or children | |||
''' | |||
def __init__(self, person, header, parentItem): | |||
self.person = person | |||
self.parentItem = parentItem | |||
self.header = header | |||
self.childItems = [] | |||
def appendChild(self, item): | |||
self.childItems.append(item) | |||
def child(self, row): | |||
return self.childItems[row] | |||
def childCount(self): | |||
return len(self.childItems) | |||
def columnCount(self): | |||
return 2 | |||
def data(self, column): | |||
if self.person == None: | |||
if column == 0: | |||
return QtCore.QVariant(self.header) | |||
if column == 1: | |||
return QtCore.QVariant("") | |||
else: | |||
if column == 0: | |||
return QtCore.QVariant(self.person.principal) | |||
if column == 1: | |||
return QtCore.QVariant(self.person.descripcion) | |||
return QtCore.QVariant() | |||
def parent(self): | |||
return self.parentItem | |||
def row(self): | |||
if self.parentItem: | |||
return self.parentItem.childItems.index(self) | |||
return 0 | |||