Exemple #1
0
    def on_connect(self):
        super().on_connect()
        tool_tabs = self._tool_tabs

        self.__M = 0
        self.__d = 0

        array_frame = Frame(tool_tabs)

        widgets_desc = [parameter_grp]
        widgets = hywidgets_to_tk(array_frame, widgets_desc,
                                  self.root_node.gui.balloon)
        widgets["run_btn"]["command"] = self.__on_run_btn_click
        self.__array_tab = widgets

        self._ambig_group = ambig_group = AmbiguityGroup(array_frame)
        ambig_group.pack(side="left", fill="y")
        tool_tabs.add(array_frame, text="Array")

        self._make_view_tab()
        self._make_marker_tab()
        self._make_export_tab()
        export_widgets_desc = [export_data_grp]
        export_widgets = hywidgets_to_tk(self.export_frame,
                                         export_widgets_desc,
                                         self.root_node.gui.balloon)
        export_widgets["export_to_console_btn"][
            "command"] = self.__on_export_to_console_btn_click
        export_widgets["export_to_dvplane_btn"][
            "command"] = self.__on_export_to_dvplane_btn_click

        self._make_window_manager_tab()

        figure_book = self.figure_book
        figure_book.make_figures(figure_meta=[{
            "name": "Cartesian",
            "polar": False
        }, {
            "name": "Polar",
            "polar": True
        }])

        fig_cart, fig_polar = figure_book
        fig_cart.plot_function = lambda *args, **kwargs: fig_cart.stem(
            *args, **kwargs)
        fig_polar.plot_function = lambda *args, **kwargs: fig_polar.stem(
            *args, **kwargs)

        @figure_book.add_observer
        def on_curve_selected(**kwargs):
            if "curve_selected" in kwargs:
                _list = self._ambig_group._list
                _list.clear()
                index = self.figure_book.selected_curve[0]
                angle_coll = self.__data.loc[index].angle_coll
                for angle in angle_coll:
                    _list.append(f"{rad2deg(angle): 3.2f}°")
Exemple #2
0
def ask_scatter_properties():
    win = Toplevel()
    win.title("Scatter Properties")

    widgets_desc = [common_prop_panel, scatter_prop_panel]
    widgets = hywidgets_to_tk(win, widgets_desc)

    color, marker, alpha = handle_common_properties(widgets)
    marker.set("o")

    widgets["ok_btn"]["command"] = win.quit

    win.protocol("WM_DELETE_WINDOW", win.quit)
    win.focus_set()
    win.grab_set()
    win.mainloop()
    win.destroy()

    marker = marker.get()

    return {
        "color": color[0],
        "marker": marker if marker else None,
        "alpha": alpha.get()
    }
Exemple #3
0
def ask_dvplane(window_node):
    win = Toplevel()
    win.title("Select a window")

    root_node = window_node.root_node

    widgets_desc = [to_dvplane_frm]
    widgets = hywidgets_to_tk(win, widgets_desc)

    sel_exist = False

    winid_var = StringVar()

    def on_exist_dvplane():
        nonlocal sel_exist
        sel_exist = True
        win.quit()

    widgets["ok_btn"]["command"] = on_exist_dvplane

    def on_new_dvplane():
        nonlocal sel_exist
        sel_exist = False
        win.quit()

    widgets["new_btn"]["command"] = on_new_dvplane

    dvplanes = [wid \
        for wid, window in root_node.gui.windows.items() \
            if isinstance(window, PlaneWindow)]
    id_cmb = widgets["id_cmb"]
    id_cmb["textvariable"] = winid_var
    id_cmb["value"] = dvplanes
    if dvplanes:
        id_cmb.current(0)
    else:
        widgets["ok_btn"]["state"] = "disabled"

    win.protocol("WM_DELETE_WINDOW", win.quit)
    win.focus_set()
    win.grab_set()
    win.mainloop()
    win.destroy()

    return sel_exist, winid_var.get()
Exemple #4
0
    def on_connect(self):
        super().on_connect()
        tool_tabs = self._tool_tabs
        widgets_desc = [load_grp]

        tab = tkinter.Frame(tool_tabs)
        widgets = hywidgets_to_tk(tab, widgets_desc,
                                  self.root_node.gui.balloon)
        widgets["loadvar_btn"]["command"] = self.__on_load_var_btn_click
        tool_tabs.add(tab, text="Data")

        self._make_view_tab()
        self._make_marker_tab()
        self._make_export_tab()
        self._make_window_manager_tab()

        figure_book = self.figure_book
        figure_book.make_figures(figure_meta=[
            dict(name="Cartesian", polar=False),
            dict(name="Polar", polar=True)
        ])
Exemple #5
0
def ask_export_to_console():
    win = Toplevel()
    win.title("Export")
    widgets_desc = [ask_export_to_console_frm]
    widgets = hywidgets_to_tk(win,
                              widgets_desc,
                              balloon=Scripting.root_node.gui.balloon)
    unit = StringVar(value="rad")
    varname = StringVar(value="")
    rad_btn = widgets["rad_btn"]
    rad_btn["variable"] = unit
    rad_btn["value"] = "rad"
    deg_btn = widgets["deg_btn"]
    deg_btn["variable"] = unit
    deg_btn["value"] = "deg"
    widgets["varname_lent"].entry["textvariable"] = varname
    widgets["ok_btn"]["command"] = win.quit

    win.protocol("WM_DELETE_WINDOW", win.quit)
    win.focus_set()
    win.grab_set()
    win.mainloop()
    win.destroy()
    return varname.get(), unit.get()
Exemple #6
0
def ask_plot_properties():
    win = Toplevel()
    win.title("Plot Properties")

    widgets_desc = [common_prop_panel, plot_prop_panel]
    widgets = hywidgets_to_tk(win, widgets_desc)

    color, marker, alpha = handle_common_properties(widgets)

    linestyle = StringVar(value='"-"')
    widgets["linestyle_lent"].entry["textvariable"] = linestyle

    linewidth = StringVar(value="1.0")
    widgets["linewidth_lent"].entry["textvariable"] = linewidth

    widgets["ok_btn"]["command"] = win.quit

    win.protocol("WM_DELETE_WINDOW", win.quit)
    win.focus_set()
    win.grab_set()
    win.mainloop()
    win.destroy()

    marker = marker.get()
    linestyle = linestyle.get()
    linestyle = None if not linestyle else eval(linestyle)
    linewidth = linewidth.get()
    linewidth = None if not linewidth else float(linewidth)

    return {
        "color": color[0],
        "marker": marker if marker else None,
        "alpha": alpha.get(),
        "linestyle": linestyle,
        "linewidth": linewidth
    }
Exemple #7
0
    def on_connect(self):
        self._gui_images = []

        res_dir = get_caller_dir() / 'resources'
        image_read_clipb = ImageTk.PhotoImage(file=res_dir / 'readclipb.png')
        image_write_clipb = ImageTk.PhotoImage(file=res_dir / 'writeclipb.png')
        image_send_clipb_image = ImageTk.PhotoImage(file=res_dir /
                                                    'sendclipbimage.png')
        image_send_file = ImageTk.PhotoImage(file=res_dir / 'sendfile.png')
        image_get_file = ImageTk.PhotoImage(file=res_dir / 'getfile.png')
        image_get_image = ImageTk.PhotoImage(file=res_dir / 'getimage.png')
        image_sensor_location = ImageTk.PhotoImage(file=res_dir /
                                                   'locationsensor.png')
        self._gui_images.extend(
            (image_read_clipb, image_write_clipb, image_send_clipb_image,
             image_send_file, image_get_file, image_get_image,
             image_sensor_location))

        tool_tabs = self._tool_tabs

        default_qr_size = 200

        balloon = self.root_node.gui.balloon
        tab = tk.Frame(tool_tabs)

        widgets_desc = [clipb_grp, storage_grp, sensors_grp, manage_grp]
        widgets = hywidgets_to_tk(tab,
                                  widgets_desc,
                                  view_model=self.__view_model,
                                  balloon=balloon)
        widgets["send_clipb_image_btn"][
            "command"] = self.__on_send_clipboard_image_to_device

        widgets["get_file_btn"]["command"] = self.__on_get_device_file
        widgets["get_image_btn"]["command"] = self.__on_pick_gallery_photo
        widgets["send_image_btn"]["command"] = self.__on_send_image_to_device
        widgets["send_file_btn"]["command"] = self.__on_send_file_to_device

        widgets["read_gps_btn"]["command"] = self.__on_read_device_location

        widgets["misson_abort_btn"]["command"] = self.__on_abort
        widgets[
            "qr_size_lent"].checker_function = self.root_node.gui.value_checker.check_int

        self.__widgets = widgets
        ip_list = widgets['ip_list']
        ip_list.list.config(height=4, width=15, exportselection=False)
        addrlist = socket.gethostbyname_ex('')[2]
        for ip in addrlist:
            ip_list.append(ip)
        ip_list.selection_set(0)

        tool_tabs.add(tab, text='Data')

        tk_object = self.tk_object
        self.__data_book = data_book = ttk.Notebook(tk_object)

        self.__qr_canvas = qr_canvas = ScrolledCanvas(data_book)
        self.__qr_image = None
        self.__qr_id = None
        self.__password = None
        self.__iv = None
        self.__key = None
        self.__data = None
        self.__on_finish = None
        self.__save_file_dir = None
        self.__send_filename = None
        self.__ip_port = None
        self.__lock = Lock()
        self.__abort_event = Event()

        data_book.add(qr_canvas, text='QR Code')

        self.__scrolled_text = scrolled_text = ScrolledText(
            data_book, horizontal_scroll=True)
        scrolled_text.disable_keys = True
        scrolled_text.auto_url_link = True

        def on_url_link_click(url):
            with code_printer():
                self.root_node.webbrowser_open(url)

        scrolled_text.on_url_link_click = on_url_link_click

        data_book.add(scrolled_text, text='History')

        data_book.pack(expand='yes', fill='both')

        self._make_window_manager_tab()