Exemple #1
0
    def __init__(self, model, path_label="Path", help_link=""):
        HelpedWidget.__init__(self, path_label, help_link)

        self.__editing = True

        self.path_line = QLineEdit()

        self.addWidget(self.path_line)

        dialog_button = QToolButton(self)
        dialog_button.setIcon(resourceIcon("folder"))
        dialog_button.setIconSize(QSize(16, 16))
        self.connect(dialog_button, SIGNAL('clicked()'), self.selectDirectory)
        self.addWidget(dialog_button)

        self.valid_color = self.path_line.palette().color(
            self.path_line.backgroundRole())

        self.path_line.setText(os.getcwd())
        self.__editing = False

        assert isinstance(model, PathModelMixin)
        self.model = model
        model.observable().attach(PathModelMixin.PATH_CHANGED_EVENT,
                                  self.getPathFromModel)
        self.getPathFromModel()

        self.connect(self.path_line, SIGNAL('editingFinished()'),
                     self.validatePath)
        self.connect(self.path_line, SIGNAL('editingFinished()'),
                     self.contentsChanged)
        self.connect(self.path_line, SIGNAL('textChanged(QString)'),
                     self.validatePath)
Exemple #2
0
    def __init__(self, model, label="Checkbox", help_link="", show_label=True, alt_label=None, default_check_state=True):
        """Construct a checkbox widget for booleans"""
        HelpedWidget.__init__(self, label, help_link)

        if show_label:
            if alt_label is not None:
                self.check = QCheckBox(alt_label, self)
            else:
                self.check = QCheckBox(label,self)
        else:
            self.check = QCheckBox(self)
            
        self.check.setTristate(False)
        self.check.setChecked(default_check_state)
        self.connect(self.check, QtCore.SIGNAL('stateChanged(int)'), self.contentsChanged)

        if not show_label:
            layout = QHBoxLayout()
            layout.addWidget(self.check)
            layout.setAlignment(Qt.AlignCenter)
            layout.setContentsMargins(0, 0, 0, 0)
            self.addLayout(layout)
        else:
            self.addWidget(self.check)

        assert isinstance(model, BooleanModelMixin)
        self.model = model
        self.model.observable().attach(BooleanModelMixin.BOOLEAN_VALUE_CHANGED_EVENT, self.modelChanged)
        self.modelChanged()
Exemple #3
0
    def __init__(self, possible_items, label="ListEdit", help_link=""):
        HelpedWidget.__init__(self, label, help_link)

        self.__editing = True
        self.__valid = True
        self.__possible_items = possible_items

        self.list_edit_line = AutoCompleteLineEdit(possible_items, self)
        self.list_edit_line.setMinimumWidth(350)

        self.addWidget(self.list_edit_line)

        dialog_button = QToolButton(self)
        dialog_button.setIcon(resourceIcon("ide/small/add"))
        dialog_button.setIconSize(QSize(16, 16))
        self.connect(dialog_button, SIGNAL('clicked()'), self.addChoice)
        self.addWidget(dialog_button)


        self.valid_color = self.list_edit_line.palette().color(self.list_edit_line.backgroundRole())

        self.list_edit_line.setText("")
        self.__editing = False

        self.connect(self.list_edit_line, SIGNAL('editingFinished()'), self.validateList)
        self.connect(self.list_edit_line, SIGNAL('textChanged(QString)'), self.validateList)

        self.validateList()
Exemple #4
0
    def __init__(self, model, path_label="Path", help_link=""):
        HelpedWidget.__init__(self, path_label, help_link)

        self.__editing = True

        self.path_line = QLineEdit()

        self.addWidget(self.path_line)

        dialog_button = QToolButton(self)
        dialog_button.setIcon(resourceIcon("folder"))
        dialog_button.setIconSize(QSize(16, 16))
        self.connect(dialog_button, SIGNAL('clicked()'), self.selectDirectory)
        self.addWidget(dialog_button)

        self.valid_color = self.path_line.palette().color(self.path_line.backgroundRole())

        self.path_line.setText(os.getcwd())
        self.__editing = False

        assert isinstance(model, PathModelMixin)
        self.model = model
        model.observable().attach(PathModelMixin.PATH_CHANGED_EVENT, self.getPathFromModel)
        self.getPathFromModel()

        self.connect(self.path_line, SIGNAL('editingFinished()'), self.validatePath)
        self.connect(self.path_line, SIGNAL('editingFinished()'), self.contentsChanged)
        self.connect(self.path_line, SIGNAL('textChanged(QString)'), self.validatePath)
Exemple #5
0
    def __init__(self, possible_items, label="ListEdit", help_link=""):
        HelpedWidget.__init__(self, label, help_link)

        self.__editing = True
        self.__valid = True
        self.__possible_items = possible_items

        self.list_edit_line = AutoCompleteLineEdit(possible_items, self)
        self.list_edit_line.setMinimumWidth(350)

        self.addWidget(self.list_edit_line)

        dialog_button = QToolButton(self)
        dialog_button.setIcon(resourceIcon("ide/small/add"))
        dialog_button.setIconSize(QSize(16, 16))
        self.connect(dialog_button, SIGNAL('clicked()'), self.addChoice)
        self.addWidget(dialog_button)

        self.valid_color = self.list_edit_line.palette().color(
            self.list_edit_line.backgroundRole())

        self.list_edit_line.setText("")
        self.__editing = False

        self.connect(self.list_edit_line, SIGNAL('editingFinished()'),
                     self.validateList)
        self.connect(self.list_edit_line, SIGNAL('textChanged(QString)'),
                     self.validateList)

        self.validateList()
    def addShowCaseInfo(self):
        self.addTab("Case Info")

        case_widget = HelpedWidget("Select case", "init/select_case_for_info")

        model = AllCasesModel()
        self.combo = QComboBox()
        self.combo.setSizeAdjustPolicy(QComboBox.AdjustToMinimumContentsLength)
        self.combo.setMinimumContentsLength(20)
        self.combo.setModel(model)
        self.combo.currentIndexChanged.connect(self.showInfoForCase)

        case_widget.addWidget(self.combo)
        case_widget.addStretch()
        self.addRow(case_widget)


        area_widget = HelpedWidget("Case info", "init/selected_case_info")

        self.text_area = QTextEdit()
        self.text_area.setReadOnly(True)
        self.text_area.setMinimumHeight(300)

        area_widget.addWidget(self.text_area)
        area_widget.addStretch()
        self.addRow(area_widget)

        choice = CaseSelectorModel().getCurrentChoice()
        self.combo.setCurrentIndex(model.indexOf(choice))
Exemple #7
0
    def __init__(self, model, combo_label="Choice", help_link=""):
        HelpedWidget.__init__(self, combo_label, help_link)

        assert model is not None and isinstance(model, ChoiceModelMixin)
        self.model = model

        model.observable().attach(
            ChoiceModelMixin.CURRENT_CHOICE_CHANGED_EVENT,
            self.getCurrentFromModel)
        model.observable().attach(ChoiceModelMixin.CHOICE_LIST_CHANGED_EVENT,
                                  self.updateChoicesFromModel)

        self.combo = QComboBox()
        self.combo.setSizeAdjustPolicy(QComboBox.AdjustToContents)

        self.combo.addItem("Fail!")

        self.addWidget(self.combo)
        self.addStretch()

        self.choice_list = None
        """ @type: list """

        self.connect(self.combo, SIGNAL('currentIndexChanged(int)'),
                     self.selectionChanged)

        self.updateChoicesFromModel()
        self.getCurrentFromModel()
Exemple #8
0
    def __init__(self, model, spinner_label="Integer Number", help_link=""):
        HelpedWidget.__init__(self, spinner_label, help_link)

        assert isinstance(model, SpinnerModelMixin)
        self.model = model
        model.observable().attach(
            SpinnerModelMixin.SPINNER_VALUE_CHANGED_EVENT,
            self.getValueFromModel)
        model.observable().attach(SpinnerModelMixin.RANGE_VALUE_CHANGED_EVENT,
                                  self.getRangeFromModel)

        self.spinner = QSpinBox(self)
        self.addWidget(self.spinner)

        self.info_label = QLabel()
        self.info_label.setHidden(True)
        self.addWidget(self.info_label)

        self.addStretch()

        # self.connect(self.spinner, SIGNAL('editingFinished()'), self.updateModel)
        self.__initialized = False
        self.connect(self.spinner, SIGNAL('valueChanged(int)'),
                     self.updateModel)

        self.getRangeFromModel()
        self.getValueFromModel()
Exemple #9
0
    def __init__(self, model, combo_label="Choice", help_link=""):
        HelpedWidget.__init__(self, combo_label, help_link)

        assert model is not None and isinstance(model, ChoiceModelMixin)
        self.model = model


        model.observable().attach(ChoiceModelMixin.CURRENT_CHOICE_CHANGED_EVENT, self.getCurrentFromModel)
        model.observable().attach(ChoiceModelMixin.CHOICE_LIST_CHANGED_EVENT, self.updateChoicesFromModel)

        self.combo = QComboBox()
        self.combo.setSizeAdjustPolicy(QComboBox.AdjustToContents)

        self.combo.addItem("Fail!")

        self.addWidget(self.combo)
        self.addStretch()

        self.choice_list = None
        """ @type: list """

        self.connect(self.combo, SIGNAL('currentIndexChanged(int)'), self.selectionChanged)

        self.updateChoicesFromModel()
        self.getCurrentFromModel()
Exemple #10
0
    def __init__(self, path_label="Option", help_link=""):
        HelpedWidget.__init__(self, path_label, help_link)

        self.tab_widget = QtGui.QTabWidget()
        self.tab_widget.currentChanged.connect(self.validateTabs)
        self.addWidget(self.tab_widget)
        self.__widgets = {}
        """ :type: dict of (int, HelpedWidget) """
Exemple #11
0
    def __init__(self, path_label="Option", help_link=""):
        HelpedWidget.__init__(self, path_label, help_link)

        self.tab_widget = QtGui.QTabWidget()
        self.tab_widget.currentChanged.connect(self.validateTabs)
        self.addWidget(self.tab_widget)
        self.__widgets = {}
        """ :type: dict of (int, HelpedWidget) """
Exemple #12
0
    def __init__(self, model, label="", help_link=""):
        HelpedWidget.__init__(self, "", help_link)

        layout = QVBoxLayout()

        widget = QWidget()
        widget.setLayout(layout)

        self.checkAllButton = QToolButton()
        self.checkAllButton.setIcon(resourceIcon("checked"))
        self.checkAllButton.setIconSize(QSize(16, 16))
        self.checkAllButton.setToolButtonStyle(Qt.ToolButtonIconOnly)
        self.checkAllButton.setAutoRaise(True)
        self.checkAllButton.setToolTip("Select all")

        self.uncheckAllButton = QToolButton()
        self.uncheckAllButton.setIcon(resourceIcon("notchecked"))
        self.uncheckAllButton.setIconSize(QSize(16, 16))
        self.uncheckAllButton.setToolButtonStyle(Qt.ToolButtonIconOnly)
        self.uncheckAllButton.setAutoRaise(True)
        self.uncheckAllButton.setToolTip("Unselect all")

        self.list = QListWidget()
        self.list.setContextMenuPolicy(Qt.CustomContextMenu)
        self.list.setSelectionMode(QAbstractItemView.ExtendedSelection)

        self.search_box = SearchBox()

        check_button_layout = QHBoxLayout()

        check_button_layout.setMargin(0)
        check_button_layout.setSpacing(0)
        check_button_layout.addWidget(QLabel(label))
        check_button_layout.addStretch(1)
        check_button_layout.addWidget(self.checkAllButton)
        check_button_layout.addWidget(self.uncheckAllButton)

        layout.addLayout(check_button_layout)
        layout.addWidget(self.list)
        layout.addWidget(self.search_box)

        self.addWidget(widget)

        self.connect(self.checkAllButton, SIGNAL('clicked()'), self.checkAll)
        self.connect(self.uncheckAllButton, SIGNAL('clicked()'), self.uncheckAll)
        self.connect(self.list, SIGNAL('itemChanged(QListWidgetItem*)'), self.itemChanged)
        self.search_box.filterChanged.connect(self.filterList)
        # self.connect(self.search_box, SIGNAL('filterChanged(str)'), self.filterList)

        self.connect(self.list, SIGNAL('customContextMenuRequested(QPoint)'), self.showContextMenu)

        assert isinstance(model, (SelectableModelMixin, ListModelMixin))
        self.model = model
        self.model.observable().attach(SelectableModelMixin.SELECTION_CHANGED_EVENT, self.modelChanged)
        self.model.observable().attach(ListModelMixin.LIST_CHANGED_EVENT, self.modelChanged)
        self.modelChanged()
Exemple #13
0
    def __init__(self, label="", help_link=""):
        HelpedWidget.__init__(self, label, help_link)

        widget = QWidget()
        self.layout = QHBoxLayout()
        self.layout.setMargin(0)

        widget.setLayout(self.layout)

        HelpedWidget.addWidget(self, widget)
Exemple #14
0
    def __init__(self, label="", help_link=""):
        HelpedWidget.__init__(self, label, help_link)

        widget = QWidget()
        self.layout = QHBoxLayout()
        self.layout.setMargin(0)

        widget.setLayout(self.layout)

        HelpedWidget.addWidget(self, widget)
Exemple #15
0
    def __init__(self, model, label="", help_link=""):
        HelpedWidget.__init__(self, label, help_link)

        self.models = {}
        assert isinstance(model, ButtonModelMixin)

        self.button = QToolButton()
        self.button.setMinimumWidth(75)
        self.button.setDefaultAction(self.createAction(model))

        self.addWidget(self.button)
Exemple #16
0
    def __init__(self, model, label="", help_link=""):
        HelpedWidget.__init__(self, label, help_link)

        self.models = {}
        assert isinstance(model, ButtonModelMixin)

        self.button = QToolButton()
        self.button.setMinimumWidth(75)
        self.button.setDefaultAction(self.createAction(model))

        self.addWidget(self.button)
Exemple #17
0
    def __init__(self, label="", help_link=""):
        HelpedWidget.__init__(self, label, help_link)

        self.warning_widget = QLabel("")
        self.warning_widget.setWordWrap(True)
        self.warning_widget.setScaledContents(True)
        self.warning_widget.setAlignment(Qt.AlignHCenter)
        self.warning_widget.setTextFormat(Qt.RichText)
        self.warning_widget.setVisible(False)

        self.addWidget(self.warning_widget)
        self.warnings = {}
Exemple #18
0
    def __init__(self, label="", help_link=""):
        HelpedWidget.__init__(self, label, help_link)

        self.warning_widget = QLabel("")
        self.warning_widget.setWordWrap(True)
        self.warning_widget.setScaledContents(True)
        self.warning_widget.setAlignment(Qt.AlignHCenter)
        self.warning_widget.setTextFormat(Qt.RichText)
        self.warning_widget.setVisible(False)

        self.addWidget(self.warning_widget)
        self.warnings = {}
Exemple #19
0
    def __init__(self, model, path_label="String", help_link="", defaultString=""):
        HelpedWidget.__init__(self, path_label, help_link)

        self.box_string = QtGui.QLineEdit()
        self.connect(self.box_string, QtCore.SIGNAL('editingFinished()'), self.validateString)
        self.connect(self.box_string, QtCore.SIGNAL('editingFinished()'), self.stringBoxChanged)
        self.connect(self.box_string, QtCore.SIGNAL('textChanged(QString)'), self.validateString)
        self.addWidget(self.box_string)

        self.box_string.setText(defaultString)

        assert isinstance(model, BasicModelMixin)
        self.model = model
        self.model.observable().attach(BasicModelMixin.VALUE_CHANGED_EVENT, self.modelChanged)
        self.modelChanged()
Exemple #20
0
    def __init__(self, model, label="", help_link=""):
        HelpedWidget.__init__(self, label, help_link)

        assert isinstance(model, BasicModelMixin)
        self.model = model
        self.model.observable().attach(BasicModelMixin.VALUE_CHANGED_EVENT, self.modelChanged)

        self.active_label = QLabel()
        self.addWidget(self.active_label)

        font = self.active_label.font()
        font.setWeight(QFont.Bold)
        self.active_label.setFont(font)

        self.modelChanged()
Exemple #21
0
    def __init__(self, model, label="", help_link=""):
        HelpedWidget.__init__(self, label, help_link)

        assert isinstance(model, BasicModelMixin)
        self.model = model
        self.model.observable().attach(BasicModelMixin.VALUE_CHANGED_EVENT,
                                       self.modelChanged)

        self.active_label = QLabel()
        self.addWidget(self.active_label)

        font = self.active_label.font()
        font.setWeight(QFont.Bold)
        self.active_label.setFont(font)

        self.modelChanged()
Exemple #22
0
    def __init__(self, model, label="", help_link="", default_string=""):
        HelpedWidget.__init__(self, label, help_link)

        assert isinstance(model, TextModelMixin)
        self.model = model
        self.model.observable().attach(TextModelMixin.INITIALIZED_EVENT, self.modelChanged)
        self.model.observable().attach(TextModelMixin.TEXT_VALUE_CHANGED_EVENT, self.modelChanged)

        self.active_label = QLabel()
        self.addWidget(self.active_label)

        font = self.active_label.font()
        font.setWeight(QFont.Bold)
        self.active_label.setFont(font)

        self.active_label.setText(default_string)
Exemple #23
0
    def __init__(self):
        QWidget.__init__(self)

        layout = QVBoxLayout()

        simulation_mode_layout = QHBoxLayout()
        simulation_mode_layout.addSpacing(10)
        simulation_mode_model = SimulationModeModel()
        simulation_mode_model.observable().attach(
            SimulationModeModel.CURRENT_CHOICE_CHANGED_EVENT, self.toggleSimulationMode
        )
        simulation_mode_combo = ComboChoice(simulation_mode_model, "Simulation mode", "run/simulation_mode")
        simulation_mode_layout.addWidget(QLabel(simulation_mode_combo.getLabel()), 0, Qt.AlignVCenter)
        simulation_mode_layout.addWidget(simulation_mode_combo, 0, Qt.AlignVCenter)

        # simulation_mode_layout.addStretch()
        simulation_mode_layout.addSpacing(20)

        self.run_button = QToolButton()
        self.run_button.setIconSize(QSize(32, 32))
        self.run_button.setText("Start Simulation")
        self.run_button.setIcon(util.resourceIcon("ide/gear_in_play"))
        self.run_button.clicked.connect(self.runSimulation)
        self.run_button.setToolButtonStyle(Qt.ToolButtonTextBesideIcon)
        HelpedWidget.addHelpToWidget(self.run_button, "run/start_simulation")

        simulation_mode_layout.addWidget(self.run_button)
        simulation_mode_layout.addStretch(1)

        layout.addSpacing(5)
        layout.addLayout(simulation_mode_layout)
        layout.addSpacing(10)

        self.simulation_stack = QStackedWidget()
        self.simulation_stack.setLineWidth(1)
        self.simulation_stack.setFrameStyle(QFrame.StyledPanel)

        layout.addWidget(self.simulation_stack)

        self.simulation_widgets = {}

        self.addSimulationConfigPanel(EnsembleExperimentPanel())
        self.addSimulationConfigPanel(SensitivityStudyPanel())
        self.addSimulationConfigPanel(EnsembleSmootherPanel())
        self.addSimulationConfigPanel(IteratedEnsembleSmootherPanel())

        self.setLayout(layout)
Exemple #24
0
    def __init__(self, parent=None, spinnerLabel="Double Number", help="", min=0.0, max=1.0, decimals=2):
        """Construct a spinner widget for doubles"""
        HelpedWidget.__init__(self, parent, spinnerLabel, help)

        self.spinner = QtGui.QDoubleSpinBox(self)
        self.spinner.setMinimum(min)
        self.spinner.setMaximum(max)
        self.spinner.setDecimals(decimals)
        self.spinner.setSingleStep(0.01)

        self.addWidget(self.spinner)

        self.addStretch()
        self.addHelpButton()

        #self.connect(self.spinner, QtCore.SIGNAL('valueChanged(int)'), self.updateContent)
        self.connect(self.spinner, QtCore.SIGNAL('editingFinished()'), self.contentsChanged)
Exemple #25
0
    def __init__(self, model, path_label="String", help_link="", defaultString=""):
        HelpedWidget.__init__(self, path_label, help_link)

        self.box_string = QtGui.QLineEdit()
        self.connect(self.box_string, QtCore.SIGNAL('editingFinished()'), self.validateString)
        self.connect(self.box_string, QtCore.SIGNAL('editingFinished()'), self.stringBoxChanged)
        self.connect(self.box_string, QtCore.SIGNAL('textChanged(QString)'), self.validateString)
        self.addWidget(self.box_string)

        self.valid_color = self.box_string.palette().color(self.box_string.backgroundRole())
        self.box_string.setText(defaultString)
        self.__validator = None

        assert isinstance(model, BasicModelMixin)
        self.model = model
        self.model.observable().attach(BasicModelMixin.VALUE_CHANGED_EVENT, self.modelChanged)
        self.modelChanged()
Exemple #26
0
    def __init__(self):
        QWidget.__init__(self)

        layout = QVBoxLayout()

        simulation_mode_layout = QHBoxLayout()
        simulation_mode_layout.addSpacing(10)
        simulation_mode_model = SimulationModeModel()
        simulation_mode_model.observable().attach(SimulationModeModel.CURRENT_CHOICE_CHANGED_EVENT, self.toggleSimulationMode)
        simulation_mode_combo = ComboChoice(simulation_mode_model, "Simulation mode", "run/simulation_mode")
        simulation_mode_layout.addWidget(QLabel(simulation_mode_combo.getLabel()), 0, Qt.AlignVCenter)
        simulation_mode_layout.addWidget(simulation_mode_combo, 0, Qt.AlignVCenter)

        # simulation_mode_layout.addStretch()
        simulation_mode_layout.addSpacing(20)

        self.run_button = QToolButton()
        self.run_button.setIconSize(QSize(32, 32))
        self.run_button.setText("Start Simulation")
        self.run_button.setIcon(util.resourceIcon("ide/gear_in_play"))
        self.run_button.clicked.connect(self.runSimulation)
        self.run_button.setToolButtonStyle(Qt.ToolButtonTextBesideIcon)
        HelpedWidget.addHelpToWidget(self.run_button, "run/start_simulation")

        simulation_mode_layout.addWidget(self.run_button)
        simulation_mode_layout.addStretch(1)

        layout.addSpacing(5)
        layout.addLayout(simulation_mode_layout)
        layout.addSpacing(10)

        self.simulation_stack = QStackedWidget()
        self.simulation_stack.setLineWidth(1)
        self.simulation_stack.setFrameStyle(QFrame.StyledPanel)

        layout.addWidget(self.simulation_stack)

        self.simulation_widgets = {}

        self.addSimulationConfigPanel(EnsembleExperimentPanel())
        self.addSimulationConfigPanel(EnsembleSmootherPanel())
        self.addSimulationConfigPanel(MultipleDataAssimilationPanel())
        self.addSimulationConfigPanel(IteratedEnsembleSmootherPanel())

        self.setLayout(layout)
Exemple #27
0
    def __init__(self, model, path_label="Path", help_link=""):
        HelpedWidget.__init__(self, path_label, help_link)
        self.path_line = QLineEdit()
        #self.pathLine.setMinimumWidth(250)
        self.addWidget(self.path_line)

        self.validColor = self.path_line.palette().color(self.path_line.backgroundRole())

        self.path_line.setText("Not initialized!")
        self.editing = False

        self.connect(self.path_line, SIGNAL('editingFinished()'), self.validatePathFormat)
        self.connect(self.path_line, SIGNAL('editingFinished()'), self.contentsChanged)
        self.connect(self.path_line, SIGNAL('textChanged(QString)'), self.validatePathFormat)

        assert isinstance(model, BasicModelMixin)
        self.model = model
        self.getPathFromModel()
        model.observable().attach(BasicModelMixin.VALUE_CHANGED_EVENT, self.getPathFromModel)
Exemple #28
0
    def __init__(self, model, path_label="String", help_link="", defaultString="", continuous_update=False):
        HelpedWidget.__init__(self, path_label, help_link)

        self.box_string = QtGui.QLineEdit()
        self.connect(self.box_string, QtCore.SIGNAL("editingFinished()"), self.stringBoxChanged)
        self.connect(self.box_string, QtCore.SIGNAL("editingFinished()"), self.validateString)

        if continuous_update:
            self.connect(self.box_string, QtCore.SIGNAL("textChanged(QString)"), self.stringBoxChanged)

        self.connect(self.box_string, QtCore.SIGNAL("textChanged(QString)"), self.validateString)

        self.addWidget(self.box_string)

        self.valid_color = self.box_string.palette().color(self.box_string.backgroundRole())
        self.box_string.setText(defaultString)
        self.__validator = None

        assert isinstance(model, BasicModelMixin)
        self.model = model
        self.model.observable().attach(BasicModelMixin.VALUE_CHANGED_EVENT, self.modelChanged)
        self.modelChanged()
Exemple #29
0
    def __init__(self, model, spinner_label="Integer Number", help_link=""):
        HelpedWidget.__init__(self, spinner_label, help_link)

        assert isinstance(model, SpinnerModelMixin)
        self.model = model
        model.observable().attach(SpinnerModelMixin.SPINNER_VALUE_CHANGED_EVENT, self.getValueFromModel)
        model.observable().attach(SpinnerModelMixin.RANGE_VALUE_CHANGED_EVENT, self.getRangeFromModel)

        self.spinner = QSpinBox(self)
        self.addWidget(self.spinner)

        self.info_label = QLabel()
        self.info_label.setHidden(True)
        self.addWidget(self.info_label)

        self.addStretch()

        # self.connect(self.spinner, SIGNAL('editingFinished()'), self.updateModel)
        self.__initialized = False
        self.connect(self.spinner, SIGNAL("valueChanged(int)"), self.updateModel)

        self.getRangeFromModel()
        self.getValueFromModel()
Exemple #30
0
    def __init__(self,
                 model,
                 check_label="Do this",
                 help_link="",
                 show_label=True,
                 alt_label=None,
                 default_check_state=True):
        """Construct a checkbox widget for booleans"""
        HelpedWidget.__init__(self, check_label, help_link)

        if show_label:
            if alt_label != None:
                self.check = QCheckBox(alt_label, self)
            else:
                self.check = QCheckBox(check_label, self)
        else:
            self.check = QCheckBox(self)

        self.check.setTristate(False)
        self.check.setChecked(default_check_state)
        self.connect(self.check, QtCore.SIGNAL('stateChanged(int)'),
                     self.contentsChanged)

        if not show_label:
            layout = QHBoxLayout()
            layout.addWidget(self.check)
            layout.setAlignment(Qt.AlignCenter)
            layout.setContentsMargins(0, 0, 0, 0)
            self.addLayout(layout)
        else:
            self.addWidget(self.check)

        assert isinstance(model, BooleanModelMixin)
        self.model = model
        self.model.observable().attach(
            BooleanModelMixin.BOOLEAN_VALUE_CHANGED_EVENT, self.modelChanged)
        self.modelChanged()
Exemple #31
0
    def __init__(self, model, list_label="", help_link=""):
        HelpedWidget.__init__(self, list_label, help_link)

        assert isinstance(model, ListModelMixin)
        self.model = model
        self.keyword_list = []

        self.list = QListWidget(self)
        self.list.setMinimumHeight(100)
        self.list.setMaximumHeight(150)
        self.default_selection_mode = self.list.selectionMode()

        self.addWidget(self.list)

        self.addRemoveWidget = AddRemoveWidget(self.addItem, self.removeItem)
        self.addWidget(self.addRemoveWidget)

        self.title = "New keyword"
        self.description = "Enter name of keyword:"

        self.model.observable().attach(ListModelMixin.LIST_CHANGED_EVENT,
                                       self.modelChanged)

        self.modelChanged()
Exemple #32
0
    def __init__(self, model, table_label="", help_link=""):
        HelpedWidget.__init__(self, table_label, help_link)

        self.table = QTableWidget(self)
        self.table.setColumnCount(2)
        self.setColumnHeaders()
        self.table.verticalHeader().setHidden(True)
        self.table.setColumnWidth(0, 150)
        self.table.horizontalHeader().setStretchLastSection(True)

        self.table.setMinimumHeight(110)
        self.table.setSelectionMode(QAbstractItemView.SingleSelection)
        self.table.setSelectionBehavior(QAbstractItemView.SelectRows)

        self.addWidget(self.table)

        self.addWidget(AddRemoveWidget(self.addItem, self.removeItem))

        self.connect(self.table, SIGNAL('cellChanged(int,int)'), self.tableChanged)

        assert isinstance(model, DictionaryModelMixin)
        self.model = model
        model.observable().attach(DictionaryModelMixin.DICTIONARY_CHANGED_EVENT, self.modelChanged)
        self.modelChanged()
Exemple #33
0
    def __init__(self, model, list_label="", help_link=""):
        HelpedWidget.__init__(self, list_label, help_link)

        assert isinstance(model, ListModelMixin)
        self.model = model
        self.keyword_list = []

        self.list = QListWidget(self)
        self.list.setMinimumHeight(100)
        self.list.setMaximumHeight(150)
        self.default_selection_mode = self.list.selectionMode()


        self.addWidget(self.list)

        self.addRemoveWidget = AddRemoveWidget(self.addItem, self.removeItem)
        self.addWidget(self.addRemoveWidget)

        self.title = "New keyword"
        self.description = "Enter name of keyword:"

        self.model.observable().attach(ListModelMixin.LIST_CHANGED_EVENT, self.modelChanged)

        self.modelChanged()
Exemple #34
0
    def __init__(self, model, path_label="Path", help_link=""):
        HelpedWidget.__init__(self, path_label, help_link)
        self.path_line = QLineEdit()
        #self.pathLine.setMinimumWidth(250)
        self.addWidget(self.path_line)

        self.validColor = self.path_line.palette().color(
            self.path_line.backgroundRole())

        self.path_line.setText("Not initialized!")
        self.editing = False

        self.connect(self.path_line, SIGNAL('editingFinished()'),
                     self.validatePathFormat)
        self.connect(self.path_line, SIGNAL('editingFinished()'),
                     self.contentsChanged)
        self.connect(self.path_line, SIGNAL('textChanged(QString)'),
                     self.validatePathFormat)

        assert isinstance(model, BasicModelMixin)
        self.model = model
        self.getPathFromModel()
        model.observable().attach(BasicModelMixin.VALUE_CHANGED_EVENT,
                                  self.getPathFromModel)
Exemple #35
0
    def __init__(self, model, label="", help_link=""):
        HelpedWidget.__init__(self, "", help_link)

        layout = QVBoxLayout()

        widget = QWidget()
        widget.setLayout(layout)

        self.checkAllButton = QToolButton()
        self.checkAllButton.setIcon(resourceIcon("checked"))
        self.checkAllButton.setIconSize(QSize(16, 16))
        self.checkAllButton.setToolButtonStyle(Qt.ToolButtonIconOnly)
        self.checkAllButton.setAutoRaise(True)
        self.checkAllButton.setToolTip("Select all")

        self.uncheckAllButton = QToolButton()
        self.uncheckAllButton.setIcon(resourceIcon("notchecked"))
        self.uncheckAllButton.setIconSize(QSize(16, 16))
        self.uncheckAllButton.setToolButtonStyle(Qt.ToolButtonIconOnly)
        self.uncheckAllButton.setAutoRaise(True)
        self.uncheckAllButton.setToolTip("Unselect all")

        self.list = QListWidget()
        self.list.setContextMenuPolicy(Qt.CustomContextMenu)
        self.list.setSelectionMode(QAbstractItemView.ExtendedSelection)

        self.search_box = SearchBox()

        check_button_layout = QHBoxLayout()

        check_button_layout.setMargin(0)
        check_button_layout.setSpacing(0)
        check_button_layout.addWidget(QLabel(label))
        check_button_layout.addStretch(1)
        check_button_layout.addWidget(self.checkAllButton)
        check_button_layout.addWidget(self.uncheckAllButton)

        layout.addLayout(check_button_layout)
        layout.addWidget(self.list)
        layout.addWidget(self.search_box)

        self.addWidget(widget)

        self.connect(self.checkAllButton, SIGNAL('clicked()'), self.checkAll)
        self.connect(self.uncheckAllButton, SIGNAL('clicked()'),
                     self.uncheckAll)
        self.connect(self.list, SIGNAL('itemChanged(QListWidgetItem*)'),
                     self.itemChanged)
        self.search_box.filterChanged.connect(self.filterList)
        # self.connect(self.search_box, SIGNAL('filterChanged(str)'), self.filterList)

        self.connect(self.list, SIGNAL('customContextMenuRequested(QPoint)'),
                     self.showContextMenu)

        assert isinstance(model, (SelectableModelMixin, ListModelMixin))
        self.model = model
        self.model.observable().attach(
            SelectableModelMixin.SELECTION_CHANGED_EVENT, self.modelChanged)
        self.model.observable().attach(ListModelMixin.LIST_CHANGED_EVENT,
                                       self.modelChanged)
        self.modelChanged()
Exemple #36
0
    def addShowCaseInfo(self):
        self.addTab("Case Info")

        case_widget = HelpedWidget("Select case", "init/select_case_for_info")

        model = AllCasesModel()
        self.combo = QComboBox()
        self.combo.setSizeAdjustPolicy(QComboBox.AdjustToMinimumContentsLength)
        self.combo.setMinimumContentsLength(20)
        self.combo.setModel(model)
        self.combo.currentIndexChanged.connect(self.showInfoForCase)

        case_widget.addWidget(self.combo)
        case_widget.addStretch()
        self.addRow(case_widget)

        area_widget = HelpedWidget("Case info", "init/selected_case_info")

        self.text_area = QTextEdit()
        self.text_area.setReadOnly(True)
        self.text_area.setMinimumHeight(300)

        area_widget.addWidget(self.text_area)
        area_widget.addStretch()
        self.addRow(area_widget)

        choice = CaseSelectorModel().getCurrentChoice()
        self.combo.setCurrentIndex(model.indexOf(choice))