##// END OF EJS Templates
Fix all PlotData, add SpectraMean, CrossSpectra plots, now Parameters extends Spectra fix bugs in ParametersProc
Fix all PlotData, add SpectraMean, CrossSpectra plots, now Parameters extends Spectra fix bugs in ParametersProc

File last commit:

r589:341989823444
r922:d680543828ae
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