Beispiel #1
0
 def __init__(self):
     super().__init__()
     # Properties
     self.title = "Sequence Manager"
     # Layout
     self.resize(640, 480)
     self._sequence_tree = ui.Tree(header=("Name", "Filename"),
                                   indentation=0,
                                   selected=self.on_sequence_tree_selected)
     self._add_button = ui.Button(text="&Add", clicked=self.on_add_sequence)
     self._remove_button = ui.Button(text="&Remove",
                                     enabled=False,
                                     clicked=self.on_remove_sequence)
     self._preview_tree = ui.Tree(header=["Key", "Value"])
     self.layout = ui.Column(ui.Row(ui.Column(self._sequence_tree,
                                              self._preview_tree,
                                              stretch=(4, 3)),
                                    ui.Column(self._add_button,
                                              self._remove_button,
                                              ui.Spacer()),
                                    stretch=(1, 0)),
                             ui.DialogButtonBox(buttons=("ok", "cancel"),
                                                accepted=self.accept,
                                                rejected=self.reject),
                             stretch=(1, 0))
Beispiel #2
0
    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)
        self._bindings = {}
        self.state_handlers = []
        self.data_panel = ui.Column()
        self.general_tab = ui.Tab(title="General", layout=ui.Row())
        self.control_tabs = ui.Tabs(self.general_tab)
        self.status_panel = ui.Column()
        self.control_panel = ui.Row(self.control_tabs,
                                    ui.Column(self.status_panel,
                                              ui.Spacer(horizontal=False)),
                                    stretch=(3, 1))
        self.layout.insert(2, self.data_panel)
        self.layout.insert(3, self.control_panel)
        self.layout.stretch = 0, 0, 0, 0, 1
        self.measurement = None
        self.data_tabs = ui.Tabs()
        self.data_panel.append(self.data_tabs)

        # Add analysis tab
        self.analysis_tree = ui.Tree(header=["Parameter", "Value"])
        self.data_tabs.insert(
            0, ui.Tab(title="Analysis", layout=self.analysis_tree))

        # Plots
        self.series_transform = {}
        self.series_transform_default = lambda x, y: (x, y)
Beispiel #3
0
 def __init__(self, position_picked=None, absolute_move=None):
     super().__init__()
     self.position_picked = position_picked
     self.absolute_move = absolute_move
     self.positions_tree = ui.Tree(
         header=("Name", "X", "Y", "Z", "Comment"),
         root_is_decorated=False,
         selected=self.on_position_selected,
         double_clicked=self.on_position_double_clicked)
     self.pick_button = ui.Button(
         text="Assign &Position",
         tool_tip="Assign current table position to selected position item",
         clicked=self.on_pick_position,
         enabled=False)
     self.add_button = ui.Button(text="&Add",
                                 tool_tip="Add new position item",
                                 clicked=self.on_add_position)
     self.edit_button = ui.Button(text="&Edit",
                                  tool_tip="Edit selected position item",
                                  clicked=self.on_edit_position,
                                  enabled=False)
     self.remove_button = ui.Button(
         text="&Remove",
         tool_tip="Remove selected position item",
         clicked=self.on_remove_position,
         enabled=False)
     self.move_button = ui.Button(text="&Move",
                                  tool_tip="Move to selected position",
                                  clicked=self.on_move,
                                  enabled=False)
     self.append(self.positions_tree)
     self.append(
         ui.Column(self.pick_button, self.move_button, ui.Spacer(),
                   self.add_button, self.edit_button, self.remove_button))
     self.stretch = 1, 0
Beispiel #4
0
 def __init__(self, position_picked=None, absolute_move=None):
     super().__init__()
     self.position_picked = position_picked
     self.absolute_move = absolute_move
     self.contacts_tree = ui.Tree(header=("Contact", "X", "Y", "Z", None),
                                  selected=self.on_contacts_selected)
     self.contacts_tree.fit()
     self.pick_button = ui.Button(
         text="Assign &Position",
         tool_tip="Assign current table position to selected position item",
         clicked=self.on_pick_position,
         enabled=False)
     self.calculate_button = ui.Button(text="&Calculate",
                                       clicked=self.on_calculate,
                                       enabled=False)
     self.move_button = ui.Button(text="&Move",
                                  tool_tip="Move to selected position",
                                  clicked=self.on_move,
                                  enabled=False)
     self.reset_button = ui.Button(text="&Reset",
                                   clicked=self.on_reset,
                                   enabled=False)
     self.reset_all_button = ui.Button(text="Reset &All",
                                       clicked=self.on_reset_all)
     self.append(self.contacts_tree)
     self.append(
         ui.Column(self.pick_button, self.move_button,
                   self.calculate_button, ui.Spacer(), self.reset_button,
                   self.reset_all_button))
     self.stretch = 1, 0
Beispiel #5
0
    def __init__(self):
        super().__init__(title="Table")
        self.temporary_z_limit_changed = None
        self._steps_tree = ui.Tree(header=("Size", "Z-Limit", "Color"),
                                   root_is_decorated=False)
        # Hide Z-Limit column
        self._steps_tree.qt.setColumnHidden(1, True)
        self._steps_tree.selected = self.on_position_selected
        self._steps_tree.double_clicked = self.on_steps_tree_double_clicked
        self._steps_tree.qt.setItemDelegateForColumn(
            0, ItemDelegate(self._steps_tree.qt))
        self._steps_tree.qt.setItemDelegateForColumn(
            1, ItemDelegate(self._steps_tree.qt))
        self._add_step_button = ui.Button(text="&Add",
                                          tool_tip="Add table step",
                                          clicked=self.on_add_step_clicked)
        self._edit_step_button = ui.Button(text="&Edit",
                                           tool_tip="Edit selected table step",
                                           enabled=False,
                                           clicked=self.on_edit_step_clicked)
        self._remove_step_button = ui.Button(
            text="&Remove",
            tool_tip="Remove selected table step",
            enabled=False,
            clicked=self.on_remove_step_clicked)
        self._z_limit_movement_number = ui.Number(
            minimum=0,
            maximum=128.0,
            decimals=3,
            suffix="mm",
            changed=self.on_z_limit_movement_changed)

        def create_number():
            return ui.Number(minimum=0,
                             maximum=1000.0,
                             decimals=3,
                             suffix="mm")

        self._probecard_limit_x_maximum_number = create_number()
        self._probecard_limit_y_maximum_number = create_number()
        self._probecard_limit_z_maximum_number = create_number()
        self._probecard_limit_z_maximum_checkbox = ui.CheckBox(
            text="Temporary Z-Limit",
            tool_tip="Select to show temporary Z-Limit notice.")
        self._joystick_limit_x_maximum_number = create_number()
        self._joystick_limit_y_maximum_number = create_number()
        self._joystick_limit_z_maximum_number = create_number()
        self._probecard_contact_delay_number = ui.Number(minimum=0,
                                                         maximum=3600,
                                                         decimals=2,
                                                         step=.1,
                                                         suffix="s")
        self._recontact_overdrive_number = ui.Number(minimum=0,
                                                     maximum=0.025,
                                                     decimals=3,
                                                     step=.001,
                                                     suffix="mm")
        self.layout = ui.Column(
            ui.GroupBox(title="Control Steps (mm)",
                        layout=ui.Row(self._steps_tree,
                                      ui.Column(self._add_step_button,
                                                self._edit_step_button,
                                                self._remove_step_button,
                                                ui.Spacer()),
                                      stretch=(1, 0))),
            ui.GroupBox(title="Movement Z-Limit",
                        layout=ui.Column(self._z_limit_movement_number)),
            ui.GroupBox(title="Probe Card Limts",
                        layout=ui.Row(
                            ui.Column(ui.Label("X"),
                                      self._probecard_limit_x_maximum_number),
                            ui.Column(ui.Label("Y"),
                                      self._probecard_limit_y_maximum_number),
                            ui.Column(ui.Label("Z"),
                                      self._probecard_limit_z_maximum_number),
                            ui.Column(
                                ui.Label(),
                                ui.Label("Maximum"),
                            ), ui.Spacer(),
                            ui.Column(
                                ui.Label(),
                                self._probecard_limit_z_maximum_checkbox,
                            ))),
            ui.GroupBox(title="Joystick Limits",
                        layout=ui.Row(
                            ui.Column(ui.Label("X"),
                                      self._joystick_limit_x_maximum_number),
                            ui.Column(ui.Label("Y"),
                                      self._joystick_limit_y_maximum_number),
                            ui.Column(ui.Label("Z"),
                                      self._joystick_limit_z_maximum_number),
                            ui.Column(
                                ui.Label(),
                                ui.Label("Maximum"),
                            ), ui.Spacer())),
            ui.Row(ui.GroupBox(title="Probecard Contact Delay",
                               layout=ui.Row(
                                   self._probecard_contact_delay_number)),
                   ui.GroupBox(title="Re-Contact Z-Overdrive (1x)",
                               layout=ui.Row(
                                   self._recontact_overdrive_number)),
                   stretch=(0, 1)),
            stretch=(1, 0, 0, 0, 0))
Beispiel #6
0
def main():
    app = comet.Application()

    def on_activated(item):
        ui.show_info(text=format(item.value))

    def on_selected(item):
        print("Item", format(item.value))

    table = ui.Table()
    table.header = "Name", "Status", "HV", "Current", "Temp.", "Calib."
    table.stretch = True
    table.activated = on_activated
    table.selected = on_selected
    for i in range(10):
        table.append([
            f"Unnamed{i}", "OK", "", "n/a", "n/a",
            f"{random.random()*1000:.0f} ohm"
        ])
        # First column user checkable
        table[i][0].checkable = True
        table[i][0].checked = random.choice([True, False])
        # First column editabled
        table[i][0].readonly = False

    table.qt.setCurrentItem(table[0][0].qt)
    table.fit()

    def on_activated(index, item):
        ui.show_info(text=format(item[index].value))

    def on_selected(item):
        print("Item", format(item[0].value))

    tree = ui.Tree()
    tree.header = "Measurement", "Status"
    tree.activated = on_activated
    tree.selected = on_selected
    tree.append(["Flute 1", "OK"])
    tree.clear()
    tree.append(["Flute 2", "OK"])
    tree.insert(0, ["Flute 3", "Meas..."])
    tree[0][0].checked = True
    tree[0][1].color = "red"
    tree[0][1].background = "blue"
    #tree[0][1].color = None
    tree[0][1].background = None

    tree.append(["Flute 4", "OK"])
    tree.append(["Flute 5", "OK"])
    tree.append(["Flute 6"])

    tree.qt.setCurrentItem(tree[2].qt)

    tree.remove(tree[3])

    for i, item in enumerate(tree):
        if i == 1:
            item.expanded = True
        item[0].checked = True
        item.append(["Test 1", "OK"])
        item.append(["Test 2", "OK"])
        item.insert(0, ["Test 3", "OK"])
        item.children[0][0].checked = True
        item.children[1][0].checked = False
        item.children[2][0].checked = True

    for item in tree:
        print(item[0].checked)
        for item in item.children:
            print(item[0].checked)

    def measure(process):
        while process.running:
            for i in range(10):
                value = random.choice([True, False])
                process.emit('hv', i, value)
                value = random.uniform(22., 24.)
                process.emit('temp', i, value)
            for i in range(2):
                value = random.choice(["OK", "FAIL"])
                process.emit('status', i, value)
            time.sleep(1)

    def on_hv(i, value):
        item = table[i][2]
        if table[i][0].checked:
            item.value = {True: "ON", False: "OFF"}[value]
            item.color = {True: "green", False: "red"}[value]
            item.bold = not value
        else:
            item.value = None

    def on_temp(i, value):
        item = table[i][4]
        if table[i][0].checked:
            item.value = value
            item.color = "green"
            if item.value < 22.5:
                item.color = "red"
        else:
            item.value = None

    def on_status(i, value):
        color = {"OK": "green", "FAIL": "red"}[value]
        tree[i][1].value = value
        tree[i][1].color = color
        tree[i][1].bold = value == "FAIL"
        for item in tree[i].children:
            if item[0].checked:
                item[1].value = value
                item[1].color = color
                item[1].bold = value == "FAIL"
            else:
                item[1].value = None

    app.layout = ui.Column(table, tree)

    process = comet.Process(target=measure)
    process.hv = on_hv
    process.temp = on_temp
    process.status = on_status
    app.processes.add("process", process)
    process.start()

    return app.run()
Beispiel #7
0
def main():
    app = comet.Application()
    app.title = "UI Demo"

    values = ["Chapman", "Cleese", "Gilliam", "Idle", "Jones", "Palin"]

    tab1 = ui.Tab(title="Tab 1",
                  layout=ui.Column(
                      ui.Row(ui.Column(
                          ui.GroupBox(title="Numbers",
                                      layout=ui.Column(
                                          ui.Label(text="Number 1"),
                                          ui.Number(value=1,
                                                    minimum=0,
                                                    maximum=10,
                                                    step=1,
                                                    prefix="#"),
                                          ui.Label(text="Number 2"),
                                          ui.Number(value=2.345,
                                                    minimum=0,
                                                    maximum=10,
                                                    step=.1,
                                                    decimals=3,
                                                    suffix="mV"),
                                          ui.Label(text="Number 3"),
                                          ui.Number(value=1.23,
                                                    minimum=0,
                                                    maximum=10,
                                                    decimals=2,
                                                    suffix="mA",
                                                    readonly=True),
                                          ui.Label(text="Number 4"),
                                          ui.Number(value=4.2,
                                                    minimum=0,
                                                    maximum=10,
                                                    decimals=1,
                                                    suffix="dB",
                                                    enabled=False)))),
                             ui.Column(
                                 ui.GroupBox(title="Text",
                                             layout=ui.Column(
                                                 ui.Label(text="Text 1"),
                                                 ui.Text(value="Chapman"),
                                                 ui.Label(text="Text 2"),
                                                 ui.Text(value="Cleese",
                                                         clearable=True),
                                                 ui.Label(text="Text 3"),
                                                 ui.Text(value="Idle",
                                                         readonly=True),
                                                 ui.Label(text="Text 4"),
                                                 ui.Text(value="Palin",
                                                         enabled=False)))),
                             ui.Spacer(),
                             stretch=(2, 2, 3)),
                      ui.Spacer(),
                      stretch=(0, 1)))

    def on_append():
        list1.append(f"Spam {len(list1)}")
        list1.current = list1[0]

    def on_remove():
        if list1.current is not None:
            list1.remove(list1.current)

    list1 = ui.List()
    tab2 = ui.Tab(title="Tab 2",
                  layout=ui.Column(ui.Row(
                      ui.GroupBox(title="List 1",
                                  layout=ui.Column(
                                      list1,
                                      ui.Button(text="&Add",
                                                clicked=on_append),
                                      ui.Button(text="&Remove",
                                                clicked=on_remove))),
                      ui.GroupBox(title="List 2", layout=ui.List(values)),
                      ui.GroupBox(title="List 3",
                                  layout=ui.List(values, enabled=False))),
                                   ui.Spacer(),
                                   stretch=(0, 1)))

    table1 = ui.Table(header=["Key", "Value"])
    tab3 = ui.Tab(title="Tab 3", layout=ui.Column(table1))

    tree1 = ui.Tree(header=["Key", "Value"])
    tab4 = ui.Tab(title="Tab 4", layout=ui.Column(tree1))

    first = ui.Button(text="Click")
    scroll = ui.ScrollArea(layout=ui.Column(*[
        ui.CheckBox(text=f"Option {i+1}", checked=random.choice([True, False]))
        for i in range(64)
    ]))
    second = ui.Column(scroll)
    tab5 = ui.Tab(title="Tab 5", layout=first)
    tab5.layout = second
    del first

    tab6 = ui.Tab(title="Tab 6",
                  layout=ui.Row(ui.Column(
                      ui.Label("Metric 1"),
                      ui.Metric('V',
                                decimals=3,
                                changed=lambda value: print(value)),
                      ui.Label("Metric 2"),
                      ui.Metric('A',
                                prefixes='munp',
                                changed=lambda value: print(value)),
                      ui.Spacer()),
                                ui.Spacer(),
                                stretch=(1, 2)))

    def on_changed(value):
        app.message = value

    def on_click():
        app.message = combobox1.current

    tabs = ui.Tabs(tab1, tab2, tab3, tab4, tab5, tab6)
    combobox1 = ui.ComboBox(values)

    app.layout = ui.Row(ui.Column(
        ui.GroupBox(title="GroupBox 1",
                    layout=ui.Column(
                        ui.Button(text="Button 1", clicked=on_click),
                        ui.Button(text="Button 2", enabled=False),
                        ui.Button(text="Button 3", checkable=True),
                        ui.Button(text="Button 4",
                                  checkable=True,
                                  enabled=False),
                        ui.Button(text="Button 5",
                                  checkable=True,
                                  checked=True))),
        ui.GroupBox(title="GroupBox 2",
                    layout=ui.Column(
                        ui.CheckBox(text="CheckBox 1"),
                        ui.CheckBox(text="CheckBox 2", enabled=False),
                        ui.CheckBox(text="CheckBox 3",
                                    checked=True,
                                    enabled=False),
                        ui.CheckBox(text="CheckBox 4", checked=True))),
        ui.GroupBox(title="GroupBox 3",
                    layout=ui.Column(
                        ui.ComboBox(), combobox1,
                        ui.ComboBox(values,
                                    current="Cleese",
                                    changed=on_changed),
                        ui.ComboBox(values, current="Idle", enabled=False))),
        ui.Spacer()),
                        tabs,
                        stretch=(2, 7))

    # Populate table
    spam = table1.append(["Spam", 42])
    spam[0].checked = True
    #spam[0].enabled = False
    ham = table1.append(["Ham", 41])
    ham[0].checked = True
    #ham[0].enabled = False

    # Populate tree
    spam = tree1.append(["Spam", 42])
    spam[0].checked = True
    spam.append(["Ham", 41])
    spam.append(["Eggs", 40])

    # Add an remove tab
    tab = ui.Tab()
    tabs.insert(0, tab)
    tab.title = "Spam"
    tabs.remove(tab)

    app.message = "Notification message..."
    app.progress = 3, 4

    return app.run()