コード例 #1
0
ファイル: log_view.py プロジェクト: kbrafford/cuttlebug
    def __init__(self, parent, logger, format=None, on_input=None):
        super(LogPane, self).__init__(parent, -1, style=wx.BORDER_NONE, size=(800,150))
        self.txt = wx.TextCtrl(self, -1, style=wx.TE_MULTILINE|wx.TE_READONLY|wx.TE_RICH2)
        self.create_popup_menu()
        self.__input_handler = None
        font = self.txt.GetFont()
        font.SetFaceName("Courier New")
        self.txt.SetFont(font)
        self.find_bar = QuickFindBar(self, self.txt)
        self.find_bar.hide()

        sizer = wx.BoxSizer(wx.VERTICAL)
        sizer.Add(self.txt, 1, wx.EXPAND)
        sizer.Add(self.find_bar, 0)
    
        if on_input:
            self.input_txt = wx.TextCtrl(self, style=wx.TE_PROCESS_ENTER)
            font = self.input_txt.GetFont()
            font.SetFaceName("Courier New")
            self.input_txt.SetFont(font)
            sizer.Add(self.input_txt, 0, wx.EXPAND)
            self.__input_handler = on_input
            self.input_txt.Bind(wx.EVT_TEXT_ENTER, self.input_handler)
            
        self.SetSizer(sizer)
        self.logger = logger
        self.handler = log.LogHandler(format=format)
        self.logger.addHandler(self.handler)
        self.handler.register(self.listener)
        self.txt.Bind(wx.EVT_RIGHT_DOWN, self.on_context_menu)
コード例 #2
0
    def __init__(self, parent, logger, format=None, on_input=None):
        super(LogPane, self).__init__(parent,
                                      -1,
                                      style=wx.BORDER_NONE,
                                      size=(800, 150))
        self.txt = wx.TextCtrl(self,
                               -1,
                               style=wx.TE_MULTILINE | wx.TE_READONLY
                               | wx.TE_RICH2)
        self.create_popup_menu()
        self.__input_handler = None
        font = self.txt.GetFont()
        font.SetFaceName("Courier New")
        self.txt.SetFont(font)
        self.find_bar = QuickFindBar(self, self.txt)
        self.find_bar.hide()

        sizer = wx.BoxSizer(wx.VERTICAL)
        sizer.Add(self.txt, 1, wx.EXPAND)
        sizer.Add(self.find_bar, 0)

        if on_input:
            self.input_txt = wx.TextCtrl(self, style=wx.TE_PROCESS_ENTER)
            font = self.input_txt.GetFont()
            font.SetFaceName("Courier New")
            self.input_txt.SetFont(font)
            sizer.Add(self.input_txt, 0, wx.EXPAND)
            self.__input_handler = on_input
            self.input_txt.Bind(wx.EVT_TEXT_ENTER, self.input_handler)

        self.SetSizer(sizer)
        self.logger = logger
        self.handler = log.LogHandler(format=format)
        self.logger.addHandler(self.handler)
        self.handler.register(self.listener)
        self.txt.Bind(wx.EVT_RIGHT_DOWN, self.on_context_menu)
コード例 #3
0
ファイル: log_view.py プロジェクト: kbrafford/cuttlebug
class LogPane(wx.Panel):

    def __init__(self, parent, logger, format=None, on_input=None):
        super(LogPane, self).__init__(parent, -1, style=wx.BORDER_NONE, size=(800,150))
        self.txt = wx.TextCtrl(self, -1, style=wx.TE_MULTILINE|wx.TE_READONLY|wx.TE_RICH2)
        self.create_popup_menu()
        self.__input_handler = None
        font = self.txt.GetFont()
        font.SetFaceName("Courier New")
        self.txt.SetFont(font)
        self.find_bar = QuickFindBar(self, self.txt)
        self.find_bar.hide()

        sizer = wx.BoxSizer(wx.VERTICAL)
        sizer.Add(self.txt, 1, wx.EXPAND)
        sizer.Add(self.find_bar, 0)
    
        if on_input:
            self.input_txt = wx.TextCtrl(self, style=wx.TE_PROCESS_ENTER)
            font = self.input_txt.GetFont()
            font.SetFaceName("Courier New")
            self.input_txt.SetFont(font)
            sizer.Add(self.input_txt, 0, wx.EXPAND)
            self.__input_handler = on_input
            self.input_txt.Bind(wx.EVT_TEXT_ENTER, self.input_handler)
            
        self.SetSizer(sizer)
        self.logger = logger
        self.handler = log.LogHandler(format=format)
        self.logger.addHandler(self.handler)
        self.handler.register(self.listener)
        self.txt.Bind(wx.EVT_RIGHT_DOWN, self.on_context_menu)

    def on_context_menu(self, evt):
        '''
        self.click_pos = evt.GetPosition()
        start, end = self.GetSelection()
        line = self.line_from_point(self.click_pos)
        if start == end:
            self.mnu_cut.hide()
            self.mnu_copy.hide()
            self.mnu_add_watch.hide()
        else:
            self.mnu_cut.show()
            self.mnu_copy.show()
            
        if self.controller.state == app.ATTACHED:
            if self.breakpoint_on_line(line):
                self.mnu_clear_bp.show()
                self.mnu_set_bp.hide()
                self.mnu_disable_bp.show()
                self.mnu_enable_bp.hide()
            else:
                self.mnu_clear_bp.hide()
                self.mnu_set_bp.show()
                self.mnu_disable_bp.hide()
                self.mnu_enable_bp.hide()

        else:
            self.mnu_clear_bp.hide()
            self.mnu_set_bp.hide()
        '''
        self.PopupMenu(self.popup_menu.build(self)) 
        #evt.Skip()


    def on_clear(self, evt):
        self.txt.Clear()
        self.Refresh()
        
    def input_handler(self, evt):
        if self.__input_handler:
            txt = self.input_txt.GetValue()
            try:
                self.__input_handler(txt)
            finally:
                self.input_txt.ChangeValue('')
                
    def listener(self, handler, message):
        #if not message.endswith("\n"): message += "\n"        
        line = handler.format(message)
        wx.CallAfter(self.txt.AppendText, "%s" % line)
        wx.CallAfter(self.txt.Refresh)

    # TODO hook these up
    def on_hide(self, evt):
        self.handler.unregister(self.listener)
        evt.Skip()

    def on_show(self, evt):
        self.handler.register(self.listener)
        evt.Skip()

    def create_popup_menu(self):
        m = menu.manager.menu()
        '''
        self.mnu_undo = m.item("Undo\tCtrl+Z", func=self.on_undo, icon="edit-undo.png")
        self.mnu_redo = m.item("Redo\tCtrl+Y", func=self.on_undo, icon="edit-redo.png")
        m.separator()
        self.mnu_cut = m.item("Cut\tCtrl+X", func=self.on_cut, icon='cut.png')
        self.mnu_copy = m.item("Copy\tCtrl+C", func=self.on_copy, icon='page_copy.png')
        self.mnu_paste = m.item("Paste\tCtrl+V", func=self.on_paste, icon='paste_plain.png')
        m.separator()
        self.mnu_runtohere = m.item("Run to Here...", func=self.on_run_to_here, icon="breakpoint.png", hide=[menu.TARGET_RUNNING, menu.TARGET_DETACHED], 
                                                                                  show=[menu.TARGET_HALTED,menu.TARGET_ATTACHED])
        self.mnu_runtohere.hide()
        
        self.mnu_jumptopc = m.item("Show Exec Location", func=self.on_go_to_pc, icon="pc_marker.png", hide=[menu.TARGET_RUNNING, menu.TARGET_DETACHED], 
                                                                                  show=[menu.TARGET_HALTED,menu.TARGET_ATTACHED])
        self.mnu_jumptopc.hide()
        
        self.mnu_set_bp = m.item("Set Breakpoint", func=self.on_breakpoint_here, icon="stop.png", hide=[menu.TARGET_RUNNING, menu.TARGET_DETACHED], 
                                                                                show=[menu.TARGET_HALTED, menu.TARGET_ATTACHED])

        self.mnu_enable_bp = m.item("Enable Breakpoint", func=self.on_enable_breakpoint, icon="stop.png", hide=[menu.TARGET_RUNNING, menu.TARGET_DETACHED], 
                                                                                show=[menu.TARGET_HALTED, menu.TARGET_ATTACHED])

        self.mnu_disable_bp = m.item("Disable Breakpoint", func=self.on_disable_breakpoint, icon="stop_disabled.png", hide=[menu.TARGET_RUNNING, menu.TARGET_DETACHED], 
                                                                                show=[menu.TARGET_HALTED, menu.TARGET_ATTACHED])

        self.mnu_clear_bp = m.item("Clear Breakpoint", func=self.on_clear_breakpoint, icon="ex.png", hide=[menu.TARGET_RUNNING, menu.TARGET_DETACHED], 
                                                                                show=[menu.TARGET_HALTED, menu.TARGET_ATTACHED])
        self.mnu_enable_bp.hide()
        self.mnu_disable_bp.hide()
        self.mnu_clear_bp.hide()
        
        self.mnu_add_watch = m.item("Add Watch", func=self.on_add_watch, icon="magnifier_zoom_in.png", hide=[menu.TARGET_RUNNING, menu.TARGET_DETACHED], show=[menu.TARGET_HALTED, menu.TARGET_ATTACHED])
        self.mnu_add_watch.hide()
        '''
        self.mnu_clear = m.item('Clear', func=self.on_clear, icon='ex.png');
        self.popup_menu = m
        
    @property
    def name(self):
        return self.logger.name
コード例 #4
0
class LogPane(wx.Panel):
    def __init__(self, parent, logger, format=None, on_input=None):
        super(LogPane, self).__init__(parent,
                                      -1,
                                      style=wx.BORDER_NONE,
                                      size=(800, 150))
        self.txt = wx.TextCtrl(self,
                               -1,
                               style=wx.TE_MULTILINE | wx.TE_READONLY
                               | wx.TE_RICH2)
        self.create_popup_menu()
        self.__input_handler = None
        font = self.txt.GetFont()
        font.SetFaceName("Courier New")
        self.txt.SetFont(font)
        self.find_bar = QuickFindBar(self, self.txt)
        self.find_bar.hide()

        sizer = wx.BoxSizer(wx.VERTICAL)
        sizer.Add(self.txt, 1, wx.EXPAND)
        sizer.Add(self.find_bar, 0)

        if on_input:
            self.input_txt = wx.TextCtrl(self, style=wx.TE_PROCESS_ENTER)
            font = self.input_txt.GetFont()
            font.SetFaceName("Courier New")
            self.input_txt.SetFont(font)
            sizer.Add(self.input_txt, 0, wx.EXPAND)
            self.__input_handler = on_input
            self.input_txt.Bind(wx.EVT_TEXT_ENTER, self.input_handler)

        self.SetSizer(sizer)
        self.logger = logger
        self.handler = log.LogHandler(format=format)
        self.logger.addHandler(self.handler)
        self.handler.register(self.listener)
        self.txt.Bind(wx.EVT_RIGHT_DOWN, self.on_context_menu)

    def on_context_menu(self, evt):
        '''
        self.click_pos = evt.GetPosition()
        start, end = self.GetSelection()
        line = self.line_from_point(self.click_pos)
        if start == end:
            self.mnu_cut.hide()
            self.mnu_copy.hide()
            self.mnu_add_watch.hide()
        else:
            self.mnu_cut.show()
            self.mnu_copy.show()
            
        if self.controller.state == app.ATTACHED:
            if self.breakpoint_on_line(line):
                self.mnu_clear_bp.show()
                self.mnu_set_bp.hide()
                self.mnu_disable_bp.show()
                self.mnu_enable_bp.hide()
            else:
                self.mnu_clear_bp.hide()
                self.mnu_set_bp.show()
                self.mnu_disable_bp.hide()
                self.mnu_enable_bp.hide()

        else:
            self.mnu_clear_bp.hide()
            self.mnu_set_bp.hide()
        '''
        self.PopupMenu(self.popup_menu.build(self))
        #evt.Skip()

    def on_clear(self, evt):
        self.txt.Clear()
        self.Refresh()

    def input_handler(self, evt):
        if self.__input_handler:
            txt = self.input_txt.GetValue()
            try:
                self.__input_handler(txt)
            finally:
                self.input_txt.ChangeValue('')

    def listener(self, handler, message):
        #if not message.endswith("\n"): message += "\n"
        line = handler.format(message)
        wx.CallAfter(self.txt.AppendText, "%s" % line)
        wx.CallAfter(self.txt.Refresh)

    # TODO hook these up
    def on_hide(self, evt):
        self.handler.unregister(self.listener)
        evt.Skip()

    def on_show(self, evt):
        self.handler.register(self.listener)
        evt.Skip()

    def create_popup_menu(self):
        m = menu.manager.menu()
        '''
        self.mnu_undo = m.item("Undo\tCtrl+Z", func=self.on_undo, icon="edit-undo.png")
        self.mnu_redo = m.item("Redo\tCtrl+Y", func=self.on_undo, icon="edit-redo.png")
        m.separator()
        self.mnu_cut = m.item("Cut\tCtrl+X", func=self.on_cut, icon='cut.png')
        self.mnu_copy = m.item("Copy\tCtrl+C", func=self.on_copy, icon='page_copy.png')
        self.mnu_paste = m.item("Paste\tCtrl+V", func=self.on_paste, icon='paste_plain.png')
        m.separator()
        self.mnu_runtohere = m.item("Run to Here...", func=self.on_run_to_here, icon="breakpoint.png", hide=[menu.TARGET_RUNNING, menu.TARGET_DETACHED], 
                                                                                  show=[menu.TARGET_HALTED,menu.TARGET_ATTACHED])
        self.mnu_runtohere.hide()
        
        self.mnu_jumptopc = m.item("Show Exec Location", func=self.on_go_to_pc, icon="pc_marker.png", hide=[menu.TARGET_RUNNING, menu.TARGET_DETACHED], 
                                                                                  show=[menu.TARGET_HALTED,menu.TARGET_ATTACHED])
        self.mnu_jumptopc.hide()
        
        self.mnu_set_bp = m.item("Set Breakpoint", func=self.on_breakpoint_here, icon="stop.png", hide=[menu.TARGET_RUNNING, menu.TARGET_DETACHED], 
                                                                                show=[menu.TARGET_HALTED, menu.TARGET_ATTACHED])

        self.mnu_enable_bp = m.item("Enable Breakpoint", func=self.on_enable_breakpoint, icon="stop.png", hide=[menu.TARGET_RUNNING, menu.TARGET_DETACHED], 
                                                                                show=[menu.TARGET_HALTED, menu.TARGET_ATTACHED])

        self.mnu_disable_bp = m.item("Disable Breakpoint", func=self.on_disable_breakpoint, icon="stop_disabled.png", hide=[menu.TARGET_RUNNING, menu.TARGET_DETACHED], 
                                                                                show=[menu.TARGET_HALTED, menu.TARGET_ATTACHED])

        self.mnu_clear_bp = m.item("Clear Breakpoint", func=self.on_clear_breakpoint, icon="ex.png", hide=[menu.TARGET_RUNNING, menu.TARGET_DETACHED], 
                                                                                show=[menu.TARGET_HALTED, menu.TARGET_ATTACHED])
        self.mnu_enable_bp.hide()
        self.mnu_disable_bp.hide()
        self.mnu_clear_bp.hide()
        
        self.mnu_add_watch = m.item("Add Watch", func=self.on_add_watch, icon="magnifier_zoom_in.png", hide=[menu.TARGET_RUNNING, menu.TARGET_DETACHED], show=[menu.TARGET_HALTED, menu.TARGET_ATTACHED])
        self.mnu_add_watch.hide()
        '''
        self.mnu_clear = m.item('Clear', func=self.on_clear, icon='ex.png')
        self.popup_menu = m

    @property
    def name(self):
        return self.logger.name