コード例 #1
0
ファイル: ed_shelf.py プロジェクト: wangdyna/wxPython
    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)
コード例 #2
0
ファイル: browser.py プロジェクト: wangdyna/wxPython
    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, ))
コード例 #3
0
    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)
コード例 #4
0
    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)
コード例 #5
0
    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)
コード例 #6
0
ファイル: cbrowser.py プロジェクト: nklawi/wxPython
    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)
コード例 #7
0
ファイル: ed_pages.py プロジェクト: YautongNg/gengis
    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)
コード例 #8
0
 def setUp(self):
     self.cmgr = ebmlib.ContextMenuManager()