Exemplo n.º 1
0
    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)
Exemplo n.º 2
0
    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)
Exemplo n.º 3
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(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)
Exemplo n.º 4
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)