Esempio n. 1
0
    def create_main_panel(self):
        import platform
        if platform.system() == 'Darwin':
            from MAVProxy.modules.lib.MacOS import backend_wxagg
            FigCanvas = backend_wxagg.FigureCanvasWxAgg
        else:
            from matplotlib.backends.backend_wxagg import FigureCanvasWxAgg as FigCanvas
        self.panel = wx.Panel(self)

        self.init_plot()
        self.canvas = FigCanvas(self.panel, -1, self.fig)


        self.close_button = wx.Button(self.panel, -1, "Close")
        self.Bind(wx.EVT_BUTTON, self.on_close_button, self.close_button)

        self.pause_button = wx.Button(self.panel, -1, "Pause")
        self.Bind(wx.EVT_BUTTON, self.on_pause_button, self.pause_button)
        self.Bind(wx.EVT_UPDATE_UI, self.on_update_pause_button, self.pause_button)

        self.hbox1 = wx.BoxSizer(wx.HORIZONTAL)
        self.hbox1.Add(self.close_button, border=5, flag=wx.ALL | wx.ALIGN_CENTER_VERTICAL)
        self.hbox1.AddSpacer(1)
        self.hbox1.Add(self.pause_button, border=5, flag=wx.ALL | wx.ALIGN_CENTER_VERTICAL)

        self.vbox = wx.BoxSizer(wx.VERTICAL)
        self.vbox.Add(self.canvas, 1, flag=wx.LEFT | wx.TOP | wx.GROW)
        self.vbox.Add(self.hbox1, 0, flag=wx.ALIGN_LEFT | wx.TOP)

        self.panel.SetSizer(self.vbox)
        self.vbox.Fit(self)
Esempio n. 2
0
    def __init__(self, title, graphdef, callback):
        wx.Dialog.__init__(self, None, -1, title, size=(900, 400))

        self.callback = callback
        self.graphdef = graphdef

        self.panel = wx.Panel(self, -1)
        vbox = wx.BoxSizer(wx.VERTICAL)

        # name entry
        hbox_name = wx.BoxSizer(wx.HORIZONTAL)
        st_name = wx.StaticText(self.panel, -1, 'Name: ')
        self.tc_name = wx.TextCtrl(self.panel, -1, size=(400, -1))
        self.tc_name.Value = self.graphdef.name
        hbox_name.Add(st_name, 0, wx.LEFT, 10)
        hbox_name.Add(self.tc_name, 0, wx.LEFT, 35)
        vbox.Add(hbox_name, 0, wx.TOP, 10)

        # expression entry
        st = wx.StaticText(self.panel, -1, 'Expressions: ')
        vbox.Add(st, 0, wx.LEFT, 10)

        hbox_expressions = wx.BoxSizer(wx.HORIZONTAL)
        self.tc_expressions = wx.TextCtrl(self.panel,
                                          -1,
                                          style=wx.TE_MULTILINE | wx.HSCROLL,
                                          size=(800, 80))
        elist = []
        for e in self.graphdef.expressions:
            e = ' '.join(e.split())
            elist.append(e)
        self.tc_expressions.Value = '\n'.join(elist)
        vbox.Add(self.tc_expressions, 0, wx.LEFT, 15)

        # description entry
        st = wx.StaticText(self.panel, -1, 'Description: ')
        vbox.Add(st, 0, wx.LEFT, 10)
        self.tc_description = wx.TextCtrl(self.panel,
                                          -1,
                                          style=wx.TE_MULTILINE)
        vbox.Add(self.tc_description, 1,
                 wx.EXPAND | wx.TOP | wx.RIGHT | wx.LEFT, 15)
        self.tc_description.Value = self.graphdef.description

        # buttons
        button_save = wx.Button(self.panel, 1, 'Save')
        button_cancel = wx.Button(self.panel, 2, 'Cancel')
        button_test = wx.Button(self.panel, 3, 'Test')
        hbox_buttons = wx.BoxSizer(wx.HORIZONTAL)
        hbox_buttons.Add(button_save, 0, wx.LEFT, 10)
        hbox_buttons.Add(button_cancel, 0, wx.LEFT, 10)
        hbox_buttons.Add(button_test, 0, wx.LEFT, 10)
        vbox.Add(hbox_buttons, 0, wx.TOP, 10)
        self.Bind(wx.EVT_BUTTON, self.OnSave, id=1)
        self.Bind(wx.EVT_BUTTON, self.OnCancel, id=2)
        self.Bind(wx.EVT_BUTTON, self.OnTest, id=3)

        self.panel.SetSizer(vbox)
        self.Centre()
Esempio n. 3
0
    def __init__(self, *args, **kwargs):
        # customise the style
        kwargs.setdefault('style', wx.TE_READONLY)

        # initialise super class
        super(InstrumentDisplay, self).__init__(*args, **kwargs)

        # set the background colour (also for text controls)
        # self.SetBackgroundColour(wx.WHITE)

        # text controls
        self._label_text = wx.TextCtrl(self, style=wx.BORDER_NONE)
        self._label_text.SetFont(
            wx.Font(12, wx.FONTFAMILY_SWISS, wx.FONTSTYLE_NORMAL,
                    wx.FONTWEIGHT_NORMAL))
        self._label_text.SetBackgroundColour(self.GetBackgroundColour())
        self._label_text.ChangeValue("---")

        self._value_text = wx.TextCtrl(self,
                                       style=wx.BORDER_NONE | wx.TE_CENTRE)
        self._value_text.SetFont(
            wx.Font(30, wx.FONTFAMILY_SWISS, wx.FONTSTYLE_NORMAL,
                    wx.FONTWEIGHT_NORMAL))
        self._value_text.SetBackgroundColour(self.GetBackgroundColour())
        self._value_text.ChangeValue("-.-")
        self._value_text.SetMinSize((60, 40))

        self._unit_text = wx.TextCtrl(self, style=wx.BORDER_NONE | wx.TE_RIGHT)
        self._unit_text.SetFont(
            wx.Font(12, wx.FONTFAMILY_SWISS, wx.FONTSTYLE_NORMAL,
                    wx.FONTWEIGHT_NORMAL))
        self._unit_text.SetBackgroundColour(self.GetBackgroundColour())
        self._unit_text.ChangeValue("--")

        # value text needs a nested sizer to centre vertically
        self._value_sizer = wx.BoxSizer(wx.HORIZONTAL)
        self._value_sizer.Add(
            self._value_text,
            wx.SizerFlags(1).Align(wx.ALIGN_CENTRE_VERTICAL).Border(wx.ALL, 0))

        # top level sizers
        self._top_sizer = wx.BoxSizer(wx.VERTICAL)
        self._top_sizer.Add(
            self._label_text,
            wx.SizerFlags(0).Align(wx.ALIGN_TOP | wx.ALIGN_LEFT).Border(
                wx.ALL, 2))
        self._top_sizer.Add(self._value_sizer,
                            wx.SizerFlags(1).Expand().Border(wx.ALL, 1))
        self._top_sizer.Add(
            self._unit_text,
            wx.SizerFlags(0).Align(wx.ALIGN_RIGHT).Border(wx.ALL, 2))

        # layout sizers
        self._top_sizer.SetSizeHints(self)
        self.SetSizer(self._top_sizer)
        self.SetAutoLayout(True)
Esempio n. 4
0
 def StartRow(self, label=None):
     if self.row:
         self.EndRow()
     if label:
         self.row = wx.BoxSizer(wx.HORIZONTAL)
         text = wx.StaticText(self.panel, label=label)
         font = wx.Font(16, wx.DEFAULT, wx.NORMAL, wx.BOLD)
         text.SetFont(font)
         self.row.Add(text, 0, wx.LEFT, 10)
         self.vbox.Add(self.row, 0, wx.TOP, 10)
     self.row = wx.BoxSizer(wx.HORIZONTAL)
Esempio n. 5
0
    def __init__(self, state, title):
        self.state = state
        wx.Frame.__init__(self, None, title=title, size=(800, 300))
        self.panel = wx.Panel(self)
        self.panel.SetBackgroundColour('white')
        state.frame = self

        # values for the status bar
        self.values = {}

        self.menu = None
        self.menu_callback = None
        self.last_layout_send = time.time()

        #array of the names of my MPButtons
        self.buttonnames = {}
        #array of the MPButtons
        self.buttons = []

        self.control = wx.TextCtrl(self.panel,
                                   size=(800, 150),
                                   style=wx.TE_MULTILINE | wx.TE_READONLY
                                   | wx.TE_AUTO_URL)
        self.vbox = wx.BoxSizer(wx.VERTICAL)
        # start with one status row
        self.status = [wx.BoxSizer(wx.HORIZONTAL)]
        self.vbox.Add(self.status[0], 0, flag=wx.ALIGN_LEFT | wx.TOP)

        # place to hold up to  9 buttons
        self.buttongridsizer = wx.GridSizer(3, 3, 0)
        # for i in range(1, 2):
        #     btn = "Btn" + str(i)
        #     self.buttongridsizer.Add(wx.Button(self.panel, label=btn), 0, wx.EXPAND)

        self.vbox.Add(self.buttongridsizer, 1, flag=wx.GROW)
        self.vbox.Add(self.control, 0, flag=wx.LEFT | wx.BOTTOM | wx.GROW)

        self.panel.SetSizer(self.vbox)

        self.timer = wx.Timer(self)

        self.Bind(wx.EVT_TIMER, self.on_timer, self.timer)
        self.timer.Start(100)

        self.Bind(wx.EVT_IDLE, self.on_idle)
        self.Bind(wx.EVT_TEXT_URL, self.on_text_url)

        self.Show(True)
        self.pending = []
Esempio n. 6
0
    def InstructionsPanel(self, parent):
        panel = Panel(parent)
        panel.SetBackgroundColour(LIGHT_BACKGROUND)

        self.ref_vehicle = Vehicle(panel)
        self.ref_vehicle.SetMinSize((430, 430))

        self.countdown_window = CountdownText(panel)
        self.countdown_window.SetMinSize((430, 430))
        self.countdown_window.SetBorderColor(SECONDARY_HIGHLIGHT)
        self.countdown_window.SetForegroundColour(PRIMARY_HIGHLIGHT)
        font = self.countdown_window.GetFont()
        font.SetWeight(wx.FONTWEIGHT_BOLD)
        self.countdown_window.SetFont(font)

        self.instruction = InstructionText(panel)
        self.instruction.SetMinLines(3)
        font = self.instruction.GetFont()
        font.SetPointSize(26)
        self.instruction.SetFont(font)

        sizer = wx.BoxSizer(wx.VERTICAL)
        panel.SetSizer(sizer)
        sizer.AddStretchSpacer()
        sizer.Add(self.ref_vehicle, flag=wx.ALIGN_CENTER)
        sizer.Add(self.countdown_window, flag=wx.ALIGN_CENTER)
        sizer.AddStretchSpacer()
        sizer.Add(self.instruction, border=10, flag=wx.ALL | wx.EXPAND)
        sizer.AddStretchSpacer()

        sizer.Hide(self.countdown_window)

        return panel
Esempio n. 7
0
 def Body(self, parent):
     body = wx.BoxSizer(wx.HORIZONTAL)
     body.Add(self.InstructionsPanel(parent), proportion=2, flag=wx.EXPAND)
     body.AddSpacer(23)
     self.progress_panel = self.ProgressPanel(parent)
     body.Add(self.progress_panel, proportion=1, flag=wx.EXPAND)
     return body
Esempio n. 8
0
    def add_compass(self, id):
        if not self._magcal_panels:
            self._sizer.Clear(deleteWindows=True)
            self._magcal_panels_sizer = wx.BoxSizer(wx.HORIZONTAL)

            self._sizer.Add(
                self._magcal_panels_sizer,
                proportion=1,
                flag=wx.EXPAND,
            )

            legend = MagcalPanel.legend_panel(self._main_panel, wx.ID_ANY)
            self._sizer.Add(
                legend,
                proportion=0,
                flag=wx.ALIGN_CENTER,
            )

        self._magcal_panels[id] = MagcalPanel(self._main_panel, wx.ID_ANY)
        self._magcal_panels_sizer.Add(
            self._magcal_panels[id],
            proportion=1,
            border=10,
            flag=wx.EXPAND | wx.ALL,
        )
Esempio n. 9
0
    def __init__(self, state, title):
        self.state = state
        wx.Frame.__init__(self,
                          None,
                          title=title,
                          size=(350, 400),
                          style=wx.DEFAULT_FRAME_STYLE ^ wx.RESIZE_BORDER)

        #use tabs for the individual checklists
        self.createLists()
        self.panel = wx.Panel(self)
        self.nb = wx.Choicebook(self.panel, wx.ID_ANY)

        #create the tabs
        self.createWidgets()

        #assign events to the buttons on the tabs
        self.createActions()

        #add in the pipe from MAVProxy
        self.timer = wx.Timer(self)
        #self.Bind(wx.EVT_TIMER, self.on_timer, self.timer)
        self.Bind(wx.EVT_TIMER,
                  lambda evt, notebook=self.nb: self.on_timer(evt, notebook),
                  self.timer)
        self.timer.Start(100)

        # finally, put the notebook in a sizer for the panel to manage
        # the layout
        sizer = wx.BoxSizer()
        sizer.Add(self.nb, 1, wx.EXPAND)
        self.panel.SetSizer(sizer)

        self.Show(True)
        self.pending = []
Esempio n. 10
0
    def on_timer(self, event):
        state = self.state
        if state.close_event.wait(0.001):
            self.timer.Stop()
            self.Destroy()
            return
        while state.child_pipe_recv.poll():
            try:
                obj = state.child_pipe_recv.recv()
            except EOFError:
                self.timer.Stop()
                self.Destroy()
                return

            if isinstance(obj, Value):
                # request to set a status field
                if not obj.name in self.values:
                    # create a new status field
                    value = wx.StaticText(self.panel, -1, obj.text)
                    # possibly add more status rows
                    for i in range(len(self.status), obj.row + 1):
                        self.status.append(wx.BoxSizer(wx.HORIZONTAL))
                        self.vbox.Insert(len(self.status) - 1,
                                         self.status[i],
                                         0,
                                         flag=wx.ALIGN_LEFT | wx.TOP)
                        self.vbox.Layout()
                    self.status[obj.row].Add(value, border=5)
                    self.status[obj.row].AddSpacer(20)
                    self.values[obj.name] = value
                value = self.values[obj.name]
                value.SetForegroundColour(obj.fg)
                value.SetBackgroundColour(obj.bg)
                value.SetLabel(obj.text)
                self.panel.Layout()
                #self.values_rest[obj.name] = {"text": obj.text, "fg": obj.fg, "bg": obj.bg, "row": obj.row}
            elif isinstance(obj, Text):
                '''request to add text to the console'''
                #self.text_rest.add({"text": obj.text, "fg": obj.fg, "bg": obj.bg})
                self.pending.append(obj)
                for p in self.pending:
                    # we're scrolled at the bottom
                    oldstyle = self.control.GetDefaultStyle()
                    style = wx.TextAttr()
                    style.SetTextColour(p.fg)
                    style.SetBackgroundColour(p.bg)
                    self.control.SetDefaultStyle(style)
                    self.control.AppendText(p.text)
                    self.control.SetDefaultStyle(oldstyle)
                self.pending = []
            elif isinstance(obj, mp_menu.MPMenuTop):
                if obj is not None:
                    self.SetMenuBar(None)
                    self.menu = obj
                    self.SetMenuBar(self.menu.wx_menu())
                    self.Bind(wx.EVT_MENU, self.on_menu)
                self.Refresh()
                self.Update()
            elif isinstance(obj, win_layout.WinLayout):
                win_layout.set_wx_window_layout(self, obj)
Esempio n. 11
0
    def __init__(self, state, title):
        self.state = state
        wx.Frame.__init__(self, None, title=title, size=(800, 300))
        # different icons for MAVExplorer and MAVProxy
        try:
            if title == "MAVExplorer":
                self.SetIcon(icon.SimpleIcon("EXPLORER").get_ico())
            else:
                self.SetIcon(icon.SimpleIcon("CONSOLE").get_ico())
        except Exception:
            pass
        self.panel = wx.Panel(self)
        self.panel.SetBackgroundColour('white')
        state.frame = self

        # values for the status bar
        self.values = {}

        self.menu = None
        self.menu_callback = None
        self.last_layout_send = time.time()

        self.control = wx.TextCtrl(self.panel,
                                   style=wx.TE_MULTILINE | wx.TE_READONLY
                                   | wx.TE_AUTO_URL)

        self.vbox = wx.BoxSizer(wx.VERTICAL)
        # start with one status row
        self.status = [wx.BoxSizer(wx.HORIZONTAL)]
        self.vbox.Add(self.status[0], 0, flag=wx.ALIGN_LEFT | wx.TOP)
        self.vbox.Add(self.control, 1, flag=wx.LEFT | wx.BOTTOM | wx.GROW)

        self.panel.SetSizer(self.vbox)

        self.timer = wx.Timer(self)

        self.Bind(wx.EVT_TIMER, self.on_timer, self.timer)
        self.timer.Start(100)

        self.Bind(wx.EVT_IDLE, self.on_idle)
        self.Bind(wx.EVT_TEXT_URL, self.on_text_url)

        self.Show(True)
        self.pending = []
Esempio n. 12
0
    def __init__(self, state, title):
        self.state = state
        wx.Frame.__init__(self, None, title=title, size=(800, 300))
        self.panel = wx.Panel(self)
        self.panel.SetBackgroundColour('white')
        state.frame = self

        # values for the status bar
        self.values = {}

        # values for restserver
        # self.values_rest = {}

        # text for restserver
        # self.text_rest = TextList()

        self.menu = None
        self.menu_callback = None
        self.last_layout_send = time.time()

        self.control = wx.TextCtrl(self.panel,
                                   style=wx.TE_MULTILINE | wx.TE_READONLY
                                   | wx.TE_AUTO_URL)

        self.vbox = wx.BoxSizer(wx.VERTICAL)
        # start with one status row
        self.status = [wx.BoxSizer(wx.HORIZONTAL)]
        self.vbox.Add(self.status[0], 0, flag=wx.ALIGN_LEFT | wx.TOP)
        self.vbox.Add(self.control, 1, flag=wx.LEFT | wx.BOTTOM | wx.GROW)

        self.panel.SetSizer(self.vbox)

        self.timer = wx.Timer(self)

        self.Bind(wx.EVT_TIMER, self.on_timer, self.timer)
        self.timer.Start(100)

        self.Bind(wx.EVT_IDLE, self.on_idle)
        self.Bind(wx.EVT_TEXT_URL, self.on_text_url)

        self.Show(True)  # comment out to hide console
        self.pending = []
        def InitUI(self):
            color = wx.Colour()
            color.SetFromString(LIGHT_BACKGROUND)
            self.SetBackgroundColour(scale_color(color, 0.95))

            font = self.GetFont()
            font.SetWeight(wx.FONTWEIGHT_BOLD)
            font.SetPointSize(24)
            self.SetFont(font)

            self.SetMinSize((400, -1))

            self.compass_text = wx.StaticText(self)

            self.fitness_value_text = wx.StaticText(self)
            font.SetWeight(wx.FONTWEIGHT_NORMAL)
            self.fitness_value_text.SetFont(font)

            self.parameters_sizer = self.CalibrationParameters()

            fitness_sizer = wx.BoxSizer(wx.HORIZONTAL)
            text = wx.StaticText(self, label='Fitness')
            text.SetFont(self.fitness_value_text.GetFont())
            fitness_sizer.Add(text, proportion=1, flag=wx.EXPAND)
            fitness_sizer.Add(self.fitness_value_text)

            sizer = wx.BoxSizer(wx.VERTICAL)
            self.SetSizer(sizer)
            sizer.AddSpacer(16)
            sizer.Add(self.compass_text, border=16, flag=wx.LEFT | wx.RIGHT)
            sizer.AddSpacer(16)
            sizer.Add(self.StatusPanel(), flag=wx.EXPAND)
            sizer.AddSpacer(16)
            sizer.Add(fitness_sizer,
                      border=16,
                      flag=wx.LEFT | wx.RIGHT | wx.EXPAND)
            sizer.AddSpacer(16)
            sizer.Add(self.parameters_sizer,
                      border=16,
                      flag=wx.LEFT | wx.RIGHT | wx.BOTTOM | wx.EXPAND)

            sizer.Hide(self.parameters_sizer)
Esempio n. 14
0
 def __init__(self, state):
     wx.Frame.__init__(self, None, wx.ID_ANY, state.title)
     self.state = state
     state.frame = self
     self.last_layout_send = time.time()
     self.sizer = wx.BoxSizer(wx.VERTICAL)
     state.panel = MPImagePanel(self, state)
     self.sizer.Add(state.panel, 1, wx.EXPAND)
     self.SetSizer(self.sizer)
     self.Bind(wx.EVT_IDLE, self.on_idle)
     self.Bind(wx.EVT_SIZE, state.panel.on_size)
Esempio n. 15
0
 def createPlotPanel(self):
     '''Creates the figure and axes for the plotting panel.'''
     self.figure = Figure()
     self.axes = self.figure.add_subplot(111)
     self.canvas = FigureCanvas(self, -1, self.figure)
     self.canvas.SetSize(wx.Size(300, 300))
     self.axes.axis('off')
     self.figure.subplots_adjust(left=0, right=1, top=1, bottom=0)
     self.sizer = wx.BoxSizer(wx.VERTICAL)
     self.sizer.Add(self.canvas, 1, wx.EXPAND, wx.ALL)
     self.SetSizerAndFit(self.sizer)
     self.Fit()
Esempio n. 16
0
 def __init__(self, tab_names, title='Title', size=wx.DefaultSize):
     wx.Dialog.__init__(self,
                        None,
                        -1,
                        title,
                        style=wx.DEFAULT_DIALOG_STYLE | wx.RESIZE_BORDER)
     self.tab_names = tab_names
     self.notebook = wx.Notebook(self, -1, size=size)
     self.panels = {}
     self.sizers = {}
     for t in tab_names:
         self.panels[t] = wx.Panel(self.notebook)
         self.notebook.AddPage(self.panels[t], t)
         self.sizers[t] = wx.BoxSizer(wx.VERTICAL)
         self.panels[t].SetSizer(self.sizers[t])
     self.dialog_sizer = wx.BoxSizer(wx.VERTICAL)
     self.dialog_sizer.Add(self.notebook, 1, wx.EXPAND | wx.ALL, 5)
     self.controls = {}
     self.browse_option_map = {}
     self.control_map = {}
     self.setting_map = {}
     button_box = wx.BoxSizer(wx.HORIZONTAL)
     self.button_apply = wx.Button(self, -1, "Apply")
     self.button_cancel = wx.Button(self, -1, "Cancel")
     self.button_save = wx.Button(self, -1, "Save")
     self.button_load = wx.Button(self, -1, "Load")
     button_box.Add(self.button_cancel, 0, wx.ALL)
     button_box.Add(self.button_apply, 0, wx.ALL)
     button_box.Add(self.button_save, 0, wx.ALL)
     button_box.Add(self.button_load, 0, wx.ALL)
     self.dialog_sizer.Add(button_box, 0,
                           wx.GROW | wx.ALIGN_CENTER_VERTICAL | wx.ALL, 5)
     wx.EVT_BUTTON(self, self.button_cancel.GetId(), self.on_cancel)
     wx.EVT_BUTTON(self, self.button_apply.GetId(), self.on_apply)
     wx.EVT_BUTTON(self, self.button_save.GetId(), self.on_save)
     wx.EVT_BUTTON(self, self.button_load.GetId(), self.on_load)
     self.Centre()
Esempio n. 17
0
    def __init__(self, parent, state):
        wx.Panel.__init__(self, parent)
        self.frame = parent
        self.state = state
        self.img = None
        self.redraw_timer = wx.Timer(self)
        self.Bind(wx.EVT_TIMER, self.on_redraw_timer, self.redraw_timer)
        self.Bind(wx.EVT_SET_FOCUS, self.on_focus)
        self.redraw_timer.Start(100)

        self.mouse_down = None
        self.drag_step = 10
        self.zoom = 1.0
        self.menu = None
        self.popup_menu = None
        self.wx_popup_menu = None
        self.popup_pos = None
        self.last_size = None
        self.done_PIL_warning = False
        state.brightness = 1.0

        # dragpos is the top left position in image coordinates
        self.dragpos = wx.Point(0, 0)
        self.need_redraw = True

        self.mainSizer = wx.BoxSizer(wx.VERTICAL)
        self.SetSizer(self.mainSizer)

        # panel for the main image
        with warnings.catch_warnings():
            warnings.simplefilter('ignore')
            self.imagePanel = mp_widgets.ImagePanel(
                self, wx.EmptyImage(state.width, state.height))
        self.mainSizer.Add(self.imagePanel,
                           flag=wx.TOP | wx.LEFT | wx.GROW,
                           border=0)
        if state.mouse_events:
            self.imagePanel.Bind(wx.EVT_MOUSE_EVENTS, self.on_event)
        else:
            self.imagePanel.Bind(wx.EVT_MOUSE_EVENTS, self.on_mouse_event)
        if state.key_events:
            self.imagePanel.Bind(wx.EVT_KEY_DOWN, self.on_event)
        else:
            self.imagePanel.Bind(wx.EVT_KEY_DOWN, self.on_key_event)
        self.imagePanel.Bind(wx.EVT_MOUSEWHEEL, self.on_mouse_wheel)

        self.redraw()
        state.frame.Fit()
Esempio n. 18
0
        def StatusPanel(self):
            panel = Panel(self)

            panel.SetBackgroundColour(ReportDialog.light_background)

            self.status_icon = ReportDialog.StatusIcon(panel, size=(44, 44))
            self.status_text = wx.StaticText(panel)

            sizer = wx.BoxSizer(wx.HORIZONTAL)
            panel.SetSizer(sizer)
            sizer.AddSpacer(16)
            sizer.Add(self.status_icon, border=5, flag=wx.TOP | wx.BOTTOM)
            sizer.AddSpacer(16)
            sizer.Add(self.status_text, flag=wx.ALIGN_CENTER)
            sizer.AddSpacer(16)

            return panel
Esempio n. 19
0
 def _add_input(self, setting, ctrl, ctrl2=None, value=None):
     tab_name = setting.tab
     label = setting.label
     tab = self.panel(tab_name)
     box = wx.BoxSizer(wx.HORIZONTAL)
     labelctrl = wx.StaticText(tab, -1, label)
     box.Add(labelctrl, 0, wx.ALIGN_CENTRE | wx.ALL, 5)
     box.Add(ctrl, 1, wx.ALIGN_CENTRE | wx.ALL, 5)
     if ctrl2 is not None:
         box.Add(ctrl2, 0, wx.ALIGN_CENTRE | wx.ALL, 5)
     self.sizer(tab_name).Add(box, 0, wx.GROW | wx.ALL, 5)
     self.controls[label] = ctrl
     if value is not None:
         ctrl.Value = value
     else:
         ctrl.Value = str(setting.value)
     self.control_map[ctrl.GetId()] = label
     self.setting_map[label] = setting
Esempio n. 20
0
    def LoaderProgress(self, parent):
        panel = wx.Panel(parent)
        panel.SetBackgroundColour(parent.GetBackgroundColour())

        font = panel.GetFont()
        font.MakeItalic()
        panel.SetFont(font)

        self.load_progress = wx.Gauge(panel, size=(-1, 10))
        self.load_progress_last_time = time.time()
        self.load_text = wx.StaticText(panel)

        sizer = wx.BoxSizer(wx.VERTICAL)
        panel.SetSizer(sizer)
        sizer.Add(self.load_progress, border=10, flag=wx.EXPAND | wx.LEFT | wx.RIGHT)
        sizer.Add(self.load_text, border=10, flag=wx.LEFT | wx.RIGHT)

        return panel
    def Footer(self):
        footer = Panel(self)

        footer.SetBackgroundColour(ReportDialog.light_background)

        font = footer.GetFont()
        font.SetPointSize(16)
        font.SetWeight(wx.FONTWEIGHT_BOLD)
        footer.SetFont(font)

        self.show_more_button = Button(footer)
        self.show_more_button.SetLabel('Show more')
        self.show_more_button.SetBackgroundColour(wx.TransparentColour)

        self.Bind(wx.EVT_BUTTON, self.OnShowMoreButton, self.show_more_button)

        if not self.success:
            self.try_again_button = Button(footer, wx.ID_REDO)
            self.try_again_button.SetLabel('TRY AGAIN')
            self.try_again_button.SetBackgroundColour(wx.TransparentColour)
            self.try_again_button.SetForegroundColour(PRIMARY_HIGHLIGHT)

            self.Bind(wx.EVT_BUTTON, self.OnActionButton,
                      self.try_again_button)

        self.close_button = Button(footer, wx.ID_CLOSE)
        self.close_button.SetLabel('CLOSE')
        self.close_button.SetBackgroundColour(wx.TransparentColour)
        self.close_button.SetForegroundColour(PRIMARY_HIGHLIGHT)

        self.Bind(wx.EVT_BUTTON, self.OnActionButton, self.close_button)

        sizer = wx.BoxSizer(wx.HORIZONTAL)
        footer.SetSizer(sizer)
        sizer.AddSpacer(16)
        sizer.Add(self.show_more_button)
        sizer.AddStretchSpacer()
        if not self.success:
            sizer.Add(self.try_again_button)
            sizer.AddSpacer(32)
        sizer.Add(self.close_button)
        sizer.AddSpacer(16)

        return footer
Esempio n. 22
0
    def InitUI(self):
        color = wx.Colour()
        color.SetFromString(DARK_BACKGROUND)
        self.SetBackgroundColour(scale_color(color, .9))

        cols = 2 if len(self.mavlink_messages) > 1 else 1
        compass_sizer = wx.GridSizer(0, cols, 2, 2)

        self.compass_panels = []
        for m in self.mavlink_messages:
            p = self.CompassPanel(self, m)
            compass_sizer.Add(p)
            self.compass_panels.append(p)

        sizer = wx.BoxSizer(wx.VERTICAL)
        self.SetSizer(sizer)
        sizer.Add(compass_sizer)
        sizer.Add(self.Footer(), flag=wx.EXPAND)
        sizer.Fit(self)
Esempio n. 23
0
    def Footer(self, parent):
        footer = wx.BoxSizer(wx.HORIZONTAL)

        self.button = button = Button(parent, size=(180, -1))
        button.SetPadding((0, 16))
        button.SetBackgroundColour(LIGHT_BACKGROUND)
        button.SetBorderRadius(10)
        button.SetBorderWidth(2)
        font = button.GetFont()
        font.SetWeight(wx.FONTWEIGHT_BOLD)
        font.SetPointSize(20)
        button.SetFont(font)

        self.Bind(wx.EVT_BUTTON, self.OnButton, button)

        footer.Add(self.LoaderProgress(parent), proportion=1, flag=wx.EXPAND)
        footer.Add(button)

        return footer
Esempio n. 24
0
    def InitUI(self):
        font = self.GetFont()
        font.SetFamily(wx.FONTFAMILY_SWISS)
        self.SetFont(font)

        self.main_panel = wx.ScrolledWindow(self)
        self.main_panel.SetScrollbars(1, 1, 1, 1)
        self.main_panel.SetBackgroundColour(DARK_BACKGROUND)

        sizer = wx.BoxSizer(wx.VERTICAL)
        self.main_panel.SetSizer(sizer)

        kw = dict(border=32, flag=wx.EXPAND | wx.LEFT | wx.RIGHT)

        sizer.AddSpacer(16)
        sizer.Add(self.Header(self.main_panel), **kw)
        sizer.AddSpacer(23)
        sizer.Add(self.Body(self.main_panel), proportion=1, **kw)
        sizer.AddSpacer(23)
        sizer.Add(self.Footer(self.main_panel), **kw)
        sizer.AddSpacer(23)
Esempio n. 25
0
    def __init__(self, *k, **kw):
        super(MagcalPanel, self).__init__(*k, **kw)

        facecolor = self.GetBackgroundColour().GetAsString(wx.C2S_HTML_SYNTAX)
        fig = plt.figure(facecolor=facecolor, figsize=(1, 1))

        self._canvas = FigureCanvas(self, wx.ID_ANY, fig)
        self._canvas.SetMinSize((300, 300))

        self._id_text = wx.StaticText(self, wx.ID_ANY)
        self._status_text = wx.StaticText(self, wx.ID_ANY)
        self._completion_pct_text = wx.StaticText(self, wx.ID_ANY)

        sizer = wx.BoxSizer(wx.VERTICAL)
        sizer.Add(self._id_text)
        sizer.Add(self._status_text)
        sizer.Add(self._completion_pct_text)
        sizer.Add(self._canvas, proportion=1, flag=wx.EXPAND)
        self.SetSizer(sizer)

        ax = fig.add_subplot(111, axis_bgcolor=facecolor, projection='3d')
        self.configure_plot(ax)
Esempio n. 26
0
    def legend_panel(*k, **kw):
        if MagcalPanel._legend_panel:
            return MagcalPanel._legend_panel

        p = MagcalPanel._legend_panel = wx.Panel(*k, **kw)
        sizer = wx.BoxSizer(wx.HORIZONTAL)
        p.SetSizer(sizer)

        marker = wx.Panel(p, wx.ID_ANY, size=(10, 10))
        marker.SetBackgroundColour(MagcalPanel._empty_color)
        sizer.Add(marker, flag=wx.ALIGN_CENTER)
        text = wx.StaticText(p, wx.ID_ANY)
        text.SetLabel('Sections not hit')
        sizer.Add(text, border=4, flag=wx.ALIGN_CENTER | wx.LEFT)

        marker = wx.Panel(p, wx.ID_ANY, size=(10, 10))
        marker.SetBackgroundColour(MagcalPanel._filled_color)
        sizer.Add(marker, border=10, flag=wx.ALIGN_CENTER | wx.LEFT)
        text = wx.StaticText(p, wx.ID_ANY)
        text.SetLabel('Sections hit')
        sizer.Add(text, border=4, flag=wx.ALIGN_CENTER | wx.LEFT)
        return p
Esempio n. 27
0
    def __init__(self, state, parent):
        wx.Panel.__init__(self, parent)  # , style=wx.BORDER_SIMPLE)
        self.state = state

        self.sizer = wx.BoxSizer(wx.VERTICAL)

        self.titleText = wx.StaticText(
            self, label="Unassigned Vehicles -->\n\nTools:")
        self.sizer.Add(self.titleText, flag=wx.EXPAND |
                       wx.LEFT | wx.RIGHT, border=5)

        self.getParamsButton = wx.Button(
            self, label="Get offsets", size=wx.Size(100, 50))
        self.Bind(wx.EVT_BUTTON, self.getParams, self.getParamsButton)
        self.resetButton = wx.Button(
            self, label="Reset layout", size=wx.Size(100, 50))
        self.Bind(wx.EVT_BUTTON, self.reset, self.resetButton)

        self.sizer.Add(self.getParamsButton)
        self.sizer.Add(self.resetButton)

        # Do the sizer layout
        self.SetSizer(self.sizer)
Esempio n. 28
0
    def ProgressPanel(self, parent):
        panel = Panel(parent)
        panel.SetBackgroundColour(LIGHT_BACKGROUND)

        self.progress = wx.StaticText(panel, label='0%')
        font = self.progress.GetFont()
        font.SetPointSize(70)
        font.SetWeight(wx.FONTWEIGHT_BOLD)
        self.progress.SetFont(font)

        self.grid = GeodesicGrid(panel)
        self.grid.SetMinSize((365, 365))

        sizer = wx.BoxSizer(wx.VERTICAL)
        panel.SetSizer(sizer)
        sizer.AddStretchSpacer()
        sizer.Add(self.grid, flag=wx.ALIGN_CENTER)
        sizer.AddStretchSpacer()
        sizer.AddSpacer(16)
        sizer.Add(self.progress, flag=wx.ALIGN_CENTER)
        sizer.AddStretchSpacer()

        return panel
Esempio n. 29
0
    def Header(self, parent):
        header = Panel(parent)
        header.SetBackgroundColour(LIGHT_BACKGROUND)

        sizer = wx.BoxSizer(wx.VERTICAL)
        header.SetSizer(sizer)

        font = header.GetFont()
        font.SetWeight(wx.FONTWEIGHT_BOLD)

        text = wx.StaticText(header)
        text.SetLabel('Compass Calibration')
        text.SetForegroundColour(PRIMARY_HIGHLIGHT)
        font.SetPointSize(26)
        text.SetFont(font)
        sizer.Add(text, border=16, flag=wx.ALL & ~wx.BOTTOM)

        text = wx.StaticText(header)
        text.SetLabel('Follow the procedure to calibrate your compass')
        font.SetPointSize(14)
        text.SetFont(font)
        sizer.Add(text, border=16, flag=wx.ALL & ~wx.TOP)

        return header
Esempio n. 30
0
    def __init__(self, conn):
        super(MagcalFrame, self).__init__(
            None,
            wx.ID_ANY,
            title='Magcal Graph',
        )

        self.SetMinSize((300, 300))

        self._conn = conn

        self._main_panel = wx.ScrolledWindow(self, wx.ID_ANY)
        self._main_panel.SetScrollbars(1, 1, 1, 1)

        self._magcal_panels = {}

        self._sizer = wx.BoxSizer(wx.VERTICAL)
        self._main_panel.SetSizer(self._sizer)

        idle_text = wx.StaticText(self._main_panel, wx.ID_ANY)
        idle_text.SetLabelMarkup(
            '<i>No calibration messages received yet...</i>')
        idle_text.SetForegroundColour('#444444')

        self._sizer.AddStretchSpacer()
        self._sizer.Add(
            idle_text,
            proportion=0,
            flag=wx.ALIGN_CENTER | wx.ALL,
            border=10,
        )
        self._sizer.AddStretchSpacer()

        self._timer = wx.Timer(self)
        self.Bind(wx.EVT_TIMER, self.timer_callback, self._timer)
        self._timer.Start(200)