|
|
from PyQt4 import QtCore
|
|
|
|
|
|
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)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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
|
|
|
|