Added the ActiveGrid IDE as a sample application
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@33440 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
143
wxPython/samples/ide/activegrid/tool/MessageService.py
Normal file
143
wxPython/samples/ide/activegrid/tool/MessageService.py
Normal file
@@ -0,0 +1,143 @@
|
||||
#----------------------------------------------------------------------------
|
||||
# Name: MessageService.py
|
||||
# Purpose: Message View Service for pydocview
|
||||
#
|
||||
# Author: Morgan Hua
|
||||
#
|
||||
# Created: 9/2/04
|
||||
# CVS-ID: $Id$
|
||||
# Copyright: (c) 2004-2005 ActiveGrid, Inc.
|
||||
# License: wxWindows License
|
||||
#----------------------------------------------------------------------------
|
||||
|
||||
import wx
|
||||
import Service
|
||||
import STCTextEditor
|
||||
|
||||
class MessageView(Service.ServiceView):
|
||||
""" Reusable Message View for any document.
|
||||
When an item is selected, the document view is called back (with DoSelectCallback) to highlight and display the corresponding item in the document view.
|
||||
"""
|
||||
|
||||
#----------------------------------------------------------------------------
|
||||
# Overridden methods
|
||||
#----------------------------------------------------------------------------
|
||||
|
||||
def _CreateControl(self, parent, id):
|
||||
txtCtrl = STCTextEditor.TextCtrl(parent, id)
|
||||
txtCtrl.SetMarginWidth(1, 0) # hide line numbers
|
||||
txtCtrl.SetReadOnly(True)
|
||||
|
||||
if wx.Platform == '__WXMSW__':
|
||||
font = "Courier New"
|
||||
else:
|
||||
font = "Courier"
|
||||
txtCtrl.SetFont(wx.Font(10, wx.DEFAULT, wx.NORMAL, wx.NORMAL, faceName = font))
|
||||
txtCtrl.SetFontColor(wx.BLACK)
|
||||
txtCtrl.StyleClearAll()
|
||||
txtCtrl.UpdateStyles()
|
||||
|
||||
return txtCtrl
|
||||
|
||||
|
||||
## def ProcessEvent(self, event):
|
||||
## stcControl = self.GetControl()
|
||||
## if not isinstance(stcControl, wx.stc.StyledTextCtrl):
|
||||
## return wx.lib.docview.View.ProcessUpdateUIEvent(self, event)
|
||||
## id = event.GetId()
|
||||
## if id == wx.ID_CUT:
|
||||
## stcControl.Cut()
|
||||
## return True
|
||||
## elif id == wx.ID_COPY:
|
||||
## stcControl.Copy()
|
||||
## return True
|
||||
## elif id == wx.ID_PASTE:
|
||||
## stcControl.Paste()
|
||||
## return True
|
||||
## elif id == wx.ID_CLEAR:
|
||||
## stcControl.Clear()
|
||||
## return True
|
||||
## elif id == wx.ID_SELECTALL:
|
||||
## stcControl.SetSelection(0, -1)
|
||||
## return True
|
||||
##
|
||||
##
|
||||
## def ProcessUpdateUIEvent(self, event):
|
||||
## stcControl = self.GetControl()
|
||||
## if not isinstance(stcControl, wx.stc.StyledTextCtrl):
|
||||
## return wx.lib.docview.View.ProcessUpdateUIEvent(self, event)
|
||||
## id = event.GetId()
|
||||
## if id == wx.ID_CUT:
|
||||
## event.Enable(stcControl.CanCut())
|
||||
## return True
|
||||
## elif id == wx.ID_COPY:
|
||||
## event.Enable(stcControl.CanCopy())
|
||||
## return True
|
||||
## elif id == wx.ID_PASTE:
|
||||
## event.Enable(stcControl.CanPaste())
|
||||
## return True
|
||||
## elif id == wx.ID_CLEAR:
|
||||
## event.Enable(True) # wxBug: should be stcControl.CanCut()) but disabling clear item means del key doesn't work in control as expected
|
||||
## return True
|
||||
## elif id == wx.ID_SELECTALL:
|
||||
## event.Enable(stcControl.GetTextLength() > 0)
|
||||
## return True
|
||||
|
||||
|
||||
#----------------------------------------------------------------------------
|
||||
# Service specific methods
|
||||
#----------------------------------------------------------------------------
|
||||
|
||||
def ClearLines(self):
|
||||
self.GetControl().SetReadOnly(False)
|
||||
self.GetControl().ClearAll()
|
||||
self.GetControl().SetReadOnly(True)
|
||||
|
||||
|
||||
def AddLines(self, text):
|
||||
self.GetControl().SetReadOnly(False)
|
||||
self.GetControl().AddText(text)
|
||||
self.GetControl().SetReadOnly(True)
|
||||
|
||||
|
||||
def GetText(self):
|
||||
return self.GetControl().GetText()
|
||||
|
||||
|
||||
def GetCurrentPos(self):
|
||||
return self.GetControl().GetCurrentPos()
|
||||
|
||||
|
||||
def GetCurrLine(self):
|
||||
return self.GetControl().GetCurLine()
|
||||
|
||||
|
||||
#----------------------------------------------------------------------------
|
||||
# Callback Methods
|
||||
#----------------------------------------------------------------------------
|
||||
|
||||
def SetCallback(self, callback):
|
||||
""" Sets in the event table for a doubleclick to invoke the given callback.
|
||||
Additional calls to this method overwrites the previous entry and only the last set callback will be invoked.
|
||||
"""
|
||||
wx.stc.EVT_STC_DOUBLECLICK(self.GetControl(), self.GetControl().GetId(), callback)
|
||||
|
||||
|
||||
|
||||
class MessageService(Service.Service):
|
||||
|
||||
|
||||
#----------------------------------------------------------------------------
|
||||
# Constants
|
||||
#----------------------------------------------------------------------------
|
||||
SHOW_WINDOW = wx.NewId() # keep this line for each subclass, need unique ID for each Service
|
||||
|
||||
|
||||
#----------------------------------------------------------------------------
|
||||
# Overridden methods
|
||||
#----------------------------------------------------------------------------
|
||||
|
||||
def _CreateView(self):
|
||||
return MessageView(self)
|
||||
|
||||
|
Reference in New Issue
Block a user