Пример #1
0
    def __init__(self):
        QtGui.QWidget.__init__(self)

        self.slider = QFloatSlider(QtCore.Qt.Horizontal)
        self.spinbox = QtGui.QDoubleSpinBox()

        # Fill background to avoid to see text or widget behind
        self.setAutoFillBackground(True)

        AbstractFloatWidget.__init__(self)

        # To be compatible with tree or table views, slider must keep focus
        self.slider.setFocusPolicy(QtCore.Qt.StrongFocus)
        self.setMinimumHeight(22)
        self.spinbox.setMinimumHeight(18)
        self.slider.setMinimumHeight(18)

        self.slider.floatValueChanged.connect(self.spinbox.setValue)
        self.spinbox.valueChanged.connect(self.slider.setFloatValue)
        # self.slider.floatValueChanged.connect(self.valueChanged)
        self.spinbox.valueChanged.connect(self.valueChanged)

        layout = QtGui.QHBoxLayout(self)
        layout.setContentsMargins(0, 0, 0, 0)

        layout.addWidget(self.spinbox)
        layout.addWidget(self.slider)

        self.value_changed_signal = self.valueChanged
Пример #2
0
    def __set_curves(self):
        self.__refreshTimout.stop()
        crvs = self.__crvs
        if len(crvs) == len(self.__curveViews):  #refresh the existing views
            for i in range(len(crvs)):
                pos, c = crvs[i]
                v = self.__curveViews[i]
                v.setCurve(c)
                v.pos = pos
                self.__curveLabels[i].setValue(pos)
        else:  #recreate them
            del self.__curveViews[:]
            del self.__curveLabels[:]
            scrolledWidget = QtGui.QWidget(self)
            layout = QtGui.QBoxLayout(self.orientation)
            scrolledWidget.setLayout(layout)

            # -- used to lock the bounding cross section line edits --
            minPos = min(crvs, key=lambda x: x[0])[0]
            maxPos = max(crvs, key=lambda x: x[0])[0]

            for pos, c in crvs:
                frame = QtGui.QFrame(scrolledWidget)
                frame.setFrameShape(QtGui.QFrame.Panel)
                frame.setFrameShadow(QtGui.QFrame.Raised)
                subLay = QtGui.QBoxLayout(QtGui.QBoxLayout.TopToBottom)
                frame.setLayout(subLay)

                w = CurvePanel.SimpleCurve2DView(pos, c, frame)
                w.clicked.connect(self.curveEditRequested)
                w.deleteRequested.connect(self.curveDeleteRequested)

                label = QtGui.QDoubleSpinBox()
                label.setRange(-100000., 100000.)
                label.setValue(pos)
                label.setAlignment(QtCore.Qt.AlignHCenter)
                sender = SenderWidget(label, float, self)
                if pos in [minPos, maxPos]:
                    label.setEnabled(False)
                else:
                    sender.valueChanged.connect(self.__on_label_changed)

                subLay.addWidget(w, QtCore.Qt.AlignHCenter)
                subLay.addWidget(label, QtCore.Qt.AlignHCenter)
                layout.addWidget(frame)
                self.__curveViews.append(w)
                self.__curveLabels.append(label)
            self.setWidget(scrolledWidget)
Пример #3
0
    def make_widget(self, typ, value, parent):
        """ Take this value and type and make me a nice widget please.
        The widget is wrapped in a SenderWidget and can be accessed through
        the widget.inner attribute."""
        w = None
        if typ == bool:
            w = QtGui.QCheckBox(parent)
            w.setCheckState(
                QtCore.Qt.Checked if value else QtCore.Qt.Unchecked)
        elif typ == tuple:
            w = QtGui.QLineEdit(str(value), parent)
        elif typ == int:
            w = QtGui.QSpinBox(parent)
            w.setRange(-10000, 10000)
            w.setSingleStep(1)
        elif typ == float:
            w = QtGui.QDoubleSpinBox(parent)
            w.setRange(-10000.0, 10000.0)
            w.setSingleStep(0.01)

        if w is not None:
            wrapper = SenderWidget(w, typ, self)
            wrapper.valueChanged.connect(self.__on_widget_changed)
            return wrapper