##// END OF EJS Templates
Rewrite controller, remove MPDecorator to units (keep for plots an writers) use of queues for interproc comm instead of zmq, self operations are no longer supported
Rewrite controller, remove MPDecorator to units (keep for plots an writers) use of queues for interproc comm instead of zmq, self operations are no longer supported

File last commit:

r589:341989823444
r1287:af11e4aac00c
Show More
propertiesViewModel.py
210 lines | 5.8 KiB | text/x-python | PythonLexer
# -*- coding: utf-8 -*-
"""
This module contains every model class to create, modify and show a property tree on a GUI.
"""
from PyQt4 import QtCore
import itertools
HORIZONTAL_HEADERS = ("Property","Value " )
HORIZONTAL = ("RAMA :",)
class PropertyBuffer():
def __init__(self):
self.clear()
def clear(self):
self.headerList = []
self.parmList = []
self.valueList = []
def append(self, header, parm, value):
self.headerList.append(header)
self.parmList.append(parm)
self.valueList.append(value)
return
def get(self):
return self.headerList, self.parmList, self.valueList
def getPropertyModel(self):
propertiesModel = TreeModel()
propertiesModel.showProperties(self.headerList, self.parmList, self.valueList)
return propertiesModel
class TreeModel(QtCore.QAbstractItemModel):
'''
a model to display a few names, ordered by encabezado
'''
def __init__(self ,parent=None):
super(TreeModel, self).__init__(parent)
self.people = []
def initProjectView(self):
"""
Reemplazo del método showtree
"""
HORIZONTAL_HEADERS = ("Property","Value " )
HORIZONTAL = ("RAMA :",)
self.rootItem = TreeItem(None, "ALL", None)
self.parents = {0 : self.rootItem}
self.__setupModelData()
def initPUVoltageView(self):
HORIZONTAL_HEADERS = ("Operation"," Parameter Value " )
HORIZONTAL = ("RAMA :",)
self.rootItem = TreeItem(None, "ALL", None)
self.parents = {0 : self.rootItem}
self.__setupModelData()
def showProperties(self,headerList, parmList, valueList):
"""
set2Obje
"""
for header, parameter, value in itertools.izip(headerList, parmList, valueList):
person = person_class(header, parameter, value)
self.people.append(person)
self.rootItem = TreeItem(None, "ALL", None)
self.parents = {0 : self.rootItem}
self.__setupModelData()
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 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.value:
encabezado = person.header
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)
class person_class(object):
'''
a trivial custom data object
'''
def __init__(self, header, parameter, value):
self.header = header
self.parameter = parameter
self.value = value
def __repr__(self):
return "PERSON - %s %s"% (self.parameter, self.header)
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.parameter)
if column == 1:
return QtCore.QVariant(self.person.value)
return QtCore.QVariant()
def parent(self):
return self.parentItem
def row(self):
if self.parentItem:
return self.parentItem.childItems.index(self)
return 0