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.py | 204 +++++++++++++++++++++++++++++++++++++++++++++------------ 1 file changed, 161 insertions(+), 43 deletions(-) (limited to 'src/gui/gui.py') diff --git a/src/gui/gui.py b/src/gui/gui.py index d817f63..3f5b986 100755 --- a/src/gui/gui.py +++ b/src/gui/gui.py @@ -4,6 +4,7 @@ import sys # Grahical libraries + from dearpygui.dearpygui import * import dearpygui._dearpygui as internal_dpg from dearpygui.demo import show_demo @@ -29,12 +30,16 @@ logger = logging.getLogger(__name__) #================================================ # Initialize DearPyGUI + + create_context() create_viewport(title="Fading Demonstrator") setup_dearpygui() + # Show demo for dev show_demo() +show_documentation() #================================================ @@ -50,62 +55,125 @@ def on_rx_node_delink(sender, app_data): delete_item(link_id) #================================================ -# Settings Window - -with window(label="Settings", width=200, height=400, pos=(25, 450), tag="sim_win"): - with child_window(autosize_x=True, height=100): - add_button(label="Toggle Fullscreen", callback= toggle_viewport_fullscreen) - -#================================================ -# 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") +#Setting Window Test +# with window(label="Dear", width=800, height=800, on_close=_on_demo_close, pos=(100, 100)): + + with menu_bar(): + with menu(label="Settings"): + add_menu_item(label="Option 1", callback=_log) + add_menu_item(label="Option 2", check=True, callback=_log) + add_menu_item(label="Option 3", check=True, default_value=True, callback=_log) - 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")) - -#================================================ +# Settings Window +def exit(sender, data): + stop_dearpygui() + +# def _hsv_to_rgb(h, s, v): +# if s == 0.0: return (v, v, v) +# i = int(h*6.) # XXX assume int() truncates! +# f = (h*6.)-i; p,q,t = v*(1.-s), v*(1.-s*f), v*(1.-s*(1.-f)); i%=6 +# if i == 0: return (255*v, 255*t, 255*p) +# if i == 1: return (255*q, 255*v, 255*p) +# if i == 2: return (255*p, 255*v, 255*t) +# if i == 3: return (255*p, 255*q, 255*v) +# if i == 4: return (255*t, 255*p, 255*v) +# if i == 5: return (255*v, 255*p, 255*q) + +with window(label="Settings", width=200, height=400, pos=(25, 25), tag="sim_win", + no_close=True,no_background= True): + with menu_bar(): + with menu(label="Settings"): + add_menu_item(label="Option 1") + add_menu_item(label="Option 2", check=True) + add_menu_item(label="Option 3", check=True, default_value=True) + + #Farbwahl in schleife und mit def? + with theme(tag= "button_window"): + 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="Toggle Fullscreen", height=50, width=150,callback= toggle_viewport_fullscreen) + bind_item_theme(last_item(),"button_window") + + with theme(tag= "button_minimize"): + 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="Minimize",height=50, width=150, callback= minimize_viewport) + bind_item_theme(last_item(),"button_minimize") + + #with child_window(autosize_x=True, height=100)as close: + add_button(label="Maximize",height=50, width=150, callback= maximize_viewport) #Befehl nötig ? + + with theme(tag= "button_close"): + with theme_component(mvButton): + add_theme_color(mvThemeCol_Button,(255, 64, 64))#Rot + add_theme_color(mvThemeCol_Text,(0,0,0))#Schwarz + add_theme_style(mvStyleVar_FrameRounding, 5) + + add_button(label="Close", height=50, width=150, callback= exit) + bind_item_theme(last_item(),"button_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" + # recv_plot: "plt_ampl" } -with window(label="Time domain plots", width=800, height=400, pos=(850,25)): +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") @@ -113,6 +181,56 @@ with window(label="Time domain plots", width=800, height=400, pos=(850,25)): add_line_series(recv_plot.xdata, recv_plot.ydata, parent="axis", tag="plt_ampl") #================================================ +# Byte Error Rate Window +#TO DO: + +with window(label="Byte Error Rate ", width=300, height=150, pos=(850,25),tag="__ber_id",no_move=True, no_collapse= True): + add_text("The Byte Error Rate is:") + + +#================================================ +# 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 -- cgit v1.2.1