def CreateItem(self, parent): """Returns an IPythonShell Panel""" self._log = wx.GetApp().GetLog() self._log("[IPyShell][info] Creating IPythonShell instance for Shelf") #main_win = wx.GetApp().GetMainWindow() #parent.AddPage(self.history_panel,'IPythonHistory',False) splitter = wx.SplitterWindow(parent, -1, style=wx.SP_LIVE_UPDATE) self.history_panel = IPythonHistoryPanel(splitter) self.history_panel.setOptionTrackerHook(self.OptionSave) self.ipython_panel = IPShellWidget(splitter, background_color="BLACK") #user_ns=locals(),user_global_ns=globals(),) self.ipython_panel.setOptionTrackerHook(self.OptionSave) self.ipython_panel.setHistoryTrackerHook(self.history_panel.write) options_ipython = self.ipython_panel.getOptions() for key in options_ipython.keys(): saved_value = profiler.Profile_Get('IPython.' + key) if saved_value is not None: options_ipython[key]['value'] = saved_value options_history = self.history_panel.getOptions() for key in options_history.keys(): saved_value = profiler.Profile_Get('IPython.' + key) if saved_value is not None: options_history[key]['value'] = saved_value self.ipython_panel.reloadOptions(options_ipython) self.history_panel.reloadOptions(options_history) splitter.SetMinimumPaneSize(20) splitter.SplitVertically(self.ipython_panel, self.history_panel, -100) return splitter self._log("[IPyShell][info] IPythonShell succesfully created") return self.ipython_panel
def __init__(self, parent=None, id=-1, title="WxIPython", pos=wx.DefaultPosition, size=(800, 600), style=wx.DEFAULT_FRAME_STYLE, sync_ok=False): wx.Frame.__init__(self, parent, id, title, pos, size, style) self._mgr = wx.aui.AuiManager() # notify PyAUI which frame to use self._mgr.SetManagedWindow(self) #create differents panels and make them persistant self.history_panel = IPythonHistoryPanel(self) self.history_panel.setOptionTrackerHook(self.optionSave) self.ipython_panel = IPShellWidget(self, background_color="BLACK") #self.ipython_panel = IPShellWidget(self,background_color = "WHITE") if (sync_ok): self.ipython_panel2 = IPythonXController(self) else: self.ipython_panel2 = None self.ipython_panel.setHistoryTrackerHook(self.history_panel.write) self.ipython_panel.setStatusTrackerHook(self.updateStatus) self.ipython_panel.setAskExitHandler(self.OnExitDlg) self.ipython_panel.setOptionTrackerHook(self.optionSave) #Create a notebook to display different IPython shell implementations self.nb = wx.aui.AuiNotebook(self) self.optionLoad() self.statusbar = self.createStatus() self.createMenu() ######################################################################## ### add the panes to the manager # main panels self._mgr.AddPane(self.nb, wx.CENTER, "IPython Shells") self.nb.AddPage(self.ipython_panel, "IPython0 Shell") if (sync_ok): self.nb.AddPage(self.ipython_panel2, "IPython1 Synchroneous Shell") self._mgr.AddPane(self.history_panel, wx.RIGHT, "IPython history") # now we specify some panel characteristics self._mgr.GetPane(self.ipython_panel).CaptionVisible(True) self._mgr.GetPane(self.history_panel).CaptionVisible(True) self._mgr.GetPane(self.history_panel).MinSize((200, 400)) # tell the manager to "commit" all the changes just made self._mgr.Update() #global event handling self.Bind(wx.EVT_CLOSE, self.OnClose) self.Bind(wx.EVT_MENU, self.OnClose, id=wx.ID_EXIT) self.Bind(wx.EVT_MENU, self.OnShowIPythonPanel, id=wx.ID_HIGHEST + 1) self.Bind(wx.EVT_MENU, self.OnShowHistoryPanel, id=wx.ID_HIGHEST + 2) self.Bind(wx.EVT_MENU, self.OnShowAbout, id=wx.ID_HIGHEST + 3) self.Bind(wx.EVT_MENU, self.OnShowAllPanel, id=wx.ID_HIGHEST + 6) warn_text = 'Hello from IPython and wxPython.\n' warn_text += 'Please Note that this work is still EXPERIMENTAL\n' warn_text += 'It does NOT emulate currently all the IPython functions.\n' warn_text += "\nIf you use MATPLOTLIB with show() you'll need to deactivate the THREADING option.\n" if (not sync_ok): warn_text += "\n->No twisted package detected, IPython1 example deactivated." dlg = wx.MessageDialog(self, warn_text, 'Warning Box', wx.OK | wx.ICON_INFORMATION) dlg.ShowModal() dlg.Destroy()