def __init__(self): wx.Frame.__init__(self, None, -1, "Smach Viewer", size=(720, 480)) # Create graph self._containers = {} self._top_containers = {} self._update_cond = threading.Condition() self._needs_refresh = True self.dotstr = '' vbox = wx.BoxSizer(wx.VERTICAL) # Create Splitter self.content_splitter = wx.SplitterWindow(self, -1, style=wx.SP_LIVE_UPDATE) self.content_splitter.SetMinimumPaneSize(24) self.content_splitter.SetSashGravity(0.85) # Create viewer pane viewer = wx.Panel(self.content_splitter, -1) # Create smach viewer nb = wx.Notebook(viewer, -1, style=wx.NB_TOP | wx.WANTS_CHARS) viewer_box = wx.BoxSizer() viewer_box.Add(nb, 1, wx.EXPAND | wx.ALL, 4) viewer.SetSizer(viewer_box) # Create graph view graph_view = wx.Panel(nb, -1) gv_vbox = wx.BoxSizer(wx.VERTICAL) graph_view.SetSizer(gv_vbox) # Construct toolbar toolbar = wx.ToolBar(graph_view, -1) toolbar.AddControl(wx.StaticText(toolbar, -1, "Path: ")) # Path list self.path_combo = wx.ComboBox(toolbar, -1, style=wx.CB_DROPDOWN) self.path_combo.Bind(wx.EVT_COMBOBOX, self.set_path) self.path_combo.Append('/') self.path_combo.SetValue('/') toolbar.AddControl(self.path_combo) # Depth spinner self.depth_spinner = wx.SpinCtrl(toolbar, -1, size=wx.Size(50, -1), min=-1, max=1337, initial=-1) self.depth_spinner.Bind(wx.EVT_SPINCTRL, self.set_depth) self._max_depth = -1 toolbar.AddControl(wx.StaticText(toolbar, -1, " Depth: ")) toolbar.AddControl(self.depth_spinner) # Label width spinner self.width_spinner = wx.SpinCtrl(toolbar, -1, size=wx.Size(50, -1), min=1, max=1337, initial=40) self.width_spinner.Bind(wx.EVT_SPINCTRL, self.set_label_width) self._label_wrapper = textwrap.TextWrapper(40, break_long_words=True) toolbar.AddControl(wx.StaticText(toolbar, -1, " Label Width: ")) toolbar.AddControl(self.width_spinner) # Implicit transition display toggle_all = wx.ToggleButton(toolbar, -1, 'Show Implicit') toggle_all.Bind(wx.EVT_TOGGLEBUTTON, self.toggle_all_transitions) self._show_all_transitions = False toolbar.AddControl(wx.StaticText(toolbar, -1, " ")) toolbar.AddControl(toggle_all) toggle_auto_focus = wx.ToggleButton(toolbar, -1, 'Auto Focus') toggle_auto_focus.Bind(wx.EVT_TOGGLEBUTTON, self.toggle_auto_focus) self._auto_focus = False toolbar.AddControl(wx.StaticText(toolbar, -1, " ")) toolbar.AddControl(toggle_auto_focus) toolbar.AddControl(wx.StaticText(toolbar, -1, " ")) toolbar.AddLabelTool( wx.ID_HELP, 'Help', wx.ArtProvider.GetBitmap(wx.ART_HELP, wx.ART_OTHER, (16, 16))) toolbar.AddLabelTool( wx.ID_SAVE, 'Save', wx.ArtProvider.GetBitmap(wx.ART_FILE_SAVE, wx.ART_OTHER, (16, 16))) toolbar.Realize() self.Bind(wx.EVT_TOOL, self.ShowControlsDialog, id=wx.ID_HELP) self.Bind(wx.EVT_TOOL, self.SaveDotGraph, id=wx.ID_SAVE) # Create dot graph widget self.widget = xdot.wxxdot.WxDotWindow(graph_view, -1) gv_vbox.Add(toolbar, 0, wx.EXPAND) gv_vbox.Add(self.widget, 1, wx.EXPAND) # Create tree view widget self.tree = wx.TreeCtrl(nb, -1, style=wx.TR_HAS_BUTTONS) nb.AddPage(graph_view, "Graph View") nb.AddPage(self.tree, "Tree View") # Create userdata widget borders = wx.LEFT | wx.RIGHT | wx.TOP border = 4 self.ud_win = wx.ScrolledWindow(self.content_splitter, -1) self.ud_gs = wx.BoxSizer(wx.VERTICAL) self.ud_gs.Add(wx.StaticText(self.ud_win, -1, "Path:"), 0, borders, border) self.path_input = wx.ComboBox(self.ud_win, -1, style=wx.CB_DROPDOWN) self.path_input.Bind(wx.EVT_COMBOBOX, self.selection_changed) self.ud_gs.Add(self.path_input, 0, wx.EXPAND | borders, border) self.ud_gs.Add(wx.StaticText(self.ud_win, -1, "Userdata:"), 0, borders, border) self.ud_txt = wx.TextCtrl(self.ud_win, -1, style=wx.TE_MULTILINE | wx.TE_READONLY) self.ud_gs.Add(self.ud_txt, 1, wx.EXPAND | borders, border) # Add initial state button self.is_button = wx.Button(self.ud_win, -1, "Set as Initial State") self.is_button.Bind(wx.EVT_BUTTON, self.on_set_initial_state) self.is_button.Disable() self.ud_gs.Add(self.is_button, 0, wx.EXPAND | wx.BOTTOM | borders, border) self.ud_win.SetSizer(self.ud_gs) # Set content splitter self.content_splitter.SplitVertically(viewer, self.ud_win, 512) # Add statusbar self.statusbar = wx.StatusBar(self, -1) # Add elements to sizer vbox.Add(self.content_splitter, 1, wx.EXPAND | wx.ALL) vbox.Add(self.statusbar, 0, wx.EXPAND) self.SetSizer(vbox) self.Center() # smach introspection client self._client = smach_ros.IntrospectionClient() self._containers = {} self._selected_paths = [] # Message subscribers self._structure_subs = {} self._status_subs = {} self.Bind(wx.EVT_IDLE, self.OnIdle) self.Bind(wx.EVT_CLOSE, self.OnQuit) # Register mouse event callback self.widget.register_select_callback(self.select_cb) self._path = '/' self._needs_zoom = True self._structure_changed = True # Start a thread in the background to update the server list self._keep_running = True self._server_list_thread = threading.Thread( target=self._update_server_list) self._server_list_thread.start() self._update_graph_thread = threading.Thread(target=self._update_graph) self._update_graph_thread.start() self._update_tree_thread = threading.Thread(target=self._update_tree) self._update_tree_thread.start()
def setup_main_panel(self): """ Lays Out Main Panel. Binds some functions to presenter. :return: None """ # Create Status Bar self.CreateStatusBar(7) self.SetStatusWidths([-1, 300, 200, 200, 250, 150, 130]) # Sizers to develop layout # s1 = (min(self.displaysize[0], 1851), self.displaysize[1]) # s2 = (550, self.displaysize[1]) splitterwindow = wx.SplitterWindow(self, -1, style=wx.SP_3D | wx.SP_BORDER) splitterwindow2 = wx.SplitterWindow(splitterwindow, -1, style=wx.SP_3D | wx.SP_BORDER) panelp = wx.Panel(splitterwindow2, -1) panel = scrolled.ScrolledPanel(splitterwindow2, -1) # wx.Panel(splitterwindow2, -1) splitterwindow2.SplitVertically(panelp, panel, sashPosition=-250 - self.config.imflag * 20) splitterwindow2.SetMinimumPaneSize(175) splitterwindow.SetMinimumPaneSize(175) # splitterwindow.SetMinSize((0,0)) # splitterwindow2.SetMinSize((0,0)) file_drop_target = MyFileDropTarget(self) splitterwindow.SetDropTarget(file_drop_target) # ................................. # # Layout the Plots # # ................................... # Tabbed view of plots if self.tabbed == 1: figsize = (6, 5) plotwindow = wx.Notebook(splitterwindow) splitterwindow.SplitVertically(plotwindow, splitterwindow2, sashPosition=-550) tab1 = wx.Panel(plotwindow) tab2 = wx.Panel(plotwindow) tab3 = wx.Panel(plotwindow) tab4 = wx.Panel(plotwindow) tab5 = wx.Panel(plotwindow) tab6 = wx.Panel(plotwindow) self.plot1 = plot1d.Plot1d(tab1, smash=1, figsize=figsize) self.plot2 = plot1d.Plot1d(tab2, integrate=1, figsize=figsize) self.plot3 = plot2d.Plot2d(tab3, figsize=figsize) self.plot4 = plot1d.Plot1d(tab4, figsize=figsize) self.plot5 = plot2d.Plot2d(tab5, figsize=figsize) self.plot6 = plot1d.Plot1d(tab6, figsize=figsize) miscwindows.setup_tab_box(tab1, self.plot1) miscwindows.setup_tab_box(tab2, self.plot2) miscwindows.setup_tab_box(tab3, self.plot3) miscwindows.setup_tab_box(tab4, self.plot4) miscwindows.setup_tab_box(tab5, self.plot5) miscwindows.setup_tab_box(tab6, self.plot6) if self.config.imflag == 1: tab1im = wx.Panel(plotwindow) tab1fit = wx.Panel(plotwindow) tab2ccs = wx.Panel(plotwindow) tab3color = wx.Panel(plotwindow) tab5mccs = wx.Panel(plotwindow) tab5ccsz = wx.Panel(plotwindow) tab9 = wx.Panel(plotwindow) tab10 = wx.Panel(plotwindow) self.plot1im = plot2d.Plot2d(tab1im, figsize=figsize) self.plot1fit = plot2d.Plot2d(tab1fit, figsize=figsize) self.plot2ccs = plot1d.Plot1d(tab2ccs, figsize=figsize) self.plot5mccs = plot2d.Plot2d(tab5mccs, figsize=figsize) self.plot5ccsz = plot2d.Plot2d(tab5ccsz, figsize=figsize) self.plot3color = ColorPlot.ColorPlot2D(tab3color, figsize=figsize) self.plot9 = plot3d.CubePlot(tab9, figsize=figsize) self.plot10 = plot3d.CubePlot(tab10, figsize=figsize) miscwindows.setup_tab_box(tab1im, self.plot1im) miscwindows.setup_tab_box(tab1fit, self.plot1fit) miscwindows.setup_tab_box(tab2ccs, self.plot2ccs) miscwindows.setup_tab_box(tab3color, self.plot3color) miscwindows.setup_tab_box(tab5mccs, self.plot5mccs) miscwindows.setup_tab_box(tab5ccsz, self.plot5ccsz) miscwindows.setup_tab_box(tab9, self.plot9) miscwindows.setup_tab_box(tab10, self.plot10) plotwindow.AddPage(tab1, "MS Data v. Fit") if self.config.imflag == 1: plotwindow.AddPage(tab1im, "IM-MS Data") plotwindow.AddPage(tab1fit, "IM-MS Fit") plotwindow.AddPage(tab3color, "IM-MS Charges") plotwindow.AddPage(tab9, "m/z Cube") plotwindow.AddPage(tab3, "m/z Grid") plotwindow.AddPage(tab2, "Mass Distribution") if self.config.imflag == 1: plotwindow.AddPage(tab2ccs, "CCS Distribution") plotwindow.AddPage(tab4, "Individual Peaks") plotwindow.AddPage(tab5, "Mass vs. Charge") if self.config.imflag == 1: plotwindow.AddPage(tab5mccs, "Mass vs. CCS ") plotwindow.AddPage(tab5ccsz, "CCS vs. Charge") plotwindow.AddPage(tab10, "Mass Cube") plotwindow.AddPage(tab6, "Bar Chart") # Scrolled panel view of plots else: # TODO: Line up plots on left hand side so that they share an m/z axis plotwindow = scrolled.ScrolledPanel(splitterwindow) splitterwindow.SplitVertically(plotwindow, splitterwindow2, sashPosition=-550) sizerplot = wx.GridBagSizer() figsize = self.config.figsize self.plot1 = plot1d.Plot1d(plotwindow, smash=1, figsize=figsize) self.plot2 = plot1d.Plot1d(plotwindow, integrate=1, figsize=figsize) self.plot3 = plot2d.Plot2d(plotwindow, figsize=figsize) self.plot4 = plot1d.Plot1d(plotwindow, figsize=figsize) self.plot5 = plot2d.Plot2d(plotwindow, figsize=figsize) self.plot6 = plot1d.Plot1d(plotwindow, figsize=figsize) if self.config.imflag == 1: self.plot1im = plot2d.Plot2d(plotwindow, figsize=figsize) self.plot1fit = plot2d.Plot2d(plotwindow, figsize=figsize) self.plot2ccs = plot1d.Plot1d(plotwindow, figsize=figsize) self.plot5mccs = plot2d.Plot2d(plotwindow, figsize=figsize) self.plot5ccsz = plot2d.Plot2d(plotwindow, figsize=figsize) self.plot3color = ColorPlot.ColorPlot2D(plotwindow, figsize=figsize) self.plot9 = plot3d.CubePlot(plotwindow, figsize=figsize) self.plot10 = plot3d.CubePlot(plotwindow, figsize=figsize) if self.config.imflag == 0: sizerplot.Add(self.plot1, (0, 0), span=(1, 1), flag=wx.EXPAND) sizerplot.Add(self.plot2, (0, 1), span=(1, 1), flag=wx.EXPAND) sizerplot.Add(self.plot3, (1, 0), span=(1, 1), flag=wx.EXPAND) sizerplot.Add(self.plot4, (1, 1), span=(1, 1), flag=wx.EXPAND) sizerplot.Add(self.plot5, (2, 0), span=(1, 1), flag=wx.EXPAND) sizerplot.Add(self.plot6, (2, 1), span=(1, 1), flag=wx.EXPAND) else: sizerplot.Add(self.plot1, (0, 0), span=(1, 1), flag=wx.EXPAND) sizerplot.Add(self.plot1im, (0, 1), span=(1, 1), flag=wx.EXPAND) sizerplot.Add(self.plot1fit, (1, 1), span=(1, 1), flag=wx.EXPAND) sizerplot.Add(self.plot3color, (1, 0), span=(1, 1), flag=wx.EXPAND) sizerplot.Add(self.plot2, (2, 0), span=(1, 1), flag=wx.EXPAND) sizerplot.Add(self.plot2ccs, (3, 0), span=(1, 1), flag=wx.EXPAND) sizerplot.Add(self.plot3, (2, 1), span=(1, 1), flag=wx.EXPAND) sizerplot.Add(self.plot4, (4, 0), span=(1, 1), flag=wx.EXPAND) sizerplot.Add(self.plot5, (3, 1), span=(1, 1), flag=wx.EXPAND) sizerplot.Add(self.plot5mccs, (4, 1), span=(1, 1), flag=wx.EXPAND) sizerplot.Add(self.plot5ccsz, (5, 1), span=(1, 1), flag=wx.EXPAND) sizerplot.Add(self.plot6, (5, 0), span=(1, 1), flag=wx.EXPAND) sizerplot.Add(self.plot9, (6, 0), span=(1, 1), flag=wx.EXPAND) sizerplot.Add(self.plot10, (6, 1), span=(1, 1), flag=wx.EXPAND) # plotwindow.SetScrollbars(1, 1,1,1) if self.system == "Linux": plotwindow.SetSizer(sizerplot) sizerplot.Fit(self) else: plotwindow.SetSizerAndFit(sizerplot) plotwindow.SetupScrolling() self.plotpanel = plotwindow plotwindow.SetFocus() plotwindow.Bind(wx.EVT_SET_FOCUS, self.onFocus) self.plots = [self.plot1, self.plot2, self.plot3, self.plot4, self.plot5, self.plot6] if self.config.imflag == 1: self.plots = self.plots + [self.plot1im, self.plot1fit, self.plot2ccs, self.plot5mccs, self.plot5ccsz, self.plot3color, self.plot9, self.plot10] self.plotnames = ["Figure1", "Figure2", "Figure3", "Figure4", "Figure5", "Figure6"] if self.config.imflag == 1: self.plotname = self.plotnames + ["Figure1im", "Figure1fit", "Figure2ccs", "Figure3color", "Figure5ccsz", "Figure5massccs", "mzCube", "massCube"] # ........................... # # Sizer for Peaks # # ........................... sizerpeaks = wx.BoxSizer(wx.VERTICAL) self.peakpanel = peaklistsort.PeakListCtrlPanel(panelp) self.Bind(self.peakpanel.EVT_DELETE_SELECTION_2, self.pres.on_delete, self.peakpanel) self.Bind(self.peakpanel.EVT_CHARGE_STATE, self.pres.on_charge_states, self.peakpanel) self.Bind(self.peakpanel.EVT_DIFFERENCES, self.pres.on_differences, self.peakpanel) self.Bind(self.peakpanel.EVT_MASSES, self.pres.on_label_masses, self.peakpanel) sizerpeaks.Add(self.peakpanel, 0, wx.EXPAND) panelp.SetSizer(sizerpeaks) sizerpeaks.Fit(self) # .......................... # # Setup Control Panel # # ............................. sizercontrols = wx.BoxSizer(wx.VERTICAL) self.controls = ud_controls.main_controls(self, self.config, self.pres, panel, self.icon_path) sizercontrols.Add(self.controls, 1, wx.EXPAND) panel.SetSizer(sizercontrols) sizercontrols.Fit(self) # panel.SetAutoLayout(1) # panel.SetupScrolling(scroll_x=False, scroll_y=True) if self.system == "Linux" and self.tabbed != 1: sizerplot.Fit(splitterwindow) sizer = wx.BoxSizer(wx.HORIZONTAL) sizer.Add(splitterwindow, 1, wx.EXPAND) # Set everything up self.SetSizer(sizer) sizer.Fit(self) pass
def __init__( self, parent ): wx.Frame.__init__ ( self, parent, id = wx.ID_ANY, title = u"WebLab-Deusto Experiment Server Tester", pos = wx.DefaultPosition, size = wx.Size( 611,507 ), style = wx.DEFAULT_FRAME_STYLE|wx.TAB_TRAVERSAL ) self.SetSizeHintsSz( wx.DefaultSize, wx.DefaultSize ) self.SetBackgroundColour( wx.Colour( 221, 232, 249 ) ) mainBoxSizer = wx.BoxSizer( wx.VERTICAL ) serverSizer = wx.StaticBoxSizer( wx.StaticBox( self, wx.ID_ANY, u"Server" ), wx.HORIZONTAL ) self.mHostLabel = wx.StaticText( self, wx.ID_ANY, u"Host:", wx.DefaultPosition, wx.DefaultSize, 0 ) self.mHostLabel.Wrap( -1 ) serverSizer.Add( self.mHostLabel, 0, wx.ALL|wx.ALIGN_CENTER_VERTICAL, 5 ) self.mHostText = wx.TextCtrl( self, wx.ID_ANY, wx.EmptyString, wx.DefaultPosition, wx.DefaultSize, 0 ) serverSizer.Add( self.mHostText, 3, wx.ALL, 5 ) self.mPortLabel = wx.StaticText( self, wx.ID_ANY, u"Port:", wx.DefaultPosition, wx.DefaultSize, 0 ) self.mPortLabel.Wrap( -1 ) serverSizer.Add( self.mPortLabel, 0, wx.ALL|wx.ALIGN_CENTER_VERTICAL, 5 ) self.mPortText = wx.TextCtrl( self, wx.ID_ANY, wx.EmptyString, wx.DefaultPosition, wx.DefaultSize, 0 ) serverSizer.Add( self.mPortText, 1, wx.ALL, 5 ) self.m_staticText10 = wx.StaticText( self, wx.ID_ANY, u"URI:", wx.DefaultPosition, wx.DefaultSize, 0 ) self.m_staticText10.Wrap( -1 ) serverSizer.Add( self.m_staticText10, 0, wx.ALL|wx.ALIGN_CENTER_VERTICAL, 5 ) self.mUriText = wx.TextCtrl( self, wx.ID_ANY, wx.EmptyString, wx.DefaultPosition, wx.DefaultSize, 0 ) serverSizer.Add( self.mUriText, 0, wx.ALL, 5 ) self.mConnectButton = wx.Button( self, wx.ID_ANY, u"Connect", wx.DefaultPosition, wx.DefaultSize, 0 ) serverSizer.Add( self.mConnectButton, 0, wx.ALL, 5 ) mainBoxSizer.Add( serverSizer, 0, wx.EXPAND, 5 ) tabsSizer = wx.BoxSizer( wx.VERTICAL ) self.mNotebook = wx.Notebook( self, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, 0 ) self.mCommandsTab = wx.Panel( self.mNotebook, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, wx.TAB_TRAVERSAL ) self.mCommandsTab.SetBackgroundColour( wx.Colour( 221, 254, 216 ) ) commandsSizer = wx.BoxSizer( wx.HORIZONTAL ) mCmdOtherCtrlsSizer = wx.BoxSizer( wx.VERTICAL ) bSizer15 = wx.BoxSizer( wx.VERTICAL ) mCmdOtherCtrlsSizer.Add( bSizer15, 1, wx.EXPAND, 5 ) mCmdsTabFileSizer = wx.BoxSizer( wx.HORIZONTAL ) self.m_staticText6 = wx.StaticText( self.mCommandsTab, wx.ID_ANY, u"Content:", wx.DefaultPosition, wx.DefaultSize, 0 ) self.m_staticText6.Wrap( -1 ) mCmdsTabFileSizer.Add( self.m_staticText6, 0, wx.ALL|wx.ALIGN_CENTER_VERTICAL, 5 ) bSizer18 = wx.BoxSizer( wx.HORIZONTAL ) self.mFilePickerPath = wx.TextCtrl( self.mCommandsTab, wx.ID_ANY, wx.EmptyString, wx.DefaultPosition, wx.DefaultSize, 0 ) bSizer18.Add( self.mFilePickerPath, 1, wx.ALL|wx.ALIGN_CENTER_VERTICAL|wx.EXPAND, 5 ) self.mFilePickerButton = wx.Button( self.mCommandsTab, wx.ID_ANY, u"...", wx.DefaultPosition, wx.DefaultSize, 0 ) bSizer18.Add( self.mFilePickerButton, 1, wx.ALIGN_CENTER_VERTICAL, 5 ) mCmdsTabFileSizer.Add( bSizer18, 0, wx.ALIGN_CENTER_VERTICAL, 5 ) self.m_staticText7 = wx.StaticText( self.mCommandsTab, wx.ID_ANY, u"FileInfo:", wx.DefaultPosition, wx.DefaultSize, 0 ) self.m_staticText7.Wrap( -1 ) mCmdsTabFileSizer.Add( self.m_staticText7, 0, wx.ALL|wx.ALIGN_CENTER_VERTICAL, 5 ) self.mFileInfoText = wx.TextCtrl( self.mCommandsTab, wx.ID_ANY, wx.EmptyString, wx.DefaultPosition, wx.DefaultSize, 0 ) mCmdsTabFileSizer.Add( self.mFileInfoText, 1, wx.ALL|wx.ALIGN_CENTER_VERTICAL, 5 ) mCmdOtherCtrlsSizer.Add( mCmdsTabFileSizer, 1, wx.EXPAND|wx.ALL, 5 ) mCmdsTabCommandSizer = wx.BoxSizer( wx.HORIZONTAL ) self.mCommandLabel = wx.StaticText( self.mCommandsTab, wx.ID_ANY, u"Command:", wx.DefaultPosition, wx.DefaultSize, 0 ) self.mCommandLabel.Wrap( -1 ) mCmdsTabCommandSizer.Add( self.mCommandLabel, 0, wx.ALL|wx.ALIGN_CENTER_VERTICAL, 5 ) self.mCommandText = wx.TextCtrl( self.mCommandsTab, wx.ID_ANY, wx.EmptyString, wx.DefaultPosition, wx.DefaultSize, 0 ) mCmdsTabCommandSizer.Add( self.mCommandText, 1, wx.ALL|wx.ALIGN_CENTER_VERTICAL, 5 ) mCmdOtherCtrlsSizer.Add( mCmdsTabCommandSizer, 1, wx.EXPAND|wx.ALL, 5 ) bSizer16 = wx.BoxSizer( wx.VERTICAL ) mCmdOtherCtrlsSizer.Add( bSizer16, 1, wx.EXPAND, 5 ) commandsSizer.Add( mCmdOtherCtrlsSizer, 1, wx.EXPAND, 5 ) mCmdButtonsSizer = wx.BoxSizer( wx.VERTICAL ) self.mStartExperimentButton = wx.Button( self.mCommandsTab, wx.ID_ANY, u"> start_experiment()", wx.DefaultPosition, wx.DefaultSize, 0 ) mCmdButtonsSizer.Add( self.mStartExperimentButton, 1, wx.ALL|wx.ALIGN_RIGHT|wx.EXPAND, 5 ) self.mSendFileButton = wx.Button( self.mCommandsTab, wx.ID_ANY, u"> send_file()", wx.DefaultPosition, wx.DefaultSize, 0 ) mCmdButtonsSizer.Add( self.mSendFileButton, 1, wx.ALL|wx.ALIGN_RIGHT|wx.EXPAND, 5 ) self.mSendCommand = wx.Button( self.mCommandsTab, wx.ID_ANY, u"> send_command()", wx.DefaultPosition, wx.DefaultSize, 0 ) mCmdButtonsSizer.Add( self.mSendCommand, 1, wx.ALL|wx.ALIGN_RIGHT|wx.EXPAND, 5 ) self.mDisposeButton = wx.Button( self.mCommandsTab, wx.ID_ANY, u"> dispose()", wx.DefaultPosition, wx.DefaultSize, 0 ) mCmdButtonsSizer.Add( self.mDisposeButton, 1, wx.ALL|wx.ALIGN_RIGHT|wx.EXPAND, 5 ) commandsSizer.Add( mCmdButtonsSizer, 0, wx.EXPAND, 5 ) self.mCommandsTab.SetSizer( commandsSizer ) self.mCommandsTab.Layout() commandsSizer.Fit( self.mCommandsTab ) self.mNotebook.AddPage( self.mCommandsTab, u"Commands", False ) self.mScriptsTab = wx.Panel( self.mNotebook, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, wx.TAB_TRAVERSAL ) self.mScriptsTab.SetBackgroundColour( wx.Colour( 221, 254, 216 ) ) scriptsSizer = wx.BoxSizer( wx.HORIZONTAL ) self.mScriptLabel = wx.StaticText( self.mScriptsTab, wx.ID_ANY, u"Script:", wx.DefaultPosition, wx.DefaultSize, 0 ) self.mScriptLabel.Wrap( -1 ) scriptsSizer.Add( self.mScriptLabel, 0, wx.ALL|wx.ALIGN_CENTER_VERTICAL, 5 ) bSizer181 = wx.BoxSizer( wx.HORIZONTAL ) self.mScriptPickerPath = wx.TextCtrl( self.mScriptsTab, wx.ID_ANY, wx.EmptyString, wx.DefaultPosition, wx.DefaultSize, 0 ) bSizer181.Add( self.mScriptPickerPath, 1, wx.ALL|wx.ALIGN_CENTER_VERTICAL|wx.EXPAND, 5 ) self.mScriptPickerButton = wx.Button( self.mScriptsTab, wx.ID_ANY, u"...", wx.DefaultPosition, wx.DefaultSize, 0 ) bSizer181.Add( self.mScriptPickerButton, 1, wx.ALIGN_CENTER_VERTICAL, 5 ) scriptsSizer.Add( bSizer181, 1, wx.ALIGN_CENTER_VERTICAL, 5 ) self.mRunScriptButton = wx.Button( self.mScriptsTab, wx.ID_ANY, u"Run Script", wx.DefaultPosition, wx.DefaultSize, 0 ) scriptsSizer.Add( self.mRunScriptButton, 0, wx.ALL|wx.ALIGN_CENTER_VERTICAL, 5 ) self.mScriptsTab.SetSizer( scriptsSizer ) self.mScriptsTab.Layout() scriptsSizer.Fit( self.mScriptsTab ) self.mNotebook.AddPage( self.mScriptsTab, u"Scripts", True ) tabsSizer.Add( self.mNotebook, 1, wx.EXPAND |wx.ALL, 5 ) mainBoxSizer.Add( tabsSizer, 1, wx.EXPAND, 5 ) logSizer = wx.BoxSizer( wx.VERTICAL ) self.mLogGrid = wx.grid.Grid( self, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, 0 ) # Grid self.mLogGrid.CreateGrid( 0, 2 ) self.mLogGrid.EnableEditing( False ) self.mLogGrid.EnableGridLines( True ) self.mLogGrid.EnableDragGridSize( False ) self.mLogGrid.SetMargins( 0, 0 ) # Columns self.mLogGrid.SetColSize( 0, 80 ) self.mLogGrid.SetColSize( 1, 80 ) self.mLogGrid.EnableDragColMove( False ) self.mLogGrid.EnableDragColSize( False ) self.mLogGrid.SetColLabelSize( 30 ) self.mLogGrid.SetColLabelValue( 0, u"Sent" ) self.mLogGrid.SetColLabelValue( 1, u"Received" ) self.mLogGrid.SetColLabelAlignment( wx.ALIGN_CENTRE, wx.ALIGN_CENTRE ) # Rows self.mLogGrid.EnableDragRowSize( False ) self.mLogGrid.SetRowLabelSize( 80 ) self.mLogGrid.SetRowLabelAlignment( wx.ALIGN_CENTRE, wx.ALIGN_CENTRE ) # Label Appearance # Cell Defaults self.mLogGrid.SetDefaultCellBackgroundColour( wx.Colour( 255, 255, 221 ) ) self.mLogGrid.SetDefaultCellAlignment( wx.ALIGN_LEFT, wx.ALIGN_TOP ) logSizer.Add( self.mLogGrid, 1, wx.ALL|wx.ALIGN_CENTER_HORIZONTAL|wx.EXPAND, 5 ) mainBoxSizer.Add( logSizer, 1, wx.EXPAND, 5 ) buttonsSizer = wx.BoxSizer( wx.HORIZONTAL ) self.mCleanLogButton = wx.Button( self, wx.ID_ANY, u"Clean Log", wx.DefaultPosition, wx.DefaultSize, 0 ) buttonsSizer.Add( self.mCleanLogButton, 0, wx.ALIGN_RIGHT|wx.ALL, 5 ) mainBoxSizer.Add( buttonsSizer, 0, wx.TOP|wx.BOTTOM|wx.RIGHT|wx.ALIGN_RIGHT, 5 ) self.SetSizer( mainBoxSizer ) self.Layout() self.mStatusBar = self.CreateStatusBar( 1, wx.ST_SIZEGRIP, wx.ID_ANY ) # Connect Events self.Bind( wx.EVT_ACTIVATE, self.OnActivate ) self.Bind( wx.EVT_ACTIVATE_APP, self.OnActivateApp ) self.Bind( wx.EVT_CLOSE, self.OnClose ) self.Bind( wx.EVT_ENTER_WINDOW, self.OnEnterWindow ) self.Bind( wx.EVT_ICONIZE, self.OnIconize ) self.Bind( wx.EVT_IDLE, self.OnIdle ) self.Bind( wx.EVT_PAINT, self.OnPaint ) self.mHostText.Bind( wx.EVT_TEXT, self.OnHostText ) self.mHostText.Bind( wx.EVT_TEXT_ENTER, self.OnHostTextEnter ) self.mPortText.Bind( wx.EVT_CHAR, self.OnPortChar ) self.mPortText.Bind( wx.EVT_TEXT, self.OnPortText ) self.mPortText.Bind( wx.EVT_TEXT_ENTER, self.OnPortTextEnter ) self.mConnectButton.Bind( wx.EVT_BUTTON, self.OnConnect ) self.mFilePickerButton.Bind( wx.EVT_BUTTON, self.OnFilePickerButtonClicked ) self.mFileInfoText.Bind( wx.EVT_TEXT, self.OnFileInfoText ) self.mFileInfoText.Bind( wx.EVT_TEXT_ENTER, self.OnFileInfoTextEnter ) self.mCommandText.Bind( wx.EVT_TEXT, self.OnCommandText ) self.mCommandText.Bind( wx.EVT_TEXT_ENTER, self.OnCommandTextEnter ) self.mStartExperimentButton.Bind( wx.EVT_BUTTON, self.OnStartExperiment ) self.mSendFileButton.Bind( wx.EVT_BUTTON, self.OnSendFile ) self.mSendCommand.Bind( wx.EVT_BUTTON, self.OnSendCommand ) self.mDisposeButton.Bind( wx.EVT_BUTTON, self.OnDispose ) self.mScriptPickerButton.Bind( wx.EVT_BUTTON, self.OnScriptPickerButtonClicked ) self.mRunScriptButton.Bind( wx.EVT_BUTTON, self.OnRunScript ) self.mLogGrid.Bind( wx.grid.EVT_GRID_CELL_CHANGE, self.OnLogCellChange ) self.mLogGrid.Bind( wx.grid.EVT_GRID_CELL_LEFT_CLICK, self.OnLogCellLeftClick ) self.mLogGrid.Bind( wx.grid.EVT_GRID_CELL_RIGHT_CLICK, self.OnLogCellRightClick ) self.mLogGrid.Bind( wx.grid.EVT_GRID_SELECT_CELL, self.OnLogSelectCell ) self.mLogGrid.Bind( wx.EVT_KILL_FOCUS, self.OnLogKillFocus ) self.mLogGrid.Bind( wx.EVT_PAINT, self.OnLogPaint ) self.mLogGrid.Bind( wx.EVT_SET_FOCUS, self.OnLogSetFocus ) self.mLogGrid.Bind( wx.EVT_SIZE, self.OnLogSize ) self.mLogGrid.Bind( wx.EVT_UPDATE_UI, self.OnLogUpdateUI ) self.mCleanLogButton.Bind( wx.EVT_BUTTON, self.OnCleanLog )
def OnInit(self): self.Init() # initialize the inspection tool self.log = Log() self.working = False wx.InitAllImageHandlers() self.andyapptitle = 'PyNsource GUI - Python Code into UML' self.frame = wx.Frame(None, -1, self.andyapptitle, pos=(50, 50), size=(0, 0), style=wx.NO_FULL_REPAINT_ON_RESIZE | wx.DEFAULT_FRAME_STYLE) self.frame.CreateStatusBar() if MULTI_TAB_GUI: self.notebook = wx.Notebook(self.frame, -1) if USE_SIZER: # create the chain of real objects panel = wx.Panel(self.notebook, -1) self.umlwin = UmlCanvas(panel, Log(), self.frame) # add children to sizers and set the sizer to the parent sizer = wx.BoxSizer(wx.VERTICAL) sizer.Add(self.umlwin, 1, wx.GROW) panel.SetSizer(sizer) else: self.umlwin = UmlCanvas(self.notebook, Log(), self.frame) #self.yuml = ImageViewer(self.notebook) # wx.Panel(self.notebook, -1) self.asciiart = wx.Panel(self.notebook, -1) if USE_SIZER: self.notebook.AddPage(panel, "UML") else: self.notebook.AddPage(self.umlwin, "UML") #self.notebook.AddPage(self.yuml, "yUml") self.notebook.AddPage(self.asciiart, "Ascii Art") # Modify my own page http://www.andypatterns.com/index.php/products/pynsource/asciiart/ # Some other ideas here http://c2.com/cgi/wiki?UmlAsciiArt self.multiText = wx.TextCtrl(self.asciiart, -1, ASCII_UML_HELP_MSG, style=wx.TE_MULTILINE | wx.HSCROLL) bsizer = wx.BoxSizer() bsizer.Add(self.multiText, 1, wx.EXPAND) self.asciiart.SetSizerAndFit(bsizer) self.multiText.SetFont( wx.Font(10, wx.MODERN, wx.NORMAL, wx.NORMAL, False) ) # see http://www.wxpython.org/docs/api/wx.Font-class.html for more fonts self.multiText.Bind(wx.EVT_CHAR, self.onKeyChar_Ascii_Text_window) self.multiText.Bind(wx.EVT_MOUSEWHEEL, self.OnWheelZoom_ascii) self.notebook.Bind(wx.EVT_NOTEBOOK_PAGE_CHANGED, self.OnTabPageChanged) else: self.notebook = None self.panel_one = wx.Panel(self.frame, -1) self.umlwin = UmlCanvas(self.panel_one, Log(), self.frame) # sizer = wx.BoxSizer(wx.VERTICAL) sizer.Add(self.umlwin, 1, wx.EXPAND) self.panel_one.SetSizer(sizer) self.panel_two = self.asciiart = wx.Panel(self.frame, -1) self.multiText = wx.TextCtrl(self.panel_two, -1, ASCII_UML_HELP_MSG, style=wx.TE_MULTILINE | wx.HSCROLL) self.multiText.SetFont( wx.Font(10, wx.MODERN, wx.NORMAL, wx.NORMAL, False) ) # see http://www.wxpython.org/docs/api/wx.Font-class.html for more fonts self.multiText.Bind(wx.EVT_CHAR, self.onKeyChar_Ascii_Text_window) self.multiText.Bind(wx.EVT_MOUSEWHEEL, self.OnWheelZoom_ascii) # sizer = wx.BoxSizer(wx.VERTICAL) sizer.Add(self.multiText, 1, wx.EXPAND) self.panel_two.SetSizer(sizer) self.panel_two.Hide() self.sizer = wx.BoxSizer(wx.VERTICAL) self.sizer.Add(self.panel_one, 1, wx.EXPAND) self.sizer.Add(self.panel_two, 1, wx.EXPAND) self.frame.SetSizer(self.sizer) ogl.OGLInitialize( ) # creates some pens and brushes that the OGL library uses. # Set the frame to a good size for showing stuff self.frame.SetSize(WINDOW_SIZE) self.umlwin.SetFocus() self.SetTopWindow(self.frame) self.frame.Show(True) wx.EVT_CLOSE(self.frame, self.OnCloseFrame) self.popupmenu = None self.umlwin.Bind( wx.EVT_RIGHT_DOWN, self.OnRightButtonMenu ) # WARNING: takes over all righclick events - need to event.skip() to let through things to UmlShapeHandler self.Bind(wx.EVT_SIZE, self.OnResizeFrame) #self.umlwin.Bind(wx.EVT_SET_FOCUS, self.onFocus) # attempt at making mousewheel auto scroll the workspace #self.frame.Bind(wx.EVT_SET_FOCUS, self.onFocus) # attempt at making mousewheel auto scroll the workspace self.umlwin.InitSizeAndObjs( ) # Now that frame is visible and calculated, there should be sensible world coords to use self.InitConfig() class Context(object): """ Everything everybody needs to know """ pass context = Context() # init the context context.wxapp = self context.config = self.config context.umlwin = self.umlwin context.model = self.umlwin.umlworkspace context.snapshot_mgr = self.umlwin.snapshot_mgr context.coordmapper = self.umlwin.coordmapper context.layouter = self.umlwin.layouter context.overlap_remover = self.umlwin.overlap_remover context.frame = self.frame if MULTI_TAB_GUI: context.multiText = self.multiText context.asciiart = self.asciiart else: context.multiText = None context.asciiart = None # App knows about everyone. # Everyone (ring classes) should be an adapter # but not strictly necessary unless you want an extra level # of indirection and separation or don't want to constantly # edit the ring classes to match what the app (and other ring # objects) expect - edit an adapter instead. self.app = App(context) self.app.Boot() self.InitMenus() self.PostOglViewSwitch() # ensure key bindings kick in under linux wx.CallAfter(self.app.run.CmdBootStrap ) # doesn't make a difference calling this via CallAfter return True
def __init__(self, *args, **kwds): # begin wxGlade: TestFrame.__init__ kwds["style"] = kwds.get("style", 0) | wx.DEFAULT_FRAME_STYLE wx.Frame.__init__(self, *args, **kwds) self.SetSize((1234, 669)) self.panel_frame = wx.Panel(self, wx.ID_ANY) self.thread = threading.Thread(target=self.run, args=()) self.thread.daemon = True self.row = 0 self.prevLine = '' self.line = '' self.table = {} self.overlay = {} self.ax = None self.x, self.y = [0.], [[0.]] self.flag_complete = False self.panel_main = wx.Panel(self.panel_frame, wx.ID_ANY) self.notebook = wx.Notebook(self.panel_main, wx.ID_ANY) self.notebook_program = wx.Panel(self.notebook, wx.ID_ANY) self.panel_3 = wx.Panel(self.notebook_program, wx.ID_ANY) self.text_ctrl_log = wx.TextCtrl(self.panel_3, wx.ID_ANY, "", style=wx.TE_MULTILINE | wx.TE_READONLY) self.text_ctrl_log_entry = wx.TextCtrl(self.panel_3, wx.ID_ANY, "", style=wx.TE_PROCESS_ENTER) sys.stdout = self.text_ctrl_log self.button_1 = wx.Button(self.panel_3, wx.ID_ANY, "Enter") self.notebook_1 = wx.Notebook(self.notebook_program, wx.ID_ANY) self.notebook_1_pane_2 = wx.Panel(self.notebook_1, wx.ID_ANY) self.figure = plt.figure(figsize=(2, 2)) # look into Figure((5, 4), 75) self.canvas = FigureCanvas(self.notebook_1_pane_2, -1, self.figure) self.toolbar = NavigationToolbar(self.canvas) self.toolbar.Realize() self.notebook_1_Settings = wx.Panel(self.notebook_1, wx.ID_ANY) # Use PropertyGridManger instead, if pages are desired self.property_grid_1 = wx.propgrid.PropertyGrid( self.notebook_1_Settings, wx.ID_ANY) self.notebook_Spreadsheet = wx.Panel(self.notebook, wx.ID_ANY) self.grid_1 = MyGrid(self.notebook_Spreadsheet) self.btn_run = wx.Button(self.panel_main, wx.ID_ANY, "Run Test") # TODO - Pause: https://stackoverflow.com/a/34313474/3382269 self.btn_pause = wx.Button(self.panel_main, wx.ID_ANY, "Pause") self.btn_stop = wx.Button(self.panel_main, wx.ID_ANY, "Stop") self.btn_save = wx.Button(self.panel_main, wx.ID_ANY, "Save") # Run Measurement (start subprocess) on_run_event = lambda event: self.on_run(event) self.Bind(wx.EVT_BUTTON, on_run_event, self.btn_run) self.Bind(wxpg.EVT_PG_CHANGED, self.OnGridChangeEvent) self.__set_properties() self.__do_layout()
def __init__(self, parent): wx.Frame.__init__(self, parent, id=wx.ID_ANY, title=u"Mote PC Controller", pos=wx.DefaultPosition, size=wx.Size(300, 400), style=wx.CAPTION | wx.CLOSE_BOX | wx.MINIMIZE | wx.MINIMIZE_BOX | wx.SYSTEM_MENU | wx.TAB_TRAVERSAL) self.SetSizeHints(wx.DefaultSize, wx.DefaultSize) self.SetBackgroundColour( wx.SystemSettings.GetColour(wx.SYS_COLOUR_3DLIGHT)) self.menu = wx.MenuBar(0) self.filemenu = wx.Menu() self.menuAbout = wx.MenuItem(self.filemenu, wx.ID_ABOUT, u"About", wx.EmptyString, wx.ITEM_NORMAL) self.filemenu.Append(self.menuAbout) self.menuExit = wx.MenuItem(self.filemenu, wx.ID_EXIT, u"Exit", wx.EmptyString, wx.ITEM_NORMAL) self.filemenu.Append(self.menuExit) self.menu.Append(self.filemenu, u"File") self.SetMenuBar(self.menu) sizerMain = wx.BoxSizer(wx.VERTICAL) self.notebookMain = wx.Notebook(self, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, 0) self.panelSystem = wx.Panel(self.notebookMain, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, wx.TAB_TRAVERSAL) self.panelSystem.SetBackgroundColour(wx.Colour(255, 255, 255)) sizerSystem = wx.BoxSizer(wx.VERTICAL) self.labelColour = wx.StaticText(self.panelSystem, wx.ID_ANY, u"Colour", wx.Point(-1, -1), wx.DefaultSize, 0) self.labelColour.Wrap(-1) sizerSystem.Add(self.labelColour, 0, wx.ALL, 5) self.pickerBaseColour = wx.ColourPickerCtrl(self.panelSystem, wx.ID_ANY, wx.Colour(0, 0, 0), wx.DefaultPosition, wx.DefaultSize, wx.CLRP_DEFAULT_STYLE) self.pickerBaseColour.SetMinSize(wx.Size(100, -1)) sizerSystem.Add(self.pickerBaseColour, 0, wx.ALL | wx.EXPAND, 5) self.checkMonitorTemp = wx.CheckBox( self.panelSystem, wx.ID_ANY, u"Set colour based on CPU temperature", wx.DefaultPosition, wx.DefaultSize, 0) self.checkMonitorTemp.SetToolTip( u"Requires 'Open Hardware Monitor' to be running") sizerSystem.Add(self.checkMonitorTemp, 0, wx.ALL, 5) menuGradChoiceChoices = [] self.menuGradChoice = wx.Choice(self.panelSystem, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, menuGradChoiceChoices, 0) self.menuGradChoice.SetSelection(0) sizerSystem.Add(self.menuGradChoice, 0, wx.ALL | wx.EXPAND, 5) self.m_staticline1 = wx.StaticLine(self.panelSystem, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, wx.LI_HORIZONTAL) sizerSystem.Add(self.m_staticline1, 0, wx.ALL | wx.EXPAND, 5) self.labelDynamicst3 = wx.StaticText(self.panelSystem, wx.ID_ANY, u"Dynamics", wx.DefaultPosition, wx.DefaultSize, 0) self.labelDynamicst3.Wrap(-1) sizerSystem.Add(self.labelDynamicst3, 0, wx.ALL, 5) self.checkMonitorLoad = wx.CheckBox(self.panelSystem, wx.ID_ANY, u"Pulse based on CPU load", wx.DefaultPosition, wx.DefaultSize, 0) sizerSystem.Add(self.checkMonitorLoad, 0, wx.ALL, 5) self.m_staticline4 = wx.StaticLine(self.panelSystem, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, wx.LI_HORIZONTAL) sizerSystem.Add(self.m_staticline4, 0, wx.EXPAND | wx.ALL, 5) sizerTemperature = wx.BoxSizer(wx.HORIZONTAL) sizerTmin = wx.BoxSizer(wx.VERTICAL) self.label_Tmin = wx.StaticText(self.panelSystem, wx.ID_ANY, u"Minimum T", wx.DefaultPosition, wx.DefaultSize, 0) self.label_Tmin.Wrap(-1) sizerTmin.Add(self.label_Tmin, 0, wx.ALL, 5) self.spinTmin = wx.SpinCtrl(self.panelSystem, wx.ID_ANY, wx.EmptyString, wx.DefaultPosition, wx.DefaultSize, wx.SP_ARROW_KEYS | wx.TE_PROCESS_ENTER, 0, 100, 0) sizerTmin.Add(self.spinTmin, 0, wx.ALL, 5) sizerTemperature.Add(sizerTmin, 1, wx.EXPAND, 5) sizerTmax = wx.BoxSizer(wx.VERTICAL) self.labelTmax = wx.StaticText(self.panelSystem, wx.ID_ANY, u"Maximum T", wx.DefaultPosition, wx.DefaultSize, 0) self.labelTmax.Wrap(-1) sizerTmax.Add(self.labelTmax, 0, wx.ALL, 5) self.spinTmax = wx.SpinCtrl(self.panelSystem, wx.ID_ANY, wx.EmptyString, wx.DefaultPosition, wx.DefaultSize, wx.SP_ARROW_KEYS | wx.TE_PROCESS_ENTER, 0, 100, 0) sizerTmax.Add(self.spinTmax, 0, wx.ALL, 5) sizerTemperature.Add(sizerTmax, 1, wx.EXPAND, 5) sizerSystem.Add(sizerTemperature, 1, wx.SHAPED, 5) self.panelSystem.SetSizer(sizerSystem) self.panelSystem.Layout() sizerSystem.Fit(self.panelSystem) self.notebookMain.AddPage(self.panelSystem, u"System", False) self.panelRainbow = wx.Panel(self.notebookMain, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, wx.TAB_TRAVERSAL) self.panelRainbow.SetBackgroundColour( wx.SystemSettings.GetColour(wx.SYS_COLOUR_WINDOW)) sizerRainbow = wx.BoxSizer(wx.VERTICAL) self.labelExtras = wx.StaticText(self.panelRainbow, wx.ID_ANY, u"Rainbow mode activated", wx.DefaultPosition, wx.DefaultSize, 0) self.labelExtras.Wrap(-1) sizerRainbow.Add(self.labelExtras, 0, wx.ALL, 5) self.panelRainbow.SetSizer(sizerRainbow) self.panelRainbow.Layout() sizerRainbow.Fit(self.panelRainbow) self.notebookMain.AddPage(self.panelRainbow, u"Rainbow", False) self.panelCinema = wx.Panel(self.notebookMain, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, wx.TAB_TRAVERSAL) self.panelCinema.SetBackgroundColour(wx.Colour(255, 255, 255)) sizerCinema = wx.BoxSizer(wx.VERTICAL) self.labelContrast = wx.StaticText(self.panelCinema, wx.ID_ANY, u"Contrast", wx.DefaultPosition, wx.DefaultSize, 0) self.labelContrast.Wrap(-1) sizerCinema.Add(self.labelContrast, 0, wx.ALL, 5) self.sliderContrast = wx.Slider(self.panelCinema, wx.ID_ANY, 25, 1, 50, wx.DefaultPosition, wx.DefaultSize, wx.SL_HORIZONTAL) sizerCinema.Add(self.sliderContrast, 0, wx.ALL | wx.EXPAND, 5) self.labelBrightness = wx.StaticText(self.panelCinema, wx.ID_ANY, u"Brightness", wx.DefaultPosition, wx.DefaultSize, 0) self.labelBrightness.Wrap(-1) sizerCinema.Add(self.labelBrightness, 0, wx.ALL, 5) self.sliderBrightness = wx.Slider(self.panelCinema, wx.ID_ANY, 100, 0, 100, wx.DefaultPosition, wx.DefaultSize, wx.SL_HORIZONTAL) sizerCinema.Add(self.sliderBrightness, 0, wx.ALL | wx.EXPAND, 5) self.panelCinema.SetSizer(sizerCinema) self.panelCinema.Layout() sizerCinema.Fit(self.panelCinema) self.notebookMain.AddPage(self.panelCinema, u"Cinema", True) sizerMain.Add(self.notebookMain, 1, wx.ALL | wx.EXPAND, 5) self.SetSizer(sizerMain) self.Layout() self.statusbarMain = self.CreateStatusBar(1, wx.DEFAULT_FRAME_STYLE, wx.ID_ANY) self.Centre(wx.BOTH) # Connect Events self.Bind(wx.EVT_MENU, self.OnAbout, id=self.menuAbout.GetId()) self.Bind(wx.EVT_MENU, self.OnExit, id=self.menuExit.GetId()) self.notebookMain.Bind(wx.EVT_NOTEBOOK_PAGE_CHANGED, self.onNotebookChange) self.pickerBaseColour.Bind(wx.EVT_COLOURPICKER_CHANGED, self.OnColourChange) self.checkMonitorTemp.Bind(wx.EVT_CHECKBOX, self.OnMonitorTempChange) self.menuGradChoice.Bind(wx.EVT_CHOICE, self.onGradChoice) self.checkMonitorLoad.Bind(wx.EVT_CHECKBOX, self.OnMonitorLoadChange) self.spinTmin.Bind(wx.EVT_SPINCTRL, self.onTchange) self.spinTmin.Bind(wx.EVT_TEXT_ENTER, self.onTchange) self.spinTmax.Bind(wx.EVT_SPINCTRL, self.onTchange) self.spinTmax.Bind(wx.EVT_TEXT_ENTER, self.onTchange) self.sliderContrast.Bind(wx.EVT_SCROLL, self.onContrastChange) self.sliderBrightness.Bind(wx.EVT_SCROLL, self.onBrightnessChange)
def __init__(self, parent): # make that the plugin info is displayed in the middle of the screen frame_w = 320 frame_h = 250 x = wx.SystemSettings.GetMetric(wx.SYS_SCREEN_X) // 2 - frame_w // 2 y = wx.SystemSettings.GetMetric(wx.SYS_SCREEN_Y) // 2 - frame_h // 2 wx.Frame.__init__(self, parent, title="Plugin Info", pos=(x, y), size=(frame_w, frame_h)) # Frame icon ib = wx.IconBundle() icon_32 = wx.EmptyIcon() icon_32.CopyFromBitmap( wx.Bitmap(os.path.join(self.icon_folder, "favicon_32.png"), wx.BITMAP_TYPE_ANY)) ib.AddIcon(icon_32) icon_48 = wx.EmptyIcon() icon_48.CopyFromBitmap( wx.Bitmap(os.path.join(self.icon_folder, "favicon_48.png"), wx.BITMAP_TYPE_ANY)) ib.AddIcon(icon_48) self.SetIcons(ib) p = wx.Panel(self) nb = wx.Notebook(p) for store in compass_model.get_stores(): try: # log.debug(store.plugin_name()) # log.debug(store.plugin_description()) pnl = wx.Panel(nb) t = rtc.RichTextCtrl(pnl, -1, style=wx.TE_READONLY) t.BeginFontSize(9) t.BeginAlignment(wx.TEXT_ALIGNMENT_CENTRE) t.BeginBold() t.WriteText("Name: ") t.EndBold() t.BeginItalic() t.WriteText(store.plugin_name()) t.EndItalic() t.Newline() t.Newline() t.BeginBold() t.WriteText("Description") t.EndBold() t.Newline() t.BeginItalic() t.WriteText(store.plugin_description()) t.EndItalic() t.Newline() #store.plugin_description(), style=wx.TE_MULTILINE|wx.TE_READONLY|wx.TE_CENTER) szr = wx.BoxSizer() szr.Add(t, 1, wx.ALL | wx.EXPAND, 5) pnl.SetSizer(szr) nb.AddPage(pnl, store.plugin_name()) except NotImplementedError: # skip not implemented plugin name/description log.debug("Not implemented name/description for %s" % store) sizer = wx.BoxSizer() sizer.Add(nb, 1, wx.ALL | wx.EXPAND, 3) p.SetSizer(sizer)
def __init__(self, parent): wx.Frame.__init__(self, parent, id=wx.ID_ANY, title=u"Python Utility - PDF&DOCX", pos=wx.DefaultPosition, size=wx.Size(928, 563), style=wx.DEFAULT_FRAME_STYLE | wx.TAB_TRAVERSAL) self.SetSizeHints(wx.DefaultSize, wx.DefaultSize) bSizer5 = wx.BoxSizer(wx.VERTICAL) self.m_panel4 = wx.Panel(self, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, wx.TAB_TRAVERSAL) bSizer7 = wx.BoxSizer(wx.HORIZONTAL) bSizer8 = wx.BoxSizer(wx.VERTICAL) sbSizer2 = wx.StaticBoxSizer( wx.StaticBox(self.m_panel4, wx.ID_ANY, u"File workspace"), wx.VERTICAL) self.m_notebook21 = wx.Notebook(sbSizer2.GetStaticBox(), wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, 0) self.m_panel5 = wx.Panel(self.m_notebook21, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, wx.TAB_TRAVERSAL) bSizer101 = wx.BoxSizer(wx.VERTICAL) self.m_dataViewListCtrl1 = wx.dataview.DataViewListCtrl( self.m_panel5, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, 0) bSizer101.Add(self.m_dataViewListCtrl1, 1, wx.ALL | wx.EXPAND, 5) self.m_panel5.SetSizer(bSizer101) self.m_panel5.Layout() bSizer101.Fit(self.m_panel5) self.m_notebook21.AddPage(self.m_panel5, u"PDFs", True) self.m_panel6 = wx.Panel(self.m_notebook21, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, wx.TAB_TRAVERSAL) bSizer111 = wx.BoxSizer(wx.VERTICAL) self.m_dataViewListCtrl5 = wx.dataview.DataViewListCtrl( self.m_panel6, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, 0) bSizer111.Add(self.m_dataViewListCtrl5, 1, wx.ALL | wx.EXPAND, 5) self.m_panel6.SetSizer(bSizer111) self.m_panel6.Layout() bSizer111.Fit(self.m_panel6) self.m_notebook21.AddPage(self.m_panel6, u"DOCXs", False) sbSizer2.Add(self.m_notebook21, 1, wx.EXPAND | wx.ALL, 5) self.m_checkBox1 = wx.CheckBox(sbSizer2.GetStaticBox(), wx.ID_ANY, u"Allow loading duplicate files", wx.DefaultPosition, wx.DefaultSize, 0) self.m_checkBox1.SetBackgroundColour( wx.SystemSettings.GetColour(wx.SYS_COLOUR_APPWORKSPACE)) sbSizer2.Add(self.m_checkBox1, 0, wx.ALL, 5) bSizer8.Add(sbSizer2, 1, wx.EXPAND, 5) bSizer11 = wx.BoxSizer(wx.HORIZONTAL) bSizer11.AddStretchSpacer(1) self.m_button5 = wx.Button(self.m_panel4, wx.ID_ANY, u"Add Folder", wx.DefaultPosition, wx.DefaultSize, 0) bSizer11.Add(self.m_button5, 3, wx.ALIGN_LEFT | wx.ALL, 5) bSizer11.AddStretchSpacer(1) self.m_button6 = wx.Button(self.m_panel4, wx.ID_ANY, u"Add File(s)", wx.DefaultPosition, wx.DefaultSize, 0) bSizer11.Add(self.m_button6, 3, wx.ALL, 5) bSizer11.AddStretchSpacer(1) bSizer8.Add(bSizer11, 0, wx.EXPAND, 5) sbSizer21 = wx.StaticBoxSizer( wx.StaticBox(self.m_panel4, wx.ID_ANY, u"Unload:"), wx.HORIZONTAL) self.m_button10 = wx.Button(sbSizer21.GetStaticBox(), wx.ID_ANY, u"PDFs", wx.DefaultPosition, wx.DefaultSize, 0) self.m_button10.SetMaxSize(wx.Size(60, -1)) sbSizer21.Add(self.m_button10, 3, wx.ALL, 5) sbSizer21.AddStretchSpacer(1) self.m_button11 = wx.Button(sbSizer21.GetStaticBox(), wx.ID_ANY, u"DOCXs", wx.DefaultPosition, wx.DefaultSize, 0) self.m_button11.SetMaxSize(wx.Size(60, -1)) sbSizer21.Add(self.m_button11, 3, wx.ALL, 5) sbSizer21.AddStretchSpacer(1) self.m_button12 = wx.Button(sbSizer21.GetStaticBox(), wx.ID_ANY, u"All", wx.DefaultPosition, wx.DefaultSize, 0) self.m_button12.SetMaxSize(wx.Size(60, -1)) sbSizer21.Add(self.m_button12, 3, wx.ALL, 5) sbSizer21.AddStretchSpacer(1) self.m_button13 = wx.Button(sbSizer21.GetStaticBox(), wx.ID_ANY, u"Selected", wx.DefaultPosition, wx.DefaultSize, 0) self.m_button13.SetMaxSize(wx.Size(60, -1)) sbSizer21.Add(self.m_button13, 3, wx.ALL, 5) bSizer8.Add(sbSizer21, 0, wx.EXPAND, 5) bSizer7.Add(bSizer8, 5, wx.EXPAND, 5) bSizer9 = wx.BoxSizer(wx.VERTICAL) bSizer9.AddStretchSpacer(1) self.m_button1 = wx.Button(self.m_panel4, wx.ID_ANY, u">", wx.DefaultPosition, wx.DefaultSize, 0) self.m_button1.SetMaxSize(wx.Size(40, 30)) bSizer9.Add(self.m_button1, 1, wx.ALIGN_CENTER | wx.ALL, 5) self.m_button2 = wx.Button(self.m_panel4, wx.ID_ANY, u">>", wx.DefaultPosition, wx.DefaultSize, 0) self.m_button2.SetMaxSize(wx.Size(40, 30)) bSizer9.Add(self.m_button2, 1, wx.ALIGN_CENTER | wx.ALL, 5) bSizer9.AddStretchSpacer(1) self.m_button3 = wx.Button(self.m_panel4, wx.ID_ANY, u"<<", wx.DefaultPosition, wx.DefaultSize, 0) self.m_button3.SetMaxSize(wx.Size(40, 30)) bSizer9.Add(self.m_button3, 1, wx.ALIGN_CENTER | wx.ALL, 5) self.m_button4 = wx.Button(self.m_panel4, wx.ID_ANY, u"<", wx.DefaultPosition, wx.DefaultSize, 0) self.m_button4.SetMaxSize(wx.Size(40, 30)) bSizer9.Add(self.m_button4, 1, wx.ALIGN_CENTER | wx.ALL, 5) bSizer9.AddStretchSpacer(1) bSizer7.Add(bSizer9, 1, wx.EXPAND, 5) bSizer10 = wx.BoxSizer(wx.VERTICAL) self.m_notebook2 = wx.Notebook(self.m_panel4, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, 0) self.m_panel7 = wx.Panel(self.m_notebook2, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, wx.TAB_TRAVERSAL) bSizer15 = wx.BoxSizer(wx.VERTICAL) self.m_dataViewListCtrl2 = wx.dataview.DataViewListCtrl( self.m_panel7, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, 0) bSizer15.Add(self.m_dataViewListCtrl2, 1, wx.ALL | wx.EXPAND, 5) self.m_button7 = wx.Button(self.m_panel7, wx.ID_ANY, u"Convert All", wx.DefaultPosition, wx.DefaultSize, 0) bSizer15.Add(self.m_button7, 0, wx.ALL | wx.ALIGN_CENTER_HORIZONTAL, 5) self.m_panel7.SetSizer(bSizer15) self.m_panel7.Layout() bSizer15.Fit(self.m_panel7) self.m_notebook2.AddPage(self.m_panel7, u"PDF to DOCX", True) self.m_panel8 = wx.Panel(self.m_notebook2, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, wx.TAB_TRAVERSAL) bSizer14 = wx.BoxSizer(wx.VERTICAL) self.m_dataViewListCtrl21 = wx.dataview.DataViewListCtrl( self.m_panel8, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, 0) bSizer14.Add(self.m_dataViewListCtrl21, 1, wx.ALL | wx.EXPAND, 5) self.m_button8 = wx.Button(self.m_panel8, wx.ID_ANY, u"Convert All", wx.DefaultPosition, wx.DefaultSize, 0) bSizer14.Add(self.m_button8, 0, wx.ALL | wx.ALIGN_CENTER_HORIZONTAL, 5) self.m_panel8.SetSizer(bSizer14) self.m_panel8.Layout() bSizer14.Fit(self.m_panel8) self.m_notebook2.AddPage(self.m_panel8, u"DOCX to PDF", False) self.m_panel9 = wx.Panel(self.m_notebook2, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, wx.TAB_TRAVERSAL) bSizer13 = wx.BoxSizer(wx.VERTICAL) self.m_dataViewListCtrl6 = wx.dataview.DataViewListCtrl( self.m_panel9, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, 0) bSizer13.Add(self.m_dataViewListCtrl6, 1, wx.ALL | wx.EXPAND, 5) self.m_button9 = wx.Button(self.m_panel9, wx.ID_ANY, u"Merge All", wx.DefaultPosition, wx.DefaultSize, 0) bSizer13.Add(self.m_button9, 0, wx.ALL | wx.ALIGN_CENTER_HORIZONTAL, 5) self.m_panel9.SetSizer(bSizer13) self.m_panel9.Layout() bSizer13.Fit(self.m_panel9) self.m_notebook2.AddPage(self.m_panel9, u"PDF Merger", False) bSizer10.Add(self.m_notebook2, 1, wx.EXPAND | wx.ALL, 5) self.m_gauge1 = wx.Gauge(self.m_panel4, wx.ID_ANY, 100, wx.DefaultPosition, wx.DefaultSize, wx.GA_HORIZONTAL) self.m_gauge1.SetValue(0) bSizer10.Add(self.m_gauge1, 0, wx.ALL | wx.EXPAND, 5) bSizer7.Add(bSizer10, 5, wx.EXPAND, 5) self.m_panel4.SetSizer(bSizer7) self.m_panel4.Layout() bSizer7.Fit(self.m_panel4) bSizer5.Add(self.m_panel4, 1, wx.EXPAND | wx.ALL, 5) self.SetSizer(bSizer5) self.Layout() self.Centre(wx.BOTH) ### data list column appending self.m_dataViewListCtrl1.AppendTextColumn("Name") self.m_dataViewListCtrl1.AppendTextColumn("Path") self.m_dataViewListCtrl1.AppendToggleColumn("") self.m_dataViewListCtrl5.AppendTextColumn("Name") self.m_dataViewListCtrl5.AppendTextColumn("Path") self.m_dataViewListCtrl5.AppendToggleColumn("") self.m_dataViewListCtrl2.AppendTextColumn("Name") self.m_dataViewListCtrl2.AppendTextColumn("Path") self.m_dataViewListCtrl2.AppendToggleColumn("") self.m_dataViewListCtrl21.AppendTextColumn("Name") self.m_dataViewListCtrl21.AppendTextColumn("Path") self.m_dataViewListCtrl21.AppendToggleColumn("") self.m_dataViewListCtrl6.AppendTextColumn("#") self.m_dataViewListCtrl6.AppendTextColumn("Name") self.m_dataViewListCtrl6.AppendTextColumn("Path") self.m_dataViewListCtrl6.AppendToggleColumn("") ### event binding self.m_button5.Bind(wx.EVT_BUTTON, self.add_folder) self.m_button6.Bind(wx.EVT_BUTTON, self.add_files) self.m_button10.Bind(wx.EVT_BUTTON, self.unload_PDFs) self.m_button11.Bind(wx.EVT_BUTTON, self.unload_DOCXs) self.m_button12.Bind(wx.EVT_BUTTON, self.unload_all) self.m_button13.Bind(wx.EVT_BUTTON, self.unload_selected) self.m_button1.Bind(wx.EVT_BUTTON, self.item_add) self.m_button2.Bind(wx.EVT_BUTTON, self.item_add_all) self.m_button3.Bind(wx.EVT_BUTTON, self.item_remove_all) self.m_button4.Bind(wx.EVT_BUTTON, self.item_remove) self.m_button7.Bind(wx.EVT_BUTTON, self.convert_pdf2doc) self.m_button8.Bind(wx.EVT_BUTTON, self.convert_doc2pdf) self.m_button9.Bind(wx.EVT_BUTTON, self.merge) self.m_notebook21.Bind(wx.EVT_NOTEBOOK_PAGE_CHANGED, self.pageflip_src) self.m_notebook2.Bind(wx.EVT_NOTEBOOK_PAGE_CHANGED, self.pageflip_dest) self.m_checkBox1.Bind(wx.EVT_CHECKBOX, self.allow_duplicates) self.m_dataViewListCtrl1.Bind( wx.dataview.EVT_DATAVIEW_ITEM_VALUE_CHANGED, self.select_src1) self.m_dataViewListCtrl5.Bind( wx.dataview.EVT_DATAVIEW_ITEM_VALUE_CHANGED, self.select_src2) self.m_dataViewListCtrl2.Bind( wx.dataview.EVT_DATAVIEW_ITEM_VALUE_CHANGED, self.select_dest1) self.m_dataViewListCtrl21.Bind( wx.dataview.EVT_DATAVIEW_ITEM_VALUE_CHANGED, self.select_dest2) self.m_dataViewListCtrl6.Bind( wx.dataview.EVT_DATAVIEW_ITEM_VALUE_CHANGED, self.select_dest3)
def __init__(self, *args, **kwds): # begin wxGlade: PyOgg2_MyFrame.__init__ kwds["style"] = kwds.get("style", 0) | wx.DEFAULT_FRAME_STYLE wx.Frame.__init__(self, *args, **kwds) self.SetSize((600, 500)) self.SetTitle(_("mp3 2 ogg")) # Menu Bar self.Mp3_To_Ogg_menubar = wx.MenuBar() wxglade_tmp_menu = wx.Menu() wxglade_tmp_menu.Append(wx.ID_OPEN, _("&Open"), "") self.Bind(wx.EVT_MENU, self.OnOpen, id=wx.ID_OPEN) wxglade_tmp_menu.Append(wx.ID_EXIT, _("&Quit"), "") self.Bind(wx.EVT_MENU, self.OnClose, id=wx.ID_EXIT) self.Mp3_To_Ogg_menubar.Append(wxglade_tmp_menu, _("&File")) wxglade_tmp_menu = wx.Menu() wxglade_tmp_menu.Append(wx.ID_ABOUT, _("&About"), _("About dialog")) self.Bind(wx.EVT_MENU, self.OnAboutDialog, id=wx.ID_ABOUT) self.Mp3_To_Ogg_menubar.Append(wxglade_tmp_menu, _("&Help")) self.SetMenuBar(self.Mp3_To_Ogg_menubar) # Menu Bar end self.Mp3_To_Ogg_statusbar = self.CreateStatusBar(2) self.Mp3_To_Ogg_statusbar.SetStatusWidths([-2, -1]) # statusbar fields Mp3_To_Ogg_statusbar_fields = [_("Mp3_To_Ogg_statusbar"), ""] for i in range(len(Mp3_To_Ogg_statusbar_fields)): self.Mp3_To_Ogg_statusbar.SetStatusText( Mp3_To_Ogg_statusbar_fields[i], i) # Tool Bar self.Mp3_To_Ogg_toolbar = wx.ToolBar(self, -1, style=wx.TB_HORIZONTAL | wx.TB_TEXT) self.Mp3_To_Ogg_toolbar.AddTool( wx.ID_OPEN, _("&Open"), wx.NullBitmap, wx.NullBitmap, wx.ITEM_NORMAL, _("Open a file"), _("Open a MP3 file to convert into OGG format")) self.Bind(wx.EVT_TOOL, self.OnOpen, id=wx.ID_OPEN) self.SetToolBar(self.Mp3_To_Ogg_toolbar) self.Mp3_To_Ogg_toolbar.Realize() # Tool Bar end sizer_1 = wx.FlexGridSizer(3, 1, 0, 0) self.notebook_1 = wx.Notebook(self, wx.ID_ANY, style=wx.NB_BOTTOM) sizer_1.Add(self.notebook_1, 1, wx.EXPAND, 0) self.notebook_1_pane_1 = wx.Panel(self.notebook_1, wx.ID_ANY) self.notebook_1.AddPage(self.notebook_1_pane_1, _("Input File")) _gszr_pane1 = wx.FlexGridSizer(1, 3, 0, 0) _lbl_input_filename = wx.StaticText(self.notebook_1_pane_1, wx.ID_ANY, _("File name:")) _gszr_pane1.Add(_lbl_input_filename, 0, wx.ALIGN_CENTER_VERTICAL | wx.ALL, 5) self.text_ctrl_1 = wx.TextCtrl(self.notebook_1_pane_1, wx.ID_ANY, "") _gszr_pane1.Add(self.text_ctrl_1, 1, wx.ALIGN_CENTER_VERTICAL | wx.ALL | wx.EXPAND, 5) self.button_3 = wx.Button(self.notebook_1_pane_1, wx.ID_OPEN, "") _gszr_pane1.Add(self.button_3, 0, wx.ALL, 5) self.notebook_1_pane_2 = wx.Panel(self.notebook_1, wx.ID_ANY) self.notebook_1.AddPage(self.notebook_1_pane_2, _("Converting Options")) sizer_4 = wx.BoxSizer(wx.HORIZONTAL) self.rbx_sampling_rate = wx.RadioBox( self.notebook_1_pane_2, wx.ID_ANY, _("Sampling Rate"), choices=[_("44 kbit"), _("128 kbit")], majorDimension=0, style=wx.RA_SPECIFY_ROWS) self.rbx_sampling_rate.SetSelection(0) sizer_4.Add(self.rbx_sampling_rate, 1, wx.ALL | wx.EXPAND, 5) sizer_3 = wx.StaticBoxSizer( wx.StaticBox(self.notebook_1_pane_2, wx.ID_ANY, _("Misc")), wx.HORIZONTAL) sizer_4.Add(sizer_3, 1, wx.ALL | wx.EXPAND, 5) self.cbx_love = wx.CheckBox(self.notebook_1_pane_2, wx.ID_ANY, _(u"♥ Love this song")) self.cbx_love.SetToolTip(_(u"Yes!\nWe ♥ it!")) self.cbx_love.SetValue(1) sizer_3.Add(self.cbx_love, 0, wx.ALL | wx.SHAPED, 5) self.notebook_1_pane_3 = wx.Panel(self.notebook_1, wx.ID_ANY) self.notebook_1.AddPage(self.notebook_1_pane_3, _("Converting Progress")) _szr_pane3 = wx.BoxSizer(wx.HORIZONTAL) self.text_ctrl_2 = wx.TextCtrl(self.notebook_1_pane_3, wx.ID_ANY, "", style=wx.TE_MULTILINE) _szr_pane3.Add(self.text_ctrl_2, 1, wx.ALL | wx.EXPAND, 5) self.notebook_1_pane_4 = wx.Panel(self.notebook_1, wx.ID_ANY) self.notebook_1.AddPage(self.notebook_1_pane_4, _("Output File")) _gszr_pane4 = wx.FlexGridSizer(2, 3, 0, 0) self._lbl_output_filename = wx.StaticText(self.notebook_1_pane_4, wx.ID_ANY, _("File name:")) _gszr_pane4.Add(self._lbl_output_filename, 0, wx.ALIGN_CENTER_VERTICAL | wx.ALL, 5) self.text_ctrl_3 = wx.TextCtrl(self.notebook_1_pane_4, wx.ID_ANY, "") self.text_ctrl_3.SetToolTip( _("File name of the output file\nAn existing file will be overwritten without futher information!" )) _gszr_pane4.Add(self.text_ctrl_3, 0, wx.ALL | wx.EXPAND, 5) self.button_4 = wx.Button(self.notebook_1_pane_4, wx.ID_OPEN, "") _gszr_pane4.Add(self.button_4, 0, wx.ALL, 5) _gszr_pane4.Add((20, 20), 0, 0, 0) self.checkbox_1 = wx.CheckBox(self.notebook_1_pane_4, wx.ID_ANY, _("Overwrite existing file")) self.checkbox_1.SetToolTip(_("Overwrite an existing file")) self.checkbox_1.SetValue(1) _gszr_pane4.Add(self.checkbox_1, 0, wx.ALL | wx.EXPAND, 5) _gszr_pane4.Add((20, 20), 0, 0, 0) self.notebook_1_pane_5 = wx.Panel(self.notebook_1, wx.ID_ANY) self.notebook_1.AddPage(self.notebook_1_pane_5, _("Some Text")) sizer_5 = wx.BoxSizer(wx.HORIZONTAL) self.label_1 = wx.StaticText( self.notebook_1_pane_5, wx.ID_ANY, _("Please check the format of those lines manually:\n\nSingle line without any special characters.\n\na line break between new and line: new\nline\na tab character between new and line: new\tline\na backslash and a t \\t\ntwo backslash characters: \\\\ \nthree backslash characters: \\\\\\ \na double quote: \"\nan escaped new line sequence: \\n" )) sizer_5.Add(self.label_1, 1, wx.ALL | wx.EXPAND, 5) self.static_line_1 = wx.StaticLine(self, wx.ID_ANY) sizer_1.Add(self.static_line_1, 0, wx.ALL | wx.EXPAND, 5) sizer_2 = wx.FlexGridSizer(1, 3, 0, 0) sizer_1.Add(sizer_2, 0, wx.ALIGN_RIGHT, 0) self.button_5 = wx.Button(self, wx.ID_CLOSE, "") sizer_2.Add(self.button_5, 0, wx.ALIGN_RIGHT | wx.ALL, 5) self.button_2 = wx.Button(self, wx.ID_CANCEL, "", style=wx.BU_TOP) sizer_2.Add(self.button_2, 0, wx.ALIGN_RIGHT | wx.ALL, 5) self.button_1 = wx.Button(self, wx.ID_OK, "", style=wx.BU_TOP) sizer_2.Add(self.button_1, 0, wx.ALIGN_RIGHT | wx.ALL, 5) self.notebook_1_pane_5.SetSizer(sizer_5) _gszr_pane4.AddGrowableCol(1) self.notebook_1_pane_4.SetSizer(_gszr_pane4) self.notebook_1_pane_3.SetSizer(_szr_pane3) self.notebook_1_pane_2.SetSizer(sizer_4) _gszr_pane1.AddGrowableCol(1) self.notebook_1_pane_1.SetSizer(_gszr_pane1) sizer_1.AddGrowableRow(0) sizer_1.AddGrowableCol(0) self.SetSizer(sizer_1) sizer_1.SetSizeHints(self) self.Layout() self.Centre() self.Bind(wx.EVT_BUTTON, self.startConverting, self.button_1)
def __init__(self, parent): wx.Dialog.__init__(self, parent, id=wx.ID_ANY, title=u"Calibration", pos=wx.DefaultPosition, size=wx.Size(640, 850), style=wx.DEFAULT_DIALOG_STYLE | wx.RESIZE_BORDER) # self.SetSizeHints( wx.DefaultSize, wx.DefaultSize ) fgSizer7 = wx.FlexGridSizer(0, 1, 0, 0) fgSizer7.AddGrowableCol(0) fgSizer7.AddGrowableRow(0) fgSizer7.SetFlexibleDirection(wx.BOTH) fgSizer7.SetNonFlexibleGrowMode(wx.FLEX_GROWMODE_SPECIFIED) self.m_notebook = wx.Notebook(self, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, 0) self.m_panel3 = wx.Panel(self.m_notebook, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, wx.TAB_TRAVERSAL) fgSizer12 = wx.FlexGridSizer(0, 1, 0, 0) fgSizer12.AddGrowableCol(0) fgSizer12.AddGrowableRow(0) fgSizer12.SetFlexibleDirection(wx.BOTH) fgSizer12.SetNonFlexibleGrowMode(wx.FLEX_GROWMODE_SPECIFIED) self.m_splitter1 = wx.SplitterWindow(self.m_panel3, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, wx.SP_3D | wx.SP_LIVE_UPDATE) self.m_splitter1.SetSashGravity(1) self.m_splitter1.SetMinimumPaneSize(220) self.m_panel4 = wx.Panel(self.m_splitter1, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, wx.TAB_TRAVERSAL) fgSizer22 = wx.FlexGridSizer(0, 2, 0, 0) fgSizer22.AddGrowableCol(0) fgSizer22.AddGrowableRow(0) fgSizer22.SetFlexibleDirection(wx.BOTH) fgSizer22.SetNonFlexibleGrowMode(wx.FLEX_GROWMODE_SPECIFIED) self.BoatPlot = wx.glcanvas.GLCanvas( self.m_panel3, attribList=[ wx.glcanvas.WX_GL_RGBA, wx.glcanvas.WX_GL_DOUBLEBUFFER, wx.glcanvas.WX_GL_DEPTH_SIZE, 16, wx.glcanvas.WX_GL_STENCIL_SIZE, 8, 0 ]) fgSizer22.Add(self.BoatPlot, 0, wx.ALL | wx.EXPAND, 5) self.m_panel4.SetSizer(fgSizer22) self.m_panel4.Layout() fgSizer22.Fit(self.m_panel4) self.m_panel5 = wx.Panel(self.m_splitter1, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, wx.TAB_TRAVERSAL) fgSizer31 = wx.FlexGridSizer(0, 2, 0, 0) fgSizer31.AddGrowableCol(0) fgSizer31.AddGrowableRow(0) fgSizer31.SetFlexibleDirection(wx.BOTH) fgSizer31.SetNonFlexibleGrowMode(wx.FLEX_GROWMODE_SPECIFIED) fgSizer29 = wx.FlexGridSizer(0, 1, 0, 0) fgSizer29.AddGrowableCol(0) fgSizer29.SetFlexibleDirection(wx.BOTH) fgSizer29.SetNonFlexibleGrowMode(wx.FLEX_GROWMODE_SPECIFIED) fgSizer18 = wx.FlexGridSizer(1, 0, 0, 0) fgSizer18.SetFlexibleDirection(wx.BOTH) fgSizer18.SetNonFlexibleGrowMode(wx.FLEX_GROWMODE_SPECIFIED) self.m_staticText16 = wx.StaticText(self.m_panel5, wx.ID_ANY, u"Alignment", wx.DefaultPosition, wx.DefaultSize, 0) self.m_staticText16.Wrap(-1) fgSizer18.Add(self.m_staticText16, 0, wx.ALL, 5) self.bReset = wx.Button(self.m_panel5, wx.ID_ANY, u"Reset", wx.DefaultPosition, wx.DefaultSize, 0) fgSizer18.Add(self.bReset, 0, wx.ALL, 5) self.stAlignment = wx.StaticText(self.m_panel5, wx.ID_ANY, wx.EmptyString, wx.DefaultPosition, wx.DefaultSize, 0) self.stAlignment.Wrap(-1) fgSizer18.Add(self.stAlignment, 0, wx.ALL | wx.EXPAND, 5) fgSizer29.Add(fgSizer18, 1, wx.EXPAND, 5) fgSizer19 = wx.FlexGridSizer(1, 0, 0, 0) fgSizer19.AddGrowableCol(2) fgSizer19.SetFlexibleDirection(wx.BOTH) fgSizer19.SetNonFlexibleGrowMode(wx.FLEX_GROWMODE_SPECIFIED) self.m_staticText19 = wx.StaticText(self.m_panel5, wx.ID_ANY, u"Pitch", wx.DefaultPosition, wx.DefaultSize, 0) self.m_staticText19.Wrap(-1) fgSizer19.Add(self.m_staticText19, 0, wx.ALL, 5) self.stPitch = wx.StaticText(self.m_panel5, wx.ID_ANY, u"N/A", wx.DefaultPosition, wx.DefaultSize, 0) self.stPitch.Wrap(-1) fgSizer19.Add(self.stPitch, 0, wx.ALL, 5) self.gAlignment = wx.Gauge(self.m_panel5, wx.ID_ANY, 100, wx.DefaultPosition, wx.DefaultSize, wx.GA_HORIZONTAL) self.gAlignment.SetValue(0) fgSizer19.Add(self.gAlignment, 0, wx.ALIGN_RIGHT | wx.ALL, 5) fgSizer29.Add(fgSizer19, 1, wx.EXPAND, 5) fgSizer13 = wx.FlexGridSizer(1, 0, 0, 0) fgSizer13.SetFlexibleDirection(wx.BOTH) fgSizer13.SetNonFlexibleGrowMode(wx.FLEX_GROWMODE_SPECIFIED) self.m_staticText34 = wx.StaticText(self.m_panel5, wx.ID_ANY, u"Roll", wx.DefaultPosition, wx.DefaultSize, 0) self.m_staticText34.Wrap(-1) fgSizer13.Add(self.m_staticText34, 0, wx.ALL, 5) self.stRoll = wx.StaticText(self.m_panel5, wx.ID_ANY, u" N/A ", wx.DefaultPosition, wx.DefaultSize, 0) self.stRoll.Wrap(-1) fgSizer13.Add(self.stRoll, 0, wx.ALL, 5) self.m_staticText18 = wx.StaticText(self.m_panel5, wx.ID_ANY, u"Heel", wx.DefaultPosition, wx.DefaultSize, 0) self.m_staticText18.Wrap(-1) fgSizer13.Add(self.m_staticText18, 0, wx.ALL, 5) self.stHeel = wx.StaticText(self.m_panel5, wx.ID_ANY, u" N/A ", wx.DefaultPosition, wx.DefaultSize, 0) self.stHeel.Wrap(-1) fgSizer13.Add(self.stHeel, 0, wx.ALL, 5) self.bLevel = wx.Button(self.m_panel5, wx.ID_ANY, u"Boat is level", wx.DefaultPosition, wx.DefaultSize, 0) fgSizer13.Add(self.bLevel, 0, wx.ALL, 5) fgSizer29.Add(fgSizer13, 1, wx.EXPAND, 5) fgSizer14 = wx.FlexGridSizer(1, 0, 0, 0) fgSizer14.SetFlexibleDirection(wx.BOTH) fgSizer14.SetNonFlexibleGrowMode(wx.FLEX_GROWMODE_SPECIFIED) self.m_staticText22 = wx.StaticText(self.m_panel5, wx.ID_ANY, u"Heading", wx.DefaultPosition, wx.DefaultSize, 0) self.m_staticText22.Wrap(-1) fgSizer14.Add(self.m_staticText22, 0, wx.ALL, 5) self.stHeading = wx.StaticText(self.m_panel5, wx.ID_ANY, u" N/A ", wx.DefaultPosition, wx.DefaultSize, 0) self.stHeading.Wrap(-1) fgSizer14.Add(self.stHeading, 0, wx.ALL, 5) self.m_staticText25 = wx.StaticText(self.m_panel5, wx.ID_ANY, u"Offset", wx.DefaultPosition, wx.DefaultSize, 0) self.m_staticText25.Wrap(-1) fgSizer14.Add(self.m_staticText25, 0, wx.ALL, 5) self.sHeadingOffset = wx.SpinCtrl(self.m_panel5, wx.ID_ANY, wx.EmptyString, wx.DefaultPosition, wx.DefaultSize, wx.SP_ARROW_KEYS, -180, 180, -3) fgSizer14.Add(self.sHeadingOffset, 0, wx.ALL, 5) fgSizer29.Add(fgSizer14, 1, wx.EXPAND, 5) fgSizer31.Add(fgSizer29, 1, wx.EXPAND, 5) fgSizer23 = wx.FlexGridSizer(0, 1, 0, 0) fgSizer23.SetFlexibleDirection(wx.BOTH) fgSizer23.SetNonFlexibleGrowMode(wx.FLEX_GROWMODE_SPECIFIED) sbSizer4 = wx.StaticBoxSizer( wx.StaticBox(self.m_panel5, wx.ID_ANY, u"Coords"), wx.VERTICAL) cCoordsChoices = [u"Sea", u"Boat", u"Compass"] self.cCoords = wx.Choice(sbSizer4.GetStaticBox(), wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, cCoordsChoices, 0) self.cCoords.SetSelection(2) sbSizer4.Add(self.cCoords, 0, wx.ALL, 5) fgSizer23.Add(sbSizer4, 1, wx.EXPAND, 5) self.cbTextureCompass = wx.CheckBox(self.m_panel5, wx.ID_ANY, u"tex compass", wx.DefaultPosition, wx.DefaultSize, 0) self.cbTextureCompass.SetValue(True) fgSizer23.Add(self.cbTextureCompass, 0, wx.ALL, 5) fgSizer31.Add(fgSizer23, 1, wx.EXPAND, 5) self.m_panel5.SetSizer(fgSizer31) self.m_panel5.Layout() fgSizer31.Fit(self.m_panel5) self.m_splitter1.SplitHorizontally(self.m_panel4, self.m_panel5, -1) fgSizer12.Add(self.m_splitter1, 1, wx.EXPAND, 5) fgSizer181 = wx.FlexGridSizer(0, 2, 0, 0) fgSizer181.AddGrowableCol(1) fgSizer181.SetFlexibleDirection(wx.BOTH) fgSizer181.SetNonFlexibleGrowMode(wx.FLEX_GROWMODE_SPECIFIED) self.bIMUScope = wx.Button(self.m_panel3, wx.ID_ANY, u"Scope", wx.DefaultPosition, wx.DefaultSize, 0) fgSizer181.Add(self.bIMUScope, 0, wx.ALL, 5) m_sdbSizer2 = wx.StdDialogButtonSizer() self.m_sdbSizer2OK = wx.Button(self.m_panel3, wx.ID_OK) m_sdbSizer2.AddButton(self.m_sdbSizer2OK) m_sdbSizer2.Realize() fgSizer181.Add(m_sdbSizer2, 1, wx.ALIGN_RIGHT | wx.EXPAND, 5) fgSizer12.Add(fgSizer181, 1, wx.EXPAND, 5) self.m_panel3.SetSizer(fgSizer12) self.m_panel3.Layout() fgSizer12.Fit(self.m_panel3) self.m_notebook.AddPage(self.m_panel3, u"imu", False) self.m_panel7 = wx.Panel(self.m_notebook, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, wx.TAB_TRAVERSAL) fgSizer81 = wx.FlexGridSizer(0, 1, 0, 0) fgSizer81.AddGrowableCol(0) fgSizer81.AddGrowableRow(0) fgSizer81.SetFlexibleDirection(wx.BOTH) fgSizer81.SetNonFlexibleGrowMode(wx.FLEX_GROWMODE_SPECIFIED) self.AccelCalibration = wx.glcanvas.GLCanvas( self.m_panel7, attribList=[ wx.glcanvas.WX_GL_RGBA, wx.glcanvas.WX_GL_DOUBLEBUFFER, wx.glcanvas.WX_GL_DEPTH_SIZE, 16, wx.glcanvas.WX_GL_STENCIL_SIZE, 8, 0 ]) fgSizer81.Add(self.AccelCalibration, 0, wx.ALL | wx.EXPAND, 5) fgSizer1911 = wx.FlexGridSizer(0, 3, 0, 0) fgSizer1911.AddGrowableCol(0) fgSizer1911.SetFlexibleDirection(wx.BOTH) fgSizer1911.SetNonFlexibleGrowMode(wx.FLEX_GROWMODE_SPECIFIED) fgSizer101 = wx.FlexGridSizer(0, 2, 0, 0) fgSizer101.AddGrowableCol(1) fgSizer101.SetFlexibleDirection(wx.BOTH) fgSizer101.SetNonFlexibleGrowMode(wx.FLEX_GROWMODE_SPECIFIED) self.m_staticText101 = wx.StaticText(self.m_panel7, wx.ID_ANY, u"Calibration", wx.DefaultPosition, wx.DefaultSize, 0) self.m_staticText101.Wrap(-1) fgSizer101.Add(self.m_staticText101, 0, wx.ALL, 5) self.stAccelCal = wx.StaticText(self.m_panel7, wx.ID_ANY, wx.EmptyString, wx.DefaultPosition, wx.DefaultSize, 0) self.stAccelCal.Wrap(-1) fgSizer101.Add(self.stAccelCal, 0, wx.ALL | wx.EXPAND, 5) self.m_staticText141 = wx.StaticText(self.m_panel7, wx.ID_ANY, u"Calibration Age", wx.DefaultPosition, wx.DefaultSize, 0) self.m_staticText141.Wrap(-1) fgSizer101.Add(self.m_staticText141, 0, wx.ALL, 5) self.stAccelCalAge = wx.StaticText(self.m_panel7, wx.ID_ANY, wx.EmptyString, wx.DefaultPosition, wx.DefaultSize, 0) self.stAccelCalAge.Wrap(-1) fgSizer101.Add(self.stAccelCalAge, 0, wx.ALL | wx.EXPAND, 5) fgSizer1911.Add(fgSizer101, 1, wx.EXPAND, 5) fgSizer271 = wx.FlexGridSizer(0, 1, 0, 0) fgSizer271.SetFlexibleDirection(wx.BOTH) fgSizer271.SetNonFlexibleGrowMode(wx.FLEX_GROWMODE_SPECIFIED) self.m_button101 = wx.Button(self.m_panel7, wx.ID_ANY, u"Clear", wx.DefaultPosition, wx.DefaultSize, 0) fgSizer271.Add(self.m_button101, 0, wx.ALL, 5) self.cbAccelCalibrationLocked = wx.CheckBox(self.m_panel7, wx.ID_ANY, u"calibratiion locked", wx.DefaultPosition, wx.DefaultSize, 0) fgSizer271.Add(self.cbAccelCalibrationLocked, 0, wx.ALL, 5) fgSizer1911.Add(fgSizer271, 1, wx.EXPAND, 5) m_sdbSizer11 = wx.StdDialogButtonSizer() self.m_sdbSizer11OK = wx.Button(self.m_panel7, wx.ID_OK) m_sdbSizer11.AddButton(self.m_sdbSizer11OK) m_sdbSizer11.Realize() fgSizer1911.Add(m_sdbSizer11, 1, wx.EXPAND, 5) fgSizer81.Add(fgSizer1911, 1, wx.EXPAND, 5) self.m_panel7.SetSizer(fgSizer81) self.m_panel7.Layout() fgSizer81.Fit(self.m_panel7) self.m_notebook.AddPage(self.m_panel7, u"accel", False) self.m_panel1 = wx.Panel(self.m_notebook, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, wx.TAB_TRAVERSAL) fgSizer8 = wx.FlexGridSizer(0, 1, 0, 0) fgSizer8.AddGrowableCol(0) fgSizer8.AddGrowableRow(0) fgSizer8.SetFlexibleDirection(wx.BOTH) fgSizer8.SetNonFlexibleGrowMode(wx.FLEX_GROWMODE_SPECIFIED) self.CompassCalibration = wx.glcanvas.GLCanvas( self.m_panel1, attribList=[ wx.glcanvas.WX_GL_RGBA, wx.glcanvas.WX_GL_DOUBLEBUFFER, wx.glcanvas.WX_GL_DEPTH_SIZE, 16, wx.glcanvas.WX_GL_STENCIL_SIZE, 8, 0 ]) fgSizer8.Add(self.CompassCalibration, 0, wx.ALL | wx.EXPAND, 5) fgSizer191 = wx.FlexGridSizer(0, 3, 0, 0) fgSizer191.AddGrowableCol(0) fgSizer191.SetFlexibleDirection(wx.BOTH) fgSizer191.SetNonFlexibleGrowMode(wx.FLEX_GROWMODE_SPECIFIED) fgSizer10 = wx.FlexGridSizer(0, 2, 0, 0) fgSizer10.AddGrowableCol(1) fgSizer10.SetFlexibleDirection(wx.BOTH) fgSizer10.SetNonFlexibleGrowMode(wx.FLEX_GROWMODE_SPECIFIED) self.m_staticText10 = wx.StaticText(self.m_panel1, wx.ID_ANY, u"Calibration", wx.DefaultPosition, wx.DefaultSize, 0) self.m_staticText10.Wrap(-1) fgSizer10.Add(self.m_staticText10, 0, wx.ALL, 5) self.stCompassCal = wx.StaticText(self.m_panel1, wx.ID_ANY, wx.EmptyString, wx.DefaultPosition, wx.DefaultSize, 0) self.stCompassCal.Wrap(-1) fgSizer10.Add(self.stCompassCal, 0, wx.ALL | wx.EXPAND, 5) self.m_staticText14 = wx.StaticText(self.m_panel1, wx.ID_ANY, u"Calibration Age", wx.DefaultPosition, wx.DefaultSize, 0) self.m_staticText14.Wrap(-1) fgSizer10.Add(self.m_staticText14, 0, wx.ALL, 5) self.stCompassCalAge = wx.StaticText(self.m_panel1, wx.ID_ANY, wx.EmptyString, wx.DefaultPosition, wx.DefaultSize, 0) self.stCompassCalAge.Wrap(-1) fgSizer10.Add(self.stCompassCalAge, 0, wx.ALL | wx.EXPAND, 5) fgSizer191.Add(fgSizer10, 1, wx.EXPAND, 5) fgSizer27 = wx.FlexGridSizer(0, 1, 0, 0) fgSizer27.SetFlexibleDirection(wx.BOTH) fgSizer27.SetNonFlexibleGrowMode(wx.FLEX_GROWMODE_SPECIFIED) self.m_button10 = wx.Button(self.m_panel1, wx.ID_ANY, u"Clear", wx.DefaultPosition, wx.DefaultSize, 0) fgSizer27.Add(self.m_button10, 0, wx.ALL, 5) self.cbCompassCalibrationLocked = wx.CheckBox(self.m_panel1, wx.ID_ANY, u"calibratiion locked", wx.DefaultPosition, wx.DefaultSize, 0) fgSizer27.Add(self.cbCompassCalibrationLocked, 0, wx.ALL, 5) fgSizer191.Add(fgSizer27, 1, wx.EXPAND, 5) m_sdbSizer1 = wx.StdDialogButtonSizer() self.m_sdbSizer1OK = wx.Button(self.m_panel1, wx.ID_OK) m_sdbSizer1.AddButton(self.m_sdbSizer1OK) m_sdbSizer1.Realize() fgSizer191.Add(m_sdbSizer1, 1, wx.EXPAND, 5) fgSizer8.Add(fgSizer191, 1, wx.EXPAND, 5) self.m_panel1.SetSizer(fgSizer8) self.m_panel1.Layout() fgSizer8.Fit(self.m_panel1) self.m_notebook.AddPage(self.m_panel1, u"compass", False) self.m_panel2 = wx.Panel(self.m_notebook, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, wx.TAB_TRAVERSAL) fgSizer9 = wx.FlexGridSizer(0, 1, 0, 0) fgSizer9.AddGrowableCol(0) fgSizer9.AddGrowableRow(0) fgSizer9.SetFlexibleDirection(wx.BOTH) fgSizer9.SetNonFlexibleGrowMode(wx.FLEX_GROWMODE_SPECIFIED) self.m_swservo = wx.ScrolledWindow(self.m_panel2, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, wx.HSCROLL | wx.VSCROLL) self.m_swservo.SetScrollRate(5, 5) fgSizer351 = wx.FlexGridSizer(0, 1, 0, 0) fgSizer351.AddGrowableCol(0) fgSizer351.AddGrowableRow(0) fgSizer351.AddGrowableRow(1) fgSizer351.AddGrowableRow(2) fgSizer351.SetFlexibleDirection(wx.BOTH) fgSizer351.SetNonFlexibleGrowMode(wx.FLEX_GROWMODE_SPECIFIED) sbSizer1 = wx.StaticBoxSizer( wx.StaticBox(self.m_swservo, wx.ID_ANY, u"Calibration"), wx.VERTICAL) self.stServoCalibration = wx.StaticText(sbSizer1.GetStaticBox(), wx.ID_ANY, wx.EmptyString, wx.DefaultPosition, wx.DefaultSize, 0) self.stServoCalibration.Wrap(400) sbSizer1.Add(self.stServoCalibration, 0, wx.ALL | wx.EXPAND, 5) fgSizer351.Add(sbSizer1, 1, wx.EXPAND, 5) sbSizer3 = wx.StaticBoxSizer( wx.StaticBox(self.m_swservo, wx.ID_ANY, u"Rudder Feedback"), wx.VERTICAL) fgSizer35 = wx.FlexGridSizer(0, 1, 0, 0) fgSizer35.SetFlexibleDirection(wx.BOTH) fgSizer35.SetNonFlexibleGrowMode(wx.FLEX_GROWMODE_SPECIFIED) fgSizer36 = wx.FlexGridSizer(0, 2, 0, 0) fgSizer36.SetFlexibleDirection(wx.BOTH) fgSizer36.SetNonFlexibleGrowMode(wx.FLEX_GROWMODE_SPECIFIED) self.m_staticText41 = wx.StaticText( sbSizer3.GetStaticBox(), wx.ID_ANY, u"To calibrate the rudder, first center, and then you must press both buttons with the rudder in position each time.", wx.DefaultPosition, wx.DefaultSize, 0) self.m_staticText41.Wrap(550) fgSizer36.Add(self.m_staticText41, 0, wx.ALL, 5) fgSizer35.Add(fgSizer36, 1, wx.EXPAND, 5) fgSizer32 = wx.FlexGridSizer(0, 2, 0, 0) fgSizer32.AddGrowableCol(1) fgSizer32.SetFlexibleDirection(wx.BOTH) fgSizer32.SetNonFlexibleGrowMode(wx.FLEX_GROWMODE_SPECIFIED) self.m_staticText38 = wx.StaticText(sbSizer3.GetStaticBox(), wx.ID_ANY, u"Rudder", wx.DefaultPosition, wx.DefaultSize, 0) self.m_staticText38.Wrap(-1) fgSizer32.Add(self.m_staticText38, 0, wx.ALL, 5) self.stRudderAngle = wx.StaticText(sbSizer3.GetStaticBox(), wx.ID_ANY, u"N/A", wx.DefaultPosition, wx.DefaultSize, 0) self.stRudderAngle.Wrap(-1) fgSizer32.Add(self.stRudderAngle, 0, wx.ALL, 5) fgSizer35.Add(fgSizer32, 1, wx.EXPAND, 5) fgSizer33 = wx.FlexGridSizer(1, 0, 0, 0) fgSizer33.SetFlexibleDirection(wx.BOTH) fgSizer33.SetNonFlexibleGrowMode(wx.FLEX_GROWMODE_SPECIFIED) self.m_button11 = wx.Button(sbSizer3.GetStaticBox(), wx.ID_ANY, u"Rudder Is Centered", wx.DefaultPosition, wx.DefaultSize, 0) fgSizer33.Add(self.m_button11, 0, wx.ALL, 5) self.m_staticText341 = wx.StaticText(sbSizer3.GetStaticBox(), wx.ID_ANY, u"Offset", wx.DefaultPosition, wx.DefaultSize, 0) self.m_staticText341.Wrap(-1) fgSizer33.Add(self.m_staticText341, 0, wx.ALL, 5) self.m_staticText35 = wx.StaticText(sbSizer3.GetStaticBox(), wx.ID_ANY, u"-----", wx.DefaultPosition, wx.DefaultSize, 0) self.m_staticText35.Wrap(-1) fgSizer33.Add(self.m_staticText35, 0, wx.ALL, 5) fgSizer35.Add(fgSizer33, 1, wx.EXPAND, 5) fgSizer34 = wx.FlexGridSizer(0, 4, 0, 0) fgSizer34.SetFlexibleDirection(wx.BOTH) fgSizer34.SetNonFlexibleGrowMode(wx.FLEX_GROWMODE_SPECIFIED) self.m_button12 = wx.Button(sbSizer3.GetStaticBox(), wx.ID_ANY, u"Rudder At Range", wx.DefaultPosition, wx.DefaultSize, 0) fgSizer34.Add(self.m_button12, 0, wx.ALL, 5) self.m_staticText42 = wx.StaticText(sbSizer3.GetStaticBox(), wx.ID_ANY, u"range", wx.DefaultPosition, wx.DefaultSize, 0) self.m_staticText42.Wrap(-1) fgSizer34.Add(self.m_staticText42, 0, wx.ALL, 5) self.sRudderRange = wx.SpinCtrl(sbSizer3.GetStaticBox(), wx.ID_ANY, wx.EmptyString, wx.DefaultPosition, wx.DefaultSize, wx.SP_ARROW_KEYS, 10, 90, 30) fgSizer34.Add(self.sRudderRange, 0, wx.ALL, 5) self.m_staticText40 = wx.StaticText(sbSizer3.GetStaticBox(), wx.ID_ANY, u"degrees", wx.DefaultPosition, wx.DefaultSize, 0) self.m_staticText40.Wrap(-1) fgSizer34.Add(self.m_staticText40, 0, wx.ALL, 5) fgSizer35.Add(fgSizer34, 1, wx.EXPAND, 5) sbSizer3.Add(fgSizer35, 1, wx.EXPAND, 5) fgSizer351.Add(sbSizer3, 1, wx.EXPAND, 5) fgSizer15 = wx.FlexGridSizer(0, 3, 0, 0) fgSizer15.SetFlexibleDirection(wx.BOTH) fgSizer15.SetNonFlexibleGrowMode(wx.FLEX_GROWMODE_SPECIFIED) self.m_staticText30 = wx.StaticText(self.m_swservo, wx.ID_ANY, u"Max Current", wx.DefaultPosition, wx.DefaultSize, 0) self.m_staticText30.Wrap(-1) fgSizer15.Add(self.m_staticText30, 0, wx.ALL, 5) self.dsServoMaxCurrent = wx.SpinCtrlDouble(self.m_swservo) self.dsServoMaxCurrent.SetMinSize(wx.Size(60, 30)) fgSizer15.Add(self.dsServoMaxCurrent, 0, wx.ALL, 5) self.m_staticText32 = wx.StaticText(self.m_swservo, wx.ID_ANY, u"Amps", wx.DefaultPosition, wx.DefaultSize, 0) self.m_staticText32.Wrap(-1) fgSizer15.Add(self.m_staticText32, 0, wx.ALL, 5) self.m_staticText305 = wx.StaticText(self.m_swservo, wx.ID_ANY, u"Max Controller Temperature", wx.DefaultPosition, wx.DefaultSize, 0) self.m_staticText305.Wrap(-1) fgSizer15.Add(self.m_staticText305, 0, wx.ALL, 5) self.dsServoMaxControllerTemp = wx.SpinCtrl(self.m_swservo) self.dsServoMaxControllerTemp.SetMinSize(wx.Size(60, 30)) fgSizer15.Add(self.dsServoMaxControllerTemp, 0, wx.ALL, 5) self.m_staticText325 = wx.StaticText(self.m_swservo, wx.ID_ANY, u"°C", wx.DefaultPosition, wx.DefaultSize, 0) self.m_staticText325.Wrap(-1) fgSizer15.Add(self.m_staticText325, 0, wx.ALL, 5) self.m_staticText3051 = wx.StaticText(self.m_swservo, wx.ID_ANY, u"Max Motor Temperature", wx.DefaultPosition, wx.DefaultSize, 0) self.m_staticText3051.Wrap(-1) fgSizer15.Add(self.m_staticText3051, 0, wx.ALL, 5) self.dsServoMaxMotorTemp = wx.SpinCtrl(self.m_swservo) self.dsServoMaxMotorTemp.SetMinSize(wx.Size(60, 30)) fgSizer15.Add(self.dsServoMaxMotorTemp, 0, wx.ALL, 5) self.m_staticText3251 = wx.StaticText(self.m_swservo, wx.ID_ANY, u"°C", wx.DefaultPosition, wx.DefaultSize, 0) self.m_staticText3251.Wrap(-1) fgSizer15.Add(self.m_staticText3251, 0, wx.ALL, 5) self.m_staticText304 = wx.StaticText(self.m_swservo, wx.ID_ANY, u"Max Slew Speed", wx.DefaultPosition, wx.DefaultSize, 0) self.m_staticText304.Wrap(-1) fgSizer15.Add(self.m_staticText304, 0, wx.ALL, 5) self.dsServoMaxSlewSpeed = wx.SpinCtrl(self.m_swservo) self.dsServoMaxSlewSpeed.SetMinSize(wx.Size(100, 30)) fgSizer15.Add(self.dsServoMaxSlewSpeed, 0, wx.ALL, 5) self.m_staticText324 = wx.StaticText(self.m_swservo, wx.ID_ANY, u"steps", wx.DefaultPosition, wx.DefaultSize, 0) self.m_staticText324.Wrap(-1) fgSizer15.Add(self.m_staticText324, 0, wx.ALL, 5) self.m_staticText3041 = wx.StaticText(self.m_swservo, wx.ID_ANY, u"Max Slew Slow", wx.DefaultPosition, wx.DefaultSize, 0) self.m_staticText3041.Wrap(-1) fgSizer15.Add(self.m_staticText3041, 0, wx.ALL, 5) self.dsServoMaxSlewSlow = wx.SpinCtrl(self.m_swservo) self.dsServoMaxSlewSlow.SetMinSize(wx.Size(100, 30)) fgSizer15.Add(self.dsServoMaxSlewSlow, 0, wx.ALL, 5) self.m_staticText3241 = wx.StaticText(self.m_swservo, wx.ID_ANY, u"steps", wx.DefaultPosition, wx.DefaultSize, 0) self.m_staticText3241.Wrap(-1) fgSizer15.Add(self.m_staticText3241, 0, wx.ALL, 5) fgSizer351.Add(fgSizer15, 1, wx.EXPAND, 5) fgSizer361 = wx.FlexGridSizer(0, 2, 0, 0) fgSizer361.SetFlexibleDirection(wx.BOTH) fgSizer361.SetNonFlexibleGrowMode(wx.FLEX_GROWMODE_SPECIFIED) self.m_staticText52 = wx.StaticText(self.m_swservo, wx.ID_ANY, u"Voltage", wx.DefaultPosition, wx.DefaultSize, 0) self.m_staticText52.Wrap(-1) fgSizer361.Add(self.m_staticText52, 0, wx.ALL, 5) self.m_stServoVoltage = wx.StaticText(self.m_swservo, wx.ID_ANY, u"---", wx.DefaultPosition, wx.DefaultSize, 0) self.m_stServoVoltage.Wrap(-1) fgSizer361.Add(self.m_stServoVoltage, 0, wx.ALL, 5) self.m_staticText30411 = wx.StaticText(self.m_swservo, wx.ID_ANY, u"Voltage Correction Offset", wx.DefaultPosition, wx.DefaultSize, 0) self.m_staticText30411.Wrap(-1) fgSizer361.Add(self.m_staticText30411, 0, wx.ALL, 5) self.dsServoVoltageOffset = wx.SpinCtrlDouble(self.m_swservo) self.dsServoVoltageOffset.SetMinSize(wx.Size(100, 30)) fgSizer361.Add(self.dsServoVoltageOffset, 0, wx.ALL, 5) self.m_staticText303 = wx.StaticText(self.m_swservo, wx.ID_ANY, u"Voltage Correction Factor", wx.DefaultPosition, wx.DefaultSize, 0) self.m_staticText303.Wrap(-1) fgSizer361.Add(self.m_staticText303, 0, wx.ALL, 5) self.dsServoVoltageFactor = wx.SpinCtrlDouble(self.m_swservo) self.dsServoVoltageFactor.SetMinSize(wx.Size(100, 30)) fgSizer361.Add(self.dsServoVoltageFactor, 0, wx.ALL, 5) fgSizer351.Add(fgSizer361, 1, wx.EXPAND, 5) fgSizer37 = wx.FlexGridSizer(0, 2, 0, 0) fgSizer37.SetFlexibleDirection(wx.BOTH) fgSizer37.SetNonFlexibleGrowMode(wx.FLEX_GROWMODE_SPECIFIED) self.m_staticText55 = wx.StaticText(self.m_swservo, wx.ID_ANY, u"Current", wx.DefaultPosition, wx.DefaultSize, 0) self.m_staticText55.Wrap(-1) fgSizer37.Add(self.m_staticText55, 0, wx.ALL, 5) self.m_stServoCurrent = wx.StaticText(self.m_swservo, wx.ID_ANY, u"---", wx.DefaultPosition, wx.DefaultSize, 0) self.m_stServoCurrent.Wrap(-1) fgSizer37.Add(self.m_stServoCurrent, 0, wx.ALL, 5) self.m_staticText302 = wx.StaticText(self.m_swservo, wx.ID_ANY, u"Current Correction Offset", wx.DefaultPosition, wx.DefaultSize, 0) self.m_staticText302.Wrap(-1) fgSizer37.Add(self.m_staticText302, 0, wx.ALL, 5) self.dsServoCurrentOffset = wx.SpinCtrlDouble(self.m_swservo) self.dsServoCurrentOffset.SetMinSize(wx.Size(100, 30)) fgSizer37.Add(self.dsServoCurrentOffset, 0, wx.ALL, 5) self.m_staticText301 = wx.StaticText(self.m_swservo, wx.ID_ANY, u"Current Correction Factor", wx.DefaultPosition, wx.DefaultSize, 0) self.m_staticText301.Wrap(-1) fgSizer37.Add(self.m_staticText301, 0, wx.ALL, 5) self.dsServoCurrentFactor = wx.SpinCtrlDouble(self.m_swservo) self.dsServoCurrentFactor.SetMinSize(wx.Size(100, 30)) fgSizer37.Add(self.dsServoCurrentFactor, 0, wx.ALL, 5) fgSizer351.Add(fgSizer37, 1, wx.EXPAND, 5) self.m_swservo.SetSizer(fgSizer351) self.m_swservo.Layout() fgSizer351.Fit(self.m_swservo) fgSizer9.Add(self.m_swservo, 1, wx.EXPAND | wx.ALL, 5) m_sdbSizer3 = wx.StdDialogButtonSizer() self.m_sdbSizer3OK = wx.Button(self.m_panel2, wx.ID_OK) m_sdbSizer3.AddButton(self.m_sdbSizer3OK) m_sdbSizer3.Realize() fgSizer9.Add(m_sdbSizer3, 1, wx.EXPAND, 5) self.m_panel2.SetSizer(fgSizer9) self.m_panel2.Layout() fgSizer9.Fit(self.m_panel2) self.m_notebook.AddPage(self.m_panel2, u"servo", True) fgSizer7.Add(self.m_notebook, 1, wx.EXPAND | wx.ALL, 5) self.SetSizer(fgSizer7) self.Layout() self.Centre(wx.BOTH) # Connect Events self.BoatPlot.Bind(wx.EVT_KEY_DOWN, self.onKeyPressBoatPlot) self.BoatPlot.Bind(wx.EVT_LEFT_DOWN, self.onMouseEventsBoatPlot) self.BoatPlot.Bind(wx.EVT_LEFT_UP, self.onMouseEventsBoatPlot) self.BoatPlot.Bind(wx.EVT_MIDDLE_DOWN, self.onMouseEventsBoatPlot) self.BoatPlot.Bind(wx.EVT_MIDDLE_UP, self.onMouseEventsBoatPlot) self.BoatPlot.Bind(wx.EVT_RIGHT_DOWN, self.onMouseEventsBoatPlot) self.BoatPlot.Bind(wx.EVT_RIGHT_UP, self.onMouseEventsBoatPlot) self.BoatPlot.Bind(wx.EVT_MOTION, self.onMouseEventsBoatPlot) self.BoatPlot.Bind(wx.EVT_LEFT_DCLICK, self.onMouseEventsBoatPlot) self.BoatPlot.Bind(wx.EVT_MIDDLE_DCLICK, self.onMouseEventsBoatPlot) self.BoatPlot.Bind(wx.EVT_RIGHT_DCLICK, self.onMouseEventsBoatPlot) self.BoatPlot.Bind(wx.EVT_LEAVE_WINDOW, self.onMouseEventsBoatPlot) self.BoatPlot.Bind(wx.EVT_ENTER_WINDOW, self.onMouseEventsBoatPlot) self.BoatPlot.Bind(wx.EVT_MOUSEWHEEL, self.onMouseEventsBoatPlot) self.BoatPlot.Bind(wx.EVT_PAINT, self.onPaintGLBoatPlot) self.BoatPlot.Bind(wx.EVT_SIZE, self.onSizeGLBoatPlot) self.bReset.Bind(wx.EVT_BUTTON, self.onResetAlignment) self.bLevel.Bind(wx.EVT_BUTTON, self.onLevel) self.sHeadingOffset.Bind(wx.EVT_SPINCTRL, self.onIMUHeadingOffset) self.cbTextureCompass.Bind(wx.EVT_CHECKBOX, self.onTextureCompass) self.bIMUScope.Bind(wx.EVT_BUTTON, self.onIMUScope) self.AccelCalibration.Bind(wx.EVT_KEY_DOWN, self.onKeyPressAccel) self.AccelCalibration.Bind(wx.EVT_LEFT_DOWN, self.onMouseEventsAccel) self.AccelCalibration.Bind(wx.EVT_LEFT_UP, self.onMouseEventsAccel) self.AccelCalibration.Bind(wx.EVT_MIDDLE_DOWN, self.onMouseEventsAccel) self.AccelCalibration.Bind(wx.EVT_MIDDLE_UP, self.onMouseEventsAccel) self.AccelCalibration.Bind(wx.EVT_RIGHT_DOWN, self.onMouseEventsAccel) self.AccelCalibration.Bind(wx.EVT_RIGHT_UP, self.onMouseEventsAccel) self.AccelCalibration.Bind(wx.EVT_MOTION, self.onMouseEventsAccel) self.AccelCalibration.Bind(wx.EVT_LEFT_DCLICK, self.onMouseEventsAccel) self.AccelCalibration.Bind(wx.EVT_MIDDLE_DCLICK, self.onMouseEventsAccel) self.AccelCalibration.Bind(wx.EVT_RIGHT_DCLICK, self.onMouseEventsAccel) self.AccelCalibration.Bind(wx.EVT_LEAVE_WINDOW, self.onMouseEventsAccel) self.AccelCalibration.Bind(wx.EVT_ENTER_WINDOW, self.onMouseEventsAccel) self.AccelCalibration.Bind(wx.EVT_MOUSEWHEEL, self.onMouseEventsAccel) self.AccelCalibration.Bind(wx.EVT_PAINT, self.onPaintGLAccel) self.AccelCalibration.Bind(wx.EVT_SIZE, self.onSizeGLAccel) self.m_button101.Bind(wx.EVT_BUTTON, self.onClearAccel) self.cbAccelCalibrationLocked.Bind(wx.EVT_CHECKBOX, self.onAccelCalibrationLocked) self.CompassCalibration.Bind(wx.EVT_KEY_DOWN, self.onKeyPressCompass) self.CompassCalibration.Bind(wx.EVT_LEFT_DOWN, self.onMouseEventsCompass) self.CompassCalibration.Bind(wx.EVT_LEFT_UP, self.onMouseEventsCompass) self.CompassCalibration.Bind(wx.EVT_MIDDLE_DOWN, self.onMouseEventsCompass) self.CompassCalibration.Bind(wx.EVT_MIDDLE_UP, self.onMouseEventsCompass) self.CompassCalibration.Bind(wx.EVT_RIGHT_DOWN, self.onMouseEventsCompass) self.CompassCalibration.Bind(wx.EVT_RIGHT_UP, self.onMouseEventsCompass) self.CompassCalibration.Bind(wx.EVT_MOTION, self.onMouseEventsCompass) self.CompassCalibration.Bind(wx.EVT_LEFT_DCLICK, self.onMouseEventsCompass) self.CompassCalibration.Bind(wx.EVT_MIDDLE_DCLICK, self.onMouseEventsCompass) self.CompassCalibration.Bind(wx.EVT_RIGHT_DCLICK, self.onMouseEventsCompass) self.CompassCalibration.Bind(wx.EVT_LEAVE_WINDOW, self.onMouseEventsCompass) self.CompassCalibration.Bind(wx.EVT_ENTER_WINDOW, self.onMouseEventsCompass) self.CompassCalibration.Bind(wx.EVT_MOUSEWHEEL, self.onMouseEventsCompass) self.CompassCalibration.Bind(wx.EVT_PAINT, self.onPaintGLCompass) self.CompassCalibration.Bind(wx.EVT_SIZE, self.onSizeGLCompass) self.m_button10.Bind(wx.EVT_BUTTON, self.onClearCompass) self.cbCompassCalibrationLocked.Bind(wx.EVT_CHECKBOX, self.onCompassCalibrationLocked) self.m_button11.Bind(wx.EVT_BUTTON, self.OnRudderCentered) self.m_button12.Bind(wx.EVT_BUTTON, self.OnRudderAtRange) self.sRudderRange.Bind(wx.EVT_SPINCTRL, self.OnRudderRange)
def __init__(self, parent): wx.Frame.__init__(self, parent, id=wx.ID_ANY, title=u"Analyzer", pos=wx.DefaultPosition, size=wx.Size(1000, 700), style=wx.DEFAULT_FRAME_STYLE) self.SetSizeHintsSz(wx.DefaultSize, wx.DefaultSize) sizer_frame = wx.BoxSizer(wx.HORIZONTAL) self.notebook = wx.Notebook(self, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, 0) self.window_page = wx.Panel(self.notebook, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, wx.TAB_TRAVERSAL) bSizer12 = wx.BoxSizer(wx.HORIZONTAL) self.window_page_splitter = wx.SplitterWindow(self.window_page, wx.ID_ANY, wx.DefaultPosition, wx.Size(100, -1), wx.SP_3D | wx.SP_BORDER) self.window_page_splitter.SetSashGravity(1) self.window_page_splitter.Bind(wx.EVT_IDLE, self.window_page_splitterOnIdle) self.window_plotter = wx.Panel(self.window_page_splitter, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, wx.TAB_TRAVERSAL) bSizer13 = wx.BoxSizer(wx.HORIZONTAL) self.window_3 = wx.SplitterWindow(self.window_plotter, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, wx.SP_3D | wx.SP_BORDER) self.window_3.SetSashGravity(1) self.window_3.Bind(wx.EVT_IDLE, self.window_3OnIdle) self.window_notrow = wx.Panel(self.window_3, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, wx.TAB_TRAVERSAL) bSizer14 = wx.BoxSizer(wx.HORIZONTAL) self.window_row_plot_splitter = wx.SplitterWindow( self.window_notrow, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, wx.SP_3D | wx.SP_BORDER) self.window_row_plot_splitter.Bind(wx.EVT_IDLE, self.window_row_plot_splitterOnIdle) self.window_plot = wx.Panel(self.window_row_plot_splitter, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, wx.TAB_TRAVERSAL) bSizer131 = wx.BoxSizer(wx.HORIZONTAL) self.window_canvas = MatplotPanel(self.window_plot, wx.ID_ANY, wx.DefaultPosition, wx.Size(500, -1), wx.TAB_TRAVERSAL) bSizer131.Add(self.window_canvas, 1, wx.EXPAND | wx.ALL, 5) self.m_panel12 = wx.Panel(self.window_plot, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, wx.TAB_TRAVERSAL) self.m_panel12.SetMaxSize(wx.Size(150, -1)) bSizer121 = wx.BoxSizer(wx.VERTICAL) plot_typeChoices = [u"bar", u"line", u"bean"] self.plot_type = wx.RadioBox(self.m_panel12, wx.ID_ANY, u"plot type", wx.DefaultPosition, wx.DefaultSize, plot_typeChoices, 1, wx.RA_SPECIFY_COLS) self.plot_type.SetSelection(0) bSizer121.Add(self.plot_type, 0, wx.EXPAND | wx.ALL, 5) self.m_panel151 = wx.Panel(self.m_panel12, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, wx.TAB_TRAVERSAL) bSizer19 = wx.BoxSizer(wx.VERTICAL) self.m_staticText1 = wx.StaticText(self.m_panel151, wx.ID_ANY, u"values", wx.DefaultPosition, wx.DefaultSize, 0) self.m_staticText1.Wrap(-1) bSizer19.Add(self.m_staticText1, 0, wx.ALL, 5) self.list_values = DragList(self.m_panel151, wx.ID_ANY, wx.DefaultPosition, wx.Size(-1, 20), wx.LC_LIST) bSizer19.Add(self.list_values, 0, wx.ALIGN_RIGHT | wx.ALL, 5) value_typeChoices = [u"metric", u"accuracy"] self.value_type = RadioBoxValueType(self.m_panel151, wx.ID_ANY, u"type", wx.DefaultPosition, wx.DefaultSize, value_typeChoices, 1, wx.RA_SPECIFY_COLS) self.value_type.SetSelection(0) bSizer19.Add(self.value_type, 0, wx.ALL, 5) self.panel_corr = ValueAcc(self.m_panel151, wx.ID_ANY, wx.DefaultPosition, wx.Size(-1, -1), wx.TAB_TRAVERSAL) bSizer19.Add(self.panel_corr, 0, wx.ALL, 5) self.m_panel151.SetSizer(bSizer19) self.m_panel151.Layout() bSizer19.Fit(self.m_panel151) bSizer121.Add(self.m_panel151, 1, wx.ALL | wx.ALIGN_RIGHT | wx.EXPAND, 5) self.m_panel12.SetSizer(bSizer121) self.m_panel12.Layout() bSizer121.Fit(self.m_panel12) bSizer131.Add(self.m_panel12, 0, wx.ALIGN_RIGHT | wx.ALL | wx.EXPAND, 5) self.m_panel18 = wx.Panel(self.window_plot, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, wx.TAB_TRAVERSAL) self.m_panel18.SetMaxSize(wx.Size(150, -1)) bSizer181 = wx.BoxSizer(wx.VERTICAL) self.m_panel14 = wx.Panel(self.m_panel18, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, wx.TAB_TRAVERSAL) bSizer26 = wx.BoxSizer(wx.VERTICAL) self.m_staticText11 = wx.StaticText(self.m_panel14, wx.ID_ANY, u"subplots", wx.DefaultPosition, wx.DefaultSize, 0) self.m_staticText11.Wrap(-1) bSizer26.Add(self.m_staticText11, 0, wx.ALL, 5) self.list_subplots = DragList(self.m_panel14, wx.ID_ANY, wx.DefaultPosition, wx.Size(-1, 20), wx.LC_LIST) bSizer26.Add(self.list_subplots, 0, wx.ALIGN_RIGHT | wx.ALL, 5) self.m_panel14.SetSizer(bSizer26) self.m_panel14.Layout() bSizer26.Fit(self.m_panel14) bSizer181.Add(self.m_panel14, 0, wx.ALL | wx.ALIGN_RIGHT, 5) self.m_panel15 = wx.Panel(self.m_panel18, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, wx.TAB_TRAVERSAL) bSizer22 = wx.BoxSizer(wx.VERTICAL) self.m_staticText13 = wx.StaticText(self.m_panel15, wx.ID_ANY, u"legend", wx.DefaultPosition, wx.DefaultSize, 0) self.m_staticText13.Wrap(-1) bSizer22.Add(self.m_staticText13, 0, wx.ALL, 5) self.list_cols = DragList(self.m_panel15, wx.ID_ANY, wx.DefaultPosition, wx.Size(-1, -1), wx.LC_LIST) bSizer22.Add(self.list_cols, 0, wx.ALIGN_RIGHT | wx.ALL, 5) self.m_panel15.SetSizer(bSizer22) self.m_panel15.Layout() bSizer22.Fit(self.m_panel15) bSizer181.Add(self.m_panel15, 0, wx.ALL | wx.ALIGN_RIGHT, 5) self.m_panel152 = wx.Panel(self.m_panel18, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, wx.TAB_TRAVERSAL) bSizer24 = wx.BoxSizer(wx.VERTICAL) self.m_staticText12 = wx.StaticText(self.m_panel152, wx.ID_ANY, u"x axis", wx.DefaultPosition, wx.DefaultSize, 0) self.m_staticText12.Wrap(-1) bSizer24.Add(self.m_staticText12, 0, wx.ALL, 5) self.list_rows = DragList(self.m_panel152, wx.ID_ANY, wx.DefaultPosition, wx.Size(-1, -1), wx.LC_LIST) bSizer24.Add(self.list_rows, 0, wx.ALIGN_RIGHT | wx.ALL, 5) self.m_panel152.SetSizer(bSizer24) self.m_panel152.Layout() bSizer24.Fit(self.m_panel152) bSizer181.Add(self.m_panel152, 1, wx.EXPAND | wx.ALL, 5) self.m_panel13 = wx.Panel(self.m_panel18, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, wx.TAB_TRAVERSAL) bSizer201 = wx.BoxSizer(wx.VERTICAL) self.m_staticText14 = wx.StaticText(self.m_panel13, wx.ID_ANY, u"error bars", wx.DefaultPosition, wx.DefaultSize, 0) self.m_staticText14.Wrap(-1) bSizer201.Add(self.m_staticText14, 0, wx.ALL, 5) self.list_yerr = DragList(self.m_panel13, wx.ID_ANY, wx.DefaultPosition, wx.Size(-1, 20), wx.LC_LIST) bSizer201.Add(self.list_yerr, 0, wx.ALIGN_RIGHT | wx.ALL, 5) err_typeChoices = [u"CI", u"SEM"] self.err_type = wx.RadioBox(self.m_panel13, wx.ID_ANY, u"type", wx.DefaultPosition, wx.DefaultSize, err_typeChoices, 1, wx.RA_SPECIFY_COLS) self.err_type.SetSelection(0) bSizer201.Add(self.err_type, 1, wx.ALL | wx.EXPAND, 5) self.m_panel13.SetSizer(bSizer201) self.m_panel13.Layout() bSizer201.Fit(self.m_panel13) bSizer181.Add(self.m_panel13, 0, wx.ALL | wx.ALIGN_RIGHT, 5) self.m_panel18.SetSizer(bSizer181) self.m_panel18.Layout() bSizer181.Fit(self.m_panel18) bSizer131.Add(self.m_panel18, 0, wx.ALL, 5) self.window_plot.SetSizer(bSizer131) self.window_plot.Layout() bSizer131.Fit(self.window_plot) self.window_row_plot_splitter.Initialize(self.window_plot) bSizer14.Add(self.window_row_plot_splitter, 1, wx.EXPAND, 0) self.window_notrow.SetSizer(bSizer14) self.window_notrow.Layout() bSizer14.Fit(self.window_notrow) self.window_shell = Shell(self.window_3, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, wx.TAB_TRAVERSAL) self.window_3.SplitHorizontally(self.window_notrow, self.window_shell, 547) bSizer13.Add(self.window_3, 1, wx.EXPAND, 0) self.window_plotter.SetSizer(bSizer13) self.window_plotter.Layout() bSizer13.Fit(self.window_plotter) self.window_list = wx.Panel(self.window_page_splitter, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, wx.TAB_TRAVERSAL) bSizer20 = wx.BoxSizer(wx.HORIZONTAL) self.list_data_headers = DragList(self.window_list, wx.ID_ANY, wx.DefaultPosition, wx.Size(100, -1), wx.LC_REPORT) self.list_data_headers.SetMinSize(wx.Size(100, -1)) bSizer20.Add(self.list_data_headers, 1, wx.ALL | wx.EXPAND, 5) self.window_list.SetSizer(bSizer20) self.window_list.Layout() bSizer20.Fit(self.window_list) self.window_page_splitter.SplitVertically(self.window_plotter, self.window_list, 860) bSizer12.Add(self.window_page_splitter, 1, wx.EXPAND, 0) self.window_page.SetSizer(bSizer12) self.window_page.Layout() bSizer12.Fit(self.window_page) self.notebook.AddPage(self.window_page, u"plots", True) self.window_data = wx.Panel(self.notebook, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, wx.TAB_TRAVERSAL) bSizer21 = wx.BoxSizer(wx.HORIZONTAL) self.m_splitter5 = wx.SplitterWindow(self.window_data, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, wx.SP_3D) self.m_splitter5.SetSashGravity(1) self.m_splitter5.Bind(wx.EVT_IDLE, self.m_splitter5OnIdle) self.m_panel34 = wx.Panel(self.m_splitter5, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, wx.TAB_TRAVERSAL) bSizer18 = wx.BoxSizer(wx.VERTICAL) self.list_data = DataList(self.m_panel34, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, wx.LC_REPORT) bSizer18.Add(self.list_data, 1, wx.ALL | wx.EXPAND, 5) self.m_panel34.SetSizer(bSizer18) self.m_panel34.Layout() bSizer18.Fit(self.m_panel34) self.m_panel32 = wx.Panel(self.m_splitter5, wx.ID_ANY, wx.DefaultPosition, wx.Size(-1, -1), wx.TAB_TRAVERSAL) bSizer17 = wx.BoxSizer(wx.VERTICAL) self.list_datafiles = DataFileList(self.m_panel32, wx.ID_ANY, wx.DefaultPosition, wx.Size(100, -1), wx.LC_LIST | wx.LC_NO_HEADER) self.list_datafiles.SetMinSize(wx.Size(100, -1)) bSizer17.Add(self.list_datafiles, 1, wx.ALL | wx.EXPAND, 5) self.button_addfiles = wx.Button(self.m_panel32, wx.ID_ANY, u"Choose data files", wx.DefaultPosition, wx.DefaultSize, 0) bSizer17.Add(self.button_addfiles, 0, wx.ALL, 5) self.m_panel32.SetSizer(bSizer17) self.m_panel32.Layout() bSizer17.Fit(self.m_panel32) self.m_splitter5.SplitVertically(self.m_panel34, self.m_panel32, 860) bSizer21.Add(self.m_splitter5, 1, wx.EXPAND, 5) self.window_data.SetSizer(bSizer21) self.window_data.Layout() bSizer21.Fit(self.window_data) self.notebook.AddPage(self.window_data, u"data", False) self.window_agg = wx.Panel(self.notebook, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, wx.TAB_TRAVERSAL) bSizer211 = wx.BoxSizer(wx.VERTICAL) self.list_agg = DataList(self.window_agg, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, wx.LC_REPORT) bSizer211.Add(self.list_agg, 1, wx.ALL | wx.EXPAND, 5) self.window_agg.SetSizer(bSizer211) self.window_agg.Layout() bSizer211.Fit(self.window_agg) self.notebook.AddPage(self.window_agg, u"aggr", False) sizer_frame.Add(self.notebook, 1, wx.EXPAND, 0) self.SetSizer(sizer_frame) self.Layout()
def __init__(self): super(fuelDialog, self).__init__(None, -1) self.panel = wx.Panel(self) self.SetTitle("A2A Bonanza Fuel manager") self.sizer = wx.BoxSizer(wx.VERTICAL) self.notebook = wx.Notebook(self.panel)
self.Bind(wx.EVT_RADIOBOX, self.EvtRadioBox, rb) def EvtRadioBox(self, event): self.logger.AppendText('EvtRadioBox: %d\n' % event.GetInt()) def EvtComboBox(self, event): self.logger.AppendText('EvtComboBox: %s\n' % event.GetString()) def OnClick(self, event): self.logger.AppendText(" Click on object with Id %d\n" % event.GetId()) def EvtText(self, event): self.logger.AppendText('EvtText: %s\n' % event.GetString()) def EvtChar(self, event): self.logger.AppendText('EvtChar: %d\n' % event.GetKeyCode()) event.Skip() def EvtCheckBox(self, event): self.logger.AppendText('EvtCheckBox: %d\n' % event.Checked()) #? app = wx.App(False) frame = wx.Frame(None, title="Monitor") nb = wx.Notebook(frame) nb.AddPage(ExamplePanel(nb), "Node 05") nb.AddPage(ExamplePanel(nb), "...") nb.AddPage(ExamplePanel(nb), "...") frame.Show() app.MainLoop()
def __init__(self, parent, data, title=_("List of duplicates"), style=wx.DEFAULT_DIALOG_STYLE | wx.RESIZE_BORDER, pos=wx.DefaultPosition): """Show duplicated feature ids """ wx.Dialog.__init__(self, parent=parent, id=wx.ID_ANY, title=title, style=style, pos=pos) self.parent = parent # map window instance self.data = data self.winList = [] # panel = wx.Panel(parent=self, id=wx.ID_ANY) # notebook self.notebook = wx.Notebook(parent=self, id=wx.ID_ANY, style=wx.BK_DEFAULT) id = 1 for key in self.data.keys(): panel = wx.Panel(parent=self.notebook, id=wx.ID_ANY) self.notebook.AddPage(page=panel, text=" %d " % (id)) # notebook body border = wx.BoxSizer(wx.VERTICAL) win = CheckListFeature(parent=panel, data=list(self.data[key])) self.winList.append(win.GetId()) border.Add(win, proportion=1, flag=wx.ALL | wx.EXPAND, border=5) panel.SetSizer(border) id += 1 # buttons btnCancel = Button(self, wx.ID_CANCEL) btnOk = Button(self, wx.ID_OK) btnOk.SetDefault() # sizers btnSizer = wx.StdDialogButtonSizer() btnSizer.AddButton(btnCancel) btnSizer.AddButton(btnOk) btnSizer.Realize() mainSizer = wx.BoxSizer(wx.VERTICAL) mainSizer.Add(self.notebook, proportion=1, flag=wx.EXPAND | wx.ALL, border=5) mainSizer.Add(btnSizer, proportion=0, flag=wx.EXPAND | wx.ALL | wx.ALIGN_CENTER, border=5) self.SetSizer(mainSizer) mainSizer.Fit(self) self.SetAutoLayout(True) # set min size for dialog self.SetMinSize((250, 180))
def build_ui(self): """ Called during __init__ to set up all the GUI components. """ self.tabs = wx.Notebook(self, style=wx.BK_DEFAULT) # Tab 1: "Summary" pane ------------------------------------------------ main_panel = wx.Panel(self.tabs) self.tabs.AddPage(main_panel, "Summary") self.acct_info_area = wx.StaticBox(main_panel, label="Account Info") lbl_address = wx.StaticText(self.acct_info_area, label="Classic Address:") self.st_classic_address = wx.StaticText(self.acct_info_area, label="TBD") lbl_xaddress = wx.StaticText(self.acct_info_area, label="X-Address:") self.st_x_address = wx.StaticText(self.acct_info_area, label="TBD") lbl_xrp_bal = wx.StaticText(self.acct_info_area, label="XRP Balance:") self.st_xrp_balance = wx.StaticText(self.acct_info_area, label="TBD") lbl_reserve = wx.StaticText(self.acct_info_area, label="XRP Reserved:") self.st_reserve = wx.StaticText(self.acct_info_area, label="TBD") aia_sizer = AutoGridBagSizer(self.acct_info_area) aia_sizer.BulkAdd( ((lbl_address, self.st_classic_address), (lbl_xaddress, self.st_x_address), (lbl_xrp_bal, self.st_xrp_balance), (lbl_reserve, self.st_reserve))) # Send XRP button. Disabled until we have a secret key & network connection self.sxb = wx.Button(main_panel, label="Send XRP") self.sxb.SetToolTip("Disabled in read-only mode.") self.sxb.Disable() self.Bind(wx.EVT_BUTTON, self.click_send_xrp, source=self.sxb) self.ledger_info = wx.StaticText(main_panel, label="Not connected") main_sizer = wx.BoxSizer(wx.VERTICAL) main_sizer.Add(self.acct_info_area, 1, flag=wx.EXPAND | wx.ALL, border=5) main_sizer.Add(self.sxb, 0, flag=wx.ALL, border=5) main_sizer.Add(self.ledger_info, 1, flag=wx.EXPAND | wx.ALL, border=5) main_panel.SetSizer(main_sizer) # Tab 2: "Transaction History" pane ------------------------------------ objs_panel = wx.Panel(self.tabs) self.tabs.AddPage(objs_panel, "Transaction History") objs_sizer = wx.BoxSizer(wx.VERTICAL) self.tx_list = wx.dataview.DataViewListCtrl(objs_panel) self.tx_list.AppendTextColumn("Confirmed") self.tx_list.AppendTextColumn("Type") self.tx_list.AppendTextColumn("From") self.tx_list.AppendTextColumn("To") self.tx_list.AppendTextColumn("Value Delivered") self.tx_list.AppendTextColumn("Identifying Hash") self.tx_list.AppendTextColumn("Raw JSON") objs_sizer.Add(self.tx_list, 1, wx.EXPAND | wx.ALL) self.pending_tx_rows = { } # Map pending tx hashes to rows in the history UI objs_panel.SetSizer(objs_sizer)
def __init__(self, frame, element, experiment, helpUrl=None, suppressTitles=True, size=(1000, 600), style=_style, editing=False, depends=[], timeout=None, type="Code"): # translate title if "name" in element.params: title = element.params['name'].val + _translate(' Properties') elif "expName" in element.params: title = element.params['expName'].val + _translate(' Properties') else: title = "Properties" # get help url if hasattr(element, 'url'): helpUrl = element.url else: helpUrl = None wx.Dialog.__init__(self, None, -1, title, size=size, style=style) self.SetTitle(title) # use localized title # self.panel = wx.Panel(self) self.frame = frame self.app = frame.app self.helpUrl = helpUrl self.params = element.params # dict self.order = element.order self.title = title self.timeout = timeout self.codeBoxes = {} self.tabs = OrderedDict() if not editing and 'name' in self.params: # then we're adding a new component so ensure a valid name: makeValid = self.frame.exp.namespace.makeValid self.params['name'].val = makeValid(self.params['name'].val) self.codeNotebook = wx.Notebook(self) # in AUI notebook the labels are blurry on retina mac # and the close-tab buttons are hard to kill # self.codeNotebook = aui.AuiNotebook(self) # in FlatNoteBook the tab controls (left,right,close) are ugly on mac # and also can't be killed openToPage = None tabN = -1 for paramN, paramName in enumerate(self.order): param = self.params.get(paramName) if paramName == 'name': self.nameLabel = wx.StaticText(self, wx.ID_ANY, _translate(param.label)) _style = wx.TE_PROCESS_ENTER | wx.TE_PROCESS_TAB self.componentName = wx.TextCtrl(self, wx.ID_ANY, str(param.val), style=_style) self.componentName.SetToolTip( wx.ToolTip(_translate(param.hint))) self.componentName.SetValidator(validators.NameValidator()) self.nameOKlabel = wx.StaticText(self, -1, '', style=wx.ALIGN_RIGHT) self.nameOKlabel.SetForegroundColour(wx.RED) elif paramName == 'Code Type': # Create code type choice menu _codeTypes = self.params['Code Type'].allowedVals _selectedCodeType = self.params['Code Type'].val _selectedCodeTypeIndex = _codeTypes.index(_selectedCodeType) self.codeTypeMenu = wx.Choice(self, choices=_codeTypes) # If user does not have metapensiero but codetype is auto-js, revert to (Py?) if not hasMetapensiero and _selectedCodeType.lower( ) == 'auto->js': _selectedCodeTypeIndex -= 1 # Set selection to value stored in self params self.codeTypeMenu.SetSelection(_selectedCodeTypeIndex) self.codeTypeMenu.Bind(wx.EVT_CHOICE, self.onCodeChoice) self.codeTypeName = wx.StaticText(self, wx.ID_ANY, _translate(param.label)) elif paramName == 'disabled': # Create bool control to disable/enable component self.disableCtrl = wx.CheckBox(self, wx.ID_ANY, label=_translate('disabled')) self.disableCtrl.SetValue(bool(param.val)) else: codeType = ["Py", "JS"]["JS" in paramName] # Give CodeBox a code type tabName = paramName.replace("JS ", "") if tabName in self.tabs: _panel = self.tabs[tabName] else: _panel = wx.Panel(self.codeNotebook, wx.ID_ANY) _panel.app = self.app self.tabs[tabName] = _panel tabN += 1 self.codeBoxes[paramName] = CodeBox(_panel, wx.ID_ANY, pos=wx.DefaultPosition, style=0, prefs=self.app.prefs, params=self.params, codeType=codeType) self.codeBoxes[paramName].AddText(param.val) self.codeBoxes[paramName].Bind( wx.EVT_KEY_UP, self.onKeyUp) # For real time translation if len(param.val.strip()) and openToPage is None: # index of first non-blank page openToPage = tabN if self.helpUrl is not None: self.helpButton = wx.Button(self, wx.ID_HELP, _translate(" Help ")) tip = _translate("Go to online help about this component") self.helpButton.SetToolTip(wx.ToolTip(tip)) self.okButton = wx.Button(self, wx.ID_OK, _translate(" OK ")) self.okButton.SetDefault() self.cancelButton = wx.Button(self, wx.ID_CANCEL, _translate(" Cancel ")) self.warnings = WarningManager( self) # to store warnings for all fields self.__do_layout() if openToPage is None: openToPage = 1 self.codeNotebook.SetSelection(openToPage) self.Update() self.Bind(wx.EVT_BUTTON, self.helpButtonHandler, self.helpButton) if self.timeout: timeout = wx.CallLater(self.timeout, self.onEnter) timeout.Start() # do show and process return ret = self.ShowModal() if ret == wx.ID_OK: self.checkName() self.OK = True self.params = self.getParams() # get new vals from dlg self.Validate() else: self.OK = False
def __init__(self, parent): wx.Frame.__init__(self, parent, id=wx.ID_ANY, title=u"Orbis", pos=wx.DefaultPosition, size=wx.Size(1164, 689), style=wx.DEFAULT_FRAME_STYLE | wx.TAB_TRAVERSAL) self.SetSizeHintsSz(wx.DefaultSize, wx.DefaultSize) self.main_menu_bar = wx.MenuBar(0) self.file_menu = wx.Menu() self.new = wx.MenuItem(self.file_menu, wx.ID_ANY, u"&New" + u"\t" + u"Ctrl+N", u"New simulation", wx.ITEM_NORMAL) self.file_menu.AppendItem(self.new) self.open = wx.MenuItem(self.file_menu, wx.ID_ANY, u"&Open..." + u"\t" + u"Ctrl+O", u"Open a previously save simulation", wx.ITEM_NORMAL) self.file_menu.AppendItem(self.open) self.save = wx.MenuItem(self.file_menu, wx.ID_ANY, u"&Save" + u"\t" + u"Ctrl+S", u"Save the current simulation", wx.ITEM_NORMAL) self.file_menu.AppendItem(self.save) self.save_as = wx.MenuItem(self.file_menu, wx.ID_ANY, u"Save &As..." + u"\t" + u"Ctrl+Shift+S", wx.EmptyString, wx.ITEM_NORMAL) self.file_menu.AppendItem(self.save_as) self.file_menu.AppendSeparator() self.import_geometry = wx.MenuItem( self.file_menu, wx.ID_ANY, u"Import &Geometry Data..." + u"\t" + u"Ctrl+G", wx.EmptyString, wx.ITEM_NORMAL) self.file_menu.AppendItem(self.import_geometry) self.import_huckel = wx.MenuItem( self.file_menu, wx.ID_ANY, u"Import Hückel Matrix Data..." + u"\t" + u"Ctrl+I", u"Import a Hückel matrix from a csv file", wx.ITEM_NORMAL) self.file_menu.AppendItem(self.import_huckel) self.export = wx.MenuItem(self.file_menu, wx.ID_ANY, u"&Export Results" + u"\t" + u"Ctrl+E", u"Export simulation results as a csv file ", wx.ITEM_NORMAL) self.file_menu.AppendItem(self.export) self.file_menu.AppendSeparator() self.quit = wx.MenuItem(self.file_menu, wx.ID_ANY, u"&Quit" + u"\t" + u"Ctrl+Q", u"Quit Orbis", wx.ITEM_NORMAL) self.file_menu.AppendItem(self.quit) self.main_menu_bar.Append(self.file_menu, u"&File") self.edit_menu = wx.Menu() self.main_menu_bar.Append(self.edit_menu, u"&Edit") self.tools_menu = wx.Menu() self.atoms_menu = wx.MenuItem( self.tools_menu, wx.ID_ANY, u"Edit &Atoms..." + u"\t" + u"Ctrl+Shift+A", u"Manage available atom types", wx.ITEM_NORMAL) self.tools_menu.AppendItem(self.atoms_menu) self.bonds_menu = wx.MenuItem( self.tools_menu, wx.ID_ANY, u"Edit &Bonds..." + u"\t" + u"Ctrl+Shift+B", u"Manage available bond types", wx.ITEM_NORMAL) self.tools_menu.AppendItem(self.bonds_menu) self.main_menu_bar.Append(self.tools_menu, u"&Tools") self.help_menu = wx.Menu() self.about = wx.MenuItem(self.help_menu, wx.ID_ANY, u"&About...", u"Information about Orbis", wx.ITEM_NORMAL) self.help_menu.AppendItem(self.about) self.documentation = wx.MenuItem( self.help_menu, wx.ID_ANY, u"&Documentation..." + u"\t" + u"Ctrl+Shift+D", u"Read the Orbis documentation", wx.ITEM_NORMAL) self.help_menu.AppendItem(self.documentation) self.main_menu_bar.Append(self.help_menu, u"&Help") self.SetMenuBar(self.main_menu_bar) self.toolbar = self.CreateToolBar(wx.TB_HORIZONTAL, wx.ID_ANY) self.toolbar.AddLabelTool( wx.ID_ANY, u"tool", wx.Bitmap(u"images/new16.png", wx.BITMAP_TYPE_ANY), wx.NullBitmap, wx.ITEM_NORMAL, u"Clear the current simulation", u"Clear the current simulation", None) self.toolbar.AddLabelTool( wx.ID_ANY, u"tool", wx.Bitmap(u"images/open16.png", wx.BITMAP_TYPE_ANY), wx.NullBitmap, wx.ITEM_NORMAL, wx.EmptyString, wx.EmptyString, None) self.toolbar.AddLabelTool( wx.ID_ANY, u"tool", wx.Bitmap(u"images/save16.png", wx.BITMAP_TYPE_ANY), wx.NullBitmap, wx.ITEM_NORMAL, u"Save the current simularion", u"Save the current simularion", None) self.toolbar.Realize() main_sizer = wx.BoxSizer(wx.HORIZONTAL) self.controls = wx.Panel(self, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, wx.TAB_TRAVERSAL) controls_sizer = wx.BoxSizer(wx.VERTICAL) huckel_control_sizer = wx.StaticBoxSizer( wx.StaticBox(self.controls, wx.ID_ANY, u"Hückel Controls"), wx.VERTICAL) basis_sizer = wx.FlexGridSizer(0, 2, 0, 0) basis_sizer.AddGrowableCol(1) basis_sizer.SetFlexibleDirection(wx.HORIZONTAL) basis_sizer.SetNonFlexibleGrowMode(wx.FLEX_GROWMODE_SPECIFIED) self.num_electrons_label = wx.StaticText(self.controls, wx.ID_ANY, u"Num Electrons:", wx.DefaultPosition, wx.DefaultSize, 0) self.num_electrons_label.Wrap(-1) basis_sizer.Add(self.num_electrons_label, 0, wx.ALIGN_CENTER_VERTICAL | wx.ALL, 5) self.num_electrons = wx.SpinCtrl(self.controls, wx.ID_ANY, wx.EmptyString, wx.DefaultPosition, wx.Size(48, -1), wx.SP_ARROW_KEYS, 0, 100, 0) self.num_electrons.SetToolTipString(u"Set the number of electrons") basis_sizer.Add(self.num_electrons, 0, wx.TOP | wx.BOTTOM | wx.RIGHT, 5) self.basis_size_label = wx.StaticText(self.controls, wx.ID_ANY, u"Basis Size:", wx.DefaultPosition, wx.DefaultSize, 0) self.basis_size_label.Wrap(-1) basis_sizer.Add(self.basis_size_label, 0, wx.ALL, 5) self.basis_size = wx.SpinCtrl(self.controls, wx.ID_ANY, wx.EmptyString, wx.DefaultPosition, wx.Size(48, -1), wx.SP_ARROW_KEYS, 0, 100, 0) self.basis_size.SetToolTipString( u"Set the basis size of the Huckel matrix") basis_sizer.Add(self.basis_size, 0, wx.TOP | wx.BOTTOM | wx.RIGHT, 5) huckel_control_sizer.Add(basis_sizer, 1, wx.EXPAND, 5) atom_typeChoices = [] self.atom_type = wx.Choice(self.controls, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, atom_typeChoices, 0) self.atom_type.SetSelection(0) self.atom_type.SetToolTipString(u"Choose an atom type") huckel_control_sizer.Add(self.atom_type, 0, wx.ALL | wx.EXPAND, 5) controls_sizer.Add(huckel_control_sizer, 0, wx.EXPAND | wx.ALL, 5) sketch_pad_control_sizer = wx.StaticBoxSizer( wx.StaticBox(self.controls, wx.ID_ANY, u"Sketch Pad Controls"), wx.VERTICAL) sketch_pad_control_sub_sizer = wx.GridSizer(0, 3, 0, 0) self.zoom_label = wx.StaticText(self.controls, wx.ID_ANY, u"Zoom:", wx.DefaultPosition, wx.DefaultSize, 0) self.zoom_label.Wrap(-1) sketch_pad_control_sub_sizer.Add( self.zoom_label, 0, wx.ALIGN_CENTER_VERTICAL | wx.TOP | wx.BOTTOM | wx.LEFT, 5) self.zoom_in = wx.Button(self.controls, wx.ID_ANY, u"+", wx.DefaultPosition, wx.DefaultSize, wx.BU_EXACTFIT) sketch_pad_control_sub_sizer.Add( self.zoom_in, 0, wx.ALIGN_CENTER_HORIZONTAL | wx.EXPAND | wx.TOP | wx.BOTTOM | wx.LEFT, 5) self.zoom_out = wx.Button(self.controls, wx.ID_ANY, u"-", wx.DefaultPosition, wx.DefaultSize, wx.BU_EXACTFIT) sketch_pad_control_sub_sizer.Add( self.zoom_out, 0, wx.ALIGN_CENTER_HORIZONTAL | wx.EXPAND | wx.ALL, 5) self.rotate_label = wx.StaticText(self.controls, wx.ID_ANY, u"Rotate:", wx.DefaultPosition, wx.DefaultSize, 0) self.rotate_label.Wrap(-1) sketch_pad_control_sub_sizer.Add(self.rotate_label, 0, wx.TOP | wx.BOTTOM | wx.LEFT, 5) self.rotate_cw = wx.Button(self.controls, wx.ID_ANY, u"+", wx.DefaultPosition, wx.DefaultSize, wx.BU_EXACTFIT) sketch_pad_control_sub_sizer.Add( self.rotate_cw, 0, wx.ALIGN_CENTER_HORIZONTAL | wx.EXPAND | wx.TOP | wx.BOTTOM | wx.LEFT, 5) self.rotate_ccw = wx.Button(self.controls, wx.ID_ANY, u"-", wx.DefaultPosition, wx.DefaultSize, wx.BU_EXACTFIT) sketch_pad_control_sub_sizer.Add( self.rotate_ccw, 0, wx.ALIGN_CENTER_HORIZONTAL | wx.EXPAND | wx.ALL, 5) sketch_pad_control_sub_sizer.AddSpacer((0, 0), 1, wx.EXPAND, 5) self.redraw = wx.Button(self.controls, wx.ID_ANY, u"Redraw", wx.DefaultPosition, wx.DefaultSize, wx.BU_EXACTFIT) self.redraw.SetToolTipString(u"Normalize the molecules shape") sketch_pad_control_sub_sizer.Add( self.redraw, 0, wx.ALIGN_CENTER_HORIZONTAL | wx.EXPAND | wx.TOP | wx.BOTTOM | wx.LEFT, 5) self.clear = wx.Button(self.controls, wx.ID_ANY, u"Clear", wx.DefaultPosition, wx.DefaultSize, wx.BU_EXACTFIT) sketch_pad_control_sub_sizer.Add( self.clear, 0, wx.ALIGN_CENTER_HORIZONTAL | wx.EXPAND | wx.ALL, 5) sketch_pad_control_sizer.Add(sketch_pad_control_sub_sizer, 1, wx.EXPAND, 5) controls_sizer.Add(sketch_pad_control_sizer, 0, wx.EXPAND | wx.ALL, 5) self.controls.SetSizer(controls_sizer) self.controls.Layout() controls_sizer.Fit(self.controls) main_sizer.Add(self.controls, 0, wx.EXPAND, 5) self.main_splitter = wx.SplitterWindow(self, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, wx.SP_3D) self.main_splitter.SetSashGravity(0.5) self.main_splitter.Bind(wx.EVT_IDLE, self.main_splitterOnIdle) self.plots_container = wx.Panel(self.main_splitter, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, wx.TAB_TRAVERSAL) plot_container_sizer = wx.BoxSizer(wx.VERTICAL) self.sketch_pad = sketchpad.SketchPad(self.plots_container) plot_container_sizer.Add(self.sketch_pad, 1, wx.ALL | wx.EXPAND, 5) self.results_plot_splitter = wx.SplitterWindow(self.plots_container, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, wx.SP_3D) self.results_plot_splitter.Bind(wx.EVT_IDLE, self.results_plot_splitterOnIdle) self.eld_plot_container = wx.Panel(self.results_plot_splitter, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, wx.TAB_TRAVERSAL) eld_plot_sizer = wx.BoxSizer(wx.VERTICAL) self.eld_plot = plots.EnergyLevelDiagram(self.eld_plot_container) eld_plot_sizer.Add(self.eld_plot, 1, wx.ALL | wx.EXPAND, 5) self.eld_plot_container.SetSizer(eld_plot_sizer) self.eld_plot_container.Layout() eld_plot_sizer.Fit(self.eld_plot_container) self.orbital_plot_container = wx.Panel(self.results_plot_splitter, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, wx.TAB_TRAVERSAL) orbital_plot_sizer = wx.BoxSizer(wx.VERTICAL) self.orbital_plot = plots.OrbitalDiagram(self.orbital_plot_container) orbital_plot_sizer.Add(self.orbital_plot, 1, wx.ALL | wx.EXPAND, 5) self.orbital_plot_container.SetSizer(orbital_plot_sizer) self.orbital_plot_container.Layout() orbital_plot_sizer.Fit(self.orbital_plot_container) self.results_plot_splitter.SplitVertically(self.eld_plot_container, self.orbital_plot_container, 0) plot_container_sizer.Add(self.results_plot_splitter, 1, wx.EXPAND, 5) self.plots_container.SetSizer(plot_container_sizer) self.plots_container.Layout() plot_container_sizer.Fit(self.plots_container) self.grids_container = wx.Panel(self.main_splitter, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, wx.TAB_TRAVERSAL) grids_sizer = wx.BoxSizer(wx.VERTICAL) self.huckel_notebook = wx.Notebook(self.grids_container, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, 0) self.huckel_container = wx.Panel(self.huckel_notebook, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, wx.TAB_TRAVERSAL) huckel_sizer = wx.BoxSizer(wx.VERTICAL) self.huckel_grid = wx.grid.Grid(self.huckel_container, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, 0) # Grid self.huckel_grid.CreateGrid(5, 5) self.huckel_grid.EnableEditing(True) self.huckel_grid.EnableGridLines(True) self.huckel_grid.EnableDragGridSize(False) self.huckel_grid.SetMargins(0, 0) # Columns self.huckel_grid.EnableDragColMove(False) self.huckel_grid.EnableDragColSize(True) self.huckel_grid.SetColLabelSize(30) self.huckel_grid.SetColLabelAlignment(wx.ALIGN_CENTRE, wx.ALIGN_CENTRE) # Rows self.huckel_grid.EnableDragRowSize(True) self.huckel_grid.SetRowLabelSize(80) self.huckel_grid.SetRowLabelAlignment(wx.ALIGN_CENTRE, wx.ALIGN_CENTRE) # Label Appearance # Cell Defaults self.huckel_grid.SetDefaultCellAlignment(wx.ALIGN_LEFT, wx.ALIGN_TOP) huckel_sizer.Add(self.huckel_grid, 1, wx.EXPAND, 5) self.huckel_container.SetSizer(huckel_sizer) self.huckel_container.Layout() huckel_sizer.Fit(self.huckel_container) self.huckel_notebook.AddPage(self.huckel_container, u"Hückel Matrix", False) grids_sizer.Add(self.huckel_notebook, 1, wx.EXPAND, 5) self.results_notebook = wx.Notebook(self.grids_container, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, 0) self.eigen_container = wx.Panel(self.results_notebook, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, wx.TAB_TRAVERSAL) eigen_sizer = wx.BoxSizer(wx.VERTICAL) self.eigen_grid = wx.grid.Grid(self.eigen_container, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, 0) # Grid self.eigen_grid.CreateGrid(5, 5) self.eigen_grid.EnableEditing(False) self.eigen_grid.EnableGridLines(True) self.eigen_grid.EnableDragGridSize(False) self.eigen_grid.SetMargins(0, 0) # Columns self.eigen_grid.EnableDragColMove(False) self.eigen_grid.EnableDragColSize(True) self.eigen_grid.SetColLabelSize(30) self.eigen_grid.SetColLabelAlignment(wx.ALIGN_CENTRE, wx.ALIGN_CENTRE) # Rows self.eigen_grid.EnableDragRowSize(True) self.eigen_grid.SetRowLabelSize(80) self.eigen_grid.SetRowLabelAlignment(wx.ALIGN_CENTRE, wx.ALIGN_CENTRE) # Label Appearance # Cell Defaults self.eigen_grid.SetDefaultCellAlignment(wx.ALIGN_LEFT, wx.ALIGN_TOP) eigen_sizer.Add(self.eigen_grid, 1, wx.EXPAND, 5) self.eigen_container.SetSizer(eigen_sizer) self.eigen_container.Layout() eigen_sizer.Fit(self.eigen_container) self.results_notebook.AddPage(self.eigen_container, u"Eigenvectors", True) self.bond_order_containers = wx.Panel(self.results_notebook, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, wx.TAB_TRAVERSAL) bond_order_sizer = wx.BoxSizer(wx.VERTICAL) self.bond_order_grid = wx.grid.Grid(self.bond_order_containers, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, 0) # Grid self.bond_order_grid.CreateGrid(5, 5) self.bond_order_grid.EnableEditing(False) self.bond_order_grid.EnableGridLines(True) self.bond_order_grid.EnableDragGridSize(False) self.bond_order_grid.SetMargins(0, 0) # Columns self.bond_order_grid.EnableDragColMove(False) self.bond_order_grid.EnableDragColSize(True) self.bond_order_grid.SetColLabelSize(30) self.bond_order_grid.SetColLabelAlignment(wx.ALIGN_CENTRE, wx.ALIGN_CENTRE) # Rows self.bond_order_grid.EnableDragRowSize(True) self.bond_order_grid.SetRowLabelSize(80) self.bond_order_grid.SetRowLabelAlignment(wx.ALIGN_CENTRE, wx.ALIGN_CENTRE) # Label Appearance # Cell Defaults self.bond_order_grid.SetDefaultCellAlignment(wx.ALIGN_LEFT, wx.ALIGN_TOP) bond_order_sizer.Add(self.bond_order_grid, 1, wx.EXPAND, 5) self.bond_order_containers.SetSizer(bond_order_sizer) self.bond_order_containers.Layout() bond_order_sizer.Fit(self.bond_order_containers) self.results_notebook.AddPage(self.bond_order_containers, u"Π Bond Orders", False) self.charge_container = wx.Panel(self.results_notebook, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, wx.TAB_TRAVERSAL) charge_sizer = wx.BoxSizer(wx.VERTICAL) self.charge_grid = wx.grid.Grid(self.charge_container, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, 0) # Grid self.charge_grid.CreateGrid(5, 5) self.charge_grid.EnableEditing(False) self.charge_grid.EnableGridLines(True) self.charge_grid.EnableDragGridSize(False) self.charge_grid.SetMargins(0, 0) # Columns self.charge_grid.EnableDragColMove(False) self.charge_grid.EnableDragColSize(True) self.charge_grid.SetColLabelSize(30) self.charge_grid.SetColLabelAlignment(wx.ALIGN_CENTRE, wx.ALIGN_CENTRE) # Rows self.charge_grid.EnableDragRowSize(True) self.charge_grid.SetRowLabelSize(80) self.charge_grid.SetRowLabelAlignment(wx.ALIGN_CENTRE, wx.ALIGN_CENTRE) # Label Appearance # Cell Defaults self.charge_grid.SetDefaultCellAlignment(wx.ALIGN_LEFT, wx.ALIGN_TOP) charge_sizer.Add(self.charge_grid, 0, wx.ALL, 5) self.charge_container.SetSizer(charge_sizer) self.charge_container.Layout() charge_sizer.Fit(self.charge_container) self.results_notebook.AddPage(self.charge_container, u"Charge Densities", False) self.aa_polar_container = wx.Panel(self.results_notebook, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, wx.TAB_TRAVERSAL) aa_polar_sizer = wx.BoxSizer(wx.VERTICAL) self.aa_polar_grid = wx.grid.Grid(self.aa_polar_container, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, 0) # Grid self.aa_polar_grid.CreateGrid(5, 5) self.aa_polar_grid.EnableEditing(False) self.aa_polar_grid.EnableGridLines(True) self.aa_polar_grid.EnableDragGridSize(False) self.aa_polar_grid.SetMargins(0, 0) # Columns self.aa_polar_grid.EnableDragColMove(False) self.aa_polar_grid.EnableDragColSize(True) self.aa_polar_grid.SetColLabelSize(30) self.aa_polar_grid.SetColLabelAlignment(wx.ALIGN_CENTRE, wx.ALIGN_CENTRE) # Rows self.aa_polar_grid.EnableDragRowSize(True) self.aa_polar_grid.SetRowLabelSize(80) self.aa_polar_grid.SetRowLabelAlignment(wx.ALIGN_CENTRE, wx.ALIGN_CENTRE) # Label Appearance # Cell Defaults self.aa_polar_grid.SetDefaultCellAlignment(wx.ALIGN_LEFT, wx.ALIGN_TOP) aa_polar_sizer.Add(self.aa_polar_grid, 0, wx.ALL, 5) self.aa_polar_container.SetSizer(aa_polar_sizer) self.aa_polar_container.Layout() aa_polar_sizer.Fit(self.aa_polar_container) self.results_notebook.AddPage(self.aa_polar_container, u"A-A Polarizabilities", False) self.ab_polar_container = wx.Panel(self.results_notebook, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, wx.TAB_TRAVERSAL) ab_polar_sizer = wx.BoxSizer(wx.VERTICAL) self.ab_polar_grid = wx.grid.Grid(self.ab_polar_container, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, 0) # Grid self.ab_polar_grid.CreateGrid(5, 5) self.ab_polar_grid.EnableEditing(False) self.ab_polar_grid.EnableGridLines(True) self.ab_polar_grid.EnableDragGridSize(False) self.ab_polar_grid.SetMargins(0, 0) # Columns self.ab_polar_grid.EnableDragColMove(False) self.ab_polar_grid.EnableDragColSize(True) self.ab_polar_grid.SetColLabelSize(30) self.ab_polar_grid.SetColLabelAlignment(wx.ALIGN_CENTRE, wx.ALIGN_CENTRE) # Rows self.ab_polar_grid.EnableDragRowSize(True) self.ab_polar_grid.SetRowLabelSize(80) self.ab_polar_grid.SetRowLabelAlignment(wx.ALIGN_CENTRE, wx.ALIGN_CENTRE) # Label Appearance # Cell Defaults self.ab_polar_grid.SetDefaultCellAlignment(wx.ALIGN_LEFT, wx.ALIGN_TOP) ab_polar_sizer.Add(self.ab_polar_grid, 0, wx.ALL, 5) self.ab_polar_container.SetSizer(ab_polar_sizer) self.ab_polar_container.Layout() ab_polar_sizer.Fit(self.ab_polar_container) self.results_notebook.AddPage(self.ab_polar_container, u"A-B Polarizabilities", False) grids_sizer.Add(self.results_notebook, 1, wx.EXPAND, 5) self.grids_container.SetSizer(grids_sizer) self.grids_container.Layout() grids_sizer.Fit(self.grids_container) self.main_splitter.SplitVertically(self.plots_container, self.grids_container, 0) main_sizer.Add(self.main_splitter, 1, wx.EXPAND, 5) self.SetSizer(main_sizer) self.Layout() self.status_bar = self.CreateStatusBar(1, wx.ST_SIZEGRIP, wx.ID_ANY) self.Centre(wx.BOTH) # Connect Events self.Bind(wx.EVT_MENU, self.on_new, id=self.new.GetId()) self.Bind(wx.EVT_MENU, self.on_open, id=self.open.GetId()) self.Bind(wx.EVT_MENU, self.on_save, id=self.save.GetId()) self.Bind(wx.EVT_MENU, self.on_save_as, id=self.save_as.GetId()) self.Bind(wx.EVT_MENU, self.on_import_geom, id=self.import_geometry.GetId()) self.Bind(wx.EVT_MENU, self.on_quit, id=self.quit.GetId()) self.Bind(wx.EVT_MENU, self.on_atoms, id=self.atoms_menu.GetId()) self.Bind(wx.EVT_MENU, self.on_bonds, id=self.bonds_menu.GetId()) self.Bind(wx.EVT_MENU, self.on_about, id=self.about.GetId()) self.Bind(wx.EVT_MENU, self.on_documentation, id=self.documentation.GetId()) self.Bind(wx.EVT_TOOL, self.on_new, id=wx.ID_ANY) self.Bind(wx.EVT_TOOL_ENTER, self.on_new, id=wx.ID_ANY) self.Bind(wx.EVT_TOOL, self.on_open, id=wx.ID_ANY) self.Bind(wx.EVT_TOOL_ENTER, self.on_open, id=wx.ID_ANY) self.Bind(wx.EVT_TOOL, self.on_save, id=wx.ID_ANY) self.Bind(wx.EVT_TOOL_ENTER, self.on_save, id=wx.ID_ANY) self.num_electrons.Bind(wx.EVT_SPINCTRL, self.on_huckel_change) self.basis_size.Bind(wx.EVT_SPINCTRL, self.on_huckel_change) self.basis_size.Bind(wx.EVT_TEXT, self.on_huckel_change) self.atom_type.Bind(wx.EVT_CHOICE, self.on_atom_change) self.zoom_in.Bind(wx.EVT_BUTTON, self.on_zoom) self.zoom_out.Bind(wx.EVT_BUTTON, self.on_zoom) self.redraw.Bind(wx.EVT_BUTTON, self.on_redraw) self.clear.Bind(wx.EVT_BUTTON, self.on_clear)
def __init__(self, satellite='NOAA-XX', gain=35, freq=1698e6, sync_check=False, side="A:0", rate=2e6, frames_file=os.environ['HOME'] + '/data/noaa/frames/NOAA-XX.hrpt', baseband_file=os.environ['HOME'] + '/data/noaa/baseband/NOAA-XX.dat'): grc_wxgui.top_block_gui.__init__(self, title="Enhanced NOAA HRPT Receiver") _icon_path = "/usr/share/icons/hicolor/32x32/apps/gnuradio-grc.png" self.SetIcon(wx.Icon(_icon_path, wx.BITMAP_TYPE_ANY)) ################################################## # Parameters ################################################## self.satellite = satellite self.gain = gain self.freq = freq self.sync_check = sync_check self.side = side self.rate = rate self.frames_file = frames_file self.baseband_file = baseband_file ################################################## # Variables ################################################## self.sym_rate = sym_rate = 600 * 1109 self.samp_rate = samp_rate = rate self.config_filename = config_filename = os.environ[ 'HOME'] + '/.gnuradio/noaa_hrpt.conf' self.sps = sps = samp_rate / sym_rate self._saved_pll_alpha_config = ConfigParser.ConfigParser() self._saved_pll_alpha_config.read(config_filename) try: saved_pll_alpha = self._saved_pll_alpha_config.getfloat( satellite, 'pll_alpha') except: saved_pll_alpha = 0.005 self.saved_pll_alpha = saved_pll_alpha self._saved_clock_alpha_config = ConfigParser.ConfigParser() self._saved_clock_alpha_config.read(config_filename) try: saved_clock_alpha = self._saved_clock_alpha_config.getfloat( satellite, 'clock_alpha') except: saved_clock_alpha = 0.001 self.saved_clock_alpha = saved_clock_alpha self.sync_check_txt = sync_check_txt = sync_check self.side_text = side_text = side self._saved_gain_config = ConfigParser.ConfigParser() self._saved_gain_config.read(config_filename) try: saved_gain = self._saved_gain_config.getfloat(satellite, 'gain') except: saved_gain = gain self.saved_gain = saved_gain self.satellite_text = satellite_text = satellite self.sample_rate_text = sample_rate_text = samp_rate self.rate_tb = rate_tb = rate self.pll_alpha = pll_alpha = saved_pll_alpha self.max_clock_offset = max_clock_offset = 0.1 self.max_carrier_offset = max_carrier_offset = 2 * math.pi * 100e3 / samp_rate self.hs = hs = int(sps / 2.0) self.gain_slider = gain_slider = gain self.freq_tb = freq_tb = freq self.frames_outfile_text = frames_outfile_text = frames_file self.datetime_text = datetime_text = strftime("%A, %B %d %Y %H:%M:%S", localtime()) self.clock_alpha = clock_alpha = saved_clock_alpha ################################################## # Blocks ################################################## _gain_slider_sizer = wx.BoxSizer(wx.VERTICAL) self._gain_slider_text_box = forms.text_box( parent=self.GetWin(), sizer=_gain_slider_sizer, value=self.gain_slider, callback=self.set_gain_slider, label="Gain", converter=forms.int_converter(), proportion=0, ) self._gain_slider_slider = forms.slider( parent=self.GetWin(), sizer=_gain_slider_sizer, value=self.gain_slider, callback=self.set_gain_slider, minimum=0, maximum=100, num_steps=100, style=wx.SL_HORIZONTAL, cast=int, proportion=1, ) self.GridAdd(_gain_slider_sizer, 2, 0, 1, 1) self.displays = self.displays = wx.Notebook(self.GetWin(), style=wx.NB_TOP) self.displays.AddPage(grc_wxgui.Panel(self.displays), "RX NOAA HRPT") self.displays.AddPage(grc_wxgui.Panel(self.displays), "Information") self.Add(self.displays) _clock_alpha_sizer = wx.BoxSizer(wx.VERTICAL) self._clock_alpha_text_box = forms.text_box( parent=self.GetWin(), sizer=_clock_alpha_sizer, value=self.clock_alpha, callback=self.set_clock_alpha, label="Clock alpha", converter=forms.float_converter(), proportion=0, ) self._clock_alpha_slider = forms.slider( parent=self.GetWin(), sizer=_clock_alpha_sizer, value=self.clock_alpha, callback=self.set_clock_alpha, minimum=0.001, maximum=0.1, num_steps=100, style=wx.SL_HORIZONTAL, cast=float, proportion=1, ) self.GridAdd(_clock_alpha_sizer, 2, 2, 1, 1) self.wxgui_fftsink2_0 = fftsink2.fft_sink_c( self.displays.GetPage(0).GetWin(), baseband_freq=0, y_per_div=5, y_divs=10, ref_level=-70, ref_scale=2.0, sample_rate=samp_rate, fft_size=1024, fft_rate=15, average=True, avg_alpha=0.4, title="NOAA HRPT FFT Spectrum", peak_hold=False, ) self.displays.GetPage(0).Add(self.wxgui_fftsink2_0.win) self.uhd_usrp_source_0 = uhd.usrp_source( device_addr="", stream_args=uhd.stream_args( cpu_format="fc32", channels=range(1), ), ) self.uhd_usrp_source_0.set_subdev_spec(side, 0) self.uhd_usrp_source_0.set_samp_rate(samp_rate) self.uhd_usrp_source_0.set_center_freq(freq, 0) self.uhd_usrp_source_0.set_gain(gain_slider, 0) self._sync_check_txt_static_text = forms.static_text( parent=self.GetWin(), value=self.sync_check_txt, callback=self.set_sync_check_txt, label="Continuous sync check", converter=forms.str_converter(), ) self.GridAdd(self._sync_check_txt_static_text, 0, 2, 1, 1) self._side_text_static_text = forms.static_text( parent=self.GetWin(), value=self.side_text, callback=self.set_side_text, label="USRP Side", converter=forms.str_converter(), ) self.GridAdd(self._side_text_static_text, 0, 0, 1, 1) self._satellite_text_static_text = forms.static_text( parent=self.GetWin(), value=self.satellite_text, callback=self.set_satellite_text, label="Satellite", converter=forms.str_converter(), ) self.GridAdd(self._satellite_text_static_text, 0, 1, 1, 1) self._sample_rate_text_static_text = forms.static_text( parent=self.displays.GetPage(1).GetWin(), value=self.sample_rate_text, callback=self.set_sample_rate_text, label="Sample rate", converter=forms.float_converter(), ) self.displays.GetPage(1).GridAdd(self._sample_rate_text_static_text, 3, 0, 1, 1) self._rate_tb_text_box = forms.text_box( parent=self.GetWin(), value=self.rate_tb, callback=self.set_rate_tb, label="Sample rate", converter=forms.float_converter(), ) self.GridAdd(self._rate_tb_text_box, 1, 0, 1, 1) self.poesweather_noaa_hrpt_deframer_0 = poesweather.noaa_hrpt_deframer( False) _pll_alpha_sizer = wx.BoxSizer(wx.VERTICAL) self._pll_alpha_text_box = forms.text_box( parent=self.GetWin(), sizer=_pll_alpha_sizer, value=self.pll_alpha, callback=self.set_pll_alpha, label="PLL Alpha", converter=forms.float_converter(), proportion=0, ) self._pll_alpha_slider = forms.slider( parent=self.GetWin(), sizer=_pll_alpha_sizer, value=self.pll_alpha, callback=self.set_pll_alpha, minimum=0.005, maximum=0.5, num_steps=100, style=wx.SL_HORIZONTAL, cast=float, proportion=1, ) self.GridAdd(_pll_alpha_sizer, 2, 1, 1, 1) self.pll = noaa.hrpt_pll_cf(pll_alpha, pll_alpha**2 / 4.0, max_carrier_offset) self._freq_tb_text_box = forms.text_box( parent=self.GetWin(), value=self.freq_tb, callback=self.set_freq_tb, label="Frequency", converter=forms.float_converter(), ) self.GridAdd(self._freq_tb_text_box, 1, 1, 1, 1) self._frames_outfile_text_static_text = forms.static_text( parent=self.displays.GetPage(1).GetWin(), value=self.frames_outfile_text, callback=self.set_frames_outfile_text, label="Frames filename", converter=forms.str_converter(), ) self.displays.GetPage(1).GridAdd(self._frames_outfile_text_static_text, 4, 0, 1, 1) self.digital_clock_recovery_mm_xx_0 = digital.clock_recovery_mm_ff( sps / 2.0, clock_alpha**2 / 4.0, 0.5, clock_alpha, max_clock_offset) self.digital_binary_slicer_fb_0 = digital.binary_slicer_fb() self._datetime_text_static_text = forms.static_text( parent=self.displays.GetPage(1).GetWin(), value=self.datetime_text, callback=self.set_datetime_text, label="Acquisition start", converter=forms.str_converter(), ) self.displays.GetPage(1).GridAdd(self._datetime_text_static_text, 2, 0, 1, 1) self.blocks_moving_average_xx_0 = blocks.moving_average_ff( hs, 1.0 / hs, 4000) self.blocks_file_sink_1 = blocks.file_sink(gr.sizeof_short * 1, baseband_file) self.blocks_file_sink_1.set_unbuffered(False) self.blocks_file_sink_0 = blocks.file_sink(gr.sizeof_short * 1, frames_file) self.blocks_file_sink_0.set_unbuffered(False) self.blocks_complex_to_interleaved_short_0 = blocks.complex_to_interleaved_short( ) self.analog_agc_xx_0 = analog.agc_cc(1e-5, 1.0, 1.0 / 32768.0, 1.0) ################################################## # Connections ################################################## self.connect((self.analog_agc_xx_0, 0), (self.pll, 0)) self.connect((self.pll, 0), (self.blocks_moving_average_xx_0, 0)) self.connect((self.uhd_usrp_source_0, 0), (self.wxgui_fftsink2_0, 0)) self.connect((self.uhd_usrp_source_0, 0), (self.analog_agc_xx_0, 0)) self.connect((self.blocks_moving_average_xx_0, 0), (self.digital_clock_recovery_mm_xx_0, 0)) self.connect((self.digital_clock_recovery_mm_xx_0, 0), (self.digital_binary_slicer_fb_0, 0)) self.connect((self.poesweather_noaa_hrpt_deframer_0, 0), (self.blocks_file_sink_0, 0)) self.connect((self.digital_binary_slicer_fb_0, 0), (self.poesweather_noaa_hrpt_deframer_0, 0)) self.connect((self.uhd_usrp_source_0, 0), (self.blocks_complex_to_interleaved_short_0, 0)) self.connect((self.blocks_complex_to_interleaved_short_0, 0), (self.blocks_file_sink_1, 0))
def __init__(self, parent): wx.Frame.__init__(self, parent, -1, "OpenSTV", size=(900, 600)) warnings.showwarning = self.catchWarnings # Get method plugins and create dict for easy access plugins = getMethodPlugins("classes") self.methodClasses1 = {} # Methods enabled by default self.methodClasses2 = {} # All methods self.lastMethod = "Scottish STV" for p in plugins: if p.status == 1: self.methodClasses1[p.longMethodName] = p self.methodClasses2[p.longMethodName] = p self.methodClasses = self.methodClasses1 # Methods currently viewable to user self.breakTiesRandomly = False fn = os.path.join(getHome(), "Icons", "pie.ico") self.icon = wx.Icon(fn, wx.BITMAP_TYPE_ICO) self.SetIcon(self.icon) self.lastBallotFile = "" self.electionList = [] self.menuBar = wx.MenuBar() self.MakeMenu() self.Bind(wx.EVT_CLOSE, self.OnCloseWindow) # create a notebook self.notebook = wx.Notebook(self, -1) # create a console window self.console = wx.TextCtrl(self.notebook, -1, style=wx.TE_MULTILINE|wx.TE_READONLY|\ wx.TE_WORDWRAP|wx.FIXED|wx.TE_RICH2) self.console.SetMaxLength(0) ps = self.console.GetFont().GetPointSize() font = wx.Font(ps, wx.MODERN, wx.NORMAL, wx.NORMAL) self.console.SetFont(font) # add the console as the first page self.notebook.AddPage(self.console, "Console") self.output = Output(self.notebook) sys.stdout = self.output sys.stderr = self.output self.introText = """\ OpenSTV Copyright 2003-2010 Jeffrey O'Neill GNU General Public License See Help->License for more details. To run an election with an existing ballot file, select "New Election" from the File menu. To create a new ballot file, select "Create New Ballot File" from the File menu. To edit an existing ballot file, select "Edit Ballot File" from the File menu. For more information about the operation of OpenSTV, see the Help menu, go to www.OpenSTV.org, or send an email to [email protected]. """ self.console.AppendText(self.introText)
def __init__(self, parent, access, uid): self.makeInventoryValEntry() wx.Frame.__init__(self, parent, id=wx.ID_ANY, title=u"POS, ERP and Accounting", pos=wx.DefaultPosition, size=wx.Size(676, 460), style=wx.DEFAULT_FRAME_STYLE | wx.MAXIMIZE | wx.TAB_TRAVERSAL) self.SetSizeHints(wx.DefaultSize, wx.DefaultSize) bSizer1 = wx.BoxSizer(wx.VERTICAL) self.m_notebook1 = wx.Notebook(self, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, 0) x = 0 if access[x:x + 1] == '1': self.m_salesPanel = cashSalePanel(self.m_notebook1, "Cash Sale", uid) self.m_notebook1.AddPage(self.m_salesPanel, u"Sales", True) x = x + 1 if access[x:x + 1] == '1': self.m_invoicePanel = invoiceSalePanel(self.m_notebook1, "Print Invoice", uid) self.m_notebook1.AddPage(self.m_invoicePanel, u"Invoice", False) x = x + 1 if access[x:x + 1] == '1': self.m_quotePanel = quotationPanel(self.m_notebook1, "Print Quotation", uid) self.m_notebook1.AddPage(self.m_quotePanel, u"Quotation", False) x = x + 1 if access[x:x + 1] == '1': self.m_purchasePanel = purchasePanel(self.m_notebook1, "Purchase", uid) self.m_notebook1.AddPage(self.m_purchasePanel, u"GPN", False) x = x + 1 if access[x:x + 1] == '1': self.m_stockLevelsPanel = stockLevelsPanel(self.m_notebook1) self.m_notebook1.AddPage(self.m_stockLevelsPanel, u"Stock Levels", False) x = x + 1 if access[x:x + 1] == '1': self.m_salesInfoPanel = saleInfoPanel(self.m_notebook1) self.m_notebook1.AddPage(self.m_salesInfoPanel, u"Sale Info", False) x = x + 1 if access[x:x + 1] == '1': self.m_invoiceInfoPanel = invoiceInfoPanel(self.m_notebook1) self.m_notebook1.AddPage(self.m_invoiceInfoPanel, u"Invoice Info", False) x = x + 1 if access[x:x + 1] == '1': self.m_purchaseInfoPanel = purchaseInfoPanel(self.m_notebook1) self.m_notebook1.AddPage(self.m_purchaseInfoPanel, u"GPN Info", False) x = x + 1 if access[x:x + 1] == '1': self.m_quoteInfoPanel = quoteInfoPanel(self.m_notebook1) self.m_notebook1.AddPage(self.m_quoteInfoPanel, u"Quotation Info", False) x = x + 1 if access[x:x + 1] == '1': self.m_customerInfoPanel = customerInfoPanel(self.m_notebook1) self.m_notebook1.AddPage(self.m_customerInfoPanel, u"Customer Info", False) x = x + 1 if access[x:x + 1] == '1': self.m_supplierInfoPanel = supplierInfoPanel(self.m_notebook1) self.m_notebook1.AddPage(self.m_supplierInfoPanel, u"Supplier Info", False) x = x + 1 if access[x:x + 1] == '1': self.m_journalPanel = journalPanel(self.m_notebook1) self.m_notebook1.AddPage(self.m_journalPanel, u"Journal", False) x = x + 1 if access[x:x + 1] == '1': self.m_folioAccountsPanel = folioAccountsPanel(self.m_notebook1) self.m_notebook1.AddPage(self.m_folioAccountsPanel, u"Accounts", False) x = x + 1 if access[x:x + 1] == '1': self.m_controlAccountPanel = controlAccountPanel(self.m_notebook1) self.m_notebook1.AddPage(self.m_controlAccountPanel, u"Control Account", False) x = x + 1 if access[x:x + 1] == '1': self.m_incomeStatementPanel = incomeStatementPanel( self.m_notebook1) self.m_notebook1.AddPage(self.m_incomeStatementPanel, u"Income Statement", False) x = x + 1 if access[x:x + 1] == '1': self.m_usersPanel = usersPanel(self.m_notebook1) self.m_notebook1.AddPage(self.m_usersPanel, u"Users", False) x = x + 1 bSizer1.Add(self.m_notebook1, 1, wx.EXPAND | wx.ALL, 5) self.SetSizer(bSizer1) self.Layout() self.Centre(wx.BOTH) self.m_notebook1.Bind(wx.EVT_NOTEBOOK_PAGE_CHANGED, self.refreshStockLevels) self.Bind(wx.EVT_CLOSE, self.OnQuit)
def OnCreate(self, doc, flags): frame = wx.GetApp().CreateDocumentFrame(self, doc, flags) sizer = wx.BoxSizer() self._notebook = wx.Notebook(frame, -1, style=wx.NB_BOTTOM) self.Activate() return True
def OnInit(self): self.ThreadControl = 0 #say thread what to do self.COMPORT = 0 self.senprod = None self.DEBUGLEVEL = 0 #debug everthing tID = wx.NewId() #read settings from file self.config = ConfigParser.RawConfigParser() #print platform.system() #print platform.mac_ver()[] if "OS" in os.environ.keys(): #runnig under windows self.configfilepath = "pyobd.ini" else: self.configfilepath = os.environ['HOME'] + '/.pyobdrc' if self.config.read(self.configfilepath) == []: self.COMPORT = "/dev/ttyACM0" self.RECONNATTEMPTS = 5 self.SERTIMEOUT = 2 else: self.COMPORT = self.config.get("pyOBD", "COMPORT") self.RECONNATTEMPTS = self.config.getint("pyOBD", "RECONNATTEMPTS") self.SERTIMEOUT = self.config.getint("pyOBD", "SERTIMEOUT") frame = wx.Frame(None, -1, "pyOBD-II") self.frame = frame EVT_RESULT(self, self.OnResult, EVT_RESULT_ID) EVT_RESULT(self, self.OnDebug, EVT_DEBUG_ID) EVT_RESULT(self, self.OnDtc, EVT_DTC_ID) EVT_RESULT(self, self.OnStatus, EVT_STATUS_ID) EVT_RESULT(self, self.OnTests, EVT_TESTS_ID) # Main notebook frames self.nb = wx.Notebook(frame, -1, style=wx.NB_TOP) self.status = self.MyListCtrl(self.nb, tID, style=wx.LC_REPORT | wx.SUNKEN_BORDER) self.status.InsertColumn(0, "Description", width=200) self.status.InsertColumn(1, "Value") self.status.Append(["Link State", "Disconnnected"]) self.status.Append(["Protocol", "---"]) self.status.Append(["Cable version", "---"]) self.status.Append(["COM port", self.COMPORT]) self.nb.AddPage(self.status, "Status") self.OBDTests = self.MyListCtrl(self.nb, tID, style=wx.LC_REPORT | wx.SUNKEN_BORDER) self.OBDTests.InsertColumn(0, "Description", width=200) self.OBDTests.InsertColumn(1, "Value") self.nb.AddPage(self.OBDTests, "Tests") for i in range(0, len(ptest)): #fill MODE 1 PID 1 test description self.OBDTests.Append([ptest[i], "---"]) self.build_sensor_page() self.build_DTC_page() self.trace = self.MyListCtrl(self.nb, tID, style=wx.LC_REPORT | wx.SUNKEN_BORDER) self.trace.InsertColumn(0, "Level", width=40) self.trace.InsertColumn(1, "Message") self.nb.AddPage(self.trace, "Trace") self.TraceDebug(1, "Application started") # Setting up the menu. self.filemenu = wx.Menu() self.filemenu.Append(ID_EXIT, "E&xit", " Terminate the program") self.settingmenu = wx.Menu() self.settingmenu.Append(ID_CONFIG, "Configure", " Configure pyOBD") self.settingmenu.Append(ID_RESET, "Connect", " Reopen and connect to device") self.settingmenu.Append(ID_DISCONNECT, "Disconnect", "Close connection to device") self.dtcmenu = wx.Menu() # tady toto nastavi automaticky tab DTC a provede akci self.dtcmenu.Append(ID_GETC, "Get DTCs", " Get DTC Codes") self.dtcmenu.Append(ID_CLEAR, "Clear DTC", " Clear DTC Codes") self.dtcmenu.Append(ID_LOOK, "Code Lookup", " Lookup DTC Codes") self.helpmenu = wx.Menu() self.helpmenu.Append(ID_HELP_ABOUT, "About this program", " Get DTC Codes") self.helpmenu.Append(ID_HELP_VISIT, "Visit program homepage", " Lookup DTC Codes") self.helpmenu.Append(ID_HELP_ORDER, "Order OBD-II cables", " Clear DTC Codes") # Creating the menubar. self.menuBar = wx.MenuBar() self.menuBar.Append(self.filemenu, "&File") # Adding the "filemenu" to the MenuBar self.menuBar.Append(self.settingmenu, "&OBD-II") self.menuBar.Append(self.dtcmenu, "&Trouble codes") self.menuBar.Append(self.helpmenu, "&Help") frame.SetMenuBar( self.menuBar) # Adding the MenuBar to the Frame content. frame.Bind(wx.EVT_MENU, self.OnExit, id=ID_EXIT) # attach the menu-event ID_EXIT to the frame.Bind(wx.EVT_MENU, self.QueryClear, id=ID_CLEAR) frame.Bind(wx.EVT_MENU, self.Configure, id=ID_CONFIG) frame.Bind(wx.EVT_MENU, self.OpenPort, id=ID_RESET) frame.Bind(wx.EVT_MENU, self.OnDisconnect, id=ID_DISCONNECT) frame.Bind(wx.EVT_MENU, self.GetDTC, id=ID_GETC) frame.Bind(wx.EVT_MENU, self.CodeLookup, id=ID_LOOK) frame.Bind(wx.EVT_MENU, self.OnHelpAbout, id=ID_HELP_ABOUT) frame.Bind(wx.EVT_MENU, self.OnHelpVisit, id=ID_HELP_VISIT) frame.Bind(wx.EVT_MENU, self.OnHelpOrder, id=ID_HELP_ORDER) self.SetTopWindow(frame) frame.Show(True) frame.SetSize((520, 400)) self.sensor_control_off() return True
def __init__(self, *args, **kw): wx.Panel.__init__(self, *args, **kw) # Set common sizes params.InitParams(self) topSizer = wx.BoxSizer(wx.VERTICAL) pinSizer = wx.BoxSizer(wx.HORIZONTAL) sizer = wx.FlexGridSizer(2, 2, 1, 5) self.labelRef = wx.StaticText(self, -1, 'ref:') self.textRef = params.ParamText(self, 'ref', textWidth=200) sizer.AddMany([(self.labelRef, 0, wx.ALIGN_CENTER_VERTICAL), (self.textRef, 0, wx.LEFT, 5)]) self.labelClass = wx.StaticText(self, -1, 'class:') self.textClass = params.ParamText(self, 'class', textWidth=200) sizer.AddMany([(self.labelClass, 0, wx.ALIGN_CENTER_VERTICAL), (self.textClass, 0, wx.LEFT, 5)]) self.labelName = wx.StaticText(self, -1, 'name:') self.textName = params.ParamText(self, 'name', textWidth=200) sizer.AddMany([(self.labelName, 0, wx.ALIGN_CENTER_VERTICAL), (self.textName, 0, wx.LEFT, 5)]) pinSizer.Add(sizer, 0, wx.ALL, 5) pinSizer.Add((0, 0), 1) self.pinButton = buttons.GenBitmapToggleButton( self, bitmap=images.ToolPin.GetBitmap(), style=wx.BORDER_NONE) self.pinButton.SetBitmapSelected(images.ToolPinDown.GetBitmap()) self.pinButton.SetToggle(g.conf.panelPinState) self.pinButton.SetToolTipString('Sticky page selection') # No highlighting please self.pinButton.GetBackgroundBrush = lambda dc: None pinSizer.Add(self.pinButton) topSizer.Add(pinSizer, 0, wx.EXPAND) self.sizer = sizer self.nb = wx.Notebook(self, -1) if wx.Platform == '__WXGTK__': # Redefine AddPage on GTK to fix when page added is not shown _oldAddPage = wx.Notebook.AddPage def _newAddPage(self, page, label): _oldAddPage(self, page, label) page.Show(True) wx.Notebook.AddPage = _newAddPage # Create scrolled windows for panels self.pageA = ScrolledPage(self.nb) self.nb.AddPage(self.pageA, 'Attributes') # Style page self.pageStyle = ScrolledPage(self.nb) self.pageStyle.Hide() # Extra style page self.pageExStyle = ScrolledPage(self.nb) self.pageExStyle.Hide() # Window attributes page self.pageWA = ScrolledPage(self.nb) self.pageWA.Hide() # Implicit attributes page self.pageIA = ScrolledPage(self.nb) self.pageIA.Hide() # Code page self.pageCode = ScrolledPage(self.nb) self.pageCode.Hide() topSizer.Add(self.nb, 1, wx.EXPAND) self.SetSizer(topSizer) self.undo = None # pending undo object
def __init__(self, parent): wx.Frame.__init__(self, parent, id=wx.ID_ANY, title=wx.EmptyString, pos=wx.DefaultPosition, size=wx.Size(552, 256), style=wx.DEFAULT_FRAME_STYLE | wx.TAB_TRAVERSAL) self.SetSizeHints(wx.DefaultSize, wx.DefaultSize) self.SetBackgroundColour( wx.SystemSettings.GetColour(wx.SYS_COLOUR_WINDOW)) wSizer_win = wx.WrapSizer(wx.HORIZONTAL, wx.WRAPSIZER_DEFAULT_FLAGS) self.m_notebook_memOpt = wx.Notebook(self, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, 0) self.m_panel_memOpt = wx.Panel(self.m_notebook_memOpt, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, wx.TAB_TRAVERSAL) gSizer_memOpt = wx.GridSizer(0, 2, 0, 0) self.m_staticText_deviceType = wx.StaticText(self.m_panel_memOpt, wx.ID_ANY, u"Device Type:", wx.DefaultPosition, wx.DefaultSize, 0) self.m_staticText_deviceType.Wrap(-1) gSizer_memOpt.Add(self.m_staticText_deviceType, 0, wx.ALL, 5) m_choice_deviceTypeChoices = [u"1bit NOR Flash", u"EEPROM"] self.m_choice_deviceType = wx.Choice(self.m_panel_memOpt, wx.ID_ANY, wx.DefaultPosition, wx.Size(110, -1), m_choice_deviceTypeChoices, 0) self.m_choice_deviceType.SetSelection(0) gSizer_memOpt.Add(self.m_choice_deviceType, 0, wx.ALL, 5) self.m_staticText_pageSize = wx.StaticText(self.m_panel_memOpt, wx.ID_ANY, u"Page Size (Bytes):", wx.DefaultPosition, wx.DefaultSize, 0) self.m_staticText_pageSize.Wrap(-1) gSizer_memOpt.Add(self.m_staticText_pageSize, 0, wx.ALL, 5) m_choice_pageSizeChoices = [ u"32", u"64", u"128", u"256", u"512", u"1024" ] self.m_choice_pageSize = wx.Choice(self.m_panel_memOpt, wx.ID_ANY, wx.DefaultPosition, wx.Size(110, -1), m_choice_pageSizeChoices, 0) self.m_choice_pageSize.SetSelection(3) gSizer_memOpt.Add(self.m_choice_pageSize, 0, wx.ALL, 5) self.m_staticText_sectorSize = wx.StaticText(self.m_panel_memOpt, wx.ID_ANY, u"Sector Size (KBytes):", wx.DefaultPosition, wx.DefaultSize, 0) self.m_staticText_sectorSize.Wrap(-1) gSizer_memOpt.Add(self.m_staticText_sectorSize, 0, wx.ALL, 5) m_choice_sectorSizeChoices = [u"4", u"8", u"32", u"64", u"128", u"256"] self.m_choice_sectorSize = wx.Choice(self.m_panel_memOpt, wx.ID_ANY, wx.DefaultPosition, wx.Size(110, -1), m_choice_sectorSizeChoices, 0) self.m_choice_sectorSize.SetSelection(0) gSizer_memOpt.Add(self.m_choice_sectorSize, 0, wx.ALL, 5) self.m_staticText_totalSize = wx.StaticText(self.m_panel_memOpt, wx.ID_ANY, u"Total Size (KBytes):", wx.DefaultPosition, wx.DefaultSize, 0) self.m_staticText_totalSize.Wrap(-1) gSizer_memOpt.Add(self.m_staticText_totalSize, 0, wx.ALL, 5) m_choice_totalSizeChoices = [ u"32", u"64", u"128", u"256", u"512", u"1024", u"2048", u"4096", u"8192", u"16384", u"32768", u"65536", u"131072", u"262144", u"524288", u"1048576" ] self.m_choice_totalSize = wx.Choice(self.m_panel_memOpt, wx.ID_ANY, wx.DefaultPosition, wx.Size(110, -1), m_choice_totalSizeChoices, 0) self.m_choice_totalSize.SetSelection(4) gSizer_memOpt.Add(self.m_choice_totalSize, 0, wx.ALL, 5) self.m_panel_memOpt.SetSizer(gSizer_memOpt) self.m_panel_memOpt.Layout() gSizer_memOpt.Fit(self.m_panel_memOpt) self.m_notebook_memOpt.AddPage(self.m_panel_memOpt, u"Memory Option", False) wSizer_win.Add(self.m_notebook_memOpt, 1, wx.EXPAND | wx.ALL, 5) self.m_notebook_spiOpt = wx.Notebook(self, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, 0) self.m_panel_spiOpt = wx.Panel(self.m_notebook_spiOpt, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, wx.TAB_TRAVERSAL) gSizer_spiOpt = wx.GridSizer(0, 2, 0, 0) self.m_staticText_spiIndex = wx.StaticText(self.m_panel_spiOpt, wx.ID_ANY, u"Spi Index:", wx.DefaultPosition, wx.DefaultSize, 0) self.m_staticText_spiIndex.Wrap(-1) gSizer_spiOpt.Add(self.m_staticText_spiIndex, 0, wx.ALL, 5) m_choice_spiIndexChoices = [u"1", u"2", u"3", u"4"] self.m_choice_spiIndex = wx.Choice(self.m_panel_spiOpt, wx.ID_ANY, wx.DefaultPosition, wx.Size(110, -1), m_choice_spiIndexChoices, 0) self.m_choice_spiIndex.SetSelection(0) gSizer_spiOpt.Add(self.m_choice_spiIndex, 0, wx.ALL, 5) self.m_staticText_spiPcs = wx.StaticText(self.m_panel_spiOpt, wx.ID_ANY, u"Spi Pcs:", wx.DefaultPosition, wx.DefaultSize, 0) self.m_staticText_spiPcs.Wrap(-1) gSizer_spiOpt.Add(self.m_staticText_spiPcs, 0, wx.ALL, 5) m_choice_spiPcsChoices = [u"0"] self.m_choice_spiPcs = wx.Choice(self.m_panel_spiOpt, wx.ID_ANY, wx.DefaultPosition, wx.Size(110, -1), m_choice_spiPcsChoices, 0) self.m_choice_spiPcs.SetSelection(0) gSizer_spiOpt.Add(self.m_choice_spiPcs, 0, wx.ALL, 5) self.m_staticText_spiSpeed = wx.StaticText(self.m_panel_spiOpt, wx.ID_ANY, u"Spi Speed:", wx.DefaultPosition, wx.Size(-1, -1), 0) self.m_staticText_spiSpeed.Wrap(-1) gSizer_spiOpt.Add(self.m_staticText_spiSpeed, 0, wx.ALL, 5) m_choice_spiSpeedChoices = [u"20MHz", u"10MHz", u"5MHz", u"2MHz"] self.m_choice_spiSpeed = wx.Choice(self.m_panel_spiOpt, wx.ID_ANY, wx.DefaultPosition, wx.Size(110, -1), m_choice_spiSpeedChoices, 0) self.m_choice_spiSpeed.SetSelection(0) gSizer_spiOpt.Add(self.m_choice_spiSpeed, 0, wx.ALL, 5) self.m_staticText_spiOptNull0 = wx.StaticText(self.m_panel_spiOpt, wx.ID_ANY, wx.EmptyString, wx.DefaultPosition, wx.DefaultSize, 0) self.m_staticText_spiOptNull0.Wrap(-1) gSizer_spiOpt.Add(self.m_staticText_spiOptNull0, 0, wx.ALL, 5) self.m_staticText_spiOptNull1 = wx.StaticText(self.m_panel_spiOpt, wx.ID_ANY, wx.EmptyString, wx.DefaultPosition, wx.DefaultSize, 0) self.m_staticText_spiOptNull1.Wrap(-1) gSizer_spiOpt.Add(self.m_staticText_spiOptNull1, 0, wx.ALL, 5) self.m_panel_spiOpt.SetSizer(gSizer_spiOpt) self.m_panel_spiOpt.Layout() gSizer_spiOpt.Fit(self.m_panel_spiOpt) self.m_notebook_spiOpt.AddPage(self.m_panel_spiOpt, u"Spi Option", False) wSizer_win.Add(self.m_notebook_spiOpt, 1, wx.EXPAND | wx.ALL, 5) self.m_staticText_winNull0 = wx.StaticText(self, wx.ID_ANY, wx.EmptyString, wx.DefaultPosition, wx.Size(265, -1), 0) self.m_staticText_winNull0.Wrap(-1) wSizer_win.Add(self.m_staticText_winNull0, 0, wx.ALL, 5) self.m_button_ok = wx.Button(self, wx.ID_ANY, u"Ok", wx.DefaultPosition, wx.Size(100, -1), 0) wSizer_win.Add(self.m_button_ok, 0, wx.ALL, 5) self.m_button_cancel = wx.Button(self, wx.ID_ANY, u"Cancel", wx.DefaultPosition, wx.Size(100, -1), 0) wSizer_win.Add(self.m_button_cancel, 0, wx.ALL, 5) self.SetSizer(wSizer_win) self.Layout() self.Centre(wx.BOTH) # Connect Events self.m_button_ok.Bind(wx.EVT_BUTTON, self.callbackOk) self.m_button_cancel.Bind(wx.EVT_BUTTON, self.callbackCancel)
def __init__(self, main_window): wx.Dialog.__init__(self, main_window, wx.ID_ANY, lang.DSET_TITLE) self.mw = main_window # 1 outer panel and vertical sizer self.outer_panel = wx.Panel(self) outer_sizer = wx.BoxSizer(wx.VERTICAL) self.outer_panel.SetSizer(outer_sizer) # 1.1 the notebook on the top self.notebook = wx.Notebook(self.outer_panel) outer_sizer.Add(self.notebook, 1, wx.EXPAND | wx.LEFT | wx.TOP | wx.RIGHT, border=5) # 1.2 the button_sizer at the bottom button_sizer = wx.BoxSizer(wx.HORIZONTAL) outer_sizer.Add(button_sizer, 0, wx.ALIGN_RIGHT | wx.ALL, border=5) # 1.2.1 cancel button btn_cancel = wx.Button(self.outer_panel, wx.ID_CANCEL, lang.BTN_CANCEL) button_sizer.Add(btn_cancel) # 1.2.2 ok button btn_ok = wx.Button(self.outer_panel, wx.ID_OK, lang.BTN_OK) button_sizer.Add(btn_ok, 0, wx.LEFT, 5) # 2 the button bindings btn_ok.Bind(wx.EVT_BUTTON, self.onOk) btn_cancel.Bind(wx.EVT_BUTTON, self.onCancel) # 3 now we create the notebook tabs # 3.1 network self.p1 = dlg.Panel(self.notebook) self.notebook.AddPage(self.p1, lang.DSET_NET_TITLE) self.s_tor_portable = dlg.Separator(self.p1, 'Tor portable') dlg.Text(self.p1, lang.DSET_NET_TOR_ADDRESS, ('tor_portable', 'tor_server'), True) dlg.Text(self.p1, lang.DSET_NET_TOR_SOCKS, ('tor_portable', 'tor_server_socks_port')) dlg.Text(self.p1, lang.DSET_NET_TOR_CONTROL, ('tor_portable', 'tor_server_control_port')) self.s_tor = dlg.Separator(self.p1, 'Tor') dlg.Text(self.p1, lang.DSET_NET_TOR_ADDRESS, ('tor', 'tor_server'), True) dlg.Text(self.p1, lang.DSET_NET_TOR_SOCKS, ('tor', 'tor_server_socks_port')) dlg.Text(self.p1, lang.DSET_NET_TOR_CONTROL, ('tor', 'tor_server_control_port')) dlg.Text(self.p1, lang.DSET_NET_OWN_HOSTNAME, ('client', 'own_hostname'), True) dlg.Separator(self.p1, 'Client') dlg.Text(self.p1, lang.DSET_NET_LISTEN_INTERFACE, ('client', 'listen_interface'), True) dlg.Text(self.p1, lang.DSET_NET_LISTEN_PORT, ('client', 'listen_port')) self.p1.fit() portable = tc_client.TOR_CONFIG == 'tor_portable' if portable: self.s_tor.setEnabled(False) else: self.s_tor_portable.setEnabled(False) # 3.2 user interface self.p2 = dlg.Panel(self.notebook) self.notebook.AddPage(self.p2, lang.DSET_GUI_TITLE) self.lang = dlg.Text(self.p2, lang.DSET_GUI_LANGUAGE, ('gui', 'language')) self.lang_old = self.lang.getValue() dlg.Check(self.p2, lang.DSET_GUI_OPEN_MAIN_HIDDEN, ('gui', 'open_main_window_hidden')) dlg.Check(self.p2, lang.DSET_GUI_OPEN_CHAT_HIDDEN, ('gui', 'open_chat_window_hidden')) dlg.Check(self.p2, lang.DSET_GUI_NOTIFICATION_POPUP, ('gui', 'notification_popup')) dlg.Check(self.p2, lang.DSET_GUI_FLASH_WINDOW, ('gui', 'notification_flash_window')) # 3.3 misc options self.p3 = dlg.Panel(self.notebook) self.notebook.AddPage(self.p3, lang.DSET_MISC_TITLE) self.chk_tmp = dlg.Check(self.p3, lang.DSET_MISC_TEMP_IN_DATA, ('files', 'temp_files_in_data_dir')) self.dir_tmp = dlg.Dir(self.p3, lang.DSET_MISC_TEMP_CUSTOM_DIR, ('files', 'temp_files_custom_dir')) self.dir_tmp.setEnabled(not self.chk_tmp.getValue()) self.chk_tmp.wx_ctrl.Bind(wx.EVT_CHECKBOX, self.onChkTmp) # 4 fit the sizers outer_sizer.Fit(self)
def __init__(self, parent): super().__init__( parent, id=wx.ID_ANY, title="Character Editor", resizeable=True, pos=wx.DefaultPosition, size=wx.Size(950, 650) if "wxGTK" in wx.PlatformInfo else wx.Size(850, 600)) i = wx.Icon(BitmapLoader.getBitmap("character_small", "gui")) self.SetIcon(i) self.mainFrame = parent # self.disableWin = wx.WindowDisabler(self) sFit = Fit.getInstance() mainSizer = wx.BoxSizer(wx.VERTICAL) self.entityEditor = CharacterEntityEditor(self) mainSizer.Add(self.entityEditor, 0, wx.ALL | wx.EXPAND, 2) # Default drop down to current fit's character self.entityEditor.setActiveEntity(sFit.character) self.viewsNBContainer = wx.Notebook(self, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, 0) self.sview = SkillTreeView(self.viewsNBContainer) self.iview = ImplantEditorView(self.viewsNBContainer, self) self.aview = APIView(self.viewsNBContainer) self.viewsNBContainer.AddPage(self.sview, "Skills") self.viewsNBContainer.AddPage(self.iview, "Implants") self.viewsNBContainer.AddPage(self.aview, "EVE SSO") mainSizer.Add(self.viewsNBContainer, 1, wx.EXPAND | wx.ALL, 5) bSizerButtons = wx.BoxSizer(wx.HORIZONTAL) self.btnSaveChar = wx.Button(self, wx.ID_ANY, "Save") self.btnSaveAs = wx.Button(self, wx.ID_ANY, "Save As...") self.btnRevert = wx.Button(self, wx.ID_ANY, "Revert") self.btnOK = wx.Button(self, wx.ID_OK) bSizerButtons.Add(self.btnSaveChar, 0, wx.ALL, 5) bSizerButtons.Add(self.btnSaveAs, 0, wx.ALL, 5) bSizerButtons.Add(self.btnRevert, 0, wx.ALL, 5) bSizerButtons.AddStretchSpacer() bSizerButtons.Add(self.btnOK, 0, wx.ALL, 5) self.btnSaveChar.Bind(wx.EVT_BUTTON, self.saveChar) self.btnSaveAs.Bind(wx.EVT_BUTTON, self.saveCharAs) self.btnRevert.Bind(wx.EVT_BUTTON, self.revertChar) self.btnOK.Bind(wx.EVT_BUTTON, self.editingFinished) mainSizer.Add(bSizerButtons, 0, wx.EXPAND, 5) self.btnRestrict() self.SetSizer(mainSizer) self.Layout() self.SetMinSize(self.GetSize()) self.Centre(wx.BOTH) self.Bind(wx.EVT_CLOSE, self.OnClose) self.Bind(wx.EVT_CHAR_HOOK, self.kbEvent) self.Bind(GE.CHAR_LIST_UPDATED, self.refreshCharacterList) self.entityEditor.Bind(wx.EVT_CHOICE, self.charChanged) self.charChanged(None)
def __init__(self, parent, IDbudget=None): wx.Dialog.__init__(self, parent, -1, style=wx.DEFAULT_DIALOG_STYLE | wx.RESIZE_BORDER | wx.MAXIMIZE_BOX | wx.MINIMIZE_BOX) self.parent = parent self.IDbudget = IDbudget # Généralités self.box_generalites_staticbox = wx.StaticBox(self, wx.ID_ANY, _(u"Généralités")) self.label_nom = wx.StaticText(self, wx.ID_ANY, _(u"Nom :")) self.ctrl_nom = wx.TextCtrl(self, wx.ID_ANY, u"") self.label_periode = wx.StaticText(self, wx.ID_ANY, _(u"Période :")) self.ctrl_date_debut = CTRL_Saisie_date.Date2(self) self.label_au = wx.StaticText(self, wx.ID_ANY, _(u"au")) self.ctrl_date_fin = CTRL_Saisie_date.Date2(self) self.label_observations = wx.StaticText(self, wx.ID_ANY, _(u"Notes :")) self.ctrl_observations = wx.TextCtrl(self, wx.ID_ANY, u"", style=wx.TE_MULTILINE) self.ctrl_observations.SetMinSize((270, -1)) # Postes analytiques self.box_analytiques_staticbox = wx.StaticBox(self, wx.ID_ANY, _(u"Postes analytiques")) self.ctrl_analytiques = CTRL_Analytiques(self) # Catégories self.box_categories_staticbox = wx.StaticBox( self, wx.ID_ANY, _(u"Catégories budgétaires")) self.notebook = wx.Notebook(self, -1, style=wx.BK_BOTTOM) self.ctrl_categories_debit = Panel_OL(self.notebook, "debit") self.ctrl_categories_credit = Panel_OL(self.notebook, "credit") ## self.ctrl_categories_debit = OL_Categories_budgetaires.ListView(self.notebook, id=-1, typeCategorie="debit", style=wx.LC_REPORT|wx.SUNKEN_BORDER|wx.LC_SINGLE_SEL|wx.LC_HRULES|wx.LC_VRULES) ## self.ctrl_categories_credit = OL_Categories_budgetaires.ListView(self.notebook, id=-1, typeCategorie="credit", style=wx.LC_REPORT|wx.SUNKEN_BORDER|wx.LC_SINGLE_SEL|wx.LC_HRULES|wx.LC_VRULES) self.notebook.AddPage(self.ctrl_categories_debit, _(u"Débit")) self.notebook.AddPage(self.ctrl_categories_credit, _(u"Crédit")) self.bouton_ajouter_categories = wx.BitmapButton( self, -1, wx.Bitmap(Chemins.GetStaticPath(u"Images/16x16/Ajouter.png"), wx.BITMAP_TYPE_ANY)) self.bouton_modifier_categories = wx.BitmapButton( self, -1, wx.Bitmap(Chemins.GetStaticPath(u"Images/16x16/Modifier.png"), wx.BITMAP_TYPE_ANY)) self.bouton_supprimer_categories = wx.BitmapButton( self, -1, wx.Bitmap(Chemins.GetStaticPath(u"Images/16x16/Supprimer.png"), wx.BITMAP_TYPE_ANY)) # Boutons self.bouton_aide = CTRL_Bouton_image.CTRL( self, texte=_(u"Aide"), cheminImage="Images/32x32/Aide.png") self.bouton_ok = CTRL_Bouton_image.CTRL( self, texte=_(u"Ok"), cheminImage="Images/32x32/Valider.png") self.bouton_annuler = CTRL_Bouton_image.CTRL( self, texte=_(u"Annuler"), cheminImage="Images/32x32/Annuler.png") self.__set_properties() self.__do_layout() # Binds self.Bind(wx.EVT_BUTTON, self.OnAjouter, self.bouton_ajouter_categories) self.Bind(wx.EVT_BUTTON, self.OnModifier, self.bouton_modifier_categories) self.Bind(wx.EVT_BUTTON, self.OnSupprimer, self.bouton_supprimer_categories) self.Bind(wx.EVT_BUTTON, self.OnBoutonAide, self.bouton_aide) self.Bind(wx.EVT_BUTTON, self.OnBoutonOk, self.bouton_ok) self.Bind(wx.EVT_BUTTON, self.OnBoutonAnnuler, self.bouton_annuler) # Importation de l'opération if self.IDbudget != None: self.Importation() titre = _(u"Modification d'un budget") else: titre = _(u"Saisie d'un budget") self.SetTitle(titre) # Importation des catégories self.tracksDebitInitial = [] self.tracksCreditInitial = [] self.tracksInitial = [] if self.IDbudget != None: self.tracksDebitInitial = OL_Categories_budgetaires.Importation( self.IDbudget, "debit") self.ctrl_categories_debit.ctrl.SetTracks(self.tracksDebitInitial) self.tracksCreditInitial = OL_Categories_budgetaires.Importation( self.IDbudget, "credit") self.ctrl_categories_credit.ctrl.SetTracks( self.tracksCreditInitial) for listeTracks in (self.tracksDebitInitial, self.tracksCreditInitial): for track in listeTracks: self.tracksInitial.append(track) self.ctrl_categories_debit.ctrl.MAJ() self.ctrl_categories_credit.ctrl.MAJ()
def __init__(self, parent): wx.Frame.__init__(self, parent, id=wx.ID_ANY, title=u"不确定性智能仿真模型校准平台", pos=wx.DefaultPosition, size=wx.Size(1280, 720), style=wx.DEFAULT_FRAME_STYLE | wx.TAB_TRAVERSAL) self.icon = wx.Icon('img/timg (3).jpg', wx.BITMAP_TYPE_JPEG) self.SetIcon(self.icon) self.SetSizeHints(wx.DefaultSize, wx.DefaultSize) bSizerforwholeframe = wx.BoxSizer(wx.VERTICAL) self.m_panelfor = wx.Panel(self, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, wx.TAB_TRAVERSAL) bSizerforwholepanel = wx.BoxSizer(wx.VERTICAL) self.statusBar = wx.Notebook(self.m_panelfor, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, 0) self.m_panel1forStatusbar = wx.Panel(self.statusBar, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, wx.TAB_TRAVERSAL) bSizerforpanel1 = wx.BoxSizer(wx.HORIZONTAL) self.m_button3 = wx.Button(self.m_panel1forStatusbar, wx.ID_ANY, u"模型设置", wx.DefaultPosition, wx.DefaultSize, 0) self.m_button3.SetBitmap(wx.Bitmap('img/timg (3).jpg')) self.m_button3.Bind(wx.EVT_LEFT_DOWN, self.ClickModelManage) bSizerforpanel1.Add(self.m_button3, 0, wx.ALL, 5) self.m_button7 = wx.Button(self.m_panel1forStatusbar, wx.ID_ANY, u"参数设置", wx.DefaultPosition, wx.DefaultSize, 0) bSizerforpanel1.Add(self.m_button7, 0, wx.ALL, 5) self.m_button8 = wx.Button(self.m_panel1forStatusbar, wx.ID_ANY, u"数据导入", wx.DefaultPosition, wx.DefaultSize, 0) bSizerforpanel1.Add(self.m_button8, 0, wx.ALL, 5) self.m_button9 = wx.Button(self.m_panel1forStatusbar, wx.ID_ANY, u"MyButton", wx.DefaultPosition, wx.DefaultSize, 0) bSizerforpanel1.Add(self.m_button9, 0, wx.ALL, 5) self.m_panel1forStatusbar.SetSizer(bSizerforpanel1) self.m_panel1forStatusbar.Layout() bSizerforpanel1.Fit(self.m_panel1forStatusbar) self.statusBar.AddPage(self.m_panel1forStatusbar, u"模型管理", True) self.m_panel2forStatusbar = wx.Panel(self.statusBar, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, wx.TAB_TRAVERSAL) bSizerforpanel2 = wx.BoxSizer(wx.HORIZONTAL) self.m_button10 = wx.Button(self.m_panel2forStatusbar, wx.ID_ANY, u"数据预处理", wx.DefaultPosition, wx.DefaultSize, 0) self.m_button10.Bind(wx.EVT_LEFT_DOWN, self.ClickDataInit) bSizerforpanel2.Add(self.m_button10, 0, wx.ALL, 5) self.m_button15 = wx.Button(self.m_panel2forStatusbar, wx.ID_ANY, u"不确定性定义", wx.DefaultPosition, wx.DefaultSize, 0) bSizerforpanel2.Add(self.m_button15, 0, wx.ALL, 5) self.m_button16 = wx.Button(self.m_panel2forStatusbar, wx.ID_ANY, u"不确定性描述", wx.DefaultPosition, wx.DefaultSize, 0) bSizerforpanel2.Add(self.m_button16, 0, wx.ALL, 5) self.m_button17 = wx.Button(self.m_panel2forStatusbar, wx.ID_ANY, u"MyButton", wx.DefaultPosition, wx.DefaultSize, 0) bSizerforpanel2.Add(self.m_button17, 0, wx.ALL, 5) self.m_panel2forStatusbar.SetSizer(bSizerforpanel2) self.m_panel2forStatusbar.Layout() bSizerforpanel2.Fit(self.m_panel2forStatusbar) self.statusBar.AddPage(self.m_panel2forStatusbar, u"不确定性建模", False) self.m_panel3forStatusbar = wx.Panel(self.statusBar, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, wx.TAB_TRAVERSAL) bSizerforpanel3 = wx.BoxSizer(wx.HORIZONTAL) self.m_button18 = wx.Button(self.m_panel3forStatusbar, wx.ID_ANY, u"试验设计", wx.DefaultPosition, wx.DefaultSize, 0) self.m_button18.Bind(wx.EVT_LEFT_DOWN, self.ClickTestDesign) bSizerforpanel3.Add(self.m_button18, 0, wx.ALL, 5) self.m_button19 = wx.Button(self.m_panel3forStatusbar, wx.ID_ANY, u"抽样设置", wx.DefaultPosition, wx.DefaultSize, 0) self.m_button19.Bind(wx.EVT_LEFT_DOWN, self.SamplingSettings) bSizerforpanel3.Add(self.m_button19, 0, wx.ALL, 5) self.m_button20 = wx.Button(self.m_panel3forStatusbar, wx.ID_ANY, u"试验方案", wx.DefaultPosition, wx.DefaultSize, 0) bSizerforpanel3.Add(self.m_button20, 0, wx.ALL, 5) self.m_button21 = wx.Button(self.m_panel3forStatusbar, wx.ID_ANY, u"传播分析", wx.DefaultPosition, wx.DefaultSize, 0) bSizerforpanel3.Add(self.m_button21, 0, wx.ALL, 5) self.m_panel3forStatusbar.SetSizer(bSizerforpanel3) self.m_panel3forStatusbar.Layout() bSizerforpanel3.Fit(self.m_panel3forStatusbar) self.statusBar.AddPage(self.m_panel3forStatusbar, u"不确定性传播分析", False) self.m_panel4forStatusbar = wx.Panel(self.statusBar, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, wx.TAB_TRAVERSAL) bSizerforpanel4 = wx.BoxSizer(wx.HORIZONTAL) self.m_button22 = wx.Button(self.m_panel4forStatusbar, wx.ID_ANY, u"验证数据配置", wx.DefaultPosition, wx.DefaultSize, 0) self.m_button22.Bind(wx.EVT_LEFT_DOWN, self.ClickDataConfiguration) bSizerforpanel4.Add(self.m_button22, 0, wx.ALL, 5) self.m_button23 = wx.Button(self.m_panel4forStatusbar, wx.ID_ANY, u"特征提取", wx.DefaultPosition, wx.DefaultSize, 0) bSizerforpanel4.Add(self.m_button23, 0, wx.ALL, 5) self.m_button24 = wx.Button(self.m_panel4forStatusbar, wx.ID_ANY, u"验证准则", wx.DefaultPosition, wx.DefaultSize, 0) bSizerforpanel4.Add(self.m_button24, 0, wx.ALL, 5) self.m_button25 = wx.Button(self.m_panel4forStatusbar, wx.ID_ANY, u"验证分析", wx.DefaultPosition, wx.DefaultSize, 0) bSizerforpanel4.Add(self.m_button25, 0, wx.ALL, 5) self.m_panel4forStatusbar.SetSizer(bSizerforpanel4) self.m_panel4forStatusbar.Layout() bSizerforpanel4.Fit(self.m_panel4forStatusbar) self.statusBar.AddPage(self.m_panel4forStatusbar, u"仿真验证分析", False) self.m_panel5forStatusbar = wx.Panel(self.statusBar, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, wx.TAB_TRAVERSAL) bSizerforpanel5 = wx.BoxSizer(wx.HORIZONTAL) self.m_button171 = wx.Button(self.m_panel5forStatusbar, wx.ID_ANY, u"元模型管理", wx.DefaultPosition, wx.DefaultSize, 0) self.m_button171.Bind(wx.EVT_LEFT_DOWN, self.ClickMetamodelManage) bSizerforpanel5.Add(self.m_button171, 0, wx.ALL, 5) self.m_button181 = wx.Button(self.m_panel5forStatusbar, wx.ID_ANY, u"智能模型管理", wx.DefaultPosition, wx.DefaultSize, 0) bSizerforpanel5.Add(self.m_button181, 0, wx.ALL, 5) self.m_button191 = wx.Button(self.m_panel5forStatusbar, wx.ID_ANY, u"校准准则", wx.DefaultPosition, wx.DefaultSize, 0) bSizerforpanel5.Add(self.m_button191, 0, wx.ALL, 5) self.m_button201 = wx.Button(self.m_panel5forStatusbar, wx.ID_ANY, u"智能优化校准", wx.DefaultPosition, wx.DefaultSize, 0) bSizerforpanel5.Add(self.m_button201, 0, wx.ALL, 5) self.m_panel5forStatusbar.SetSizer(bSizerforpanel5) self.m_panel5forStatusbar.Layout() bSizerforpanel5.Fit(self.m_panel5forStatusbar) self.statusBar.AddPage(self.m_panel5forStatusbar, u"智能校准分析", False) bSizerforwholepanel.Add(self.statusBar, 1, wx.EXPAND | wx.ALL, 5) self.m_panel10 = wx.Panel(self.m_panelfor, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, wx.TAB_TRAVERSAL) bSizer5 = wx.BoxSizer(wx.HORIZONTAL) self.m_treeCtrl4 = wx.TreeCtrl(self.m_panel10, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, wx.TR_DEFAULT_STYLE) """左侧树状图""" root = self.m_treeCtrl4.AddRoot('程序员') os = self.m_treeCtrl4.AppendItem(root, '操作系统') pl = self.m_treeCtrl4.AppendItem(root, '编程语言') tk = self.m_treeCtrl4.AppendItem(root, '工具套件') self.m_treeCtrl4.AppendItem(os, 'Linux') self.m_treeCtrl4.AppendItem(os, 'FreeBSD') self.m_treeCtrl4.AppendItem(os, 'OpenBSD') self.m_treeCtrl4.AppendItem(os, 'NetBSD') self.m_treeCtrl4.AppendItem(os, 'Solaris') cl = self.m_treeCtrl4.AppendItem(pl, '编译语言') sl = self.m_treeCtrl4.AppendItem(pl, '脚本语言') self.m_treeCtrl4.AppendItem(cl, 'Java') self.m_treeCtrl4.AppendItem(cl, 'C++') self.m_treeCtrl4.AppendItem(cl, 'C') self.m_treeCtrl4.AppendItem(cl, 'Pascal') self.m_treeCtrl4.AppendItem(sl, 'Ruby') self.m_treeCtrl4.AppendItem(sl, 'Tcl') self.m_treeCtrl4.AppendItem(sl, 'PHP') self.m_treeCtrl4.AppendItem(sl, 'Python') self.m_treeCtrl4.AppendItem(tk, 'Qt') self.m_treeCtrl4.AppendItem(tk, 'MFC') self.m_treeCtrl4.AppendItem(tk, 'wxPython') self.m_treeCtrl4.AppendItem(tk, 'GTK+') self.m_treeCtrl4.AppendItem(tk, 'Swing') self.m_treeCtrl4.Bind(wx.EVT_TREE_SEL_CHANGED, self.OnSelChanged, id=1) bSizer5.Add(self.m_treeCtrl4, 1, wx.ALL | wx.EXPAND, 5) self.m_auinotebook1 = wx.aui.AuiNotebook(self.m_panel10, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, wx.aui.AUI_NB_DEFAULT_STYLE) self.m_panel19 = wx.Panel(self.m_auinotebook1, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, wx.TAB_TRAVERSAL) bSizer17 = wx.BoxSizer(wx.VERTICAL) self.m_auinotebook1.AddPage(self.m_panel19, u"模型管理", False, wx.NullBitmap) self.m_auinotebook1.DeletePage( self.m_auinotebook1.GetPageIndex(self.m_panel19)) self.m_panel20 = wx.Panel(self.m_auinotebook1, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, wx.TAB_TRAVERSAL) bSizer18 = wx.BoxSizer(wx.VERTICAL) self.m_auinotebook1.AddPage(self.m_panel20, u"不确定性建模", False, wx.NullBitmap) self.m_auinotebook1.DeletePage( self.m_auinotebook1.GetPageIndex(self.m_panel20)) self.m_panel21 = wx.Panel(self.m_auinotebook1, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, wx.TAB_TRAVERSAL) bSizer19 = wx.BoxSizer(wx.VERTICAL) self.m_auinotebook1.AddPage(self.m_panel21, u"不确定性传播分析", False, wx.NullBitmap) self.m_auinotebook1.DeletePage( self.m_auinotebook1.GetPageIndex(self.m_panel21)) self.m_panel22 = wx.Panel(self.m_auinotebook1, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, wx.TAB_TRAVERSAL) bSizer20 = wx.BoxSizer(wx.VERTICAL) self.m_auinotebook1.AddPage(self.m_panel22, u"仿真验证分析", True, wx.NullBitmap) self.m_auinotebook1.DeletePage( self.m_auinotebook1.GetPageIndex(self.m_panel22)) self.m_panel23 = wx.Panel(self.m_auinotebook1, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, wx.TAB_TRAVERSAL) bSizer13 = wx.BoxSizer(wx.VERTICAL) self.m_auinotebook1.AddPage(self.m_panel23, u"智能校准分析", False, wx.NullBitmap) self.m_auinotebook1.DeletePage( self.m_auinotebook1.GetPageIndex(self.m_panel23)) bSizer5.Add(self.m_auinotebook1, 4, wx.EXPAND | wx.ALL, 5) self.m_panel10.SetSizer(bSizer5) self.m_panel10.Layout() bSizer5.Fit(self.m_panel10) bSizerforwholepanel.Add(self.m_panel10, 4, wx.EXPAND | wx.ALL, 5) self.m_panelfor.SetSizer(bSizerforwholepanel) self.m_panelfor.Layout() bSizerforwholepanel.Fit(self.m_panelfor) bSizerforwholeframe.Add(self.m_panelfor, 1, wx.EXPAND | wx.ALL, 5) self.SetSizer(bSizerforwholeframe) self.Layout() self.m_statusBar3 = self.CreateStatusBar(1, 0, wx.ID_ANY) self.Centre(wx.BOTH) # Connect Events self.m_panel1forStatusbar.Bind(wx.EVT_LEFT_DCLICK, self.m_panel1forStatusbarOnLeftDClick) self.m_panel2forStatusbar.Bind(wx.EVT_LEFT_DCLICK, self.m_panel2forStatusbarOnLeftDClick)
def _init_ctrls(self, prnt): # generated method, don't edit wx.Frame.__init__(self, id=wxID_BASICINTERFACEFRAME, name=u'BasicInterfaceFrame', parent=prnt, pos=wx.Point(1745, 92), size=wx.Size(1448, 874), style=wx.DEFAULT_FRAME_STYLE, title=u'Basic Interface') self._init_utils() self.SetClientSize(wx.Size(1440, 840)) self.SetMenuBar(self.InterfaceMenuBar) self.Bind(wx.EVT_CLOSE, self.OnBasicInterfaceFrameClose) self.InterfaceStatusBar = wx.StatusBar(id=wxID_BASICINTERFACEFRAMEINTERFACESTATUSBAR, name=u'InterfaceStatusBar', parent=self, style=0) self.InterfaceStatusBar.SetHelpText(u'Status') self.InterfaceStatusBar.SetLabel(u'') self._init_coll_InterfaceStatusBar_Fields(self.InterfaceStatusBar) self.SetStatusBar(self.InterfaceStatusBar) self.InterfaceToolBar = wx.ToolBar(id=wxID_BASICINTERFACEFRAMEINTERFACETOOLBAR, name=u'InterfaceToolBar', parent=self, pos=wx.Point(0, 0), size=wx.Size(1440, 40), style=wx.TAB_TRAVERSAL | wx.TB_3DBUTTONS | wx.TB_HORIZONTAL | wx.MAXIMIZE_BOX | wx.NO_BORDER) self.InterfaceToolBar.SetHelpText(u'Launch Boa Contstructor') self.InterfaceToolBar.SetToolTipString(u'InterfaceToolBar') self.InterfaceToolBar.SetToolBitmapSize(wx.Size(30, 30)) self.InterfaceToolBar.SetToolPacking(0) self.InterfaceToolBar.SetToolSeparation(1) self.SetToolBar(self.InterfaceToolBar) self.MainPanel = wx.Panel(id=wxID_BASICINTERFACEFRAMEMAINPANEL, name=u'MainPanel', parent=self, pos=wx.Point(1, 1), size=wx.Size(1438, 838), style=wx.TAB_TRAVERSAL) self.LeftInterfacePanel = wx.Panel(id=wxID_BASICINTERFACEFRAMELEFTINTERFACEPANEL, name=u'LeftInterfacePanel', parent=self.MainPanel, pos=wx.Point(2, 2), size=wx.Size(1355, 834), style=wx.TAB_TRAVERSAL) self.RightControlPanel = wx.Panel(id=wxID_BASICINTERFACEFRAMERIGHTCONTROLPANEL, name=u'RightControlPanel', parent=self.MainPanel, pos=wx.Point(1361, 2), size=wx.Size(75, 834), style=wx.TAB_TRAVERSAL) self.RightControlPanel.SetBackgroundColour(wx.Colour(192, 192, 192)) self.LowerControlPanel = wx.Panel(id=wxID_BASICINTERFACEFRAMELOWERCONTROLPANEL, name=u'LowerControlPanel', parent=self.LeftInterfacePanel, pos=wx.Point(2, 808), size=wx.Size(1351, 24), style=wx.TAB_TRAVERSAL) self.LowerControlPanel.SetBackgroundColour(wx.Colour(0, 255, 128)) self.UpperInterfacePanel = wx.Panel(id=wxID_BASICINTERFACEFRAMEUPPERINTERFACEPANEL, name=u'UpperInterfacePanel', parent=self.LeftInterfacePanel, pos=wx.Point(2, 2), size=wx.Size(1351, 640), style=wx.TAB_TRAVERSAL) self.UpperInterfacePanel.SetBackgroundColour(wx.Colour(128, 128, 128)) self.UpperInterfacePanel.SetHelpText(u'UpperInterfacePanel') self.LowerInterfacePanel = wx.Panel(id=wxID_BASICINTERFACEFRAMELOWERINTERFACEPANEL, name=u'LowerInterfacePanel', parent=self.LeftInterfacePanel, pos=wx.Point(2, 646), size=wx.Size(1351, 158), style=wx.TAB_TRAVERSAL) self.LowerInterfacePanel.SetBackgroundColour(wx.Colour(192, 192, 192)) self.UpperInterface = wx.Notebook(id=wxID_BASICINTERFACEFRAMEUPPERINTERFACE, name=u'UpperInterface', parent=self.UpperInterfacePanel, pos=wx.Point(2, 2), size=wx.Size(1347, 636), style=0) self.LowerInterface = wx.Treebook(id=wxID_BASICINTERFACEFRAMELOWERINTERFACE, name=u'LowerInterface', parent=self.LowerInterfacePanel, pos=wx.Point(2, 2), size=wx.Size(1347, 154), style=0) self.LowerInterface.Bind(wx.EVT_TREEBOOK_PAGE_CHANGED, self.OnLowerInterfaceTreebookPageChanged, id=wxID_BASICINTERFACEFRAMELOWERINTERFACE) self.Display = IEPanel(id=wxID_BASICINTERFACEFRAMEDISPLAY, name=u'Display', parent=self.UpperInterface, pos=wx.Point(0, 0), size=wx.Size(1339, 610), style=wx.TAB_TRAVERSAL) self.Shell = ShellPanel(id=wxID_BASICINTERFACEFRAMESHELL, name=u'Shell', parent=self.LowerInterface, pos=wx.Point(0, 0), size=wx.Size(1281, 154), style=wx.TAB_TRAVERSAL) self.button1 = wx.Button(id=wxID_BASICINTERFACEFRAMEBUTTON1, label=u'Java Script Example', name='button1', parent=self.LowerControlPanel, pos=wx.Point(0, 0), size=wx.Size(136, 23), style=0) self.button1.Bind(wx.EVT_BUTTON, self.OnButton1Button, id=wxID_BASICINTERFACEFRAMEBUTTON1) self.button2 = wx.Button(id=wxID_BASICINTERFACEFRAMEBUTTON2, label='button2', name='button2', parent=self.LowerControlPanel, pos=wx.Point(136, 0), size=wx.Size(75, 23), style=0) self.button2.Bind(wx.EVT_BUTTON, self.OnButton2Button, id=wxID_BASICINTERFACEFRAMEBUTTON2) self.button3 = wx.Button(id=wxID_BASICINTERFACEFRAMEBUTTON3, label='button3', name='button3', parent=self.LowerControlPanel, pos=wx.Point(211, 0), size=wx.Size(75, 23), style=0) self.ExecuteButton = wx.Button(id=wxID_BASICINTERFACEFRAMEEXECUTEBUTTON, label=u'Execute IEPanel.py', name=u'ExecuteButton', parent=self.LowerControlPanel, pos=wx.Point(286, 0), size=wx.Size(111, 23), style=0) self.ExecuteButton.Bind(wx.EVT_BUTTON, self.OnExecuteButtonButton, id=wxID_BASICINTERFACEFRAMEEXECUTEBUTTON) self.ReplaceRightControlButtton = wx.Button(id=wxID_BASICINTERFACEFRAMEREPLACERIGHTCONTROLBUTTTON, label=u'Replace Right Control Panel', name=u'ReplaceRightControlButtton', parent=self.LowerControlPanel, pos=wx.Point(397, 0), size=wx.Size(180, 24), style=0) self.ReplaceRightControlButtton.Bind(wx.EVT_BUTTON, self.OnReplaceRightControlButttonButton, id=wxID_BASICINTERFACEFRAMEREPLACERIGHTCONTROLBUTTTON) self.StatesButton = wx.Button(id=wxID_BASICINTERFACEFRAMESTATESBUTTON, label=u'States', name=u'StatesButton', parent=self.RightControlPanel, pos=wx.Point(0, 0), size=wx.Size(75, 23), style=0) self.StatesButton.Bind(wx.EVT_BUTTON, self.OnStatesButtonButton, id=wxID_BASICINTERFACEFRAMESTATESBUTTON) self.InstrumentsButton = wx.Button(id=wxID_BASICINTERFACEFRAMEINSTRUMENTSBUTTON, label=u'Instruments', name=u'InstrumentsButton', parent=self.RightControlPanel, pos=wx.Point(0, 23), size=wx.Size(75, 23), style=0) self.InstrumentsButton.Bind(wx.EVT_BUTTON, self.OnInstrumentsButtonButton, id=wxID_BASICINTERFACEFRAMEINSTRUMENTSBUTTON) self.LogsPanel = SimpleLogLowerInterfacePanel(id=wxID_BASICINTERFACEFRAMELOGSPANEL, name=u'LogsPanel', parent=self.LowerInterface, pos=wx.Point(0, 0), size=wx.Size(1281, 154), style=wx.TAB_TRAVERSAL) self.ArbDBPanel = SimpleArbDBLowerInterfacePanel(id=wxID_BASICINTERFACEFRAMEARBDBPANEL, name=u'ArbDBPanel', parent=self.LowerInterface, pos=wx.Point(0, 0), size=wx.Size(1281, 154), style=wx.TAB_TRAVERSAL) self.EndOfTheDayButton = wx.Button(id=wxID_BASICINTERFACEFRAMEENDOFTHEDAYBUTTON, label=u'End of The Day Log', name=u'EndOfTheDayButton', parent=self.LowerControlPanel, pos=wx.Point(577, 0), size=wx.Size(103, 23), style=0) self.EndOfTheDayButton.Bind(wx.EVT_BUTTON, self.OnEndOfTheDayButtonButton, id=wxID_BASICINTERFACEFRAMEENDOFTHEDAYBUTTON) self.VisaDialogButton = wx.Button(id=wxID_BASICINTERFACEFRAMEVISADIALOGBUTTON, label=u'VISA Communicator', name=u'VisaDialogButton', parent=self.LowerControlPanel, pos=wx.Point(680, 0), size=wx.Size(184, 23), style=0) self.VisaDialogButton.Bind(wx.EVT_BUTTON, self.OnVisaDialogButtonButton, id=wxID_BASICINTERFACEFRAMEVISADIALOGBUTTON) self._init_coll_InterfaceToolBar_Tools(self.InterfaceToolBar) self._init_coll_UpperInterface_Pages(self.UpperInterface) self._init_coll_LowerInterface_Pages(self.LowerInterface) self._init_sizers()
def __init__(self, resizable=True, showLine=True): self.result = None self.showLine = showLine self.resizable = resizable addTestButton = False treeItem = self.treeItem name = treeItem.GetTypeName() firstParagraph, self.description = SplitFirstParagraph( treeItem.GetDescription()) size = (450, 300) if isinstance(treeItem, eg.PluginItem): title = eg.text.General.settingsPluginCaption elif isinstance(treeItem, eg.EventItem): title = eg.text.General.settingsEventCaption size = (450, 150) else: title = eg.text.General.settingsActionCaption addTestButton = True dialogStyle = wx.CAPTION | wx.CLOSE_BOX | wx.SYSTEM_MENU if resizable: dialogStyle |= wx.RESIZE_BORDER | wx.MAXIMIZE_BOX eg.TaskletDialog.__init__(self, eg.document.frame, -1, title, style=dialogStyle) self.notebook = wx.Notebook(self) self.buttonRow = eg.ButtonRow(self, (wx.ID_OK, wx.ID_CANCEL, wx.ID_APPLY), resizable) testButton = None if addTestButton: testButton = wx.Button(self, -1, eg.text.General.test) self.buttonRow.Add(testButton) testButton.Bind(wx.EVT_BUTTON, self.OnTestButton) self.buttonRow.testButton = testButton self.Bind(wx.EVT_CLOSE, self.OnCancel) self.Bind(wx.EVT_MAXIMIZE, self.OnMaximize) mainSizer = wx.BoxSizer(wx.VERTICAL) self.sizer = wx.BoxSizer(wx.VERTICAL) self.headerBox = eg.HeaderBox( self, name, firstParagraph, treeItem.icon, treeItem.url if hasattr(treeItem, "url") else None) mainSizer.SetMinSize(size) mainSizer.AddMany(( (self.headerBox, 0, wx.EXPAND, 0), (wx.StaticLine(self), 0, wx.EXPAND | wx.ALIGN_CENTER, 0), (self.notebook, 1, wx.EXPAND | wx.ALL | wx.ALIGN_CENTER, 5), )) self.mainSizer = mainSizer def ShowHelp(dummyEvent): self.treeItem.ShowHelp(self) wx.EVT_MENU(self, wx.ID_HELP, ShowHelp) self.SetAcceleratorTable( wx.AcceleratorTable([ (wx.ACCEL_NORMAL, wx.WXK_F1, wx.ID_HELP), ]))