Esempio n. 1
0
    def __init__(self, parent: wx.Window) -> None:
        super().__init__(parent, title="Move Stage")

        self._spins = []
        position = cockpit.interfaces.stageMover.getPosition()
        limits = cockpit.interfaces.stageMover.getSoftLimits()
        for i in range(3):
            self._spins.append(
                wx.SpinCtrlDouble(self,
                                  min=limits[i][0],
                                  max=limits[i][1],
                                  initial=position[i]))

        sizer = wx.BoxSizer(wx.VERTICAL)

        sizer.Add(wx.StaticText(self, label="Select stage position"),
                  wx.SizerFlags().Border().Centre())

        spins_sizer = wx.FlexGridSizer(cols=2, gap=(0, 0))
        for spin, name in zip(self._spins, ['X', 'Y', 'Z']):
            spins_sizer.Add(wx.StaticText(self, label=name),
                            wx.SizerFlags().Border().Centre())
            spins_sizer.Add(spin, wx.SizerFlags().Border().Expand())
        sizer.Add(spins_sizer, wx.SizerFlags().Border().Centre())

        buttons_sizer = self.CreateStdDialogButtonSizer(wx.OK | wx.CANCEL)
        sizer.Add(buttons_sizer, wx.SizerFlags().Border().Centre())

        self.SetSizerAndFit(sizer)
Esempio n. 2
0
    def func_button(self, panel):
        bbox, rxbox = BaseMode.func_button(self, panel)
        sizers = [0, 0, 0, 0, 0, 1, 1]
        for label in ('cos', '\u221A', 'pi', 'abs', '^', 'e',
                      'load output\nto input'):
            if len(label) == 20:
                b = wx.Button(panel,
                              label=label,
                              size=(105, int(conf.get('button_params', 'h'))))
                b.Bind(wx.EVT_BUTTON, self.load_o_to_i)
            else:
                b = wx.Button(panel,
                              label=label,
                              size=(int(conf.get('button_params', 'w')),
                                    int(conf.get('button_params', 'h'))))
                b.Bind(wx.EVT_BUTTON, self.on_button_click)
            font = b.GetFont()
            font.PointSize += 5
            b.SetFont(font)
            rxbox[sizers.pop(0)].Add(b, wx.SizerFlags().Border(wx.LEFT, 5))

        bbox.Add(rxbox.pop(0))
        for row in rxbox:
            bbox.Add(row, wx.SizerFlags().Border(wx.TOP, 5))

        return bbox
    def __init__(self, parent, config):
        wx.Panel.__init__(self, parent)
        sizer = wx.BoxSizer(wx.VERTICAL)

        self.check_for_updates = wx.CheckBox(
            self, wx.ID_ANY, "Automatically check for updates on startup.")
        self.check_for_updates.SetValue(config.get("auto_check_for_updates"))
        sizer.Add(self.check_for_updates,
                  wx.SizerFlags(1).Align(wx.TOP).Expand().Border(wx.ALL, 10))

        l1 = wx.StaticText(self, label="Update Channel:")
        sizer.Add(l1,
                  wx.SizerFlags(1).Align(wx.TOP).Expand().Border(wx.ALL, 1))
        self.update_channel = wx.Choice(self,
                                        choices=["stable", "beta", "alpha"])
        self.update_channel.SetSelection(
            self.update_channel.FindString(config.get("update_channel")))
        sizer.Add(self.update_channel,
                  wx.SizerFlags(1).Align(wx.TOP).Expand().Border(wx.ALL, 10))

        self.show_tips_at_startup = wx.CheckBox(
            self, wx.ID_ANY, "Show program tips at startup.")
        self.show_tips_at_startup.SetValue(config.get("show_tips_at_startup"))
        sizer.Add(self.show_tips_at_startup,
                  wx.SizerFlags(1).Align(wx.TOP).Expand().Border(wx.ALL, 10))

        self.SetSizer(sizer)
    def __init__(self, *args, **kwargs) -> None:
        super().__init__(*args, **kwargs)
        self._dir_ctrl = wx.DirPickerCtrl(
            self, path=cockpit.util.files.getUserSaveDir())
        self._template_ctrl = wx.TextCtrl(self)
        self._template_ctrl.SetToolTip(
            "Template for the name of the data file. The values '{date}' and"
            " '{time}' will be replaced with their current values.")

        self._fname_ctrl = wx.TextCtrl(self, value="")

        self._update_btn = wx.Button(self, label="Update")
        self._update_btn.SetToolTip("Update 'Filename' based on 'Template'.")
        self._update_btn.Bind(wx.EVT_BUTTON, self._OnUpdateFilename)

        self.UpdateFilename()

        grid = wx.BoxSizer(wx.HORIZONTAL)

        static_sizer = wx.SizerFlags(0).CentreVertical().Border()
        expand_sizer = wx.SizerFlags(1).CentreVertical().Border()

        def add_pair(label, ctrl):
            grid.Add(wx.StaticText(self, label=label), static_sizer)
            grid.Add(ctrl, expand_sizer)

        add_pair("Directory:", self._dir_ctrl)
        add_pair("Template:", self._template_ctrl)
        add_pair("Filename:", self._fname_ctrl)
        grid.Add(self._update_btn, static_sizer)

        self.SetSizer(grid)
Esempio n. 5
0
 def test_sizerSpacers6(self):
     bs = wx.BoxSizer()
     w = 5
     h = 10
     bs.Insert(0, w, h, wx.SizerFlags(1))
     bs.Insert(0, (w, h), wx.SizerFlags(2))
     bs.Insert(0, wx.Size(w, h), wx.SizerFlags(3))
Esempio n. 6
0
    def __init__(self, parent):
        IB.InfoBar.__init__(self, parent)

        self.button_ids = []

        # some system themes have alpha, remove it
        self._background_color = wx.SystemSettings.GetColour(
            wx.SYS_COLOUR_HIGHLIGHT).Get(False)
        self._foreground_color = wx.SystemSettings.GetColour(
            wx.SYS_COLOUR_HIGHLIGHTTEXT).Get(False)
        self.SetBackgroundColour(self._background_color)
        self.SetForegroundColour(self._foreground_color)
        self._text.SetBackgroundColour(self._background_color)
        self._text.SetForegroundColour(self._foreground_color)
        self._button.SetBackgroundColour(self._background_color)

        # layout
        self._unInitLayout()
        sizer = wx.BoxSizer(wx.VERTICAL)
        subSizerText = wx.BoxSizer(wx.HORIZONTAL)
        self.subSizerButtons = wx.BoxSizer(wx.HORIZONTAL)
        subSizerText.Add(self._icon, wx.SizerFlags().Centre().Border())
        subSizerText.Add(self._text, 1, wx.ALIGN_CENTER_VERTICAL)
        self.subSizerButtons.AddStretchSpacer()
        self.subSizerButtons.Add(self._button,
                                 wx.SizerFlags().Centre().Border())
        sizer.Add(subSizerText, wx.SizerFlags().Expand())
        sizer.Add(self.subSizerButtons, wx.SizerFlags().Expand())
        self.SetSizer(sizer)
Esempio n. 7
0
 def __init__(self, parent, model):
     super().__init__(parent,
                      title='Listening for keyboard input...',
                      style=wx.CAPTION | wx.PD_APP_MODAL)
     self._presenter = KeyListenerPresenter(self, model)
     panel = wx.Panel(self)
     self._sizer = wx.BoxSizer(wx.VERTICAL)
     txt = wx.StaticText(panel,
                         label='Press ctrl+q to stop!',
                         style=wx.ALIGN_CENTER_HORIZONTAL)
     self._stateOutput = wx.StaticText(panel, label="\n")
     self._stateOutput.SetForegroundColour('white')
     self._stateOutput.SetBackgroundColour('black')
     self._stateOutput.SetFont(
         wx.Font(wx.FONTSIZE_SMALL, wx.FONTFAMILY_TELETYPE,
                 wx.FONTSTYLE_NORMAL, wx.FONTWEIGHT_NORMAL))
     self._sizer.Add((0, 0), wx.SizerFlags(1).Expand())
     self._sizer.Add(txt, wx.SizerFlags(0).Expand().Border(wx.ALL, 5))
     self._sizer.Add(self._stateOutput,
                     wx.SizerFlags(0).Expand().Border(wx.ALL, 20))
     self._sizer.Add((0, 0), wx.SizerFlags(1).Expand())
     panel.SetSizer(self._sizer)
     panel.Layout()
     self._presenter.ready()
     self.CenterOnParent()
     self.ShowModal()
Esempio n. 8
0
    def _initAccountPanel(self, width, height):
        panel = wx.Panel(self, size=(width, height))
        panel.SetBackgroundColour(wx.WHITE)

        mainSizer = wx.BoxSizer(wx.VERTICAL)

        title = wx.StaticText(panel, -1, 'Minha conta')
        font = wx.Font(wx.FontInfo(13).Bold())
        title.SetFont(font)

        userFont = wx.Font(wx.FontInfo(10))
        self.txtEmail = wx.StaticText(panel, -1, '')
        self.txtEmail.SetFont(userFont)
        self.txtEmail.SetForegroundColour(colors.GREY)

        self.txtOrg = wx.StaticText(panel, -1, '')
        self.txtOrg.SetFont(userFont)

        self.btnUnlinkAccount = widgets.SecondaryButton(panel,
                                                        'DESCONECTAR CONTA',
                                                        size=(125, 30))

        mainSizer.Add(title, wx.SizerFlags(0).Border(wx.TOP, 35))
        mainSizer.Add(self.txtOrg, wx.SizerFlags(0).Border(wx.TOP, 25))
        mainSizer.Add(self.txtEmail, wx.SizerFlags(0).Border(wx.TOP, 5))
        mainSizer.Add(self.btnUnlinkAccount,
                      wx.SizerFlags(0).Border(wx.TOP, 25))

        panel.SetSizer(mainSizer)

        return panel
Esempio n. 9
0
    def _initLayout(self):
        self.SetBackgroundColour(wx.WHITE)

        windowWidth, windowHeight = self.GetSize()

        menuWidth = windowWidth * 0.25
        self.menu = self._initMenu(menuWidth, windowHeight)

        footerWidth = windowWidth - self.menu.GetSize()[0]
        footerHeight = windowHeight * 0.17
        self.footer = self._initFooter(footerWidth, footerHeight)

        contentWidth = windowWidth - self.menu.GetSize()[0]
        contentHeight = windowHeight - self.footer.GetSize()[1]
        self.configPanel = self._initConfigPanel(contentWidth, contentHeight)
        self.accountPanel = self._initAccountPanel(contentWidth, contentHeight)

        hMainSizer = wx.BoxSizer(wx.HORIZONTAL)
        hMainSizer.Add(self.menu)

        vMainSizer = wx.BoxSizer(wx.VERTICAL)
        vMainSizer.Add(self.configPanel,
                       wx.SizerFlags(0).Border(wx.LEFT | wx.RIGHT, 25))
        vMainSizer.Add(self.accountPanel,
                       wx.SizerFlags(0).Border(wx.LEFT | wx.RIGHT, 25))
        vMainSizer.Add(self.footer)
        hMainSizer.Add(vMainSizer)
        self.SetSizer(hMainSizer)
Esempio n. 10
0
    def __init__(self, parent, log):
        self.log = log
        wx.Panel.__init__(self, parent, -1)

        self.listbox = wx.ListBox(self, style=wx.LB_SINGLE, size=(250, -1))
        self.listbox.Append(ADD_NEW)
        self.listbox.Append(glob.glob(os.path.join('data', '*.svg')))

        self.renderPanel = SVGRenderPanel(self)
        rightSizer = wx.BoxSizer(wx.VERTICAL)
        rightSizer.Add(self.renderPanel, wx.SizerFlags(1).Expand())

        self.Sizer = wx.BoxSizer(wx.HORIZONTAL)
        self.Sizer.Add(self.listbox,
                       wx.SizerFlags(1).Border(wx.ALL, 10).Expand())
        self.Sizer.Add(
            rightSizer,
            wx.SizerFlags(2).Border(wx.RIGHT | wx.BOTTOM | wx.TOP,
                                    10).Expand())

        self.Bind(wx.EVT_LISTBOX, self.OnSelectItem)
        self.Bind(wx.EVT_LISTBOX_DCLICK, self.OnDClickItem)

        self.listbox.SetSelection(1)

        # TODO: Add ability for the user to select the renderer
        if 'wxMSW' in wx.PlatformInfo:
            renderer = wx.GraphicsRenderer.GetDirect2DRenderer()
            # renderer = wx.GraphicsRenderer.GetCairoRenderer()
        else:
            renderer = wx.GraphicsRenderer.GetDefaultRenderer()
        self.renderPanel.SetRenderer(renderer)

        # Load the first SVG in the list into the static bitmaps
        self.renderPanel.SetSVGFile(self.listbox.GetString(1))
Esempio n. 11
0
    def __init__(self, parent, axes: typing.Sequence[str],
                 *args, **kwargs) -> None:
        super().__init__(parent, *args, **kwargs)

        for axis_name in axes:
            if axis_name not in stageMover.AXIS_MAP:
                raise ValueError('unknown axis named\'%s\'' % axis_name)

        n_stages = cockpit.interfaces.stageMover.mover.n_stages
        positions = [] # type: typing.List[typing.List[AxisPositionCtrl]]
        step_sizes = [] # type: typing.List[StageStepCtrl]
        for axis_name in axes:
            axis_index = stageMover.AXIS_MAP[axis_name]
            axis_positions = [] # type: typing.List[AxisPositionCtrl]
            for handler_index in range(n_stages):
                position = HandlerPositionCtrl(self, axis=axis_index,
                                               handler_index=handler_index)
                axis_positions.append(position)
            positions.append(axis_positions)
            step_sizes.append(AxisStepCtrl(self, axis=axis_index))

        sizer = wx.FlexGridSizer(3 + n_stages)
        sizer.SetFlexibleDirection(wx.HORIZONTAL)
        for i, axis_name in enumerate(axes):
            sizer.Add(wx.StaticText(self, label=axis_name + ':'),
                      flags=wx.SizerFlags().Centre())
            for position in positions[i]:
                sizer.Add(position)
            sizer.Add(wx.StaticText(self, label='step (µm):'),
                      flags=wx.SizerFlags().Centre().Border(wx.LEFT))
            sizer.Add(step_sizes[i])
        self.SetSizer(sizer)
Esempio n. 12
0
    def build_widgets(self):
        """Building the interface"""

        panel = wx.BoxSizer(wx.VERTICAL)

        # components
        self.text_box = wx.TextCtrl(self,
                                    style=wx.TE_MULTILINE | wx.TE_READONLY)
        self.message_box = wx.TextCtrl(self)
        self.message_box.SetHint("Your message")
        self.submit_button = wx.Button(self, label="Submit")

        # setup location
        panel.Add(self.text_box, flags=wx.SizerFlags(1).Expand())
        panel.Add(self.message_box,
                  flags=wx.SizerFlags().Expand().Border(wx.ALL, 5))
        panel.Add(self.submit_button,
                  flags=wx.SizerFlags().Expand().Border(
                      wx.LEFT | wx.BOTTOM | wx.RIGHT, 5))

        # handlers
        self.submit_button.Bind(wx.EVT_BUTTON, self.send_message)

        # apply location to window
        self.SetSizer(panel)
    def __init__(self, parent, text):
        wx.Panel.__init__(self, parent=parent, id=wx.ID_ANY)

        sizer = wx.BoxSizer(wx.HORIZONTAL)
        font = wx.Font(-1, wx.DEFAULT, wx.NORMAL, wx.BOLD)
        #font = wx.Font(-1, wx.DECORATIVE, wx.ITALIC, wx.BOLD)

        text_hashrate = wx.StaticText(self, wx.ID_ANY, "Mh/s", size=(53, 28), style=wx.BOLD)
        text_watts = wx.StaticText(self, wx.ID_ANY, "Watts", size=(62, 28), style=wx.BOLD)
        text_browser = wx.StaticText(self, wx.ID_ANY, text, style=wx.BOLD)

        text_browser.SetFont(font)
        text_hashrate.SetFont(font)
        text_watts.SetFont(font)

        flags_browser = wx.SizerFlags(2)
        flags_browser.Border(wx.LEFT | wx.RIGHT | wx.BOTTOM, 6)
        flags_browser.Expand().Border(wx.ALL, 1)

        sizer.AddF(wx.StaticText(self, wx.ID_ANY, size=(55, -1)), wx.SizerFlags().Border(wx.LEFT, 6))
        sizer.AddF(text_hashrate, wx.SizerFlags().Expand().Border(wx.LEFT, 40))
        sizer.AddF(text_watts, wx.SizerFlags().Expand().Border(wx.LEFT, 24))
        sizer.AddF(wx.StaticText(self, wx.ID_ANY, size=(15, -1)), wx.SizerFlags().Border(wx.LEFT, 6))
        sizer.AddF(text_browser, flags_browser)

        self.SetSizer(sizer)

        self.Show()
Esempio n. 14
0
    def create_window(self, dialog):
        """
        Create a window with an information message, a color picker, and a sizer.

        Args:
            self
            dialog

        """
        # Create top-level window
        window = wx.Window(dialog, size=(300, 400))

        # Create info message
        self.text = wx.StaticText(window)
        self.update_text()

        # Create colorpicker
        picker = wx.ColourPickerCtrl(window)
        picker.Bind(wx.EVT_COLOURPICKER_CHANGED, self.color_callback)

        # Set sizer
        sizer = wx.BoxSizer(wx.VERTICAL)
        sizer.Add(self.text,
                  wx.SizerFlags().CenterHorizontal().Border(wx.TOP, 10))
        sizer.Add(picker,
                  wx.SizerFlags().CenterHorizontal().Border(wx.TOP, 10))
        window.SetSizer(sizer)

        return window
Esempio n. 15
0
    def __init__(self, parent, log):
        self.log = log
        wx.Panel.__init__(self, parent, -1)

        # Create some controls
        self.chc = wx.CollapsibleHeaderCtrl(self, label='the label')
        setBtn = wx.Button(self, label='Set Collapsed')
        unsetBtn = wx.Button(self, label='Unset Collapsed')

        # Set up the layout
        sizer = wx.BoxSizer(wx.HORIZONTAL)
        sizer.Add(wx.StaticText(self, label='wx.CollapsibleHeaderCtrl: '),
                  wx.SizerFlags().CenterVertical())
        sizer.Add(self.chc, wx.SizerFlags().Border(wx.LEFT, 10))
        sizer.Add(setBtn, wx.SizerFlags().Border(wx.LEFT, 40))
        sizer.Add(unsetBtn, wx.SizerFlags().Border(wx.LEFT, 10))

        # Put it all in an outer box with a border
        box = wx.BoxSizer()
        box.Add(sizer, wx.SizerFlags(1).Border(wx.ALL, 30))
        self.SetSizer(box)

        # Set up the event handlers
        self.Bind(wx.EVT_BUTTON, self.OnSetBtn, setBtn)
        self.Bind(wx.EVT_BUTTON, self.OnUnsetBtn, unsetBtn)
        self.Bind(wx.EVT_UPDATE_UI, self.OnCheckBtnStatus, setBtn)
        self.Bind(wx.EVT_UPDATE_UI, self.OnCheckBtnStatus, unsetBtn)
        self.Bind(wx.EVT_COLLAPSIBLEHEADER_CHANGED, self.OnCollapseChanged)
Esempio n. 16
0
    def _Repopulate(self):
        allAlgorithms = sum([miner.algorithms for miner in self._Miners], [])
        self._Items = {}
        for device in self._Devices:
            cp = self._DeviceCp[device]
            pane = cp.GetPane()
            oldSizer = pane.GetSizer()
            if oldSizer:
                oldSizer.Clear(True)

            algorithms = [
                algorithm for algorithm in allAlgorithms
                if algorithm.accepts(device)
            ]
            sizer = wx.FlexGridSizer(len(algorithms), 4, wx.Size(0, 0))
            pane.SetSizer(sizer, deleteOld=True)
            sizer.AddGrowableCol(3)
            for algorithm in algorithms:
                item = Item(pane, algorithm)
                sizer.Add(item.checkbox)
                sizer.Add(item.label, wx.SizerFlags().Expand())
                sizer.AddSpacer(main.PADDING_PX)
                sizer.Add(item.speeds, wx.SizerFlags().Expand())
                self._Items[(device, algorithm)] = item
                self._ResetSpeedCtrl(device, algorithm)
            cp.Expand()
        self._SelectUnmeasured()
        self.Layout()
Esempio n. 17
0
    def AddButton(self, btnid, label):
        """
        Adds a button to be shown in the info bar.
        """
        sizer = self.GetSizer()

        assert sizer is not None, "Sizer must be created first"

        # user-added buttons replace the standard close button so remove it if we
        # hadn't done it yet
        if sizer.Detach(self._button):
            self._button.Hide()

        button = wx.Button(self, btnid, label)
        button.SetBackgroundColour(self._background_color)
        button.SetForegroundColour(self._foreground_color)

        if wx.Platform == '__WXMAC__':
            # smaller buttons look better in the(narrow)info bar under OS X
            button.SetWindowVariant(wx.WINDOW_VARIANT_SMALL)

        num_items = self.subSizerButtons.GetItemCount()
        if num_items == 1:
            self.subSizerButtons.Add(button, wx.SizerFlags().Centre().Border())
            self.subSizerButtons.Add(self._button,
                                     wx.SizerFlags().Centre().Border())
            self._button.Show()
        else:
            self.subSizerButtons.Insert(num_items - 1, button,
                                        wx.SizerFlags().Centre().Border())

        if self.IsShown():
            self.UpdateParent()
Esempio n. 18
0
 def __init__(self, *args, **kw):
     super(ScreenWatchdogFrame, self).__init__(*args, **kw)
     #self.Bind(wx.EVT_CLOSE, self.OnExit)
     self.shots = 0
     self.disturb = False
     self.watchdog = ScreenAreaWatchdog(
         EventScreenAreaWatchdogListener(self))
     self.watchdog.rate = 1.0
     self.triggered = False
     self.green = wx.Colour(0, 255, 0)
     self.red = wx.Colour(255, 0, 0)
     self.color = None
     panel = wx.Panel(self)
     self.btn_select_area = wx.Button(panel)
     self.btn_select_area.SetLabel('Select area')
     self.btn_select_area.Bind(wx.EVT_BUTTON, self.OnSelectArea)
     self.btn_reset_area = wx.Button(panel)
     self.btn_reset_area.SetLabel('Reset')
     self.btn_reset_area.Hide()
     self.btn_reset_area.Bind(wx.EVT_BUTTON, self.OnReset)
     sizer = wx.BoxSizer(wx.VERTICAL)
     sizer.Add(self.btn_select_area,
               wx.SizerFlags().Border(wx.TOP | wx.LEFT, 25))
     sizer.Add(self.btn_reset_area, wx.SizerFlags().Center())
     panel.SetSizer(sizer)
     self.CreateStatusBar()
     self.SetStatusText("Select area to watch...")
     self.Center()
     EVT_AREA_CHANGED(self, self.area_changed)
     EVT_AREA_RESET(self, self.area_reset)
     EVT_AREA_SET(self, self.area_set)
     EVT_SCREENSHOT(self, self.screenshot)
     EVT_EXIT(self, self.exit)
Esempio n. 19
0
    def __init__(self):
        wx.Frame.__init__(self, None, title="Otii")
        # Setup UI
        self.SetBackgroundColour(wx.Colour(38, 47, 56))
        self.device_list = wx.ListBox(self)
        turn_on_button = wx.Button(self, label="Turn on")
        turn_off_button = wx.Button(self, label="Turn off")

        # Bind actions
        self.device_list.Bind(wx.EVT_LISTBOX, self.on_device_list_clicked)
        turn_on_button.Bind(wx.EVT_BUTTON, self.on_turn_on_clicked)
        turn_off_button.Bind(wx.EVT_BUTTON, self.on_turn_off_clicked)

        # Layout UI
        device_sizer = wx.BoxSizer(wx.VERTICAL)
        device_sizer.Add(turn_on_button, wx.SizerFlags().Expand())
        device_sizer.Add(turn_off_button, wx.SizerFlags().Expand())

        sizer = wx.BoxSizer(wx.HORIZONTAL)
        sizer.Add(self.device_list, wx.SizerFlags().Expand())
        sizer.Add(device_sizer, wx.SizerFlags().Expand().Border(wx.ALL, 10))
        self.SetSizer(sizer)

        self.timer = wx.Timer(self)
        self.Bind(wx.EVT_TIMER, self.update, self.timer)
        self.timer.Start(1000)
Esempio n. 20
0
    def create_blendshapes_column(self, parent, blendshape_names):
        column_panel = wx.Panel(parent, style=wx.SIMPLE_BORDER)
        column_panel_sizer = wx.FlexGridSizer(cols=3)
        column_panel_sizer.AddGrowableCol(1)
        column_panel.SetSizer(column_panel_sizer)
        column_panel.SetAutoLayout(1)

        for blendshape_name in blendshape_names:
            self.blendshape_labels[blendshape_name] = wx.StaticText(
                column_panel, label=blendshape_name, style=wx.ALIGN_RIGHT)
            column_panel_sizer.Add(self.blendshape_labels[blendshape_name],
                                   wx.SizerFlags(1).Expand().Border(wx.ALL, 3))

            self.blendshape_gauges[blendshape_name] = wx.Gauge(
                column_panel, style=wx.GA_HORIZONTAL, size=(100, -1))
            column_panel_sizer.Add(self.blendshape_gauges[blendshape_name], wx.SizerFlags(1).Expand().Border(wx.ALL, 3))

            self.blendshape_value_labels[blendshape_name] = wx.TextCtrl(
                column_panel, style=wx.TE_RIGHT, size=(40, -1))
            self.blendshape_value_labels[blendshape_name].SetValue("0.00")
            self.blendshape_value_labels[blendshape_name].Disable()
            column_panel_sizer.Add(self.blendshape_value_labels[blendshape_name],
                                   wx.SizerFlags(0).Border(wx.ALL, 3))

        column_panel.GetSizer().Fit(column_panel)
        return column_panel
    def __init__(self, parent, log):
        self.log = log
        wx.Panel.__init__(self, parent, -1)

        # Create some controls
        self.ai = wx.ActivityIndicator(self)
        self.ai.Start()
        startBtn = wx.Button(self, label='Start')
        stopBtn = wx.Button(self, label='Stop')

        # Set up the layout
        sizer = wx.BoxSizer(wx.HORIZONTAL)
        sizer.Add(wx.StaticText(self, label='wx.ActivityIndicator: '),
                  wx.SizerFlags().CenterVertical())
        sizer.Add(self.ai, wx.SizerFlags().Border(wx.LEFT, 10))
        sizer.Add(startBtn, wx.SizerFlags().Border(wx.LEFT, 40))
        sizer.Add(stopBtn, wx.SizerFlags().Border(wx.LEFT, 10))

        # Put it all in an outer box with a border
        box = wx.BoxSizer()
        box.Add(sizer, wx.SizerFlags(1).Border(wx.ALL, 30))
        self.SetSizer(box)

        # Set up the event handlers
        self.Bind(wx.EVT_BUTTON, self.OnStart, startBtn)
        self.Bind(wx.EVT_BUTTON, self.OnStop, stopBtn)
        self.Bind(wx.EVT_UPDATE_UI, self.OnCheckBtnStatus, startBtn)
        self.Bind(wx.EVT_UPDATE_UI, self.OnCheckBtnStatus, stopBtn)
Esempio n. 22
0
    def __init__(self, parent, controller: IController, zoom_callback,
                 edit_panel_callback, **kw):
        super().__init__(parent, **kw)

        sizer = wx.BoxSizer(wx.HORIZONTAL)
        zoom_in_btn = wx.Button(self, label="Zoom In")
        # TODO make this a method
        sizerflags = wx.SizerFlags().Align(wx.ALIGN_CENTER_VERTICAL).Border(
            wx.LEFT, 10)
        undo_button = wx.Button(self, label="Undo")
        sizer.Add(undo_button, sizerflags)
        undo_button.Bind(wx.EVT_BUTTON, lambda _: controller.undo())

        redo_button = wx.Button(self, label="Redo")
        sizer.Add(redo_button, sizerflags)
        redo_button.Bind(wx.EVT_BUTTON, lambda _: controller.redo())

        sizer.Add(zoom_in_btn, sizerflags)
        zoom_in_btn.Bind(wx.EVT_BUTTON, lambda _: zoom_callback(True))

        zoom_out_btn = wx.Button(self, label="Zoom Out")
        sizer.Add(zoom_out_btn, sizerflags)
        zoom_out_btn.Bind(wx.EVT_BUTTON, lambda _: zoom_callback(False))

        # Note: Right align after this
        sizer.Add((0, 0), proportion=1, flag=wx.EXPAND)

        toggle_panel_button = wx.Button(self, label="Toggle Details")
        sizer.Add(
            toggle_panel_button,
            wx.SizerFlags().Align(wx.ALIGN_CENTER_VERTICAL).Border(
                wx.RIGHT, 10))
        toggle_panel_button.Bind(wx.EVT_BUTTON, edit_panel_callback)

        self.SetSizer(sizer)
Esempio n. 23
0
 def test_sizerSpacers4(self):
     bs = wx.BoxSizer()
     w = 5
     h = 10
     bs.Prepend(w, h, wx.SizerFlags(1))
     bs.Prepend((w, h), wx.SizerFlags(2))
     bs.Prepend(wx.Size(w, h), wx.SizerFlags(3))
Esempio n. 24
0
 def __init__(self,
              parent,
              pos=wx.DefaultPosition,
              size=wx.Size(24, 24),
              style=0,
              orientation=wx.HORIZONTAL,
              main=True,
              font=None,
              res=None,
              bg="D",
              fg="L",
              edge="V",
              sync=True,
              fpsLimit=0):
     super().__init__(parent=parent,
                      pos=pos,
                      size=size,
                      style=style,
                      font=font,
                      res=res,
                      bg=bg,
                      fg=fg,
                      edge=edge,
                      sync=sync,
                      fpsLimit=fpsLimit)
     self.SetSizer(wx.BoxSizer(orientation))
     self.SizerFlags1 = wx.SizerFlags().Expand().Border(wx.ALL, 1)
     self.SizerFlags2 = wx.SizerFlags().Center().Border(wx.ALL, 1)
     self.SizerFlags3 = wx.SizerFlags().Center().Border(wx.ALL,
                                                        1).Proportion(1)
     if main:
         self.GetTopLevelParent().SetStatus = self.SetStatus
    def __init__(self, parent, characterisation_assay):
        super().__init__(parent, title="Characterisation Asssay")
        root_panel = wx.Panel(self)

        figure = Figure()

        img_ax = figure.add_subplot(1, 2, 1)
        img_ax.imshow(characterisation_assay)

        diag_ax = figure.add_subplot(1, 2, 2)
        assay_diag = np.diag(characterisation_assay)
        diag_ax.plot(assay_diag)

        canvas = FigureCanvas(root_panel, wx.ID_ANY, figure)

        info_txt = wx.StaticText(
            root_panel,
            label=("Mean Zernike reconstruction accuracy: %0.5f" %
                   np.mean(assay_diag)),
        )

        panel_sizer = wx.BoxSizer(wx.VERTICAL)
        panel_sizer.Add(info_txt, wx.SizerFlags().Centre().Border())
        panel_sizer.Add(canvas, wx.SizerFlags(1).Expand())
        root_panel.SetSizer(panel_sizer)

        frame_sizer = wx.BoxSizer(wx.VERTICAL)
        frame_sizer.Add(root_panel, wx.SizerFlags().Expand())
        self.SetSizerAndFit(frame_sizer)
Esempio n. 26
0
    def __init__(self,
                 parent,
                 commit_callback=lambda settings: None,
                 *args,
                 **kwargs):
        wx.Panel.__init__(self, parent, *args, **kwargs)

        self.settings = self.new_settings = None
        self.commit_callback = commit_callback

        sizer = wx.BoxSizer(orient=wx.VERTICAL)
        sizer_flags = wx.SizerFlags().Border(wx.ALL, FIELD_BORDER)

        # basic settings
        self.create_basic_form()
        sizer.AddF(self.basic_form, sizer_flags)

        # divider
        sizer.AddF(wx.StaticLine(self), wx.SizerFlags().Expand())

        # advanced settings
        self.create_advanced_form()
        sizer.AddF(self.advanced_form, sizer_flags)

        # spacer
        sizer.AddStretchSpacer()

        # io controls
        self.create_io_controls()
        sizer.AddF(self.io_controls, sizer_flags.Right())

        self.SetSizer(sizer)
    def __init__(self, parent, input_image, image_ft, RMS_error):
        super().__init__(parent, title="Phase View")
        self._panel = wx.Panel(self)

        wx_img_real = _np_grey_img_to_wx_image(input_image)
        wx_img_fourier = _np_grey_img_to_wx_image(image_ft)

        self._canvas = FloatCanvas(self._panel, size=wx_img_real.GetSize())
        self._real_bmp = self._canvas.AddBitmap(wx_img_real, (0, 0),
                                                Position="cc")
        self._fourier_bmp = self._canvas.AddBitmap(wx_img_fourier, (0, 0),
                                                   Position="cc")
        # By default, show real and hide the fourier transform.
        self._fourier_bmp.Hide()

        save_btn = wx.ToggleButton(self._panel, label="Show Fourier")
        save_btn.Bind(wx.EVT_TOGGLEBUTTON, self.OnToggleFourier)

        rms_txt = wx.StaticText(self._panel,
                                label="RMS difference: %.05f" % (RMS_error))

        panel_sizer = wx.BoxSizer(wx.VERTICAL)
        panel_sizer.Add(self._canvas)

        bottom_sizer = wx.BoxSizer(wx.HORIZONTAL)
        bottom_sizer.Add(save_btn, wx.SizerFlags().Center().Border())
        bottom_sizer.Add(rms_txt, wx.SizerFlags().Center().Border())
        panel_sizer.Add(bottom_sizer)

        self._panel.SetSizer(panel_sizer)

        frame_sizer = wx.BoxSizer(wx.VERTICAL)
        frame_sizer.Add(self._panel)
        self.SetSizerAndFit(frame_sizer)
Esempio n. 28
0
    def __init__(self,
                 parent,
                 msg,
                 caption,
                 pos=wx.DefaultPosition,
                 size=(500, 300),
                 style=wx.DEFAULT_DIALOG_STYLE):
        wx.Dialog.__init__(self, parent, -1, caption, pos, size, style)
        x, y = pos
        if x == -1 and y == -1:
            self.CenterOnScreen(wx.BOTH)

        self.text = text = wx.TextCtrl(self,
                                       -1,
                                       msg,
                                       style=wx.TE_MULTILINE | wx.TE_READONLY)

        ok = wx.Button(self, wx.ID_OK, "OK")
        ok.SetDefault()

        sizer = wx.BoxSizer(wx.VERTICAL)
        sizer.Add(self.text, wx.SizerFlags(1).Border().Expand())
        sizer.Add(ok, wx.SizerFlags().Border().Center())
        self.SetSizer(sizer)
        self.Layout()
Esempio n. 29
0
    def build_widgets(self):
        """Построение интерфейса"""

        panel = wx.BoxSizer(wx.VERTICAL)

        # компоненты
        self.text_box = wx.TextCtrl(self,
                                    style=wx.TE_MULTILINE | wx.TE_READONLY)
        self.message_box = wx.TextCtrl(self)
        self.message_box.SetHint("Your message")
        self.submit_button = wx.Button(self, label="Submit")

        # установка расположения
        panel.Add(self.text_box, flags=wx.SizerFlags(1).Expand())
        panel.Add(self.message_box,
                  flags=wx.SizerFlags().Expand().Border(wx.ALL, 5))
        panel.Add(self.submit_button,
                  flags=wx.SizerFlags().Expand().Border(
                      wx.LEFT | wx.BOTTOM | wx.RIGHT, 5))

        # обработчики
        self.submit_button.Bind(wx.EVT_BUTTON, self.send_message)

        # применяем расположение в окне
        self.SetSizer(panel)
Esempio n. 30
0
def ExceptionBox(caption="", parent=None):
    """Show python exception in a modal dialog.

    Creates a modal dialog without any option other than dismising the
    exception information.  The exception traceback is displayed in a
    monospaced font and its text can be copied into the clipboard.

    This only works during the handling of an exception since it is
    not possible to retrieve the traceback after the handling.

    Args:
        caption (str): the dialog title.
        parent (wx.Window): parent window.
    """
    current_exception = sys.exc_info()[1]
    if current_exception is None:
        raise RuntimeError('Not handling an exception')

    ## wx.MessageDialog looks better than plain wx.Dialog but we want
    ## to include the traceback without line-wrapping and to be able
    ## to copy its text.  We can't easily reimplement wx.MessageDialog
    ## with this extras because wx.MessageDialog is not a simple
    ## subclass of wx.Dialog, it uses native widgets for simpler
    ## dialogs, such as gtk_message_dialog_new.

    dialog = wx.Dialog(parent, title=caption, name="exception-dialog")
    message = wx.StaticText(dialog, label=str(current_exception))
    details = wx.TextCtrl(dialog, value=traceback.format_exc(),
                          style=(wx.TE_MULTILINE|wx.TE_DONTWRAP|wx.TE_READONLY))

    ## 'w.Font.Family = f' does not work because it 'w.Font' returns a
    ## copy of the font.  We need to modify that copy and assign back.
    details_font = details.Font
    details_font.Family = wx.FONTFAMILY_TELETYPE
    details.Font = details_font

    sizer = wx.BoxSizer(wx.VERTICAL)
    sizer.Add(message, wx.SizerFlags(0).Expand().Border())
    sizer.Add(details, wx.SizerFlags(1).Expand().Border())
    sizer.Add(dialog.CreateSeparatedButtonSizer(wx.OK),
              wx.SizerFlags(0).Expand().Border())

    ## The default width of a TextCtrl does not take into account its
    ## actual content.  We need to manually set its size (issue #497)
    if wx.Platform != '__WXMSW__':
        details_text_size = details.GetTextExtent(details.Value)
    else:
        ## On Windows, GetTextExtent ignores newlines so we need to
        ## manually compute the text extent.
        traceback_lines = details.Value.splitlines()
        longest_line = max(traceback_lines, key=len)
        one_line_size = details.GetTextExtent(longest_line)
        details_text_size = wx.Size(one_line_size[0],
                                    one_line_size[1] * len(traceback_lines))
    details.SetInitialSize(details.GetSizeFromTextSize(details_text_size))

    dialog.SetSizerAndFit(sizer)
    dialog.Centre()
    dialog.ShowModal()