Ejemplo n.º 1
0
    def __init__(self, parent=None, init_widget_info=None, initState=None):
        QStackedWidget.__init__(self, parent)
        self.trueLive = TimeEditWidget(self)
        self.trueLive.setValue(1.0)

        self.clockTime = QDateTimeEdit(QDateTime.currentDateTime(), self)
        self.counts = QSpinBox(self)

        self.widget_types = {
            'LiveTime': self.trueLive,
            'TrueTime': self.trueLive,
            'ClockTime': self.clockTime,
            'counts': self.counts,
        }

        self.counts.setRange(0, 1000000000)
        self.counts.setSingleStep(50000)

        # config QDateTime:
        self.clockTime.setButtonSymbols(QAbstractSpinBox.NoButtons)

        # add widgets to Stack
        self.addWidget(self.trueLive)
        self.addWidget(self.clockTime)
        self.addWidget(self.counts)

        # Init given current widget with data (time.. etc)
        self.setCurrentWidget(self.widget_types[init_widget_info])

        self.setValue(initState)

        self.trueLive.returnPressed.connect(self.on_returnPressed)
        self.clockTime.editingFinished.connect(self.on_dt_changed)
        self.counts.valueChanged[str].connect(self.on_cts_changed)
        self.setMinimumWidth(90)
Ejemplo n.º 2
0
 def __init__(self,
              parent,
              curvalue,
              minmax,
              fmtstr='%.4g',
              allow_enter=False):
     QSpinBox.__init__(self, parent)
     self.setRange(minmax[0], minmax[1])
     self.setValue(curvalue)
     self.valueChanged['int'].connect(lambda val: self.valueModified.emit())
     if allow_enter:
         self.lineEdit().returnPressed.connect(
             lambda: self.valueChosen.emit(self.value()))
Ejemplo n.º 3
0
 def createWidget(self, parent, client):
     if self.value is None:
         self.value = 30 * 60
     self._widget = QWidget(parent)
     layout = QHBoxLayout()
     self._widget.number = QSpinBox(self._widget)
     self._widget.number.setValue(30)
     self._widget.number.setMinimum(1)
     self._widget.number.setMaximum(10000)
     self._widget.unit = QComboBox(self._widget)
     self._widget.unit.addItems(['sec', 'min', 'hr'])
     self._widget.unit.setCurrentIndex(1)
     layout.addWidget(self._widget.number)
     layout.addWidget(self._widget.unit)
     layout.setContentsMargins(0, 0, 0, 0)
     self._widget.setLayout(layout)
     self._widget.number.valueChanged.connect(self._updateValue)
     self._widget.unit.currentIndexChanged.connect(self._updateValue)
     self._widget.setMinimumWidth(120)
     if self.value is not None:
         if self.value % 3600 == 0:
             self._widget.number.setValue(self.value // 3600)
             self._widget.unit.setCurrentIndex(2)
         elif self.value % 60 == 0:
             self._widget.number.setValue(self.value // 60)
             self._widget.unit.setCurrentIndex(1)
         else:
             self._widget.number.setValue(self.value)
             self._widget.unit.setCurrentIndex(0)
     return self._widget
Ejemplo n.º 4
0
class ValueData(QStackedWidget):

    valueChanged = pyqtSignal([int], [float])

    def __init__(self, parent=None, init_widget_info=None, initState=None):
        QStackedWidget.__init__(self, parent)
        self.trueLive = TimeEditWidget(self)
        self.trueLive.setValue(1.0)

        self.clockTime = QDateTimeEdit(QDateTime.currentDateTime(), self)
        self.counts = QSpinBox(self)

        self.widget_types = {
            'LiveTime': self.trueLive,
            'TrueTime': self.trueLive,
            'ClockTime': self.clockTime,
            'counts': self.counts,
        }

        self.counts.setRange(0, 1000000000)
        self.counts.setSingleStep(50000)

        # config QDateTime:
        self.clockTime.setButtonSymbols(QAbstractSpinBox.NoButtons)

        # add widgets to Stack
        self.addWidget(self.trueLive)
        self.addWidget(self.clockTime)
        self.addWidget(self.counts)

        # Init given current widget with data (time.. etc)
        self.setCurrentWidget(self.widget_types[init_widget_info])

        self.setValue(initState)

        self.trueLive.returnPressed.connect(self.on_returnPressed)
        self.clockTime.editingFinished.connect(self.on_dt_changed)
        self.counts.valueChanged[str].connect(self.on_cts_changed)
        self.setMinimumWidth(90)

    def setWidget(self, widget_desc):
        new_widget = self.widget_types[widget_desc]
        if new_widget != self.currentWidget():
            self.setCurrentWidget(new_widget)
            cvalue = self.value()
            self.setValue(cvalue)
            # if widget_desc == 'counts':
            #     self.valueChanged[int].emit(self.value())
            # else:
            #     self.valueChanged[float].emit(self.value())

    def setValue(self, new_data):
        w = self.currentWidget()
        if isinstance(w, TimeEditWidget):
            w.setValue(new_data)
        elif isinstance(w, QDateTimeEdit):
            dt = QDateTime()
            dt.setMSecsSinceEpoch(float(new_data) * 1000)
            w.setDateTime(dt)
        elif isinstance(w, QSpinBox):
            w.setValue(int(new_data))
        self.current = new_data
        self.setEnabled(True)

    def value(self, key=None):
        w = self.widget_types.get(key)
        if w is None:
            w = self.currentWidget()
        if isinstance(w, TimeEditWidget):
            return float(w.value())
        elif isinstance(w, QDateTimeEdit):
            return float(w.dateTime().toMSecsSinceEpoch() / 1000.)
        elif isinstance(w, QSpinBox):
            return w.value()

    def on_returnPressed(self):
        value = self.trueLive.value()
        self.valueChanged[float].emit(value)

    def on_dt_changed(self):
        stamp = self.clockTime.dateTime().toMSecsSinceEpoch() / 1000.
        self.valueChanged[float].emit(stamp)

    def on_cts_changed(self):
        cts = self.counts.value()
        self.valueChanged[int].emit(cts)