def __init__(self, parent): """Create the result screen @param parent: parent window """ ctrlbox.ControlBox.__init__(self, parent) # Attributes self._meth = None self._job = None self._list = SearchResultList(self) self._cancelb = None self._clearb = None # Layout self.__DoLayout() self._cancelb.Disable() # Event Handlers self.Bind(wx.EVT_BUTTON, lambda evt: self._list.Clear(), id=wx.ID_CLEAR) self.Bind(wx.EVT_BUTTON, lambda evt: self.CancelSearch(), id=wx.ID_CANCEL) self._list.Bind(outbuff.EVT_TASK_START, self.OnTaskStart) self._list.Bind(outbuff.EVT_TASK_COMPLETE, self.OnTaskComplete) # Message Handlers ed_msg.Subscribe(self.OnThemeChange, ed_msg.EDMSG_THEME_CHANGED)
def __init__(self, parent, id, dir=u'', pos=wx.DefaultPosition, size=wx.DefaultSize, style=wx.DIRCTRL_SHOW_FILTERS | wx.DIRCTRL_EDIT_LABELS, filter=wx.EmptyString, defaultFilter=0): wx.GenericDirCtrl.__init__(self, parent, id, dir, pos, size, style, filter, defaultFilter) # Attributes self._tree = self.GetTreeCtrl() self._treeId = 0 # id of TreeItem that was last rclicked self._fmenu = self._MakeMenu() # Set custom styles self._tree.SetWindowStyle(self._tree.GetWindowStyle() | wx.TR_MULTIPLE) self._tree.Refresh() self._imglst = self._tree.GetImageList() self._SetupIcons() # Event Handlers self.Bind(wx.EVT_TREE_ITEM_ACTIVATED, self.OnOpen) self.Bind(wx.EVT_TREE_ITEM_RIGHT_CLICK, self.OnContext) self.Bind(wx.EVT_MENU, self.OnMenu) ed_msg.Subscribe(self.OnThemeChanged, ed_msg.EDMSG_THEME_CHANGED)
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 | \ aui.AUI_NB_NO_TAB_FOCUS if wx.Platform == '__WXMAC__': style |= aui.AUI_NB_CLOSE_ON_TAB_LEFT super(EdShelfBook, self).__init__(parent, agwStyle=style) # Attributes self._parent = parent self._open = dict() self._imgidx = dict() self._imglst = wx.ImageList(16, 16) self._name2idx = dict() # For settings maintenance # Setup self.SetImageList(self._imglst) self.SetSashDClickUnsplit(True) # Event Handlers self.Bind(wx.EVT_WINDOW_DESTROY, self.OnDestroy, self) # Message handlers ed_msg.Subscribe(self.OnUpdateTabs, ed_msg.EDMSG_THEME_NOTEBOOK)
def __init__(self, owner, getstc): """Create the controller @param owner: View that owns this controller @param getstc: Callable to get the current buffer with """ object.__init__(self) # Attributes self._parent = owner self._stc = getstc self._finddlg = None self._posinfo = dict(scroll=0, start=0, found=0, ldir=None) self._data = wx.FindReplaceData(eclib.AFR_RECURSIVE) self._li_choices = list() self._li_sel = 0 self._filters = None self._clients = list() self._engine = EdSearchEngine(u"") # For incremental searches # Setup self._engine.SetResultFormatter(self._engine.FormatResult) # Event handlers self._parent.Bind(eclib.EVT_FIND, self.OnFind) self._parent.Bind(eclib.EVT_FIND_NEXT, self.OnFind) self._parent.Bind(eclib.EVT_FIND_ALL, self.OnFindAll) self._parent.Bind(eclib.EVT_COUNT, self.OnCount) self._parent.Bind(eclib.EVT_REPLACE, self.OnReplace) self._parent.Bind(eclib.EVT_REPLACE_ALL, self.OnReplaceAll) self._parent.Bind(eclib.EVT_FIND_CLOSE, self.OnFindClose) self._parent.Bind(eclib.EVT_OPTION_CHANGED, self.OnOptionChanged) # Editra message handlers ed_msg.Subscribe(self._OnShowFindMsg, ed_msg.EDMSG_FIND_SHOW_DLG)
def __init__(self, parent): super(BrowserPane, self).__init__(parent) # Attributes self._mw = parent self._menbar = BrowserMenuBar(self) self._browser = FileBrowser2(self) self._browser.SetMainWindow(self._mw) self._config = PathMarkConfig(ed_glob.CONFIG['CACHE_DIR']) for item in self._config.GetItemLabels(): self._menbar.AddItem(item) # Layout self.SetWindow(self._browser) self.SetControlBar(self._menbar, wx.TOP) self.Layout() #---- Add Menu Items ----# viewm = self._mw.MenuBar.GetMenuByName("view") self._mi = viewm.InsertAlpha(ID_FILEBROWSE, _("File Browser"), _("Open File Browser Sidepanel"), wx.ITEM_CHECK, after=ed_glob.ID_PRE_MARK) # Event Handlers self.Bind(wx.EVT_MENU, self.OnMenu) self.Bind(wx.EVT_SHOW, self.OnShow) self.Bind(wx.EVT_WINDOW_DESTROY, self.OnDestroy) # Messages ed_msg.Subscribe(self.OnUpdateFont, ed_msg.EDMSG_DSP_FONT)
def __init__(self, parent, id_=wx.ID_ANY, pos=wx.DefaultPosition, size=wx.DefaultSize, style=0, use_dt=True): """Initialize the editor view""" ed_stc.EditraStc.__init__(self, parent, id_, pos, size, style, use_dt) ed_tab.EdTabBase.__init__(self) # Attributes self._ignore_del = False self._has_dlg = False self._lprio = 0 # Idle event priority counter self._menu = ContextMenuManager() self._spell = STCSpellCheck(self, check_region=self.IsNonCode) spref = Profile_Get('SPELLCHECK', default=dict()) self._spell_data = dict(choices=list(), word=('', -1, -1), enabled=spref.get('auto', False)) # Initialize the classes position manager for the first control # that is created only. if not EdEditorView.DOCMGR.IsInitialized(): EdEditorView.DOCMGR.InitPositionCache(ed_glob.CONFIG['CACHE_DIR'] + \ os.sep + u'positions') self._spell.clearAll() self._spell.setDefaultLanguage(spref.get('dict', 'en_US')) self._spell.startIdleProcessing() # Context Menu Events self.Bind(wx.EVT_CONTEXT_MENU, self.OnContextMenu) # Need to relay the menu events from the context menu to the top level # window to be handled on gtk. Other platforms don't require this. self.Bind(wx.EVT_MENU, self.OnMenuEvent) # Hide autocomp/calltips when window looses focus # TODO: decide on whether this belongs in base class or not self.Bind(wx.EVT_KILL_FOCUS, lambda evt: self.HidePopups()) self.Bind(wx.EVT_LEFT_UP, self.OnSetFocus) ed_msg.Subscribe(self.OnConfigMsg, ed_msg.EDMSG_PROFILE_CHANGE + ('SPELLCHECK',)) ed_msg.Subscribe(self.OnConfigMsg, ed_msg.EDMSG_PROFILE_CHANGE + ('AUTOBACKUP',)) ed_msg.Subscribe(self.OnConfigMsg, ed_msg.EDMSG_PROFILE_CHANGE + ('SYNTHEME',)) ed_msg.Subscribe(self.OnConfigMsg, ed_msg.EDMSG_PROFILE_CHANGE + ('SYNTAX',))
def __init__(self, parent, id=ID_BROWSER, pos=wx.DefaultPosition, size=wx.DefaultSize, style=wx.TR_DEFAULT_STYLE|wx.TR_HIDE_ROOT): wx.TreeCtrl.__init__(self, parent, id, pos, size, style) # Attributes self._log = wx.GetApp().GetLog() self._mw = parent self._menu = None 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_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(EVT_JOB_FINISHED, self.OnTagsReady) 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) # 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): super(EDBaseFileTree, self).__init__(parent) # Message Handlers ed_msg.Subscribe(self.OnActivateMsg, ed_msg.EDMSG_UI_MW_ACTIVATE) # Events self.Bind(wx.EVT_WINDOW_DESTROY, self.OnDestroy)
def __init__(self, parent): super(EdStatBar, self).__init__(parent, style=wx.ST_SIZEGRIP) # Attributes self._pid = parent.GetId() # Save parents id for filtering msgs self._widths = list() self._cleanup_timer = wx.Timer(self, EdStatBar.ID_CLEANUP_TIMER) self._eolmenu = wx.Menu() self._log = wx.GetApp().GetLog() # Setup self.SetFieldsCount(6) # Info, vi stuff, line/progress self.SetStatusWidths([-1, 90, 40, 40, 40, 155]) self._eolmenu.Append(ed_glob.ID_EOL_MAC, u"CR", _("Change line endings to %s") % u"CR") self._eolmenu.Append(ed_glob.ID_EOL_WIN, u"CRLF", _("Change line endings to %s") % u"CRLF") self._eolmenu.Append(ed_glob.ID_EOL_UNIX, u"LF", _("Change line endings to %s") % u"LF") # Event Handlers self.Bind(wx.EVT_LEFT_DCLICK, self.OnLeftDClick) self.Bind(wx.EVT_LEFT_UP, self.OnLeftUp) self.Bind(wx.EVT_TIMER, self.OnExpireMessage, id=EdStatBar.ID_CLEANUP_TIMER) # Messages ed_msg.Subscribe(self.OnProgress, ed_msg.EDMSG_PROGRESS_SHOW) ed_msg.Subscribe(self.OnProgress, ed_msg.EDMSG_PROGRESS_STATE) ed_msg.Subscribe(self.OnUpdateText, ed_msg.EDMSG_UI_SB_TXT) ed_msg.Subscribe(self.OnUpdateDoc, ed_msg.EDMSG_UI_NB_CHANGED) ed_msg.Subscribe(self.OnUpdateDoc, ed_msg.EDMSG_FILE_SAVED) ed_msg.Subscribe(self.OnUpdateDoc, ed_msg.EDMSG_FILE_OPENED) ed_msg.Subscribe(self.OnUpdateDoc, ed_msg.EDMSG_UI_STC_LEXER)
def __init__(self, parent): ProgressStatusBar.__init__(self, parent, style=wx.ST_SIZEGRIP) # Setup self._pid = parent.GetId() # Save parents id for filtering msgs self._widths = list() self.SetFieldsCount(6) # Info, vi stuff, line/progress self.SetStatusWidths([-1, 90, 40, 40, 40, 155]) self._cleanup_timer = wx.Timer(self, EdStatBar.ID_CLEANUP_TIMER) # Event Handlers self.Bind(wx.EVT_LEFT_DCLICK, self.OnLeftDClick) self.Bind(wx.EVT_TIMER, self.OnExpireMessage, id=EdStatBar.ID_CLEANUP_TIMER) # Messages ed_msg.Subscribe(self.OnProgress, ed_msg.EDMSG_PROGRESS_SHOW) ed_msg.Subscribe(self.OnProgress, ed_msg.EDMSG_PROGRESS_STATE) ed_msg.Subscribe(self.OnUpdateText, ed_msg.EDMSG_UI_SB_TXT) ed_msg.Subscribe(self.OnUpdateDoc, ed_msg.EDMSG_UI_NB_CHANGED) ed_msg.Subscribe(self.OnUpdateDoc, ed_msg.EDMSG_FILE_SAVED) ed_msg.Subscribe(self.OnUpdateDoc, ed_msg.EDMSG_UI_STC_LEXER) # ed_msg.Subscribe(self.OnProgress, ed_msg.EDMSG_FILE_OPENING) ed_msg.Subscribe(self.OnUpdateDoc, ed_msg.EDMSG_FILE_OPENED)
def __init__(self, parent, id, pos=wx.DefaultPosition, size=wx.DefaultSize, style=wx.NO_BORDER): wx.Panel.__init__(self, parent, id, pos, size, style) # Attributes self._mw = parent self._sizer = wx.BoxSizer(wx.VERTICAL) filters = "".join(syntax.syntax.GenFileFilters()) self._menbar = BrowserMenuBar(self) self._browser = FileBrowser(self, ID_FILEBROWSE, dir=wx.GetHomeDir(), size=(200, -1), style=wx.DIRCTRL_SHOW_FILTERS | wx.DIRCTRL_EDIT_LABELS | wx.BORDER_SUNKEN, filter=filters) self._config = PathMarkConfig(ed_glob.CONFIG['CACHE_DIR']) for item in self._config.GetItemLabels(): self._menbar.AddItem(item) # Setup hidden files checkbox self._showh_cb = wx.CheckBox(self, self.ID_SHOW_HIDDEN, _("Show Hidden Files")) self._showh_cb.SetValue(False) if wx.Platform == '__WXMAC__': self._showh_cb.SetWindowVariant(wx.WINDOW_VARIANT_SMALL) #---- Add Menu Items ----# viewm = self._mw.GetMenuBar().GetMenuByName("view") self._mi = viewm.InsertAlpha(ID_FILEBROWSE, _("File Browser"), _("Open File Browser Sidepanel"), wx.ITEM_CHECK, after=ed_glob.ID_PRE_MARK) # Layout Pane self._sizer.AddMany([(self._menbar, 0, wx.EXPAND), (self._browser, 1, wx.EXPAND)]) # TODO: an unresolved bug in msw version the show hidden files # option causes a hard crash. So just show them by default if wx.Platform != '__WXMSW__': cb_sz = wx.BoxSizer(wx.HORIZONTAL) cb_sz.Add((4, 4)) cb_sz.Add(self._showh_cb, 0, wx.ALIGN_LEFT) self._sizer.AddMany([((2, 2),), (cb_sz, 0, wx.ALIGN_LEFT), ((2, 2),)]) else: self._showh_cb.Hide() self.SetSizer(self._sizer) # Event Handlers self.Bind(wx.EVT_CHECKBOX, self.OnCheck) self.Bind(wx.EVT_MENU, self.OnMenu) self.Bind(wx.EVT_PAINT, self.OnPaint) # Messages ed_msg.Subscribe(self.OnUpdateFont, ed_msg.EDMSG_DSP_FONT)
def __init__(self, parent, id_=wx.ID_ANY, pos=wx.DefaultPosition, size=wx.DefaultSize, style=0, use_dt=True): """Initialize the editor view""" ed_stc.EditraStc.__init__(self, parent, id_, pos, size, style, use_dt) ed_tab.EdTabBase.__init__(self) # Attributes self._ro_img = False self._ignore_del = False self._has_dlg = False self._lprio = 0 # Idle event priority counter self._menu = ContextMenuManager() self._spell = STCSpellCheck(self, check_region=self.IsNonCode) self._caret_w = 1 self._focused = True spref = Profile_Get('SPELLCHECK', default=dict()) self._spell_data = dict(choices=list(), word=('', -1, -1), enabled=spref.get('auto', False)) # Initialize the classes position manager for the first control # that is created only. if not EdEditorView.DOCMGR.IsInitialized(): EdEditorView.DOCMGR.InitPositionCache(ed_glob.CONFIG['CACHE_DIR'] + \ os.sep + u'positions') self._spell.clearAll() self._spell.setDefaultLanguage(spref.get('dict', 'en_US')) self._spell.startIdleProcessing() # Context Menu Events self.Bind(wx.EVT_CONTEXT_MENU, self.OnContextMenu) # Need to relay the menu events from the context menu to the top level # window to be handled on gtk. Other platforms don't require this. self.Bind(wx.EVT_MENU, self.OnMenuEvent) # Hide autocomp/calltips when window looses focus # TODO: decide on whether this belongs in base class or not self.Bind(wx.EVT_KILL_FOCUS, self.OnKillFocus) self.Bind(wx.EVT_LEFT_UP, self.OnSetFocus) self.Bind(wx.EVT_WINDOW_DESTROY, self.OnDestroy, self) # Subscribe for configuration updates for opt in ('AUTOBACKUP', 'SYNTHEME', 'SYNTAX', 'BRACKETHL', 'GUIDES', 'SHOW_EDGE', 'EDGE', 'CODE_FOLD', 'AUTO_COMP', 'AUTO_INDENT', 'HLCARETLINE', 'SPELLCHECK', 'VI_EMU', 'VI_NORMAL_DEFAULT', 'USETABS', 'TABWIDTH', 'INDENTWIDTH', 'BSUNINDENT', 'EOL_MODE', 'AALIASING', 'SHOW_EOL', 'SHOW_LN', 'SHOW_WS', 'WRAP', 'VIEWVERTSPACE'): ed_msg.Subscribe(self.OnConfigMsg, ed_msg.EDMSG_PROFILE_CHANGE + (opt, ))
def __init__(self, pmgr): """Create the FindResults plugin @param pmgr: This plugins manager """ if not EdFindResults.SUBSCRIBED: ed_msg.Subscribe(EdFindResults.StartResultsScreen, ed_msg.EDMSG_START_SEARCH) EdFindResults.SUBSCRIBED = True
def __init__(self, parent): super(LaunchWindow, self).__init__(parent) # Attributes self._log = wx.GetApp().GetLog() self._mw = ed_basewin.FindMainWindow(self) self._buffer = OutputDisplay(self) self._fnames = list() self._run = None # Created in __DoLayout self._pbtn = None # Created in __DoLayout self._clear = None # Created in __DoLayout self._lockFile = None # Created in __DoLayout self._chFiles = None # Created in __DoLayout self._worker = None self._busy = False self._isready = False self._state = dict(file='', lang=0, cfile='', clang=0, last='', lastlang=0, prelang=0, largs='', lcmd='') # Setup self.__DoLayout() if not handlers.InitCustomHandlers(ed_glob.CONFIG['CACHE_DIR']): util.Log(u"[launch][warn] failed to load launch extensions") # Ensure preferences have been initialized cfgdlg.InitConfig() self.UpdateBufferColors() cbuffer = GetTextBuffer(self.MainWindow) self.SetupControlBar(cbuffer) self.State['lang'] = GetLangIdFromMW(self.MainWindow) self.UpdateCurrentFiles(self.State['lang']) self.SetFile(cbuffer.GetFileName()) # Setup filetype settings self.RefreshControlBar() # Event Handlers self.Bind(wx.EVT_BUTTON, self.OnButton) self.Bind(wx.EVT_CHOICE, self.OnChoice) self.Bind(wx.EVT_CHECKBOX, self.OnCheck) self.Bind(wx.EVT_WINDOW_DESTROY, self.OnDestroy, self) ed_msg.Subscribe(self.OnPageChanged, ed_msg.EDMSG_UI_NB_CHANGED) ed_msg.Subscribe(self.OnFileOpened, ed_msg.EDMSG_FILE_OPENED) ed_msg.Subscribe(self.OnThemeChanged, ed_msg.EDMSG_THEME_CHANGED) ed_msg.Subscribe(self.OnLexerChange, ed_msg.EDMSG_UI_STC_LEXER) ed_msg.Subscribe(self.OnConfigChange, ed_msg.EDMSG_PROFILE_CHANGE + (handlers.CONFIG_KEY, )) ed_msg.Subscribe(self.OnRunMsg, MSG_RUN_LAUNCH) ed_msg.Subscribe(self.OnRunLastMsg, MSG_RUN_LAST) ed_msg.RegisterCallback(self._CanLaunch, REQUEST_ACTIVE) ed_msg.RegisterCallback(self._CanReLaunch, REQUEST_RELAUNCH)
def __init__(self, parent): eclib.ControlBox.__init__(self, parent) # Attributes self._log = wx.GetApp().GetLog() self._mw = self.__FindMainWindow() self._buffer = OutputDisplay(self) self._fnames = list() self._chFiles = None # Created in __DoLayout self._worker = None self._busy = False self._isready = False self._config = dict(file='', lang=0, cfile='', clang=0, last='', lastlang=0, prelang=0, largs='', lcmd='') self._prefs = Profile_Get(cfgdlg.LAUNCH_PREFS, default=None) # Setup self.__DoLayout() hstate = Profile_Get(LAUNCH_KEY) if hstate is not None: handlers.SetState(hstate) if self._prefs is None: Profile_Set(cfgdlg.LAUNCH_PREFS, dict(autoclear=False, defaultf=self._buffer.GetDefaultForeground().Get(), defaultb=self._buffer.GetDefaultBackground().Get(), errorf=self._buffer.GetErrorForeground().Get(), errorb=self._buffer.GetErrorBackground().Get(), infof=self._buffer.GetInfoForeground().Get(), infob=self._buffer.GetInfoBackground().Get(), warnf=self._buffer.GetWarningForeground().Get(), warnb=self._buffer.GetWarningBackground().Get())) self._prefs = Profile_Get(cfgdlg.LAUNCH_PREFS) self.UpdateBufferColors() cbuffer = self._mw.GetNotebook().GetCurrentCtrl() self.SetupControlBar(cbuffer) self._config['lang'] = GetLangIdFromMW(self._mw) self.UpdateCurrentFiles(self._config['lang']) self.SetFile(GetTextBuffer(self._mw).GetFileName()) # Setup filetype settings self.RefreshControlBar() # Event Handlers self.Bind(wx.EVT_BUTTON, self.OnButton) self.Bind(wx.EVT_CHOICE, self.OnChoice) ed_msg.Subscribe(self.OnPageChanged, ed_msg.EDMSG_UI_NB_CHANGED) ed_msg.Subscribe(self.OnFileOpened, ed_msg.EDMSG_FILE_OPENED) ed_msg.Subscribe(self.OnThemeChanged, ed_msg.EDMSG_THEME_CHANGED) ed_msg.Subscribe(self.OnLexerChange, ed_msg.EDMSG_UI_STC_LEXER) ed_msg.Subscribe(self.OnConfigExit, cfgdlg.EDMSG_LAUNCH_CFG_EXIT) ed_msg.Subscribe(self.OnRunMsg, MSG_RUN_LAUNCH) ed_msg.Subscribe(self.OnRunLastMsg, MSG_RUN_LAST) ed_msg.RegisterCallback(self._CanLaunch, REQUEST_ACTIVE) ed_msg.RegisterCallback(self._CanReLaunch, REQUEST_RELAUNCH)
def __init__(self, parent, id_, size=wx.DefaultSize): """Initializes the CommandExecuter""" wx.SearchCtrl.__init__(self, parent, id_, size=size, style=wx.TE_PROCESS_ENTER | wx.WANTS_CHARS) # Attributes self._history = dict(cmds=[''], index=-1, lastval='') if not hasattr(sys, 'frozen'): self._curdir = os.path.abspath(os.curdir) + os.sep else: self._curdir = wx.GetHomeDir() + os.sep if wx.Platform == '__WXMAC__': self._popup = PopupList(self) self.Bind(wx.EVT_SET_FOCUS, self.OnSetFocus) self.Bind(wx.EVT_KILL_FOCUS, self.OnKillFocus) else: self._popup = PopupWinList(self) # Hide the search button and text self.ShowSearchButton(False) self.ShowCancelButton(False) self.SetDescriptiveText(wx.EmptyString) # Event Handlers # HACK, needed on Windows to get any key events and for # GTK to get key down events if wx.Platform in ['__WXGTK__', '__WXMSW__']: for child in self.GetChildren(): if isinstance(child, wx.TextCtrl): child.Bind(wx.EVT_KEY_DOWN, self.OnKeyDown) child.Bind(wx.EVT_KEY_UP, self.OnKeyUp) break else: self.Bind(wx.EVT_KEY_DOWN, self.OnKeyDown) self.Bind(wx.EVT_KEY_UP, self.OnKeyUp) self.Bind(wx.EVT_TEXT_ENTER, self.OnEnter) self.Bind(ed_event.EVT_NOTIFY, self.OnPopupNotify) ed_msg.Subscribe(self._UpdateCwd, ed_msg.EDMSG_UI_NB_CHANGED) ed_msg.Subscribe(self._UpdateCwd, ed_msg.EDMSG_FILE_SAVED)
def __init__(self, parent, id, pos=wx.DefaultPosition, size=wx.DefaultSize, style=wx.NO_BORDER | wx.TAB_TRAVERSAL): eclib.ControlBox.__init__(self, parent, id, pos, size, style) # Attributes self._mw = parent filters = u"".join(syntax.syntax.GenFileFilters()) self._menbar = BrowserMenuBar(self) self._browser = FileBrowser(self, ID_FILEBROWSE, dir=wx.GetHomeDir(), style=wx.DIRCTRL_SHOW_FILTERS | wx.DIRCTRL_EDIT_LABELS | wx.BORDER_SUNKEN, filter=filters) self._browser.SetMainWindow(self._mw) self._config = PathMarkConfig(ed_glob.CONFIG['CACHE_DIR']) for item in self._config.GetItemLabels(): self._menbar.AddItem(item) # Setup hidden files checkbox bbar = eclib.ControlBar(self, style=eclib.CTRLBAR_STYLE_GRADIENT) if wx.Platform == '__WXGTK__': bbar.SetWindowStyle(eclib.CTRLBAR_STYLE_DEFAULT) self._showh_cb = wx.CheckBox(bbar, self.ID_SHOW_HIDDEN, _("Show Hidden Files")) self._showh_cb.SetValue(False) bbar.AddControl(self._showh_cb, wx.ALIGN_LEFT) # Layout self.SetWindow(self._browser) self.SetControlBar(self._menbar, wx.TOP) self.SetControlBar(bbar, wx.BOTTOM) if wx.Platform == '__WXMSW__': bbar.Hide() self.Layout() #---- Add Menu Items ----# viewm = self._mw.GetMenuBar().GetMenuByName("view") self._mi = viewm.InsertAlpha(ID_FILEBROWSE, _("File Browser"), _("Open File Browser Sidepanel"), wx.ITEM_CHECK, after=ed_glob.ID_PRE_MARK) # Event Handlers self.Bind(wx.EVT_CHECKBOX, self.OnCheck) self.Bind(wx.EVT_MENU, self.OnMenu) # Messages ed_msg.Subscribe(self.OnUpdateFont, ed_msg.EDMSG_DSP_FONT)
def __init__(self, parent, id, dir=u'', pos=wx.DefaultPosition, size=wx.DefaultSize, style=wx.DIRCTRL_SHOW_FILTERS | wx.DIRCTRL_EDIT_LABELS, filter=wx.EmptyString, defaultFilter=0): wx.GenericDirCtrl.__init__(self, parent, id, dir, pos, size, style, filter, defaultFilter) # Attributes self._tree = self.GetTreeCtrl() self._treeId = 0 # id of TreeItem that was last rclicked self._fmenu = self._MakeMenu() self._drag_img = None # Show hidden files by default on windows since the option is disabled # due to it crashing out the program... if wx.Platform == '__WXMSW__': self.ShowHidden(True) # Set custom styles self._tree.SetWindowStyle(self._tree.GetWindowStyle() | wx.TR_MULTIPLE) self._tree.Refresh() self._imglst = self._tree.GetImageList() self._SetupIcons() # Use the small variant of the choice control on osx if wx.Platform == '__WXMAC__': for child in self.GetChildren(): if isinstance(child, wx.Choice): child.SetWindowVariant(wx.WINDOW_VARIANT_SMALL) break # Event Handlers self.Bind(wx.EVT_TREE_ITEM_ACTIVATED, self.OnOpen) self.Bind(wx.EVT_TREE_ITEM_RIGHT_CLICK, self.OnContext) self.Bind(wx.EVT_MENU, self.OnMenu) ed_msg.Subscribe(self.OnThemeChanged, ed_msg.EDMSG_THEME_CHANGED) ed_msg.Subscribe(self.OnPageChange, ed_msg.EDMSG_UI_NB_CHANGED)
def __init__(self): super(BreakpointController, self).__init__() # Attributes self._ui = None # Setup callbacks MessageHandler().AddMenuItem(0, False, ID_TOGGLE_BREAKPOINT, _("Toggle Breakpoint"), self.ToggleBreakpoint) ed_msg.Subscribe(self.OnMarginClick, ed_msg.EDMSG_UI_STC_MARGIN_CLICK)
def __init__(self, parent, id_=wx.ID_ANY, pos=wx.DefaultPosition, size=wx.DefaultSize, style=wx.BORDER_NONE|wx.LC_REPORT|wx.LC_HRULES|wx.LC_VRULES| wx.LC_SINGLE_SEL|wx.LC_VIRTUAL|wx.LC_SORT_DESCENDING): """Init the CustomListCtrl""" wx.ListCtrl.__init__(self, parent, id_, pos, size, style) #---- Images used by the list ----# self._img_list = None self.sm_up = None self.sm_dn = None self._SetupImages() #---- Set Columns Headers ----# self.InsertColumn(0, "!") self.InsertColumn(1, _("Type")) self.InsertColumn(2, _("Description")) self.InsertColumn(3, _("File")) self.InsertColumn(4, _("Line")) self.SetColumnWidth(0, 38) self.SetColumnWidth(1, 59) self.SetColumnWidth(2, 429) self.SetColumnWidth(3, 117) #---- data ----# #this attribute ist required by listmix.ColumnSorterMixin #{1:(prio, task, description, file, line, fullname), etc.} self.itemDataMap = {} # [key1, key2, key3, ...] self.itemIndexMap = self.itemDataMap.keys() self.SetItemCount(len(self.itemDataMap)) # needed to hold a reference (otherwise it would be # garbagecollected too soon causing a crash) self._attr = None self._max_prio = 0 #---- init base classes ----# # hast to be after self.itemDataMap has been initialized and the # setup of the columns, but befor sorting listmix.ListCtrlAutoWidthMixin.__init__(self) listmix.ColumnSorterMixin.__init__(self, 5) #---- Events ----# self.Bind(wx.EVT_LIST_ITEM_RIGHT_CLICK, self.OnItemRightClick, self) self.Bind(wx.EVT_LIST_ITEM_ACTIVATED, self.OnItemActivated, self) ed_msg.Subscribe(self._SetupImages, ed_msg.EDMSG_THEME_CHANGED) # set initial sort order # sort by prio (column 0), descending order (0) self.SortListItems(0, 0)
def __init__(self, parent): wx.Panel.__init__(self, parent, style=wx.NO_BORDER) # Attributes self._saved = ed_menu.EdMenu() self._rmpath = ed_menu.EdMenu() self._ids = list() # List of ids of menu items self._rids = list() # List of remove menu item ids key = u'Ctrl' if wx.Platform == '__WXMAC__': key = u'Cmd' tt = wx.ToolTip( _("To open multiple files at once %s+Click to select " "the desired files/folders then hit Enter to open " "them all at once") % key) self.SetToolTip(tt) # Build Menus menu = ed_menu.EdMenu() menu.Append(self.ID_MARK_PATH, _("Save Selected Paths")) menu.AppendMenu(self.ID_OPEN_MARK, _("Jump to Saved Path"), self._saved) menu.AppendSeparator() menu.AppendMenu(self.ID_REMOVE_MARK, _("Remove Saved Path"), self._rmpath) # Button bmp = wx.ArtProvider.GetBitmap(str(ed_glob.ID_ADD_BM), wx.ART_MENU) self.menub = platebtn.PlateButton(self, bmp=bmp, style=platebtn.PB_STYLE_NOBG) self.menub.SetToolTipString(_("Pathmarks")) self.menub.SetMenu(menu) # Layout bar sizer = wx.BoxSizer(wx.VERTICAL) sizer.Add((1, 1)) men_sz = wx.BoxSizer(wx.HORIZONTAL) men_sz.Add((6, 6)) men_sz.Add(self.menub, 0, wx.ALIGN_LEFT) sizer.Add(men_sz) sizer.Add((1, 1)) self.SetSizer(sizer) # Event Handlers ed_msg.Subscribe(self.OnThemeChanged, ed_msg.EDMSG_THEME_CHANGED) self.Bind(wx.EVT_BUTTON, lambda evt: self.menub.ShowMenu(), self.menub) # Due to transparency issues dont do painting on gtk if wx.Platform != '__WXGTK__': self.Bind(wx.EVT_PAINT, self.OnPaint)
def __init__(self, parent, id_=wx.ID_ANY): super(FtpWindow, self).__init__(parent, id_) # Attributes self._mw = ed_basewin.FindMainWindow(self) self._config = ftpconfig.ConfigData self._config.SetData(Profile_Get(CONFIG_KEY, default=dict())) self._connected = False self._client = ftpclient.FtpClient(self) self._files = list() self._select = None self._open = list() # Open ftpfile objects # Ui controls self._cbar = None # ControlBar self._list = None # FtpList self._sites = None # wx.Choice self.prefbtn = None self._username = None # wx.TextCtrl self._password = None # wx.TextCtrl # Layout self.__DoLayout() self.EnableControls(bool(self._config.GetCount())) self.RefreshControlBar() # Event Handlers self.Bind(wx.EVT_BUTTON, self.OnButton, self.prefbtn) self.Bind(wx.EVT_BUTTON, self.OnButton, self.cbtn) self.Bind(wx.EVT_CHOICE, self.OnChoice, id=ID_SITES) self.Bind(wx.EVT_MENU, self.OnMenu) self.Bind(wx.EVT_LIST_ITEM_ACTIVATED, self.OnItemActivated) self.Bind(ftpclient.EVT_FTP_REFRESH, self.OnRefresh) self.Bind(ftpclient.EVT_FTP_DOWNLOAD, self.OnDownload) self.Bind(wx.EVT_WINDOW_DESTROY, self.OnDestroy, self) # Editra Message Handlers ed_msg.Subscribe(self.OnThemeChanged, ed_msg.EDMSG_THEME_CHANGED) ed_msg.Subscribe(self.OnCfgUpdated, ftpconfig.EDMSG_FTPCFG_UPDATED)
def __init__(self, parent): """create the tree""" wx.TreeCtrl.__init__(self, parent, style=wx.TR_DEFAULT_STYLE|\ wx.TR_FULL_ROW_HIGHLIGHT|\ wx.TR_EDIT_LABELS|\ wx.TR_SINGLE|\ wx.SIMPLE_BORDER) # Attributes self._editing = (None, None) self._imglst = wx.ImageList(16, 16) self._imgidx = dict(folder=0, site=1) self._root = None # TreeItemId # Setup font = Profile_Get('FONT3', 'font', wx.NORMAL_FONT) self.SetFont(font) self.SetImageList(self._imglst) self.__SetupImageList() self._root = self.AddRoot(_("My Sites")) self.SetItemImage(self._root, self._imgidx['folder'], wx.TreeItemIcon_Normal) self.SetItemImage(self._root, self._imgidx['open'], wx.TreeItemIcon_Expanded) self.SetItemHasChildren(self._root, True) self.Expand(self._root) for site in ConfigData.GetSites(): self.AppendItem(self._root, site, self._imgidx['site']) self.SetMinSize(wx.Size(-1, 150)) # Event Handlers self.Bind(wx.EVT_TREE_BEGIN_LABEL_EDIT, self.OnBeginLabelEdit) self.Bind(wx.EVT_TREE_END_LABEL_EDIT, self.OnEndLabelEdit) # Editra Message Handlers ed_msg.Subscribe(self.OnThemeChanged, ed_msg.EDMSG_THEME_CHANGED) ed_msg.Subscribe(self.OnUpdateFont, ed_msg.EDMSG_DSP_FONT)
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 # Setup self.SetSashDClickUnsplit(True) # Event Handlers 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, style=0): style |= self.GetBaseStyles() super(EdBaseBook, self).__init__(parent, agwStyle=style) if wx.Platform == '__WXGTK__': self.SetArtProvider(GtkTabArt()) # Setup self.UpdateFontSetting() # Message Handlers ed_msg.Subscribe(self.OnUpdateFont, ed_msg.EDMSG_DSP_FONT) # Event Handlers self.Bind(wx.EVT_WINDOW_DESTROY, self._OnDestroy, self)
def __init__(self, parent, id_num): """Initialize a notebook with a blank text control in it @param parent: parent window of the notebook @param id_num: this notebooks id """ FNB.FlatNotebook.__init__( self, parent, id_num, style=FNB.FNB_FF2 | FNB.FNB_X_ON_TAB | FNB.FNB_SMART_TABS | FNB.FNB_BACKGROUND_GRADIENT | FNB.FNB_DROPDOWN_TABS_LIST | FNB.FNB_ALLOW_FOREIGN_DND) # Notebook attributes self.LOG = wx.GetApp().GetLog() self.FindService = ed_search.TextFinder(self, self.GetCurrentCtrl) self.DocMgr = doctools.DocPositionMgr(ed_glob.CONFIG['CACHE_DIR'] + \ os.sep + u'positions') self.pg_num = -1 # Track new pages (aka untitled docs) self.control = None self.frame = self.GetTopLevelParent() # MainWindow self._index = dict() # image list index self._ses_load = False # Set Additional Style Parameters self.SetNonActiveTabTextColour(wx.Colour(102, 102, 102)) ed_icon = ed_glob.CONFIG['SYSPIX_DIR'] + u"editra.png" self.SetNavigatorIcon(wx.Bitmap(ed_icon, wx.BITMAP_TYPE_PNG)) # 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) self.SetImageList(imgl) # Notebook Events self.Bind(FNB.EVT_FLATNOTEBOOK_PAGE_CHANGING, self.OnPageChanging) self.Bind(FNB.EVT_FLATNOTEBOOK_PAGE_CHANGED, self.OnPageChanged) self.Bind(FNB.EVT_FLATNOTEBOOK_PAGE_CLOSING, self.OnPageClosing) self.Bind(FNB.EVT_FLATNOTEBOOK_PAGE_CLOSED, self.OnPageClosed) self.Bind(wx.stc.EVT_STC_MODIFIED, self.OnUpdatePageText) self._pages.Bind(wx.EVT_LEFT_UP, self.OnLeftUp) self.Bind(wx.EVT_IDLE, self.OnIdle) ed_msg.Subscribe(self.OnThemeChanged, ed_msg.EDMSG_THEME_CHANGED) # Add a blank page self.NewPage()
def __init__(self, parent): CommandBarBase.__init__(self, parent) # Attributes self.SetControl( ed_search.EdSearchCtrl(self, wx.ID_ANY, menulen=5, size=(180, -1))) self._sctrl = self.ctrl.GetSearchController() # Setup f_lbl = wx.StaticText(self, label=_("Find") + u": ") t_bmp = wx.ArtProvider.GetBitmap(str(ed_glob.ID_DOWN), wx.ART_MENU) next_btn = eclib.PlateButton(self, ID_SEARCH_NEXT, _("Next"), t_bmp, style=eclib.PB_STYLE_NOBG) self.AddControl(f_lbl, wx.ALIGN_LEFT) self.AddControl(self.ctrl, wx.ALIGN_LEFT) self.AddControl(next_btn, wx.ALIGN_LEFT) t_bmp = wx.ArtProvider.GetBitmap(str(ed_glob.ID_UP), wx.ART_MENU) pre_btn = eclib.PlateButton(self, ID_SEARCH_PRE, _("Previous"), t_bmp, style=eclib.PB_STYLE_NOBG) self.AddControl(pre_btn, wx.ALIGN_LEFT) match_case = wx.CheckBox(self, ID_MATCH_CASE, _("Match Case")) match_case.SetValue(self.ctrl.IsMatchCase()) self.AddControl(match_case, wx.ALIGN_LEFT) regex_cb = wx.CheckBox(self, ID_REGEX, _("Regular Expression")) regex_cb.SetValue(self.ctrl.IsRegEx()) self.AddControl(regex_cb, wx.ALIGN_LEFT) # HACK: workaround bug in mac control that resets size to # that of the default variant after any text has been # typed in it. Note it reports the best size as the default # variant and causes layout issues. wxBUG if wx.Platform == '__WXMAC__': self.ctrl.SetSizeHints(180, 16, 180, 16) # Event Handlers self.Bind(wx.EVT_BUTTON, self.OnButton) self.Bind(wx.EVT_CHECKBOX, self.OnCheck) ed_msg.Subscribe(self.OnThemeChange, ed_msg.EDMSG_THEME_CHANGED) self._sctrl.RegisterClient(self)
def __init__(self, parent, id=wx.ID_ANY, title=u'', size=wx.DefaultSize): super(PluginDialog, self).__init__(parent, title=title, size=size, style=wx.DEFAULT_FRAME_STYLE) util.SetWindowIcon(self) # Attributes bstyle = eclib.SEGBOOK_STYLE_NO_DIVIDERS | eclib.SEGBOOK_STYLE_LABELS self._nb = eclib.SegmentBook(self, style=bstyle) self._cfg_pg = ConfigPanel(self._nb, style=wx.BORDER_SUNKEN) self._dl_pg = DownloadPanel(self._nb) self._inst_pg = InstallPanel(self._nb) self._imglst = list() # Setup self.__InitImageList() self._nb.AddPage(self._cfg_pg, _("Configure"), img_id=IMG_CONFIG) self._nb.AddPage(self._dl_pg, _("Download"), img_id=IMG_DOWNLOAD) self._nb.AddPage(self._inst_pg, _("Install"), img_id=IMG_INSTALL) # Check for plugins with error conditions and if any are found # Add the error page. pmgr = wx.GetApp().GetPluginManager() if len(pmgr.GetIncompatible()): self._nb.AddPage(ConfigPanel(self._nb, style=wx.NO_BORDER, mode=MODE_ERROR), _("Errors"), img_id=IMG_ERROR) # Layout sizer = wx.BoxSizer(wx.VERTICAL) sizer.Add(self._nb, 1, wx.EXPAND) self.SetSizer(sizer) self.SetStatusBar(eclib.ProgressStatusBar(self, style=wx.SB_FLAT)) self.SetInitialSize(size) # Event Handlers self.Bind(eclib.EVT_SB_PAGE_CHANGING, self.OnPageChanging) self.Bind(wx.EVT_CLOSE, self.OnClose) self.Bind(wx.EVT_WINDOW_DESTROY, self.OnDestroy, self) # Message Handlers ed_msg.Subscribe(self.OnThemeChange, ed_msg.EDMSG_THEME_CHANGED)
def __init__(self, parent): ctrlbox.ControlBox.__init__(self, parent) # Attributes self._buffer = LogBuffer(self) self.SetWindow(self._buffer) self._srcfilter = None # Layout self.__DoLayout() # Event Handlers self.Bind(wx.EVT_BUTTON, lambda evt: self._buffer.Clear(), id=wx.ID_CLEAR) self.Bind(wx.EVT_CHOICE, self.OnChoice, self._srcfilter) ed_msg.Subscribe(self.OnThemeChange, ed_msg.EDMSG_THEME_CHANGED)
def __init__(self, parent): ctrlbox.ControlBar.__init__(self, parent, style=ctrlbox.CTRLBAR_STYLE_GRADIENT) if wx.Platform == '__WXGTK__': self.SetWindowStyle(ctrlbox.CTRLBAR_STYLE_DEFAULT) # Attributes self._saved = ed_menu.EdMenu() self._rmpath = ed_menu.EdMenu() self._ids = list() # List of ids of menu items self._rids = list() # List of remove menu item ids key = u'Ctrl' if wx.Platform == '__WXMAC__': key = u'Cmd' tt = wx.ToolTip( _("To open multiple files at once %s+Click to select " "the desired files/folders then hit Enter to open " "them all at once") % key) self.SetToolTip(tt) # Build Menus menu = ed_menu.EdMenu() menu.Append(ID_MARK_PATH, _("Save Selected Paths")) menu.AppendMenu(ID_OPEN_MARK, _("Jump to Saved Path"), self._saved) menu.AppendSeparator() menu.AppendMenu(ID_REMOVE_MARK, _("Remove Saved Path"), self._rmpath) # Button bmp = wx.ArtProvider.GetBitmap(str(ed_glob.ID_ADD_BM), wx.ART_MENU) self.menub = platebtn.PlateButton(self, bmp=bmp, style=platebtn.PB_STYLE_NOBG) self.menub.SetToolTipString(_("Pathmarks")) self.menub.SetMenu(menu) # Layout bar self.AddControl(self.menub, wx.ALIGN_LEFT) # Event Handlers ed_msg.Subscribe(self.OnThemeChanged, ed_msg.EDMSG_THEME_CHANGED) self.Bind(wx.EVT_BUTTON, lambda evt: self.menub.ShowMenu(), self.menub)