]>
git.saurik.com Git - wxWidgets.git/blob - wxPython/samples/ide/activegrid/tool/MessageService.py 
   1  #----------------------------------------------------------------------------    2  # Name:         MessageService.py    3  # Purpose:      Message View Service for pydocview    9  # Copyright:    (c) 2004-2005 ActiveGrid, Inc.   10  # License:      wxWindows License   11  #----------------------------------------------------------------------------   17  #----------------------------------------------------------------------------   19  #----------------------------------------------------------------------------   22      messageService 
=  wx
. GetApp (). GetService ( MessageService
)   23      view 
=  messageService
. GetView ()   28  def  ShowMessages ( messages
,  clear
= False ):   29      if  (( messages 
!=  None )  and  ( len ( messages
) >  0 )):   30          messageService 
=  wx
. GetApp (). GetService ( MessageService
)   31          messageService
. ShowWindow ( True )   32          view 
=  messageService
. GetView ()   36              for  message 
in  messages
:   37                  view
. AddLines ( message
)   41  #----------------------------------------------------------------------------   43  #----------------------------------------------------------------------------   46  class  MessageView ( Service
. ServiceView
):   47      """ Reusable Message View for any document.   48          When an item is selected, the document view is called back (with DoSelectCallback) to highlight and display the corresponding item in the document view.   51      #----------------------------------------------------------------------------   53      #----------------------------------------------------------------------------   55      def  _CreateControl ( self
,  parent
,  id ):   56          txtCtrl 
=  STCTextEditor
. TextCtrl ( parent
,  id )   57          txtCtrl
. SetMarginWidth ( 1 ,  0 )   # hide line numbers   58          txtCtrl
. SetReadOnly ( True )   60          if  wx
. Platform 
==  '__WXMSW__' :   64          txtCtrl
. SetFont ( wx
. Font ( 10 ,  wx
. DEFAULT
,  wx
. NORMAL
,  wx
. NORMAL
,  faceName 
=  font
))   65          txtCtrl
. SetFontColor ( wx
. BLACK
)   66          txtCtrl
. StyleClearAll ()   67          txtCtrl
. UpdateStyles ()   68          wx
. EVT_SET_FOCUS ( txtCtrl
,  self
. OnFocus
)   72      def  GetDocument ( self
):   75      def  OnFocus ( self
,  event
):   76          wx
. GetApp (). GetDocumentManager (). ActivateView ( self
)   79      def  ProcessEvent ( self
,  event
):   80          stcControl 
=  self
. GetControl ()   81          if not  isinstance ( stcControl
,  wx
. stc
. StyledTextCtrl
):   82              return  wx
. lib
. docview
. View
. ProcessEvent ( self
,  event
)   87          elif  id  ==  wx
. ID_CLEAR
:   90          elif  id  ==  wx
. ID_SELECTALL
:   91              stcControl
. SetSelection ( 0 , - 1 )   95      def  ProcessUpdateUIEvent ( self
,  event
):   96          stcControl 
=  self
. GetControl ()   97          if not  isinstance ( stcControl
,  wx
. stc
. StyledTextCtrl
):   98              return  wx
. lib
. docview
. View
. ProcessUpdateUIEvent ( self
,  event
)  100          if  id  ==  wx
. ID_CUT 
or  id  ==  wx
. ID_PASTE
:  101              # I don't think cut or paste makes sense from a message/log window.  104          elif  id  ==  wx
. ID_COPY
:  105              hasSelection 
= ( stcControl
. GetSelectionStart () !=  stcControl
. GetSelectionEnd ())   106              event
. Enable ( hasSelection
)  108          elif  id  ==  wx
. ID_CLEAR
:  109              event
. Enable ( True )   # wxBug: should be stcControl.CanCut()) but disabling clear item means del key doesn't work in control as expected  111          elif  id  ==  wx
. ID_SELECTALL
:  112              event
. Enable ( stcControl
. GetTextLength () >  0 )  116      #----------------------------------------------------------------------------  117      # Service specific methods  118      #----------------------------------------------------------------------------  120      def  ClearLines ( self
):  121          self
. GetControl (). SetReadOnly ( False )  122          self
. GetControl (). ClearAll ()  123          self
. GetControl (). SetReadOnly ( True )  126      def  AddLines ( self
,  text
):  127          self
. GetControl (). SetCurrentPos ( self
. GetControl (). GetTextLength ())  128          self
. GetControl (). SetReadOnly ( False )  129          self
. GetControl (). AddText ( text
)  130          self
. GetControl (). SetReadOnly ( True )  134          return  self
. GetControl (). GetText ()  137      def  GetCurrentPos ( self
):  138          return  self
. GetControl (). GetCurrentPos ()  141      def  GetCurrLine ( self
):  142          return  self
. GetControl (). GetCurLine ()  145      #----------------------------------------------------------------------------  147      #----------------------------------------------------------------------------  149      def  SetCallback ( self
,  callback
):  150          """ Sets in the event table for a doubleclick to invoke the given callback.  151              Additional calls to this method overwrites the previous entry and only the last set callback will be invoked.  153          wx
. stc
. EVT_STC_DOUBLECLICK ( self
. GetControl (),  self
. GetControl (). GetId (),  callback
)  157  class  MessageService ( Service
. Service
):  160      #----------------------------------------------------------------------------  162      #----------------------------------------------------------------------------  163      SHOW_WINDOW 
=  wx
. NewId ()   # keep this line for each subclass, need unique ID for each Service  166      #----------------------------------------------------------------------------  168      #----------------------------------------------------------------------------  170      def  _CreateView ( self
):  171          return  MessageView ( self
)