def __init__(self, parent=None, label="", help=""): """Construct a ParameterPanel.""" HelpedWidget.__init__(self, parent, label, help) self.searchableList = SearchableList( converter=lambda item: item.getName(), list_width=175) self.addWidget(self.searchableList) self.pagesWidget = QtGui.QStackedWidget() self.emptyPanel = ert_gui.widgets.util.createEmptyPanel() self.fieldPanel = FieldPanel(self) self.dataPanel = DataPanel(self) self.keywordPanel = KeywordPanel(self) self.pagesWidget.addWidget(self.emptyPanel) self.pagesWidget.addWidget(self.fieldPanel) self.pagesWidget.addWidget(self.dataPanel) self.pagesWidget.addWidget(self.keywordPanel) self.addWidget(self.pagesWidget) self.connect( self.searchableList, QtCore.SIGNAL( 'currentItemChanged(QListWidgetItem, QListWidgetItem)'), self.changeParameter) self.connect(self.searchableList, QtCore.SIGNAL('addItem(list)'), self.addItem) self.connect(self.searchableList, QtCore.SIGNAL('removeItem(list)'), self.removeItem)
def __init__(self, parent=None, label="", help=""): """Construct a ParameterPanel.""" HelpedWidget.__init__(self, parent, label, help) self.searchableList = SearchableList(converter=lambda item : item.getName(), list_width=175) self.addWidget(self.searchableList) self.pagesWidget = QtGui.QStackedWidget() self.emptyPanel = ert_gui.widgets.util.createEmptyPanel() self.fieldPanel = FieldPanel(self) self.dataPanel = DataPanel(self) self.keywordPanel = KeywordPanel(self) self.pagesWidget.addWidget(self.emptyPanel) self.pagesWidget.addWidget(self.fieldPanel) self.pagesWidget.addWidget(self.dataPanel) self.pagesWidget.addWidget(self.keywordPanel) self.addWidget(self.pagesWidget) self.connect(self.searchableList, QtCore.SIGNAL('currentItemChanged(QListWidgetItem, QListWidgetItem)'), self.changeParameter) self.connect(self.searchableList, QtCore.SIGNAL('addItem(QListWidgetItem)'), self.addItem) self.connect(self.searchableList, QtCore.SIGNAL('removeItem(QListWidgetItem)'), self.removeItem)
class ParameterPanel(HelpedWidget): """Shows a widget for parameters. The data structure expected and sent to the getter and setter is an array of Parameters.""" def __init__(self, parent=None, label="", help=""): """Construct a ParameterPanel.""" HelpedWidget.__init__(self, parent, label, help) self.searchableList = SearchableList(converter=lambda item : item.getName(), list_width=175) self.addWidget(self.searchableList) self.pagesWidget = QtGui.QStackedWidget() self.emptyPanel = ert_gui.widgets.util.createEmptyPanel() self.fieldPanel = FieldPanel(self) self.dataPanel = DataPanel(self) self.keywordPanel = KeywordPanel(self) self.pagesWidget.addWidget(self.emptyPanel) self.pagesWidget.addWidget(self.fieldPanel) self.pagesWidget.addWidget(self.dataPanel) self.pagesWidget.addWidget(self.keywordPanel) self.addWidget(self.pagesWidget) self.connect(self.searchableList, QtCore.SIGNAL('currentItemChanged(QListWidgetItem, QListWidgetItem)'), self.changeParameter) self.connect(self.searchableList, QtCore.SIGNAL('addItem(QListWidgetItem)'), self.addItem) self.connect(self.searchableList, QtCore.SIGNAL('removeItem(QListWidgetItem)'), self.removeItem) #self.addHelpButton() def changeParameter(self, current, previous): if not current: self.pagesWidget.setCurrentWidget(self.emptyPanel) elif FieldModel.TYPE == current.getType(): self.pagesWidget.setCurrentWidget(self.fieldPanel) self.fieldPanel.setFieldModel(current.getUserData()) elif DataModel.TYPE == current.getType(): self.pagesWidget.setCurrentWidget(self.dataPanel) self.dataPanel.setDataModel(current.getUserData()) elif KeywordModel.TYPE == current.getType(): self.pagesWidget.setCurrentWidget(self.keywordPanel) self.keywordPanel.setKeywordModel(current.getUserData()) else: self.pagesWidget.setCurrentWidget(self.emptyPanel) def createParameter(self, type_name, name): """Adds a new parameter to the list""" if type_name == FieldModel.TYPE.name: type = FieldModel.TYPE data = FieldModel(name) elif type_name == DataModel.TYPE.name: type = DataModel.TYPE data = DataModel(name) elif type_name == KeywordModel.TYPE.name: type = KeywordModel.TYPE data = KeywordModel(name) elif type_name == SummaryModel.TYPE.name: type = SummaryModel.TYPE data = SummaryModel(name) else: raise AssertionError("Type name unknown: %s" % (type_name)) param = Parameter(name, type) param.setUserData(data) param.setValid(False) return param def addToList(self, list, parameter): list.addItem(parameter) list.setCurrentItem(parameter) user_data = parameter.getUserData() ##self.connect(user_data, SIGNAL('modelChanged(Model)'), self.modelChanged) def modelChanged(self, parameter_model): """Called whenever the content of a model changes""" self.updateContent(parameter_model) def addItem(self, list): """Called by the add button to insert a new parameter. A Parameter object is sent to the ContentModel inserter""" uniqueNames = [] for index in range(list.count()): uniqueNames.append(str(list.item(index).text())) pd = ParameterDialog(self, Parameter.get_typeIcons() , uniqueNames) if pd.exec_(): parameter = self.createParameter(pd.getTypeName(), pd.getName()) ok = self.updateContent(parameter, operation=ContentModel.INSERT) if ok: self.addToList(list, parameter) # todo: emit when a new field is added also make initandcopy listen -> self.modelEmit("casesUpdated()") def removeItem(self, list): """Called by the remove button to remove a selected parameter. The key is forwarded to the ContentModel remover""" currentRow = list.currentRow() if currentRow >= 0: doDelete = QtGui.QMessageBox.question(self, "Delete parameter?", "Are you sure you want to delete the parameter?", QtGui.QMessageBox.Yes | QtGui.QMessageBox.No) if doDelete == QtGui.QMessageBox.Yes: item = list.item(currentRow) user_data = item.getUserData() self.disconnect(user_data, SIGNAL('modelChanged(Model)'), self.modelChanged) self.updateContent(item.getName(), operation=ContentModel.REMOVE) list.takeItem(currentRow) #todo: emit change def fetchContent(self): """Retrieves data from the model and inserts it into the list""" parameters = self.getFromModel() for parameter in parameters: if parameter is None: sys.stderr.write("Unknown type name!\n") break #raise AssertionError("Unknown type name!") param = Parameter(parameter.name, parameter.TYPE) param.setUserData(parameter) param.setValid(parameter.isValid()) self.addToList(self.searchableList.getList(), param) if self.searchableList.getList().count > 0: self.searchableList.getList().setCurrentRow(0)
class ParameterPanel(HelpedWidget): """Shows a widget for parameters. The data structure expected and sent to the getter and setter is an array of Parameters.""" def __init__(self, parent=None, label="", help=""): """Construct a ParameterPanel.""" HelpedWidget.__init__(self, parent, label, help) self.searchableList = SearchableList( converter=lambda item: item.getName(), list_width=175) self.addWidget(self.searchableList) self.pagesWidget = QtGui.QStackedWidget() self.emptyPanel = ert_gui.widgets.util.createEmptyPanel() self.fieldPanel = FieldPanel(self) self.dataPanel = DataPanel(self) self.keywordPanel = KeywordPanel(self) self.pagesWidget.addWidget(self.emptyPanel) self.pagesWidget.addWidget(self.fieldPanel) self.pagesWidget.addWidget(self.dataPanel) self.pagesWidget.addWidget(self.keywordPanel) self.addWidget(self.pagesWidget) self.connect( self.searchableList, QtCore.SIGNAL( 'currentItemChanged(QListWidgetItem, QListWidgetItem)'), self.changeParameter) self.connect(self.searchableList, QtCore.SIGNAL('addItem(list)'), self.addItem) self.connect(self.searchableList, QtCore.SIGNAL('removeItem(list)'), self.removeItem) #self.addHelpButton() def changeParameter(self, current, previous): if not current: self.pagesWidget.setCurrentWidget(self.emptyPanel) elif FieldModel.TYPE == current.getType(): self.pagesWidget.setCurrentWidget(self.fieldPanel) self.fieldPanel.setFieldModel(current.getUserData()) elif DataModel.TYPE == current.getType(): self.pagesWidget.setCurrentWidget(self.dataPanel) self.dataPanel.setDataModel(current.getUserData()) elif KeywordModel.TYPE == current.getType(): self.pagesWidget.setCurrentWidget(self.keywordPanel) self.keywordPanel.setKeywordModel(current.getUserData()) else: self.pagesWidget.setCurrentWidget(self.emptyPanel) def createParameter(self, type_name, name): """Adds a new parameter to the list""" if type_name == FieldModel.TYPE.name: type = FieldModel.TYPE data = FieldModel(name) elif type_name == DataModel.TYPE.name: type = DataModel.TYPE data = DataModel(name) elif type_name == KeywordModel.TYPE.name: type = KeywordModel.TYPE data = KeywordModel(name) elif type_name == SummaryModel.TYPE.name: type = SummaryModel.TYPE data = SummaryModel(name) else: raise AssertionError("Type name unknown: %s" % (type_name)) param = Parameter(name, type) param.setUserData(data) param.setValid(False) return param def addToList(self, list, parameter): list.addItem(parameter) list.setCurrentItem(parameter) user_data = parameter.getUserData() self.connect(user_data, SIGNAL('modelChanged(Model)'), self.modelChanged) def modelChanged(self, parameter_model): """Called whenever the content of a model changes""" self.updateContent(parameter_model) def addItem(self, list): """Called by the add button to insert a new parameter. A Parameter object is sent to the ContentModel inserter""" uniqueNames = [] for index in range(list.count()): uniqueNames.append(str(list.item(index).text())) pd = ParameterDialog(self, Parameter.typeIcons, uniqueNames) if pd.exec_(): parameter = self.createParameter(pd.getTypeName(), pd.getName()) ok = self.updateContent(parameter, operation=ContentModel.INSERT) if ok: self.addToList(list, parameter) # todo: emit when a new field is added also make initandcopy listen -> self.modelEmit("casesUpdated()") def removeItem(self, list): """Called by the remove button to remove a selected parameter. The key is forwarded to the ContentModel remover""" currentRow = list.currentRow() if currentRow >= 0: doDelete = QtGui.QMessageBox.question( self, "Delete parameter?", "Are you sure you want to delete the parameter?", QtGui.QMessageBox.Yes | QtGui.QMessageBox.No) if doDelete == QtGui.QMessageBox.Yes: item = list.item(currentRow) user_data = item.getUserData() self.disconnect(user_data, SIGNAL('modelChanged(Model)'), self.modelChanged) self.updateContent(item.getName(), operation=ContentModel.REMOVE) list.takeItem(currentRow) #todo: emit change def fetchContent(self): """Retrieves data from the model and inserts it into the list""" parameters = self.getFromModel() for parameter in parameters: if parameter is None: raise AssertionError("Unknown type name!") param = Parameter(parameter.name, parameter.TYPE) param.setUserData(parameter) param.setValid(parameter.isValid()) self.addToList(self.searchableList.getList(), param) if self.searchableList.getList().count > 0: self.searchableList.getList().setCurrentRow(0)