File: simpleform.py

package info (click to toggle)
taurus 5.2.3-2
  • links: PTS, VCS
  • area: main
  • in suites: sid, trixie
  • size: 100,792 kB
  • sloc: python: 51,356; sh: 67; makefile: 12
file content (55 lines) | stat: -rw-r--r-- 1,853 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
from taurus.external.qt import Qt
from taurus.qt.qtgui.base import TaurusBaseComponent, MLIST
from taurus.qt.qtgui.application import TaurusApplication
from taurus.qt.qtgui.display import TaurusLabel


class SimpleForm(Qt.QWidget, TaurusBaseComponent):
    """A simple taurus form using the model list support from
    TaurusBaseComponent.
    """

    modelKeys = [MLIST]

    def __init__(self, parent=None):
        super(SimpleForm, self).__init__(parent=parent)
        self.setLayout(Qt.QFormLayout(self))

    def setModel(self, model, *, key=MLIST):
        """reimplemented from TaurusBaseComponent"""
        TaurusBaseComponent.setModel(self, model, key=key)
        _ly = self.layout()

        if key is MLIST:  # (re)create all rows
            # remove existing rows
            while _ly.rowCount():
                _ly.removeRow(0)
            # create new rows
            for i, name in enumerate(model):
                simple_name = self.getModelObj(key=(MLIST, i)).getSimpleName()
                value_label = TaurusLabel()
                value_label.setModel(name)
                _ly.addRow(simple_name, value_label)
        else:  # update a single existing row
            _, row = key  # key must be of the form (MLIST, <i>)
            name_label = _ly.itemAt(row, _ly.ItemRole.LabelRole).widget()
            value_label = _ly.itemAt(row, _ly.ItemRole.FieldRole).widget()
            name_label.setText(self.getModelObj(key=key).getSimpleName())
            value_label.setModel(self.getModelName(key=key))


if __name__ == "__main__":
    import sys

    app = TaurusApplication()
    w = SimpleForm()
    w.setModel(
        [
            "eval:foo=123;foo",
            "eval:randint(99)",
            "sys/tg_test/1/short_scalar",
            "eval:randint(99)",
        ]
    )
    w.show()
    sys.exit(app.exec_())