Example #1
0
    def __init__(self, parent):
        WidgetPanel.__init__(self, parent)
        self.parent = parent
        self.init_w_vertical_layout()

        # callbacks
        self.update_radio_selection.on_left_mouse_click(self.callback_update_radio_selection)
Example #2
0
    def __init__(self, primary):
        primary_frame = basic_widgets.Frame(primary)
        WidgetPanel.__init__(self, primary_frame)
        self.variables = AppVariables()

        self.init_w_horizontal_layout()
        primary_frame.pack(fill=tkinter.BOTH, expand=tkinter.YES)
        self.button_panel.pack(fill=tkinter.X, expand=tkinter.NO)
        self.pyplot_panel.pack(expand=tkinter.YES)
        self.canvas_demo_image_panel.pack(expand=tkinter.YES)

        # bind events to callbacks here
        self.button_panel.fname_select.config(
            command=self.callback_initialize_canvas_image)
        self.button_panel.rect_select.config(
            command=self.callback_set_to_select)

        self.button_panel.draw_line.config(command=self.callback_draw_line)
        self.button_panel.draw_arrow.config(command=self.callback_draw_arrow)
        self.button_panel.draw_rect.config(command=self.callback_draw_rect)
        self.button_panel.draw_polygon.config(
            command=self.callback_draw_polygon)
        self.button_panel.draw_point.config(command=self.callback_draw_point)
        self.button_panel.edit.config(command=self.callback_edit)
        self.button_panel.color_selector.config(
            command=self.callback_activate_color_selector)
        self.button_panel.remap_dropdown.on_selection(self.callback_remap)

        self.canvas_demo_image_panel.canvas.on_left_mouse_click(
            self.callback_handle_canvas_left_mouse_click)
        self.canvas_demo_image_panel.canvas.on_left_mouse_release(
            self.callback_handle_canvas_left_mouse_release)
Example #3
0
    def __init__(self, primary):
        """

        Parameters
        ----------
        primary
            The primary widget.
        """

        # set the primary frame
        primary_frame = tkinter.Frame(primary)
        WidgetPanel.__init__(self, primary_frame)
        self.init_w_vertical_layout()

        # need to pack both primary frame and self, since this is the main app window.
        primary_frame.pack()

        # set up event listeners
        self.button_panel.single_plot.config(command=self.single_plot)
        self.button_panel.multi_plot.config(command=self.multi_plot)
        self.button_panel.animated_plot.config(command=self.animated_plot)

        self.pyplot_panel.set_y_margin_percent(5)
        self.pyplot_panel.variables.set_y_margins_per_frame = True

        self.single_plot()

        self.pyplot_panel.show_control_panel()
Example #4
0
    def __init__(self, parent):
        self.parent = parent
        WidgetPanel.__init__(self, parent)
        self._the_tool = tkinter.IntVar(self, value=ToolConstants.VIEW)
        self._the_shape = tkinter.IntVar(self, value=ShapeTypeConstants.POLYGON)
        self._image_save_directory = os.path.expanduser('~')
        self.canvas = ImageCanvas(self)
        self.toolbar = Toolbar(self)
        self.toolbar.config(relief=tkinter.RIDGE)
        self._set_toolbar_callbacks()

        # set up callbacks - sync changes from image canvas
        self.canvas.bind('<<CurrentToolChanged>>', self.callback_update_tool)
        self.canvas.bind('<<ShapeTypeChanged>>', self.callback_update_shape)

        self.pack()
        # handle the appearance of several toolbar labels
        self.toolbar.tool_label.configure(anchor=tkinter.CENTER, relief=tkinter.RIDGE, justify=tkinter.RIGHT)
        self.toolbar.shape_label.config(anchor=tkinter.CENTER, relief=tkinter.RIDGE, justify=tkinter.RIGHT)
        self.toolbar.remap_label.config(anchor=tkinter.CENTER, relief=tkinter.RIDGE, justify=tkinter.RIGHT)
        self.toolbar.select_index_label.config(anchor=tkinter.CENTER, relief=tkinter.RIDGE, justify=tkinter.RIGHT)
        self.toolbar.pack(side='top', expand=tkinter.NO, fill=tkinter.BOTH)
        self.canvas.pack(side='bottom', fill=tkinter.BOTH, expand=1)

        self.set_max_canvas_size(1920, 1080)
Example #5
0
    def __init__(self, primary):
        primary_frame = tkinter.Frame(primary)
        WidgetPanel.__init__(self, primary_frame)

        self.init_w_horizontal_layout()

        primary_frame.pack()
Example #6
0
    def __init__(self, primary):
        self.primary = primary

        primary_frame = basic_widgets.Frame(primary)
        WidgetPanel.__init__(self, primary_frame)

        self.init_w_horizontal_layout()

        lat = 35.05452800184999
        lon = -106.59258099877832
        collect_start = numpy.datetime64('2016-09-21T16:41:07.000000')
        collect_duration = 14.47132
        collector_name = 'Sandia FARAD X-band'
        core_name = '0508C01_PS0009_CC000000_N03_M1_PC054036_HH_wfcc_sv'
        azimuth = 241.15240495122976
        graze = 28.403774480669846
        layover = 263.96070589564016
        shadow = -90.0
        multipath = 66.5880303387554
        side_of_track = 'R'
        col_impulse_response_width = 0.1903215223097113
        row_impulse_response_width = 0.1606955380577428
        grid_column_sample_spacing = 0.04462
        grid_row_sample_spacing = 0.03767
        image_plane = 'SLANT'
        tx_rf_bandwidth = 2843.7592056795997
        rniirs = None
        polarization = 'H:H'

        data_container = MetaIconDataContainer(lat=lat,
                                               lon=lon,
                                               collect_start=collect_start,
                                               collect_duration=collect_duration,
                                               collector_name=collector_name,
                                               core_name=core_name,
                                               azimuth=azimuth,
                                               graze=graze,
                                               layover=layover,
                                               shadow=shadow,
                                               multipath=multipath,
                                               side_of_track=side_of_track,
                                               col_impulse_response_width=col_impulse_response_width,
                                               row_impulse_response_width=row_impulse_response_width,
                                               grid_column_sample_spacing=grid_column_sample_spacing,
                                               grid_row_sample_spacing=grid_row_sample_spacing,
                                               image_plane=image_plane,
                                               tx_rf_bandwidth=tx_rf_bandwidth,
                                               rniirs=rniirs,
                                               polarization=polarization,
                                               )
        self.metaicon_popup_panel = tkinter.Toplevel(self.primary)
        self.metaicon = MetaIcon(self.metaicon_popup_panel)
        self.metaicon.create_from_metaicon_data_container(data_container)
        # hide the main window so just the metaicon popup is showing
        self.primary.withdraw()

        # quit the program when the user closes the metaicon popup
        self.metaicon_popup_panel.protocol("WM_DELETE_WINDOW", self.primary.quit)
Example #7
0
    def __init__(self, primary):
        primary_frame = tkinter.Frame(primary)
        WidgetPanel.__init__(self, primary_frame)

        self.init_w_horizontal_layout()

        primary_frame.pack()
        self.panel_1.press_all_buttons()
        self.panel_1.unpress_all_buttons()
Example #8
0
    def __init__(self, parent):
        WidgetPanel.__init__(self, parent)

        self.init_w_box_layout(2, column_widths=20)

        self.remap_dropdown.update_combobox_values([
            "density", "brighter", "darker", "high contrast", "linear", "log",
            "pedf", "nrl"
        ])
Example #9
0
    def __init__(self, parent):
        """

        Parameters
        ----------
        parent : tkinter.Toplevel
        """

        WidgetPanel.__init__(self, parent)
        self.init_w_rows()
Example #10
0
    def __init__(self, primary):
        """

        Parameters
        ----------
        primary : tkinter.Toplevel|tkinter.Tk
        """

        self.root = primary
        self.primary_frame = basic_widgets.Frame(primary)
        WidgetPanel.__init__(self, self.primary_frame)
        WidgetWithMetadata.__init__(self, primary)
        self.image_panel = ImagePanel(self.primary_frame)  # type: ImagePanel
        self.side_panel = SidePanel(self.primary_frame)  # type: SidePanel
        self.variables = AppVariables()
        self.set_title()

        self.image_panel.pack(side=tkinter.LEFT, fill=tkinter.BOTH, expand=tkinter.TRUE)
        self.side_panel.pack(expand=tkinter.FALSE)
        self.primary_frame.pack(fill=tkinter.BOTH, expand=tkinter.YES)

        # set up event listeners
        self.side_panel.buttons.line_draw.config(command=self.arrow_draw_command)
        self.side_panel.buttons.point_draw.config(command=self.draw_point_command)

        self.image_panel.canvas.variables.state.line_width = self.variables.line_width
        # hide unnecessary tools
        self.image_panel.hide_tools(['shape_drawing', 'select'])
        self.image_panel.hide_shapes()

        # define menus
        menubar = tkinter.Menu()
        # file menu
        filemenu = tkinter.Menu(menubar, tearoff=0)
        filemenu.add_command(label="Open Image", command=self.callback_select_files)
        filemenu.add_command(label="Open Directory", command=self.callback_select_directory)
        filemenu.add_separator()
        filemenu.add_command(label="Exit", command=self.exit)
        # menus for informational popups
        popups_menu = tkinter.Menu(menubar, tearoff=0)
        popups_menu.add_command(label="Metaicon", command=self.metaicon_popup)
        popups_menu.add_command(label="Metaviewer", command=self.metaviewer_popup)
        # ensure menus cascade
        menubar.add_cascade(label="File", menu=filemenu)
        menubar.add_cascade(label="Metadata", menu=popups_menu)

        # handle packing
        primary.config(menu=menubar)

        # bind useful events from our canvas
        self.image_panel.canvas.bind('<<ImageIndexChanged>>', self.callback_index_changed)  # has the effect of refreshing the canvas
        self.image_panel.canvas.bind('<<ShapeCoordsFinalized>>', self.callback_shape_edited)  # has the effect that the shape is finished drawing (i.e. changed)
        self.image_panel.canvas.bind('<<ShapeCoordsEdit>>', self.callback_shape_edited)  # has the effect that the shape is edited
        self.image_panel.canvas.bind('<<ShapeCreate>>', self.callback_shape_create)  # has the effect that a new shape is created
        self.image_panel.canvas.bind('<<ShapeDelete>>', self.callback_shape_delete)  # has the effect that a shape is deleted
Example #11
0
    def __init__(self, parent):
        """

        Parameters
        ----------
        parent
            The parent widget.
        """

        WidgetPanel.__init__(self, parent)
        self.init_w_horizontal_layout()
Example #12
0
    def __init__(self, parent):
        """

        Parameters
        ----------
        parent
            The parent widget.
        """
        WidgetPanel.__init__(self, parent)

        self.init_w_box_layout(n_columns=2, column_widths=10)
Example #13
0
    def __init__(self, parent):
        WidgetPanel.__init__(self, parent)

        self.init_w_box_layout(n_columns=2, column_widths=[20, 10], row_heights=5)

        self.canvas_distance_label.config(anchor=tkinter.CENTER, relief=tkinter.RIDGE)
        self.pixel_distance_label.config(anchor=tkinter.CENTER, relief=tkinter.RIDGE)
        self.geo_distance_label.config(anchor=tkinter.CENTER, relief=tkinter.RIDGE)

        self.canvas_distance_val.config(state='disabled')
        self.pixel_distance_val.config(state='disabled')
        self.geo_distance_val.config(state='disabled')
Example #14
0
    def __init__(self, primary):
        self.rect_id = None
        self.line_id = None
        self.arrow_id = None
        self.point_id = None
        self.polygon_id = None
        self.n_shapes = 0

        self.primary = primary

        primary_frame = tkinter.Frame(primary)
        WidgetPanel.__init__(self, primary_frame)

        self.init_w_horizontal_layout()

        self.image_panel.image_frame.set_canvas_size(800, 600)
        self.image_panel.resizeable = True

        image_npix_x = 1200
        image_npix_y = 500

        image_data = numpy.random.random((image_npix_y, image_npix_x))
        image_data = image_data * 255
        image_reader = NumpyImageReader(image_data)
        self.image_panel.set_image_reader(image_reader)

        self.drag_xlim_1 = image_npix_x * 0.25
        self.drag_xlim_2 = image_npix_x * 0.75
        self.drag_ylim_1 = image_npix_y * 0.1
        self.drag_ylim_2 = image_npix_y * 0.9

        self.image_panel.current_tool = ToolConstants.PAN_TOOL

        self.image_panel.axes_canvas.image_x_min_val = 500
        self.image_panel.axes_canvas.image_x_max_val = 1200

        self.image_panel.axes_canvas.image_y_min_val = 5000
        self.image_panel.axes_canvas.image_y_max_val = 2000

        primary_frame.pack(fill=tkinter.BOTH, expand=tkinter.YES)
        self.image_panel.canvas.set_canvas_size(800, 800)

        self.button_panel.draw_rect.on_left_mouse_click(self.callback_draw_rect)
        self.button_panel.draw_line.on_left_mouse_click(self.callback_draw_line)
        self.button_panel.draw_arrow.on_left_mouse_click(self.callback_draw_arrow)
        self.button_panel.draw_point.on_left_mouse_click(self.callback_draw_point)
        self.button_panel.draw_polygon.on_left_mouse_click(self.callback_draw_polygon)
        self.button_panel.edit_shape.on_left_mouse_click(self.callback_edit_shape)
        self.image_panel.canvas.on_left_mouse_release(self.callback_on_left_mouse_release)
Example #15
0
    def __init__(self, parent):
        WidgetPanel.__init__(self, parent)
        self.variables = AppVariables()
        self.init_w_vertical_layout()
        self.pack(fill=tkinter.BOTH, expand=tkinter.YES)
        self.toolbar.left_margin.config(width=5)
        self.toolbar.right_margin.config(width=5)
        self.toolbar.top_margin.config(width=5)
        self.toolbar.bottom_margin.config(width=5)

        self.toolbar.left_margin_label.master.forget()
        self.toolbar.title_label.master.forget()

        # set up callbacks
        self.toolbar.save_canvas.on_left_mouse_click(self.callback_save_canvas)
        self.toolbar.save_image.on_left_mouse_click(self.callback_save_image)

        self.toolbar.left_margin.on_enter_or_return_key(
            self.callback_update_axes)
        self.toolbar.right_margin.on_enter_or_return_key(
            self.callback_update_axes)
        self.toolbar.top_margin.on_enter_or_return_key(
            self.callback_update_axes)
        self.toolbar.bottom_margin.on_enter_or_return_key(
            self.callback_update_axes)

        self.toolbar.title.on_enter_or_return_key(self.callback_update_axes)
        self.toolbar.x.on_enter_or_return_key(self.callback_update_axes)
        self.toolbar.y.on_enter_or_return_key(self.callback_update_axes)

        self.toolbar.zoom_in.on_left_mouse_click(self.callback_set_to_zoom_in)
        self.toolbar.zoom_out.on_left_mouse_click(
            self.callback_set_to_zoom_out)
        self.toolbar.pan.on_left_mouse_click(self.callback_set_to_pan)

        self.toolbar.margins_checkbox.config(
            command=self.callback_hide_show_margins)
        self.toolbar.axes_labels_checkbox.config(
            command=self.callback_hide_show_axes_controls)

        self.toolbar.pack(expand=tkinter.YES, fill=tkinter.X)

        self.canvas = self.image_frame.outer_canvas.canvas
        self.axes_canvas = self.image_frame.outer_canvas
Example #16
0
    def __init__(self, primary):
        self.root = primary
        self.primary_frame = basic_widgets.Frame(primary)
        self.variables = AppVariables()
        WidgetPanel.__init__(self, self.primary_frame)
        WidgetWithMetadata.__init__(self, primary)

        self.init_w_horizontal_layout()
        self.set_title()

        # define menus
        menubar = tkinter.Menu()
        # file menu
        filemenu = tkinter.Menu(menubar, tearoff=0)
        filemenu.add_command(label="Open Image",
                             command=self.callback_select_files)
        filemenu.add_command(label="Open Directory",
                             command=self.callback_select_directory)
        filemenu.add_separator()
        filemenu.add_command(label="Exit", command=self.exit)
        # menus for informational popups
        popups_menu = tkinter.Menu(menubar, tearoff=0)
        popups_menu.add_command(label="Weight Plots",
                                command=self.create_weights_plot)
        popups_menu.add_command(label="Metaicon", command=self.metaicon_popup)
        popups_menu.add_command(label="Metaviewer",
                                command=self.metaviewer_popup)
        # ensure menus cascade
        menubar.add_cascade(label="File", menu=filemenu)
        menubar.add_cascade(label="Metadata", menu=popups_menu)

        # handle packing
        self.primary_frame.pack(fill=tkinter.BOTH, expand=tkinter.YES)
        primary.config(menu=menubar)

        # hide extraneous tool elements
        self.row_centered_image_panel.hide_tools(['shape_drawing', 'select'])
        self.row_centered_image_panel.hide_shapes()
        self.row_centered_image_panel.hide_select_index()

        self.column_centered_image_panel.hide_tools(
            ['shape_drawing', 'select'])
        self.column_centered_image_panel.hide_shapes()
        self.column_centered_image_panel.hide_select_index()
Example #17
0
    def __init__(self, parent):
        """

        Parameters
        ----------
        parent
            The parent widget.
        """

        WidgetPanel.__init__(self, parent)
        tkinter.LabelFrame.__init__(self, parent)
        self.config(borderwidth=0)
        self.fname = None

        self.init_w_horizontal_layout()
        self.fname_filters = [('All files', '*')]
        # in practice this would be overridden if the user wants more things to happen after selecting a file.
        self.select_file.on_left_mouse_click(self.event_select_file)
        self.initialdir = os.path.expanduser("~")
        self.fname_label.config(state='disabled')
Example #18
0
 def __init__(self, primary):
     self.primary = primary
     WidgetPanel.__init__(self, primary)
     self.init_w_vertical_layout()
Example #19
0
    def __init__(self, root):
        """

        Parameters
        ----------
        root : tkinter.Toplevel|tkinter.Tk
        """

        self.root = root
        self.browse_directory = os.path.expanduser('~')
        self._file_name = None
        self.label_schema = LabelSchema()  # type: LabelSchema
        self._new_file = None
        self._unsaved_edits = None

        self.primary = basic_widgets.Frame(root)
        WidgetPanel.__init__(self, self.primary)
        self.init_w_rows()
        # self.init_w_basic_widget_list(7, [2, 2, 2, 2, 2, 2, 1])
        # modify packing so that the viewer gets the extra space
        self.version_label.master.pack(expand=tkinter.FALSE, fill=tkinter.X)
        self.version_date_label.master.pack(expand=tkinter.FALSE,
                                            fill=tkinter.X)
        self.classification_label.master.pack(expand=tkinter.FALSE,
                                              fill=tkinter.X)
        self.confidence_label.master.pack(expand=tkinter.FALSE, fill=tkinter.X)
        self.geometries_label.master.pack(expand=tkinter.FALSE, fill=tkinter.X)
        self.edit_button.master.pack(expand=tkinter.FALSE, fill=tkinter.X)
        self.move_up_button.master.pack(expand=tkinter.FALSE, fill=tkinter.X)
        self.schema_viewer.master.pack(expand=tkinter.TRUE,
                                       side=tkinter.BOTTOM)

        # setup the appearance of labels
        self.version_label.config(relief=tkinter.RIDGE,
                                  justify=tkinter.LEFT,
                                  padding=5)
        self.version_date_label.config(relief=tkinter.RIDGE,
                                       justify=tkinter.LEFT,
                                       padding=5)
        self.classification_label.config(relief=tkinter.RIDGE,
                                         justify=tkinter.LEFT,
                                         padding=5)
        self.confidence_label.config(relief=tkinter.RIDGE,
                                     justify=tkinter.LEFT,
                                     padding=5)
        self.geometries_label.config(relief=tkinter.RIDGE,
                                     justify=tkinter.LEFT,
                                     padding=5)

        # setup the GUI callbacks and appearance of labels
        self.version_entry.config(state='disabled',
                                  validate='focusout',
                                  validatecommand=self._version_entry_validate)
        self.version_date_entry.config(state='disabled')
        self.classification_entry.config(
            state='disabled',
            validate='focusout',
            validatecommand=self._classification_validate)
        self.confidence_entry.config(state='disabled',
                                     validate='focusout',
                                     validatecommand=self._confidence_validate)
        self.geometries_entry.config(state='disabled')
        self.edit_button.config(command=self.edit_entry)
        self.new_button.config(command=self.new_entry)
        self.delete_button.config(command=self.delete_entry)
        self.move_up_button.config(command=self.move_up)
        self.move_down_button.config(command=self.move_down)

        # set up the menu bar
        menu = tkinter.Menu()
        filemenu = tkinter.Menu(menu, tearoff=0)
        filemenu.add_command(label="New Schema", command=self.new_schema)
        filemenu.add_command(label="Open Schema", command=self.open_schema)
        filemenu.add_command(label="Save", command=self.save)
        filemenu.add_separator()
        filemenu.add_command(label="Exit", command=self.exit)
        menu.add_cascade(label="File", menu=filemenu)
        self.primary.pack(expand=tkinter.YES, fill=tkinter.BOTH)
        root.config(menu=menu)
Example #20
0
 def __init__(self, parent):
     WidgetPanel.__init__(self, parent)
     self.init_w_vertical_layout()
Example #21
0
 def __init__(self, parent):
     WidgetPanel.__init__(self, parent)
     self.init_w_box_layout(1, column_widths=8, row_heights=5)
Example #22
0
 def __init__(self, parent):
     WidgetPanel.__init__(self, parent)
     self.init_w_rows()
Example #23
0
 def __init__(self,
              parent,
              ):
     WidgetPanel.__init__(self, parent)
     self.init_w_vertical_layout()
     self.pack(fill=tkinter.BOTH, expand=1)