def __init__(self, parent): style = aui.AUI_NB_BOTTOM | \ aui.AUI_NB_TAB_SPLIT | \ aui.AUI_NB_SCROLL_BUTTONS | \ aui.AUI_NB_CLOSE_ON_ACTIVE_TAB | \ aui.AUI_NB_TAB_MOVE | \ aui.AUI_NB_DRAW_DND_TAB super(EdShelfBook, self).__init__(parent, style=style) # Attributes self._open = dict() self._name2idx = dict() # For settings maintenance self._menu = ebmlib.ContextMenuManager() self._mcback = None self._mw = None # Event Handlers # HACK: binding to self works differently than parent catching it # binding here causes incorrect mouse coords to be sent to # event handler during click events! # self.Bind(aui.EVT_AUINOTEBOOK_TAB_RIGHT_UP, self.OnTabRightUp) self.Bind(aui.EVT_AUINOTEBOOK_BG_RIGHT_UP, self.OnBgRightUp) self.Bind(aui.EVT_AUINOTEBOOK_PAGE_CLOSE, self.OnItemClose) self.Bind(wx.EVT_MENU, self.OnTabMenu) self.Bind(wx.EVT_WINDOW_DESTROY, self.OnDestroy, self) # Message handlers ed_msg.Subscribe(self.OnUpdateTabs, ed_msg.EDMSG_THEME_NOTEBOOK) ed_msg.Subscribe(self.OnUpdateTabs, ed_msg.EDMSG_THEME_CHANGED)
def __init__(self, parent): self._mime = FBMimeMgr() super(FileBrowser2, self).__init__(parent) # Attributes self._mw = None self._menu = ebmlib.ContextMenuManager() self._monitor = ebmlib.DirectoryMonitor( checkFreq=-1) # manual refresh... self._monitor.SubscribeCallback(self.OnFilesChanged) self._monitor.StartMonitoring() self.isClosing = False self.syncTimer = wx.Timer(self) self._cpath = None # Setup self.SetupImageList() if wx.Platform == '__WXMSW__': for dname in ebmlib.GetWindowsDrives(): if os.path.exists(dname.Name): self.AddWatchDirectory(dname.Name) else: self.AddWatchDirectory("/") # Event Handlers self.Bind(wx.EVT_MENU, self.OnMenu) self.Bind(wx.EVT_TIMER, self.OnTimer) ed_msg.Subscribe(self.OnThemeChanged, ed_msg.EDMSG_THEME_CHANGED) ed_msg.Subscribe(self.OnPageChange, ed_msg.EDMSG_UI_NB_CHANGED) ed_msg.Subscribe(self.OnPageClosing, ed_msg.EDMSG_UI_NB_CLOSING) ed_msg.Subscribe(self.OnConfig, ed_msg.EDMSG_PROFILE_CHANGE + (fbcfg.FB_PROF_KEY, ))
def __init__(self, parent): style = aui.AUI_NB_BOTTOM | \ aui.AUI_NB_TAB_SPLIT | \ aui.AUI_NB_SCROLL_BUTTONS | \ aui.AUI_NB_CLOSE_ON_ACTIVE_TAB | \ aui.AUI_NB_TAB_MOVE | \ aui.AUI_NB_DRAW_DND_TAB super(EdShelfBook, self).__init__(parent, style=style) # Attributes self._parent = parent self._open = dict() self._name2idx = dict() # For settings maintenance self._menu = ebmlib.ContextMenuManager() self._mcback = None # Setup self.SetSashDClickUnsplit(True) # Event Handlers self.Bind(aui.EVT_AUINOTEBOOK_TAB_RIGHT_UP, self.OnRightUp) self.Bind(aui.EVT_AUINOTEBOOK_BG_RIGHT_UP, self.OnRightUp) self.Bind(wx.EVT_WINDOW_DESTROY, self.OnDestroy, self) # Message handlers ed_msg.Subscribe(self.OnUpdateTabs, ed_msg.EDMSG_THEME_NOTEBOOK) ed_msg.Subscribe(self.OnUpdateTabs, ed_msg.EDMSG_THEME_CHANGED)
def __init__(self, parent): super(ProjectTree, self).__init__(parent) # Attributes self._proj = None self._menu = ebmlib.ContextMenuManager() self._monitor = ebmlib.DirectoryMonitor(checkFreq=2000.0) self._monitor.SubscribeCallback(self.OnFilesChanged) self._monitor.StartMonitoring() # Setup self.SetupImageList() # Event Handlers self.Bind(wx.EVT_MENU, self.OnContextMenu) # Message Handlers ed_msg.Subscribe(self.OnGetProject, PyStudioMessages.PYSTUDIO_PROJECT_GET)
def OnTabMenu(self, evt): """Show the tab context menu""" if self._menu is not None: self._menu.Clear() # Construct the menu tab = evt.GetSelection() if tab != self.GetSelection(): self.SetSelection(evt.GetSelection()) ctab = self.GetCurrentPage() if ctab is not None: if self._menu is None: self._menu = ebmlib.ContextMenuManager() menu = ctab.GetTabMenu() self._menu.SetMenu(menu) self._menu.SetUserData("page", ctab) # Allow clients to customize the menu prior to showing it ed_msg.PostMessage(ed_msg.EDMSG_UI_NB_TABMENU, self._menu) # Show the menu if self._menu is not None: self.PopupMenu(self._menu.Menu)
def __init__(self, parent, id=ID_BROWSER, pos=wx.DefaultPosition, size=wx.DefaultSize, style=wx.TR_DEFAULT_STYLE | wx.TR_HIDE_ROOT): super(CodeBrowserTree, self).__init__(parent, id, pos, size, style) # Attributes self._log = wx.GetApp().GetLog() self._mw = parent self._menu = ebmlib.ContextMenuManager() self._selected = None self._cjob = 0 self._lastjob = u'' # Name of file in last sent out job self._cdoc = None # Current DocStruct self.icons = dict() self.il = None # struct used in buffer-tree sync self._ds_flat = list( ) # list of tuples - [(line, item_id),(line, item_id)...] self._timer = wx.Timer(self) self._sync_timer = wx.Timer(self) self._cpage = None self._force = False # Setup self._SetupImageList() viewm = self._mw.GetMenuBar().GetMenuByName("view") self._mi = viewm.InsertAlpha(ID_CODEBROWSER, _("Code Browser"), _("Open Code Browser Sidepanel"), wx.ITEM_CHECK, after=ed_glob.ID_PRE_MARK) self.root = self.AddRoot('CodeBrowser') self.SetPyData(self.root, None) self.SetItemImage(self.root, self.icons['class']) self.nodes = dict(globals=None, classes=None, funct=None) # Event Handlers self.Bind(wx.EVT_TREE_ITEM_ACTIVATED, self.OnActivated) self.Bind(wx.EVT_TREE_ITEM_RIGHT_CLICK, self.OnContext) self.Bind(wx.EVT_TREE_ITEM_EXPANDED, self.OnExpanding) self.Bind(wx.EVT_MENU, self.OnMenu) self.Bind(wx.EVT_TIMER, self.OnStartJob, self._timer) self.Bind(wx.EVT_TIMER, lambda evt: self._SyncTree(), self._sync_timer) self.Bind(wx.EVT_WINDOW_DESTROY, self.OnDestroy) self.Bind(EVT_JOB_FINISHED, self.OnTagsReady) # Editra Message Handlers ed_msg.Subscribe(self.OnThemeChange, ed_msg.EDMSG_THEME_CHANGED) ed_msg.Subscribe(self.OnUpdateTree, ed_msg.EDMSG_UI_NB_CHANGED) ed_msg.Subscribe(self.OnUpdateTree, ed_msg.EDMSG_FILE_OPENED) ed_msg.Subscribe(self.OnUpdateTree, ed_msg.EDMSG_FILE_SAVED) ed_msg.Subscribe(self.OnSyncTree, ed_msg.EDMSG_UI_STC_POS_CHANGED) ed_msg.Subscribe(self.OnEditorRestore, ed_msg.EDMSG_UI_STC_RESTORE) ed_msg.Subscribe( self.OnBrowserCfg, ed_msg.EDMSG_PROFILE_CHANGE + (cbconfig.CB_PROFILE_KEY, )) # Backwards compatibility if hasattr(ed_msg, 'EDMSG_UI_STC_LEXER') and \ hasattr(ed_msg, 'EDMSG_DSP_FONT'): ed_msg.Subscribe(self.OnUpdateFont, ed_msg.EDMSG_DSP_FONT) ed_msg.Subscribe(self.OnUpdateTree, ed_msg.EDMSG_UI_STC_LEXER)
def __init__(self, parent): """Initialize a notebook with a blank text control in it @param parent: parent window of the notebook @param id_num: this notebooks id """ style = aui.AUI_NB_DEFAULT_STYLE | \ aui.AUI_NB_WINDOWLIST_BUTTON | \ aui.AUI_NB_SMART_TABS | \ aui.AUI_NB_USE_IMAGES_DROPDOWN | \ aui.AUI_NB_TAB_EXTERNAL_MOVE | \ aui.AUI_NB_TAB_FIXED_WIDTH | \ aui.AUI_NB_ORDER_BY_ACCESS super(EdPages, self).__init__(parent, style=style) # Notebook attributes self.LOG = wx.GetApp().GetLog() self._idletimer = wx.Timer(self, ID_IDLE_TIMER) self.DocMgr = ed_editv.EdEditorView.DOCMGR self._searchctrl = ed_search.SearchController(self, self.GetCurrentCtrl) self._searchctrl.SetLookinChoices( Profile_Get('SEARCH_LOC', default=list())) self._searchctrl.SetFileFilters( Profile_Get('SEARCH_FILTER', default=u'')) self.pg_num = -1 # Track new pages (aka untitled docs) self.mdown = -1 self.control = None self.frame = self.GetTopLevelParent() # MainWindow self._index = dict() # image list index self._ses_load = False self._menu = ebmlib.ContextMenuManager() # Setup Tab Navigator ed_icon = ed_glob.CONFIG['SYSPIX_DIR'] + u"editra.png" bmp = wx.Bitmap(ed_icon, wx.BITMAP_TYPE_PNG) if bmp.IsOk(): self.SetNavigatorIcon(bmp) else: util.Log("[ed_pages][warn] Bad bitmap: %s" % ed_icon) # Setup the ImageList and the default image imgl = wx.ImageList(16, 16) txtbmp = wx.ArtProvider.GetBitmap(str(synglob.ID_LANG_TXT), wx.ART_MENU) self._index[synglob.ID_LANG_TXT] = imgl.Add(txtbmp) robmp = wx.ArtProvider.GetBitmap(str(ed_glob.ID_READONLY), wx.ART_MENU) self._index[ed_glob.ID_READONLY] = imgl.Add(robmp) self.SetImageList(imgl) # Set custom options self.SetSashDClickUnsplit(True) self.SetMinMaxTabWidth(125, 135) self.UpdateFontSetting() # Notebook Events self.Bind(wx.EVT_WINDOW_DESTROY, self.OnDestroy, self) self.Bind(aui.EVT_AUINOTEBOOK_PAGE_CHANGING, self.OnPageChanging) self.Bind(aui.EVT_AUINOTEBOOK_PAGE_CHANGED, self.OnPageChanged) self.Bind(aui.EVT_AUINOTEBOOK_PAGE_CLOSE, self.OnPageClosing) self.Bind(aui.EVT_AUINOTEBOOK_PAGE_CLOSED, self.OnPageClosed) self.Bind(aui.EVT_AUINOTEBOOK_TAB_DCLICK, self.OnTabLeftDClick) self.Bind(aui.EVT_AUINOTEBOOK_BG_DCLICK, self.OnBGLeftDClick) self.Bind(aui.EVT_AUINOTEBOOK_TAB_MIDDLE_DOWN, self.OnMClickDown) self.Bind(aui.EVT_AUINOTEBOOK_TAB_MIDDLE_UP, self.OnMClickUp) self.Bind(aui.EVT_AUINOTEBOOK_TAB_RIGHT_UP, self.OnTabMenu) self.Bind(aui.EVT_AUINOTEBOOK_ALLOW_DND, self.OnAllowDnD) self.Bind(aui.EVT_AUINOTEBOOK_END_DRAG, self.OnDragFinished) self.Bind(aui.EVT_AUINOTEBOOK_DRAG_DONE, self.OnDragFinished) self.Bind(wx.stc.EVT_STC_CHANGE, self.OnUpdatePageText) self.Bind(wx.EVT_MENU, self.OnMenu) self.Bind(wx.EVT_TIMER, self.OnIdle, id=ID_IDLE_TIMER) # Message handlers ed_msg.Subscribe(self.OnThemeChanged, ed_msg.EDMSG_THEME_CHANGED) ed_msg.Subscribe(self.OnThemeChanged, ed_msg.EDMSG_THEME_NOTEBOOK) ed_msg.Subscribe(self.OnUpdatePosCache, ed_msg.EDMSG_UI_STC_POS_JUMPED) ed_msg.RegisterCallback(self.OnDocPointerRequest, ed_msg.EDREQ_DOCPOINTER) ed_msg.Subscribe(self.OnConfigMsg, ed_msg.EDMSG_PROFILE_CHANGE + ('FONT3', )) # Add a blank page self.NewPage() self._idletimer.Start(400)
def setUp(self): self.cmgr = ebmlib.ContextMenuManager()