Пример #1
0
def run_gui(csr_csv, port):
    import dearpygui.dearpygui as dpg

    bus = RemoteClient(csr_csv=csr_csv, port=port)
    bus.open()

    def reboot_callback():
        bus.regs.ctrl_reset.write(1)
        bus.regs.ctrl_reset.write(0)

    dpg.create_context()
    dpg.create_viewport(title="LiteX CLI GUI",
                        max_width=800,
                        always_on_top=True)
    dpg.setup_dearpygui()

    with dpg.window(autosize=True):
        dpg.add_text("Control/Status")
        dpg.add_button(label="Reboot", callback=reboot_callback)

        def filter_callback(sender, filter_str):
            dpg.set_value("csr_filter", filter_str)

        dpg.add_input_text(label="CSR Filter (inc, -exc)",
                           callback=filter_callback)
        dpg.add_text("CSR Registers:")
        with dpg.filter_set(id="csr_filter"):

            def reg_callback(tag, data):
                for name, reg in bus.regs.__dict__.items():
                    if (tag == name):
                        try:
                            reg.write(int(data, 0))
                        except:
                            pass

            for name, reg in bus.regs.__dict__.items():
                dpg.add_input_text(indent=16,
                                   label=f"0x{reg.addr:08x} - {name}",
                                   tag=name,
                                   filter_key=name,
                                   callback=reg_callback,
                                   on_enter=True,
                                   width=200)

    def timer_callback(refresh=1e-1):
        while True:
            for name, reg in bus.regs.__dict__.items():
                value = reg.read()
                dpg.set_value(item=name, value=f"0x{reg.read():x}")
            time.sleep(refresh)

    timer_thread = threading.Thread(target=timer_callback)
    timer_thread.start()

    dpg.show_viewport()
    dpg.start_dearpygui()
    dpg.destroy_context()

    bus.close()
Пример #2
0
    def run(self, app):
        title = "celestine - PyPI"
        dpg.create_context()
        dpg.create_viewport(title=title,
                            small_icon="celestine_small.ico",
                            large_icon="celestine_large.ico",
                            width=1920,
                            height=1080,
                            x_pos=256,
                            y_pos=256,
                            min_width=640,
                            max_width=3840,
                            min_height=480,
                            max_height=2160,
                            resizable=True,
                            vsync=True,
                            always_on_top=False,
                            decorated=True,
                            clear_color=(0, 0, 0))

        with dpg.texture_registry(show=False):
            app.setup(self)

        with dpg.window(tag="primary_window"):
            app.view(self)

        dpg.setup_dearpygui()
        dpg.show_viewport(minimized=False, maximized=False)
        dpg.set_primary_window("primary_window", True)
        dpg.start_dearpygui()
        dpg.destroy_context()
Пример #3
0
def start_dpg():
    """
    The outside loop runs forever and blocks when the dpg.start_dearpygui() is called.
    When the plot_callback() calls dpg.stop_dearpygui() then it continues running forever until the
    visualisation_on turns on at which point the start_dearpygui is called again and this blocks
    :return: Nothing
    """
    global visualisation_type
    global visualiser_showing
    global is_dearpygui_running
    global dpg_ids
    global initialised_plots

    is_dearpygui_running = True
    initialised_plots = False

    dpg.create_context()
    dpg.create_viewport(title='Visualising', width=330, height=280)

    with dpg.window(label="Visualisation",
                    show=True) as dpg_ids['Visualisation']:
        if visualisation_type == 'Value':
            dpg_ids['Text'] = dpg.add_text(default_value='__start__',
                                           label='Value')
            dpg.set_item_width(dpg_ids['Visualisation'], 300)
            dpg.set_item_height(dpg_ids['Visualisation'], 250)
        elif visualisation_type == 'Single Pane Plot':
            dpg.set_viewport_width(1050)
            dpg.set_viewport_height(770)
            dpg.set_item_width(dpg_ids['Visualisation'], 1050)
            dpg.set_item_height(dpg_ids['Visualisation'], 770)
            with dpg.plot(label="Plot",
                          height=700,
                          width=1000,
                          show=True,
                          pan_button=True,
                          fit_button=True) as dpg_ids['Plot 0']:
                dpg_ids['x_axis'] = dpg.add_plot_axis(dpg.mvXAxis,
                                                      label="Data index")
                dpg_ids['y_axis'] = dpg.add_plot_axis(dpg.mvYAxis,
                                                      label="Data")

        elif visualisation_type == 'Multi Pane Plot':
            dpg.set_viewport_width(1050)
            dpg.set_viewport_height(850)
            dpg.set_item_width(dpg_ids['Visualisation'], 1050)
            dpg.set_item_height(dpg_ids['Visualisation'], 820)

    dpg.set_viewport_resize_callback(on_resize_viewport)
    dpg.setup_dearpygui()
    dpg.show_viewport()

    visualiser_showing = True
    if data is not None:
        update_dpg_gui()

    dpg.start_dearpygui()
    dpg.destroy_context()
Пример #4
0
    def run(self):
        # -------------------------------------------------- 01
        # make sure if was already called
        if self.internal.has("is_run_called"):
            raise e.code.NotAllowed(
                msgs=[
                    f"You can run only once ..."
                ]
            )
        # -------------------------------------------------- 02
        # setup dpg
        _pyc_debug = settings.PYC_DEBUGGING
        dpg.create_context()
        dpg.configure_app(manual_callback_management=_pyc_debug)
        dpg.create_viewport()
        dpg.setup_dearpygui()

        # -------------------------------------------------- 03
        # setup and layout
        _LOGGER.info(msg="Setup and layout dashboard ...")
        self.setup()
        self.layout()

        # -------------------------------------------------- 04
        # call build and indicate build is done
        _LOGGER.info(msg="Building dashboard ...")
        self.build()
        self.internal.is_run_called = True

        # -------------------------------------------------- 05
        # dpg related
        dpg.show_viewport()
        if _pyc_debug:
            if not internal_dpg.is_viewport_ok():
                raise RuntimeError("Viewport was not created and shown.")
            while internal_dpg.is_dearpygui_running():
                # add this extra line for callback debug
                # https://pythonrepo.com/repo/hoffstadt-DearPyGui-python-graphical-user-interface-applications
                dpg.run_callbacks(dpg.get_callback_queue())
                internal_dpg.render_dearpygui_frame()
        else:
            dpg.start_dearpygui()
        dpg.destroy_context()
Пример #5
0
def demo():
    """
    Refer
    >>> from dearpygui import demo
    """

    dpg.create_context()
    dpg.create_viewport()
    dpg.setup_dearpygui()

    _demo.show_demo()

    # with dpg.window(label="Dear PyGui Demo", width=800, height=800,
    #                 pos=(100, 100), tag="__demo_id"):
    #     with dpg.collapsing_header(label="some label", default_open=True,):
    #         dpg.add_text(default_value="Some text")

    dpg.show_viewport()
    dpg.start_dearpygui()
    dpg.destroy_context()
Пример #6
0
    def start(self):

        dpg.setup_registries()
        dpg.setup_viewport()
        dpg.set_viewport_title("Simple Data Flow")
        node_editor = NodeEditor()

        with dpg.window() as main_window:

            with dpg.menu_bar():

                with dpg.menu(label="Operations"):

                    dpg.add_menu_item(label="Reset", callback=lambda: dpg.delete_item(node_editor.uuid, children_only=True))

                with dpg.menu(label="Plugins"):
                    for plugin in self.plugins:
                        dpg.add_menu_item(label=plugin[0], callback=plugin[1])

            with dpg.group(horizontal=True) as group:

                # left panel
                with dpg.group(id=self.left_panel):
                    self.data_set_container.submit(self.left_panel)
                    self.modifier_container.submit(self.left_panel)

                # center panel
                node_editor.submit(group)

                # right panel
                with dpg.group(id=self.right_panel):
                    self.inspector_container.submit(self.right_panel)
                    self.tool_container.submit(self.right_panel)

        dpg.set_primary_window(main_window, True)
        dpg.start_dearpygui()
Пример #7
0
def try_dpg_children(_dpg_def: DpgDef, _all_dpg_defs: t.List[DpgDef]):

    dpg.create_context()
    dpg.create_viewport()
    dpg.setup_dearpygui()

    with dpg.window(label="Dear PyGui Demo", width=800, height=800,
                    pos=(100, 100), tag="__demo_id") as w1:

        _ret = []
        if _dpg_def.is_container:
            with _dpg_def.fn() as _dpg_id:
                for _child_dpg_def in _all_dpg_defs:
                    try:
                        _child_dpg_def.fn_fake_call(parent=_dpg_id)
                        _ret.append(_child_dpg_def)
                    except Exception:
                        ...

    dpg.show_viewport()
    dpg.start_dearpygui()
    dpg.destroy_context()

    return _ret
Пример #8
0
                dpg.set_axis_limits(dpg.last_item(), -1, 1)

                # series belong to a y axis
                dpg.add_line_series(x_coords[:len(deltas)], deltas, label=f'{name}', parent=dpg.last_item(), id=f'{name}_deltas')


    log_lock = RLock()

    def cb_state(state_msg):
        with log_lock:
            for name, velocity in zip(state_msg.name, state_msg.velocity):
                if name in last_command and name in all_deltas:
                    delta = last_command[name] - velocity
                    all_deltas[name].append(delta)
                    if len(all_deltas[name]) > len(x_coords):
                        all_deltas[name] = all_deltas[name][-len(x_coords):]        
                    dpg.set_value(f'{name}_deltas', [x_coords[:len(all_deltas[name])], all_deltas[name]])

    def cb_control(control_msg):
        with log_lock:
            for name, velocity in zip(control_msg.name, control_msg.velocity):
                last_command[name] = velocity

    rospy.init_node('implot_test')

    sub_state   = rospy.Subscriber('/joint_states', JointStateMsg, callback=cb_state,   queue_size=1)
    sub_control = rospy.Subscriber('/control',      JointStateMsg, callback=cb_control, queue_size=1)


dpg.start_dearpygui()
Пример #9
0
def confguirun():
    dpg.start_dearpygui()
Пример #10
0
def configure_pygui(renderer, widgets, update=True):
    if not dearpygui_imported:
        raise RuntimeError(
            "Attempted to use DearPyGUI when it isn't imported.")
    if update:
        dpg.delete_item(window)
    else:
        dpg.setup_viewport()
    dpg.set_viewport_title(title=f"Manim Community v{__version__}")
    dpg.set_viewport_width(1015)
    dpg.set_viewport_height(540)

    def rerun_callback(sender, data):
        renderer.scene.queue.put(("rerun_gui", [], {}))

    def continue_callback(sender, data):
        renderer.scene.queue.put(("exit_gui", [], {}))

    def scene_selection_callback(sender, data):
        config["scene_names"] = (dpg.get_value(sender), )
        renderer.scene.queue.put(("rerun_gui", [], {}))

    scene_classes = scene_classes_from_file(Path(config["input_file"]),
                                            full_list=True)
    scene_names = [scene_class.__name__ for scene_class in scene_classes]

    with dpg.window(
            id=window,
            label="Manim GUI",
            pos=[config["gui_location"][0], config["gui_location"][1]],
            width=1000,
            height=500,
    ):
        dpg.set_global_font_scale(2)
        dpg.add_button(label="Rerun", callback=rerun_callback)
        dpg.add_button(label="Continue", callback=continue_callback)
        dpg.add_combo(
            label="Selected scene",
            items=scene_names,
            callback=scene_selection_callback,
            default_value=config["scene_names"][0],
        )
        dpg.add_separator()
        if len(widgets) != 0:
            with dpg.collapsing_header(
                    label=f"{config['scene_names'][0]} widgets",
                    default_open=True):
                for widget_config in widgets:
                    widget_config_copy = widget_config.copy()
                    name = widget_config_copy["name"]
                    widget = widget_config_copy["widget"]
                    if widget != "separator":
                        del widget_config_copy["name"]
                        del widget_config_copy["widget"]
                        getattr(dpg, f"add_{widget}")(name,
                                                      **widget_config_copy)
                    else:
                        dpg.add_separator()

    if not update:
        dpg.start_dearpygui()
Пример #11
0
            self.show_status("Text succesfult krypteret og gemt",
                             True)  # Fortæller brugeren om det var succesfult
        dpg.set_value(self.writePW,
                      "")  # Tømmer brugerens inputfelt og lukker skrivevinduet
        dpg.hide_item(self.writeWindow)

    def read_text(self):
        # Bruger decrypt funktionen til at forsøge at dekryptere fileName.txt filen
        password = dpg.get_value(self.readPW)
        if self.decrypt(password):  # Tjekker om dekryptering virkede
            with open(self.fileName, "r") as f:  # Åbner dekryptet fil
                dpg.set_value(self.rwfield,
                              f.read())  # Viser indholdet til brugeren
            self.delete_txt(
            )  # Sletter dekrypteret fil, så indholdet forbliver hemmeligt
            self.show_status("Fil dekrypteret succesfult!", True)
        dpg.set_value(self.readPW,
                      "")  # Tømmer inputfelt og lukker læsevinduets
        dpg.hide_item(self.readWindow)


if __name__ == '__main__':  # Koden kører ikke, hvis importeret.
    w = WordSaver()  # Opretter WordSaver objekt
    view = prep_vp(width, height)  # Forbereder viewport
    dpg.setup_dearpygui(viewport=view)
    dpg.set_primary_window(w.mainWindow,
                           True)  # Sætter hovedvinduet som hovedvindue

    dpg.show_viewport(view)
    dpg.start_dearpygui()  # Starter brugerfladen
Пример #12
0
#!/usr/bin/env python3
# -*- coding: utf-8 -*-

from dearpygui import dearpygui

dearpygui.add_text("Hello World")
dearpygui.add_button("Save", callback="SaveCallback")
dearpygui.add_input_text("string")
dearpygui.add_slider_float("float")


def SaveCallback(sender, data):
    print("Save Clicked")


dearpygui.start_dearpygui()
Пример #13
0
def start_gui(*, primary_window: Window = None) -> None:
    """Start the GUI engine and show the main window."""
    if primary_window is not None:
        dpgcore.start_dearpygui(primary_window=primary_window.id)
    else:
        dpgcore.start_dearpygui()