##// END OF EJS Templates
-USRP Reader was added to Signal Chain GUI...
-USRP Reader was added to Signal Chain GUI -Signal Chain GUI modules were changed

File last commit:

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