Ejemplo n.º 1
0
    def __init__(self, parent, collEditView, additAdders = (),
          lvStyle = wx.LC_REPORT):
        self.collEditPos = (-1, -1)
        self.collEditPos = getNextDefaultPos()

        self._init_ctrls(parent)

        self.itemList = wx.ListCtrl(size = wx.DefaultSize,
              id = wxID_COLLECTIONEDITORITEMLIST, parent = self,
              name = 'itemList', style = lvStyle | wx.LC_SINGLE_SEL | wx.SUNKEN_BORDER,
              pos = wx.DefaultPosition)
        self.itemList.Bind(wx.EVT_LIST_ITEM_SELECTED, self.OnObjectSelect, id=wxID_COLLECTIONEDITORITEMLIST)
        self.itemList.Bind(wx.EVT_LIST_ITEM_DESELECTED, self.OnObjectDeselect, id=wxID_COLLECTIONEDITORITEMLIST)
        self.itemList.Bind(wx.EVT_LEFT_DCLICK, self.OnObjectDClick)

        self.SetIcon(IS.load('Images/Icons/Collection.ico'))

        self.collEditView = collEditView
        self.selected = -1

        self.additAdders = additAdders #= 0
        self.additIds = {}

        self.toolLst = []

        acclst = []
        wId = Utils.AddToolButtonBmpIS(self, self.toolBar,
              'Images/Shared/NewItem.png', _('New'), self.OnNewClick)
        self.Bind(wx.EVT_MENU, self.OnNewClick, id=wId)
        acclst.append( (keyDefs['Insert'][0], keyDefs['Insert'][1], wId) )
        self.toolLst.append(wId)
        if additAdders:
            wId = Utils.AddToolButtonBmpIS(self, self.toolBar,
                  'Images/Shared/NewItems.png', _('More new ...'), self.OnMoreNewClick)
            self.Bind(wx.EVT_MENU, self.OnMoreNewClick, id=wId)
            self.toolLst.append(wId)

            self.toolBar.AddSeparator()

        wId = Utils.AddToolButtonBmpIS(self, self.toolBar,
              'Images/Shared/DeleteItem.png', _('Delete'), self.OnDeleteClick)
        self.Bind(wx.EVT_MENU, self.OnDeleteClick, id=wId)
        acclst.append( (keyDefs['Delete'][0], keyDefs['Delete'][1], wId) )
        self.toolLst.append(wId)
        self.toolBar.AddSeparator()
        Utils.AddToolButtonBmpIS(self, self.toolBar, 'Images/Shared/up.png',
          _('Up'), self.OnUpClick)
        Utils.AddToolButtonBmpIS(self, self.toolBar, 'Images/Shared/down.png',
          _('Down'), self.OnDownClick)
        self.toolBar.AddSeparator()
        wId = Utils.AddToolButtonBmpIS(self, self.toolBar,
              'Images/Editor/Refresh.png', _('Refresh'), self.OnRefresh)
        self.Bind(wx.EVT_MENU, self.OnRefresh, id=wId)
        acclst.append( (keyDefs['Refresh'][0], keyDefs['Refresh'][1], wId) )
        self.toolLst.append(wId)

        wId = wx.NewId()
        self.Bind(wx.EVT_MENU, self.OnSwitchToInspector, id=wId)
        acclst.append( (keyDefs['Inspector'][0], keyDefs['Inspector'][1], wId) )

        wId = wx.NewId()
        self.Bind(wx.EVT_MENU, self.OnSwitchToDesigner, id=wId)
        acclst.append( (keyDefs['Designer'][0], keyDefs['Designer'][1], wId) )

        self.SetAcceleratorTable(wx.AcceleratorTable(acclst))

        self.toolBar.Realize()

        if lvStyle == wx.LC_REPORT:
            self.itemList.InsertColumn(0, _('Name'), width=180)

        self.Bind(wx.EVT_CLOSE, self.OnCloseWindow)

        self.winConfOption = 'collectioneditor'
        self.loadDims()

        # Hack to force a refresh, it's not displayed correctly initialy
        self.SetSize((self.GetSize().x +1, self.GetSize().y))
Ejemplo n.º 2
0
    def __init__(self, editor, filename=None, slave_mode=1):
        wx.Frame.__init__(self,
                          editor,
                          -1,
                          _('Debugger'),
                          style=wx.DEFAULT_FRAME_STYLE | wx.CLIP_CHILDREN
                          | Preferences.childFrameStyle)

        self.winConfOption = 'debugger'
        self.loadDims()

        self.editor = editor
        self.running = 0
        self.slave_mode = slave_mode
        if filename:
            self.setDebugFile(filename)
        else:
            self.filename = ''

        self.SetIcon(IS.load('Images/Icons/Debug.ico'))

        self.viewsImgLst = wx.ImageList(16, 16)
        self.viewsImgLst.Add(IS.load('Images/Debug/Stack.png'))
        self.viewsImgLst.Add(IS.load('Images/Debug/Breakpoints.png'))
        self.viewsImgLst.Add(IS.load('Images/Debug/Watches.png'))
        self.viewsImgLst.Add(IS.load('Images/Debug/Locals.png'))
        self.viewsImgLst.Add(IS.load('Images/Debug/Globals.png'))
        self.viewsImgLst.Add(IS.load('Images/Debug/Output.png'))

        self.invalidatePanes()

        self.sb = DebugStatusBar(self)
        self.SetStatusBar(self.sb)

        self.toolbar = wx.ToolBar(self,
                                  -1,
                                  style=wx.TB_HORIZONTAL | wx.NO_BORDER
                                  | flatTools)
        self.SetToolBar(self.toolbar)

        self.runId = Utils.AddToolButtonBmpIS(
            self, self.toolbar, 'Images/Debug/Debug.png',
            _('Debug/Continue - %s') % keyDefs['Debug'][2],
            self.OnDebug)  #, runs in debugger, stops at breaks and exceptions'
        self.runFullSpdId = Utils.AddToolButtonBmpIS(
            self, self.toolbar, 'Images/Debug/DebugFullSpeed.png',
            _('Debug/Continue full speed'), self.OnDebugFullSpeed
        )  #'stops only at hard (code) breaks and exceptions'
        self.stepId = Utils.AddToolButtonBmpIS(
            self, self.toolbar, 'Images/Debug/Step.png',
            _('Step - %s') % keyDefs['DebugStep'][2], self.OnStep)
        self.overId = Utils.AddToolButtonBmpIS(
            self, self.toolbar, 'Images/Debug/Over.png',
            _('Over - %s') % keyDefs['DebugOver'][2], self.OnOver)
        self.outId = Utils.AddToolButtonBmpIS(
            self, self.toolbar, 'Images/Debug/Out.png',
            _('Out - %s') % keyDefs['DebugOut'][2], self.OnOut)
        self.jumpId = -1
        if sys.version_info[:2] >= (2, 3):
            self.jumpId = Utils.AddToolButtonBmpIS(self, self.toolbar,
                                                   'Images/Debug/Jump.png',
                                                   _('Jump to line'),
                                                   self.OnJump)

        self.pauseId = Utils.AddToolButtonBmpIS(self, self.toolbar,
                                                'Images/Debug/Pause.png',
                                                _('Pause'), self.OnPause)
        self.stopId = Utils.AddToolButtonBmpIS(self, self.toolbar,
                                               'Images/Debug/Stop.png',
                                               _('Stop'), self.OnStop)
        self.toolbar.AddSeparator()
        self.sourceTraceId = Utils.AddToolButtonBmpIS(
            self, self.toolbar, 'Images/Debug/SourceTrace-Off.png',
            _('Trace in source'), self.OnSourceTrace, '1')
        self.debugBrowseId = Utils.AddToolButtonBmpIS(
            self, self.toolbar, 'Images/Debug/DebugBrowse.png',
            _('Debug browsing'), self.OnDebugBrowse, '1')
        if Preferences.psPythonShell == 'Shell':
            self.shellNamespaceId = Utils.AddToolButtonBmpIS(
                self, self.toolbar, 'Images/Debug/ShellDebug.png',
                _('Eval in shell'), self.OnDebugNamespace, '1')
        else:
            self.shellNamespaceId = -1
        self.toolbar.AddSeparator()
        self.pathMappingsId = Utils.AddToolButtonBmpIS(
            self, self.toolbar, 'Images/Debug/PathMapping.png',
            _('Edit client/server path mappings...'), self.OnPathMappings)
        self.splitOrientId = Utils.AddToolButtonBmpIS(
            self, self.toolbar, 'Images/Debug/SplitOrient.png',
            _('Toggle split orientation'), self.OnToggleSplitOrient)

        self.SetAcceleratorTable(
            wx.AcceleratorTable([
                (keyDefs['Debug'][0], keyDefs['Debug'][1], self.runId),
                (keyDefs['DebugStep'][0], keyDefs['DebugStep'][1],
                 self.stepId),
                (keyDefs['DebugOver'][0], keyDefs['DebugOver'][1],
                 self.overId),
                (keyDefs['DebugOut'][0], keyDefs['DebugOut'][1], self.outId)
            ]))

        self.toolbar.Realize()

        self.toolbar.ToggleTool(self.sourceTraceId, True)
        self.toolbar.ToggleTool(self.debugBrowseId, False)

        self.splitter = wx.SplitterWindow(self,
                                          -1,
                                          style=wx.SP_NOBORDER
                                          | Preferences.splitterStyle)

        (stackImgIdx, breaksImgIdx, watchesImgIdx, localsImgIdx,
         globalsImgIdx) = range(5)

        # Create a Notebook
        self.nbTop = wx.Notebook(self.splitter, wxID_TOPPAGECHANGED)
        self.nbTop.SetImageList(self.viewsImgLst)

        self.stackView = StackViewCtrl(self.nbTop, None, self)
        self.nbTop.AddPage(self.stackView, _('Stack'), imageId=stackImgIdx)

        self.breakpts = BreakViewCtrl(self.nbTop, self)
        self.nbTop.AddPage(self.breakpts,
                           _('Breakpoints'),
                           imageId=breaksImgIdx)

        # Create a Notebook
        self.nbBottom = wx.Notebook(self.splitter,
                                    wxID_PAGECHANGED,
                                    style=wx.CLIP_CHILDREN)
        self.nbBottom.Bind(wx.EVT_NOTEBOOK_PAGE_CHANGED,
                           self.OnPageChange,
                           id=wxID_PAGECHANGED)
        self.nbBottom.SetImageList(self.viewsImgLst)

        self.watches = WatchViewCtrl(self.nbBottom, self.viewsImgLst, self)
        self.nbBottom.AddPage(self.watches,
                              _('Watches'),
                              imageId=watchesImgIdx)

        self.locs = NamespaceViewCtrl(self.nbBottom, self, 1, 'local')
        self.nbBottom.AddPage(self.locs, _('Locals'), imageId=localsImgIdx)

        self.globs = NamespaceViewCtrl(self.nbBottom, self, 0, 'global')

        self.nbBottom.AddPage(self.globs, _('Globals'), imageId=globalsImgIdx)

        self.splitter.SetMinimumPaneSize(40)

        self.splitter.SplitHorizontally(self.nbTop, self.nbBottom)
        self.splitter.SetSashPosition(175)
        self.splitter.SetSplitMode(wx.SPLIT_HORIZONTAL)

        self.mlc = 0
        self.frame = None

        self.lastStepView = None
        self.lastStepLineno = -1

        self.stepping_enabled = 1

        self.setParams([])

        self.setServerClientPaths([])

        self.Bind(EVT_DEBUGGER_OK, self.OnDebuggerOk, id=self.GetId())
        self.Bind(EVT_DEBUGGER_EXC, self.OnDebuggerException, id=self.GetId())
        self.Bind(EVT_DEBUGGER_STOPPED,
                  self.OnDebuggerStopped,
                  id=self.GetId())

        # used to indicate when the debugger start,
        # would be better if there was a start event in addition to the OK event
        self._pid = None
        self._erroutFrm = self.editor.erroutFrm

        self.stream_timer = wx.PyTimer(self.OnStreamTimer)
        self.stream_timer.Start(100)

        self.Bind(wx.EVT_MENU_HIGHLIGHT_ALL, self.OnToolOver)
        self.Bind(wx.EVT_CLOSE, self.OnCloseWindow)