From 07bb891b7d518f5bcd6c76a86d552eea8059a4bf Mon Sep 17 00:00:00 2001 From: sara Date: Sat, 4 Dec 2021 21:33:08 +0100 Subject: GUI angepasst --- src/gui/gui_v2.py | 223 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 223 insertions(+) create mode 100755 src/gui/gui_v2.py (limited to 'src/gui/gui_v2.py') diff --git a/src/gui/gui_v2.py b/src/gui/gui_v2.py new file mode 100755 index 0000000..507659e --- /dev/null +++ b/src/gui/gui_v2.py @@ -0,0 +1,223 @@ +#!/usr/bin/env python3 + +# Python stdlib +import sys + +# Grahical libraries + +from dearpygui.dearpygui import * +import dearpygui._dearpygui as internal_dpg +from dearpygui.demo import show_demo + +# Detect (unix) signals +import signal + +# Mathematics +import numpy as np + +# For debugging +import logging + +# Remote resources +import net + +#================================================ +# Debugging tools + +logging.basicConfig(format="[%(levelname)s] %(asctime)s %(message)s", level=logging.DEBUG) +logger = logging.getLogger(__name__) + +#================================================ +# Initialize DearPyGUI + + +create_context() +create_viewport(title="Fading Demonstrator",width=1200, height=800) +setup_dearpygui() + +# Show demo for dev +show_demo() + + + +#================================================ +# GUI Callback functions + +# Menu Bar +def exit(sender, data): + stop_dearpygui() + +# Flow graph window +def on_rx_node_link(sender, app_data): + link_id_1, link_id_2 = app_data + add_node_link(link_id_1, link_id_2, parent=sender) + +def on_rx_node_delink(sender, app_data): + link_id = app_data + delete_item(link_id) + +#================================================ +#Setting Primary Window + +with window(tag="Primary Window"): + +#================================================ +#Setting Window in Menu + with menu_bar(): + with menu(label="Settings"): + + with theme(tag= "close"): + with theme_component(): + add_theme_color(mvThemeCol_Text,(255, 64, 64))#Rot + add_theme_style(mvStyleVar_Alpha, 5) + + add_menu_item(label="Toggle Fullscreen",callback= toggle_viewport_fullscreen) + add_menu_item(label="Minimize",callback= minimize_viewport) + add_menu_item(label="Close", callback= exit) + bind_item_theme(last_item(),"close") + +# #================================================ +# # Flow Graph Window + +# with window(label="RX DSP Flow Graph", width=800, height=400, pos=(25,25), tag="rx_win"): +# with node_editor(callback=on_rx_node_link, delink_callback=on_rx_node_delink): +# with node(label="USRP Source", pos=(20,100)): +# with node_attribute(tag="src_out", attribute_type=mvNode_Attr_Output): +# add_text("Signal from antenna") + +# with node(label="Clock Sync", pos=(200,200)): +# with node_attribute(tag="clksync_in", attribute_type=mvNode_Attr_Input): +# add_text("Input") + +# with node_attribute(tag="clksync_out", attribute_type=mvNode_Attr_Output): +# add_text("Synchronized") + +# with node(label="Equalizer", pos=(350,100)): +# with node_attribute(tag="eq_in", attribute_type=mvNode_Attr_Input): +# add_text("Input") + +# with node_attribute(attribute_type=mvNode_Attr_Static): +# add_knob_float(label="Gain") + +# with node_attribute(tag="eq_out", attribute_type=mvNode_Attr_Output): +# add_text("Equalized") + +# with node(label="Phase Locked Loop", pos=(600, 200)): +# with node_attribute(tag="pll_in", attribute_type=mvNode_Attr_Input): +# add_text("Input") + +# with node_attribute(tag="pll_out", attribute_type=mvNode_Attr_Output): +# add_text("Locked") +# add_knob_float(label="Loop BW") + + +# add_node_link(get_alias_id("src_out"), get_alias_id("clksync_in")) +# add_node_link(get_alias_id("clksync_out"), get_alias_id("eq_in")) +# add_node_link(get_alias_id("eq_out"), get_alias_id("pll_in")) + +# #================================================ +# Network plots Window + +recv_plot = net.network_plot(url="udp://localhost:31415", dtype=float, nsamples=100, \ + label="Test", height=300, width=800) + +plots = { + # recv_plot: "plt_ampl" +} + +# with window(label="Time domain plots", width=800, height=350, pos=(25,450)): +# with recv_plot: +# add_plot_axis(mvXAxis, label="Time") +# add_plot_axis(mvYAxis, label="Amplitude", tag="axis") + +# add_line_series(recv_plot.xdata, recv_plot.ydata, parent="axis", tag="plt_ampl") + +#================================================ +# Byte Error Rate Window + +#TO DO:BER von GNU Radio anzeigen + +with theme(tag= "ber_window"): + with theme_component(mvAll): + add_theme_style(mvStyleVar_WindowTitleAlign, 0.5) + add_theme_style(mvStyleVar_WindowRounding, 5) + add_theme_style(mvStyleVar_WindowBorderSize, 1)#Rad ein und aus Schalten + +with window(label="Byte Error Rate ", width=300, height=150, pos=(850,25), + tag="__ber_id",no_title_bar = True, no_move=True, no_collapse= True) as ber_window : + add_text("The Byte Error Rate is:") + + with theme(tag= "button_ber"): + with theme_component(mvButton): + add_theme_color(mvThemeCol_Button,(135, 206, 255))#Blau + add_theme_color(mvThemeCol_Text,(0,0,0))#Schwarz + add_theme_style(mvStyleVar_FrameRounding, 5) + + add_button(label="BER", height=50, width=150) + bind_item_theme(last_item(),"button_ber") + +bind_item_theme(ber_window,"ber_window") + + + +#================================================ +# Channel Window +#TO DO: +# recv_plot = net.network_plot(url="udp://localhost:31415", nsamples=100, label="Test", height=300, width=800) + +# plots = { +# recv_plot: "plt_ampl" +# } + +# with window(label="Channel ", width=600, height=600, pos=(850,25)): +# with child_window(autosize_x=True, height=100): +# add_button(label="Toggle Fullscreen", callback= toggle_viewport_fullscreen) +# with recv_plot: +# add_plot_axis(mvXAxis, label="In-phase") +# add_plot_axis(mvYAxis, label="Quadrature", tag="plt_ampl") + +# add_scatter_series(recv_plot.x_data, recv_plot.y_data, parent="plt_ampl") +# #================================================ +# # Synchronized Window +# #TO DO: +# with window(label="Synchronized ", width=600, height=600, pos=(850,25)): +# with child_window(autosize_x=True, height=100): +# add_button(label="Toggle Fullscreen", callback= toggle_viewport_fullscreen) + +# #================================================ +# # Equalized Window +# #TO DO: +# with window(label="Equalized ", width=600, height=600, pos=(850,25)): +# with child_window(autosize_x=True, height=100): +# add_button(label="Toggle Fullscreen", callback= toggle_viewport_fullscreen) + +# #================================================ +# # Locked Window +# #TO DO: +# with window(label="Locked ", width=600, height=600, pos=(850,25)): +# with child_window(autosize_x=True, height=100): +# add_button(label="Toggle Fullscreen", callback= toggle_viewport_fullscreen) + + + + +#================================================ + +# Start GUI and main loop + +# Start window and main loop +show_viewport() +set_primary_window("Primary Window", True) + +# Main loop +while is_dearpygui_running(): + for plt, tag in plots.items(): + plt.refresh_series(tag) + + render_dearpygui_frame() + +#================================================ +# Close everything + +# clean up gui +destroy_context() -- cgit v1.2.1