Source code for papi.plugin.base_classes.ParameterWindow
__author__ = 'fescycling'
from PyQt5.QtWidgets import QLineEdit, QMainWindow, QMenu, QAbstractItemView, QAction, QTreeView, QVBoxLayout
from PyQt5.QtCore import Qt, QRegExp
from papi.gui.default.item import DParameterTreeModel, DParameterTreeItem
[docs]class ParameterWindow(QMainWindow):
def __init__(self, dplugin, api, pl_win_name = '',parent = None):
QMainWindow.__init__(self, parent)
# Build the tree for the parameters
self.parameterTree = QTreeView(self)
self.parameterTree.setObjectName("parameterTree")
# Add it as the central widget
self.setCentralWidget(self.parameterTree)
# Add the DParameterTreeModel to the parameter tree
self.dparameterModel = DParameterTreeModel()
self.dparameterModel.setHorizontalHeaderLabels(['Name',''])
self.parameterTree.setModel(self.dparameterModel)
self.parameterTree.setUniformRowHeights(True)
# connect the callback function for value changes
self.dparameterModel.dataChanged.connect(self.data_changed_parameter_model)
self.dpluign_object = dplugin
self.api = api
self.setWindowTitle(pl_win_name+' Parameter')
[docs] def show_paramters(self, para_list):
"""
Shows the list of parameters and values in the parameter window
:param para_list:
:return:
"""
for dparameter_name in sorted(para_list):
dparameter = para_list[dparameter_name]
dparameter_item = DParameterTreeItem(dparameter)
self.dparameterModel.appendRow(dparameter_item)
self.parameterTree.resizeColumnToContents(0)
self.parameterTree.resizeColumnToContents(1)
self.parameterTree.expandAll()
fh = self.parameterTree.fontMetrics().height()
if len(para_list.keys()) > 8:
self.setFixedHeight(fh*9+fh+25)
else:
self.setFixedHeight(fh*len(para_list.keys())+fh+fh+25)
[docs] def data_changed_parameter_model(self, index, n):
"""
This function is called when a dparameter value is changed by editing the 'value'-column.
:param index: Index of current changed dparameter
:param n: None
:return:
"""
dparameter = self.parameterTree.model().data(index, Qt.UserRole)
self.api.do_set_parameter(self.dpluign_object.id, dparameter.name, dparameter.value)