More updates from Morgan Hua
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@33956 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
		@@ -21,6 +21,7 @@ _ = wx.GetTranslation
 | 
			
		||||
SELECT_BRUSH = wx.Brush("BLUE", wx.SOLID)
 | 
			
		||||
SHAPE_BRUSH = wx.Brush("WHEAT", wx.SOLID)
 | 
			
		||||
LINE_BRUSH = wx.BLACK_BRUSH
 | 
			
		||||
INACTIVE_SELECT_BRUSH = wx.Brush("LIGHT BLUE", wx.SOLID)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
def GetRawModel(model):
 | 
			
		||||
@@ -70,6 +71,17 @@ class CanvasView(wx.lib.docview.View):
 | 
			
		||||
                wx.CallAfter(self._canvas.SetFocus)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    def OnFocus(self, event):
 | 
			
		||||
        self._canvas.SetFocus()
 | 
			
		||||
        self.FocusColorPropertyShape(True)
 | 
			
		||||
        event.Skip()
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    def OnKillFocus(self, event):
 | 
			
		||||
        self.FocusColorPropertyShape(False)
 | 
			
		||||
        event.Skip()
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    def OnClose(self, deleteWindow = True):
 | 
			
		||||
        statusC = wx.GetApp().CloseChildDocuments(self.GetDocument())
 | 
			
		||||
        statusP = wx.lib.docview.View.OnClose(self, deleteWindow = deleteWindow)
 | 
			
		||||
@@ -91,6 +103,17 @@ class CanvasView(wx.lib.docview.View):
 | 
			
		||||
        wx.EVT_LEFT_DCLICK(self._canvas, self.OnLeftDoubleClick)
 | 
			
		||||
        wx.EVT_KEY_DOWN(self._canvas, self.OnKeyPressed)
 | 
			
		||||
        
 | 
			
		||||
        # need this otherwise mouse clicks don't set focus to this view
 | 
			
		||||
        wx.EVT_LEFT_DOWN(self._canvas, self.OnFocus)
 | 
			
		||||
        wx.EVT_LEFT_DCLICK(self._canvas, self.OnFocus)
 | 
			
		||||
        wx.EVT_RIGHT_DOWN(self._canvas, self.OnFocus)
 | 
			
		||||
        wx.EVT_RIGHT_DCLICK(self._canvas, self.OnFocus)
 | 
			
		||||
        wx.EVT_MIDDLE_DOWN(self._canvas, self.OnFocus)
 | 
			
		||||
        wx.EVT_MIDDLE_DCLICK(self._canvas, self.OnFocus)
 | 
			
		||||
        
 | 
			
		||||
        wx.EVT_KILL_FOCUS(self._canvas, self.OnKillFocus)
 | 
			
		||||
        wx.EVT_SET_FOCUS(self._canvas, self.OnFocus)
 | 
			
		||||
 | 
			
		||||
        maxWidth = 2000
 | 
			
		||||
        maxHeight = 16000
 | 
			
		||||
        self._canvas.SetScrollbars(20, 20, maxWidth / 20, maxHeight / 20)
 | 
			
		||||
@@ -513,6 +536,32 @@ class CanvasView(wx.lib.docview.View):
 | 
			
		||||
        dc.EndDrawing()
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    def FocusColorPropertyShape(self, gotFocus=False):
 | 
			
		||||
        # no need to change highlight if no PropertyService is running
 | 
			
		||||
        propertyService = wx.GetApp().GetService(PropertyService.PropertyService)
 | 
			
		||||
        if not propertyService:
 | 
			
		||||
            return
 | 
			
		||||
 | 
			
		||||
        if not self._propShape:
 | 
			
		||||
            return
 | 
			
		||||
 | 
			
		||||
        dc = wx.ClientDC(self._canvas)
 | 
			
		||||
        self._canvas.PrepareDC(dc)
 | 
			
		||||
        dc.BeginDrawing()
 | 
			
		||||
 | 
			
		||||
        # draw deactivated selection
 | 
			
		||||
        if self._propShape and self._propShape in self._diagram.GetShapeList():
 | 
			
		||||
            if gotFocus:
 | 
			
		||||
                self._propShape.SetBrush(SELECT_BRUSH)
 | 
			
		||||
            else:
 | 
			
		||||
                self._propShape.SetBrush(INACTIVE_SELECT_BRUSH)
 | 
			
		||||
            if (self._propShape._textColourName in ["BLACK", "WHITE"]):  # Would use GetTextColour() but it is broken
 | 
			
		||||
                self._propShape.SetTextColour("WHITE", 0)
 | 
			
		||||
            self._propShape.Draw(dc)
 | 
			
		||||
 | 
			
		||||
        dc.EndDrawing()
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    #----------------------------------------------------------------------------
 | 
			
		||||
    # Property Service methods
 | 
			
		||||
    #----------------------------------------------------------------------------
 | 
			
		||||
 
 | 
			
		||||
@@ -117,7 +117,6 @@ class CodeView(STCTextEditor.TextView):
 | 
			
		||||
    def ProcessUpdateUIEvent(self, event):
 | 
			
		||||
        if not self.GetCtrl():
 | 
			
		||||
            return False
 | 
			
		||||
        hasText = self.GetCtrl().GetTextLength() > 0
 | 
			
		||||
        id = event.GetId()
 | 
			
		||||
        if id == EXPAND_TEXT_ID:
 | 
			
		||||
            event.Enable(self.GetCtrl().CanLineExpand(self.GetCtrl().GetCurrentLine()))
 | 
			
		||||
@@ -125,49 +124,29 @@ class CodeView(STCTextEditor.TextView):
 | 
			
		||||
        elif id == COLLAPSE_TEXT_ID:
 | 
			
		||||
            event.Enable(self.GetCtrl().CanLineCollapse(self.GetCtrl().GetCurrentLine()))
 | 
			
		||||
            return True
 | 
			
		||||
        elif id == EXPAND_TOP_ID:
 | 
			
		||||
            event.Enable(hasText)
 | 
			
		||||
            return True
 | 
			
		||||
        elif id == COLLAPSE_TOP_ID:
 | 
			
		||||
            event.Enable(hasText)
 | 
			
		||||
            return True
 | 
			
		||||
        elif id == EXPAND_ALL_ID:
 | 
			
		||||
            event.Enable(hasText)
 | 
			
		||||
            return True
 | 
			
		||||
        elif id == COLLAPSE_ALL_ID:
 | 
			
		||||
            event.Enable(hasText)
 | 
			
		||||
        elif (id == EXPAND_TOP_ID
 | 
			
		||||
        or id == COLLAPSE_TOP_ID
 | 
			
		||||
        or id == EXPAND_ALL_ID
 | 
			
		||||
        or id == COLLAPSE_ALL_ID
 | 
			
		||||
        or id == AUTO_COMPLETE_ID
 | 
			
		||||
        or id == CLEAN_WHITESPACE
 | 
			
		||||
        or id == INDENT_LINES_ID
 | 
			
		||||
        or id == DEDENT_LINES_ID
 | 
			
		||||
        or id == COMMENT_LINES_ID
 | 
			
		||||
        or id == UNCOMMENT_LINES_ID):
 | 
			
		||||
            event.Enable(self.GetCtrl().GetTextLength() > 0)
 | 
			
		||||
            return True
 | 
			
		||||
        elif id == CHECK_CODE_ID:
 | 
			
		||||
            event.Enable(False)
 | 
			
		||||
            return True
 | 
			
		||||
        elif id == AUTO_COMPLETE_ID:
 | 
			
		||||
            event.Enable(hasText)
 | 
			
		||||
            return True
 | 
			
		||||
        elif id == CLEAN_WHITESPACE:
 | 
			
		||||
            event.Enable(hasText)
 | 
			
		||||
            return True
 | 
			
		||||
        elif id == SET_INDENT_WIDTH_ID:
 | 
			
		||||
        elif (id == SET_INDENT_WIDTH_ID
 | 
			
		||||
        or id == FOLDING_ID):
 | 
			
		||||
            event.Enable(True)
 | 
			
		||||
            return True
 | 
			
		||||
        elif id == USE_TABS_ID:
 | 
			
		||||
            event.Enable(True)
 | 
			
		||||
            event.Check(self.GetCtrl().GetUseTabs())
 | 
			
		||||
            return True
 | 
			
		||||
        elif id == INDENT_LINES_ID:
 | 
			
		||||
            event.Enable(hasText)
 | 
			
		||||
            return True
 | 
			
		||||
        elif id == DEDENT_LINES_ID:
 | 
			
		||||
            event.Enable(hasText)
 | 
			
		||||
            return True
 | 
			
		||||
        elif id == COMMENT_LINES_ID:
 | 
			
		||||
            event.Enable(hasText)
 | 
			
		||||
            return True
 | 
			
		||||
        elif id == UNCOMMENT_LINES_ID:
 | 
			
		||||
            event.Enable(hasText)
 | 
			
		||||
            return True
 | 
			
		||||
        elif id == FOLDING_ID:
 | 
			
		||||
            event.Enable(True)
 | 
			
		||||
            return True
 | 
			
		||||
        else:
 | 
			
		||||
            return STCTextEditor.TextView.ProcessUpdateUIEvent(self, event)
 | 
			
		||||
 | 
			
		||||
@@ -625,52 +604,22 @@ class CodeService(STCTextEditor.TextService):
 | 
			
		||||
 | 
			
		||||
    def ProcessUpdateUIEvent(self, event):
 | 
			
		||||
        id = event.GetId()
 | 
			
		||||
        if id == EXPAND_TEXT_ID:
 | 
			
		||||
            event.Enable(False)
 | 
			
		||||
            return True
 | 
			
		||||
        elif id == COLLAPSE_TEXT_ID:
 | 
			
		||||
            event.Enable(False)
 | 
			
		||||
            return True
 | 
			
		||||
        elif id == EXPAND_TOP_ID:
 | 
			
		||||
            event.Enable(False)
 | 
			
		||||
            return True
 | 
			
		||||
        elif id == COLLAPSE_TOP_ID:
 | 
			
		||||
            event.Enable(False)
 | 
			
		||||
            return True
 | 
			
		||||
        elif id == EXPAND_ALL_ID:
 | 
			
		||||
            event.Enable(False)
 | 
			
		||||
            return True
 | 
			
		||||
        elif id == COLLAPSE_ALL_ID:
 | 
			
		||||
            event.Enable(False)
 | 
			
		||||
            return True
 | 
			
		||||
        elif id == CHECK_CODE_ID:
 | 
			
		||||
            event.Enable(False)
 | 
			
		||||
            return True
 | 
			
		||||
        elif id == AUTO_COMPLETE_ID:
 | 
			
		||||
            event.Enable(False)
 | 
			
		||||
            return True
 | 
			
		||||
        elif id == CLEAN_WHITESPACE:
 | 
			
		||||
            event.Enable(False)
 | 
			
		||||
            return True
 | 
			
		||||
        elif id == SET_INDENT_WIDTH_ID:
 | 
			
		||||
            event.Enable(False)
 | 
			
		||||
            return True
 | 
			
		||||
        elif id == USE_TABS_ID:
 | 
			
		||||
            event.Enable(False)
 | 
			
		||||
            return True
 | 
			
		||||
        elif id == INDENT_LINES_ID:
 | 
			
		||||
            event.Enable(False)
 | 
			
		||||
            return True
 | 
			
		||||
        elif id == DEDENT_LINES_ID:
 | 
			
		||||
            event.Enable(False)
 | 
			
		||||
            return True
 | 
			
		||||
        elif id == COMMENT_LINES_ID:
 | 
			
		||||
            event.Enable(False)
 | 
			
		||||
            return True
 | 
			
		||||
        elif id == UNCOMMENT_LINES_ID:
 | 
			
		||||
            event.Enable(False)
 | 
			
		||||
            return True
 | 
			
		||||
        elif id == FOLDING_ID:
 | 
			
		||||
        if (id == EXPAND_TEXT_ID
 | 
			
		||||
        or id == COLLAPSE_TEXT_ID
 | 
			
		||||
        or id == EXPAND_TOP_ID
 | 
			
		||||
        or id == COLLAPSE_TOP_ID
 | 
			
		||||
        or id == EXPAND_ALL_ID
 | 
			
		||||
        or id == COLLAPSE_ALL_ID
 | 
			
		||||
        or id == CHECK_CODE_ID
 | 
			
		||||
        or id == AUTO_COMPLETE_ID
 | 
			
		||||
        or id == CLEAN_WHITESPACE
 | 
			
		||||
        or id == SET_INDENT_WIDTH_ID
 | 
			
		||||
        or id == USE_TABS_ID
 | 
			
		||||
        or id == INDENT_LINES_ID
 | 
			
		||||
        or id == DEDENT_LINES_ID
 | 
			
		||||
        or id == COMMENT_LINES_ID
 | 
			
		||||
        or id == UNCOMMENT_LINES_ID
 | 
			
		||||
        or id == FOLDING_ID):
 | 
			
		||||
            event.Enable(False)
 | 
			
		||||
            return True
 | 
			
		||||
        else:
 | 
			
		||||
 
 | 
			
		||||
@@ -31,7 +31,6 @@ import SimpleXMLRPCServer
 | 
			
		||||
import xmlrpclib
 | 
			
		||||
import os
 | 
			
		||||
import threading
 | 
			
		||||
import process
 | 
			
		||||
import Queue
 | 
			
		||||
import SocketServer
 | 
			
		||||
import ProjectEditor
 | 
			
		||||
@@ -43,10 +42,18 @@ import DebuggerHarness
 | 
			
		||||
import traceback
 | 
			
		||||
import StringIO
 | 
			
		||||
if wx.Platform == '__WXMSW__':
 | 
			
		||||
    try:
 | 
			
		||||
        import win32api
 | 
			
		||||
        _PYWIN32_INSTALLED = True
 | 
			
		||||
    except ImportError:
 | 
			
		||||
        _PYWIN32_INSTALLED = False
 | 
			
		||||
    _WINDOWS = True
 | 
			
		||||
else:
 | 
			
		||||
    _WINDOWS = False
 | 
			
		||||
 | 
			
		||||
if not _WINDOWS or _PYWIN32_INSTALLED:
 | 
			
		||||
    import process
 | 
			
		||||
 | 
			
		||||
_ = wx.GetTranslation
 | 
			
		||||
 | 
			
		||||
_VERBOSE = False
 | 
			
		||||
@@ -1560,10 +1567,8 @@ class DebuggerService(Service.Service):
 | 
			
		||||
        elif an_id == DebuggerService.CLEAR_ALL_BREAKPOINTS:
 | 
			
		||||
            event.Enable(self.HasBreakpointsSet())
 | 
			
		||||
            return True
 | 
			
		||||
        elif an_id == DebuggerService.RUN_ID:
 | 
			
		||||
            event.Enable(self.HasAnyFiles())
 | 
			
		||||
            return True
 | 
			
		||||
        elif an_id == DebuggerService.DEBUG_ID:
 | 
			
		||||
        elif (an_id == DebuggerService.RUN_ID
 | 
			
		||||
        or an_id == DebuggerService.DEBUG_ID):
 | 
			
		||||
            event.Enable(self.HasAnyFiles())
 | 
			
		||||
            return True
 | 
			
		||||
        else:
 | 
			
		||||
@@ -1574,6 +1579,9 @@ class DebuggerService(Service.Service):
 | 
			
		||||
    #----------------------------------------------------------------------------                    
 | 
			
		||||
   
 | 
			
		||||
    def OnDebugProject(self, event):
 | 
			
		||||
        if _WINDOWS and not _PYWIN32_INSTALLED:
 | 
			
		||||
            wx.MessageBox(_("Python for Windows extensions (pywin32) is required to debug on Windows machines. Please go to http://sourceforge.net/projects/pywin32/, download and install pywin32."))
 | 
			
		||||
            return
 | 
			
		||||
        if not Executor.GetPythonExecutablePath():
 | 
			
		||||
            return
 | 
			
		||||
        if DebugCommandUI.DebuggerRunning():
 | 
			
		||||
@@ -1636,13 +1644,13 @@ class DebuggerService(Service.Service):
 | 
			
		||||
                yesNoMsg = wx.MessageDialog(frame,
 | 
			
		||||
                          _("Files have been modified.\nWould you like to save all files before running?"),
 | 
			
		||||
                          _("Run"),
 | 
			
		||||
                          wx.YES_NO
 | 
			
		||||
                          wx.YES_NO|wx.ICON_QUESTION
 | 
			
		||||
                          )
 | 
			
		||||
            else:              
 | 
			
		||||
                yesNoMsg = wx.MessageDialog(frame,
 | 
			
		||||
                          _("Files have been modified.\nWould you like to save all files before debugging?"),
 | 
			
		||||
                          _("Debug"),
 | 
			
		||||
                          wx.YES_NO
 | 
			
		||||
                          wx.YES_NO|wx.ICON_QUESTION
 | 
			
		||||
                          )
 | 
			
		||||
            if yesNoMsg.ShowModal() == wx.ID_YES:
 | 
			
		||||
                docs = wx.GetApp().GetDocumentManager().GetDocuments()
 | 
			
		||||
@@ -1653,6 +1661,9 @@ class DebuggerService(Service.Service):
 | 
			
		||||
        DebugCommandUI.ShutdownAllDebuggers()
 | 
			
		||||
        
 | 
			
		||||
    def OnRunProject(self, event):
 | 
			
		||||
        if _WINDOWS and not _PYWIN32_INSTALLED:
 | 
			
		||||
            wx.MessageBox(_("Python for Windows extensions (pywin32) is required to run on Windows machines. Please go to http://sourceforge.net/projects/pywin32/, download and install pywin32."))
 | 
			
		||||
            return
 | 
			
		||||
        if not Executor.GetPythonExecutablePath():
 | 
			
		||||
            return
 | 
			
		||||
        projectService = wx.GetApp().GetService(ProjectEditor.ProjectService)
 | 
			
		||||
@@ -1892,9 +1903,6 @@ class CommandPropertiesDialog(wx.Dialog):
 | 
			
		||||
        self._lastArguments = config.Read("LastRunArguments")
 | 
			
		||||
        self._argsEntry = wx.TextCtrl(self, -1, str(self._lastArguments))
 | 
			
		||||
        self._argsEntry.SetToolTipString(str(self._lastArguments))
 | 
			
		||||
        def TextChanged(event):
 | 
			
		||||
            self._argsEntry.SetToolTipString(event.GetString())
 | 
			
		||||
        self.Bind(wx.EVT_TEXT, TextChanged, self._argsEntry)
 | 
			
		||||
 | 
			
		||||
        flexGridSizer.Add(argsStaticText, 0, flag=wx.ALIGN_CENTER_VERTICAL|wx.ALIGN_LEFT)
 | 
			
		||||
        flexGridSizer.Add(self._argsEntry, 1, flag=wx.EXPAND)
 | 
			
		||||
@@ -1911,7 +1919,7 @@ class CommandPropertiesDialog(wx.Dialog):
 | 
			
		||||
        self.Bind(wx.EVT_TEXT, TextChanged2, self._startEntry)
 | 
			
		||||
 | 
			
		||||
        flexGridSizer.Add(self._startEntry, 1, wx.EXPAND)
 | 
			
		||||
        self._findDir = wx.Button(self, -1, _("Browse..."), size=(60,-1))
 | 
			
		||||
        self._findDir = wx.Button(self, -1, _("Browse..."))
 | 
			
		||||
        self.Bind(wx.EVT_BUTTON, self.OnFindDirClick, self._findDir)
 | 
			
		||||
        flexGridSizer.Add(self._findDir, 0, wx.RIGHT, 10)
 | 
			
		||||
        
 | 
			
		||||
@@ -1935,12 +1943,12 @@ class CommandPropertiesDialog(wx.Dialog):
 | 
			
		||||
        cpPanelBorderSizer.Add(flexGridSizer, 0, wx.ALL, 10)
 | 
			
		||||
        
 | 
			
		||||
        box = wx.BoxSizer(wx.HORIZONTAL)
 | 
			
		||||
        self._okButton = wx.Button(self, wx.ID_OK, okButtonName, size=(75,-1))
 | 
			
		||||
        self._okButton = wx.Button(self, wx.ID_OK, okButtonName)
 | 
			
		||||
        self._okButton.SetDefault()
 | 
			
		||||
        self._okButton.SetHelpText(_("The ") + okButtonName + _(" button completes the dialog"))
 | 
			
		||||
        box.Add(self._okButton, 0, wx.ALIGN_RIGHT|wx.ALL, 5)
 | 
			
		||||
        self.Bind(wx.EVT_BUTTON, self.OnOKClick, self._okButton)
 | 
			
		||||
        btn = wx.Button(self, wx.ID_CANCEL, _("Cancel"), size=(75,-1))
 | 
			
		||||
        btn = wx.Button(self, wx.ID_CANCEL, _("Cancel"))
 | 
			
		||||
        btn.SetHelpText(_("The Cancel button cancels the dialog."))
 | 
			
		||||
        box.Add(btn, 0, wx.ALIGN_RIGHT|wx.ALL, 5)
 | 
			
		||||
        cpPanelBorderSizer.Add(box, 0, wx.ALIGN_RIGHT|wx.BOTTOM, 5)
 | 
			
		||||
@@ -2115,15 +2123,15 @@ import cStringIO
 | 
			
		||||
#----------------------------------------------------------------------
 | 
			
		||||
def getBreakData():
 | 
			
		||||
    return \
 | 
			
		||||
'\x89PNG\r\n\x1a\n\x00\x00\x00\rIHDR\x00\x00\x00\x10\x00\x00\x00\x11\x08\x06\
 | 
			
		||||
\x00\x00\x00\xd4\xaf,\xc4\x00\x00\x00\x04sBIT\x08\x08\x08\x08|\x08d\x88\x00\
 | 
			
		||||
\x00\x00\x97IDAT8\x8d\xbdSA\x0e\xc3 \x0c\x8b\x13\xfe=\x1e^\xe2\x1dF\xbb\x8c\
 | 
			
		||||
\xd2\x0c\xa9\xda,q\x88\x05\x8e\x1d\x00P\x93;\xd0[\xa7W\x04\xe8\x8d\x0f\xdfxU\
 | 
			
		||||
c%\x02\xbd\xbd\x05HQ+Xv\xb0\xa3VN\xf9\xd4\x01\xbd\x11j\x18\x1d\x00\x10\xa8AD\
 | 
			
		||||
\xa4\xa4\xd6_\x9b\x19\xbb\x03\xd8c|\x8f\x00\xe0\x93\xa8g>\x15 C\xee:\xe7\x8f\
 | 
			
		||||
\x08\xdesj\xcf\xe6\xde(\xddn\xec\x18f0w\xe0m;\x8d\x9b\xe4\xb1\xd4\n\xa6\x0e2\
 | 
			
		||||
\xc4{\x1f\xeb\xdf?\xe5\xff\t\xa8\x1a$\x0cg\xac\xaf\xb0\xf4\x992<\x01\xec\xa0\
 | 
			
		||||
U9V\xf9\x18\xc8\x00\x00\x00\x00IEND\xaeB`\x82' 
 | 
			
		||||
'\x89PNG\r\n\x1a\n\x00\x00\x00\rIHDR\x00\x00\x00\x10\x00\x00\x00\x10\x08\x02\
 | 
			
		||||
\x00\x00\x00\x90\x91h6\x00\x00\x00\x03sBIT\x08\x08\x08\xdb\xe1O\xe0\x00\x00\
 | 
			
		||||
\x00\x85IDAT(\x91\xbd\x92A\x16\x03!\x08CI\xdf\xdc\x0b\x8e\xe6\xd1\xe0d\xe9\
 | 
			
		||||
\x82\xd6\xc7(\x9di7\xfd\xab<\x14\x13Q\xb8\xbb\xfc\xc2\xe3\xd3\x82\x99\xb9\
 | 
			
		||||
\xe9\xaeq\xe1`f)HF\xc4\x8dC2\x06\xbf\x8a4\xcf\x1e\x03K\xe5h\x1bH\x02\x98\xc7\
 | 
			
		||||
\x03\x98\xa9z\x07\x00%\xd6\xa9\xd27\x90\xac\xbbk\xe5\x15I\xcdD$\xdc\xa7\xceT\
 | 
			
		||||
5a\xce\xf3\xe4\xa0\xaa\x8bO\x12\x11\xabC\xcb\x9c}\xd57\xef\xb0\xf3\xb7\x86p\
 | 
			
		||||
\x97\xf7\xb5\xaa\xde\xb9\xfa|-O\xbdjN\x9b\xf8\x06A\xcb\x00\x00\x00\x00IEND\
 | 
			
		||||
\xaeB`\x82' 
 | 
			
		||||
 | 
			
		||||
def getBreakBitmap():
 | 
			
		||||
    return BitmapFromImage(getBreakImage())
 | 
			
		||||
@@ -2163,14 +2171,18 @@ def getClearOutputIcon():
 | 
			
		||||
#----------------------------------------------------------------------
 | 
			
		||||
def getCloseData():
 | 
			
		||||
    return \
 | 
			
		||||
'\x89PNG\r\n\x1a\n\x00\x00\x00\rIHDR\x00\x00\x00\x12\x00\x00\x00\x12\x08\x06\
 | 
			
		||||
\x00\x00\x00V\xce\x8eW\x00\x00\x00\x04sBIT\x08\x08\x08\x08|\x08d\x88\x00\x00\
 | 
			
		||||
\x00\x86IDAT8\x8d\xed\x90\xb1\r\x80 \x10E_"c\xd80\x02-\x138\x87;8\x8f\x8d\
 | 
			
		||||
\x8b\xb0\x02\xa5\xad\rS\x88\xcd\x11) \x82\xb6\xbe\xea\xf2\xc9\xbd\xfc\x03~\
 | 
			
		||||
\xdeb\x81\xb9\x90\xabJ^%\x00N\x849\x0e\xf0\x85\xbc\x8a\x12YZR2\xc7\x1eIB\xcb\
 | 
			
		||||
\xb2\xcb\x9at\x9d\x95c\xa5Y|\x92\x0c\x0f\xa2\r8e\x1e\x81\x1d8z\xdb8\xee?Ig\
 | 
			
		||||
\xfa\xb7\x92)\xcb\xacd\x01XZ$QD\xba\xf0\xa6\x80\xd5\x18cZ\x1b\x95$?\x1f\xb9\
 | 
			
		||||
\x00\x1d\x94\x1e*e_\x8a~\x00\x00\x00\x00IEND\xaeB`\x82' 
 | 
			
		||||
'\x89PNG\r\n\x1a\n\x00\x00\x00\rIHDR\x00\x00\x00\x10\x00\x00\x00\x10\x08\x02\
 | 
			
		||||
\x00\x00\x00\x90\x91h6\x00\x00\x00\x03sBIT\x08\x08\x08\xdb\xe1O\xe0\x00\x00\
 | 
			
		||||
\x00\xedIDAT(\x91\xa5\x90!\xae\x840\x10\x86g_\xd6"*kz\x82j\xb0h\x1c\t\' x\
 | 
			
		||||
\x92Z\xc2\x05\x10\x95\x18\x0e\x00\x02M\x82 \xe1\nMF#jz\x80\xea&+\x9a\x10\x96\
 | 
			
		||||
\xdd}\xfb\xc8\x1b\xd7?\xdf\x97\xfe3\xb7u]\xe1\xca\xfc\\\xa2\xff- \xe24M\xc7\
 | 
			
		||||
\xc49wJ\xee\xc7G]\xd7\x8c1\xc6\x18\xe7\xdc\'B\x08k\xed1y\xfaa\x1cG\xad\xb5\
 | 
			
		||||
\x94\x12\x11\x9dsy\x9e+\xa5\x84\x10;\r\x00\xb7\xd3\x95\x8c1UU\x05A\x00\x00\
 | 
			
		||||
\xd6\xda,\xcb\x92$\xf9\xb8\x03\x00PJ\x85\x10Zk\xa5\xd4+\xfdF\x00\x80\xae\xeb\
 | 
			
		||||
\x08!\x84\x90y\x9e\x11\xf1\x8bP\x96\xa5\xef\xdd\xb6\xad\xb5VJ\xf9\x9b\xe0\
 | 
			
		||||
\xe9\xa6i8\xe7\xbe\xdb\xb6mi\x9a\x0e\xc3\xf0F\x88\xe3\x18\x00\xfa\xbe\x0f\
 | 
			
		||||
\xc3\xd0\'\x9c\xf3eY\xa2(*\x8ab\xc7\x9e\xaed\x8c\xa1\x94\xben\xf5\xb1\xd2W\
 | 
			
		||||
\xfa,\xfce.\x0b\x0f\xb8\x96e\x90gS\xe0v\x00\x00\x00\x00IEND\xaeB`\x82' 
 | 
			
		||||
 | 
			
		||||
def getCloseBitmap():
 | 
			
		||||
    return BitmapFromImage(getCloseImage())
 | 
			
		||||
 
 | 
			
		||||
@@ -120,7 +120,7 @@ class FindInDirService(FindService.FindService):
 | 
			
		||||
            dlg.Destroy()
 | 
			
		||||
        wx.EVT_BUTTON(findDirButton, -1, OnBrowseButton)
 | 
			
		||||
 | 
			
		||||
        subfolderCtrl = wx.CheckBox(frame, -1, _("Search in subfolders"))
 | 
			
		||||
        subfolderCtrl = wx.CheckBox(frame, -1, _("Search in subdirectories"))
 | 
			
		||||
        subfolderCtrl.SetValue(config.ReadInt(FIND_MATCHDIRSUBFOLDERS, True))
 | 
			
		||||
        contentSizer.Add(subfolderCtrl, 0, wx.BOTTOM, SPACE)
 | 
			
		||||
 | 
			
		||||
@@ -152,7 +152,7 @@ class FindInDirService(FindService.FindService):
 | 
			
		||||
        findBtn = wx.Button(frame, wx.ID_OK, _("Find"))
 | 
			
		||||
        findBtn.SetDefault()
 | 
			
		||||
        buttonSizer.Add(findBtn, 0, wx.BOTTOM, HALF_SPACE)
 | 
			
		||||
        buttonSizer.Add(wx.Button(frame, wx.ID_CANCEL, _("Cancel")), 0)
 | 
			
		||||
        buttonSizer.Add(wx.Button(frame, wx.ID_CANCEL), 0)
 | 
			
		||||
        borderSizer.Add(buttonSizer, 0, wx.ALL, SPACE)
 | 
			
		||||
 | 
			
		||||
        frame.SetSizer(borderSizer)
 | 
			
		||||
@@ -311,7 +311,7 @@ class FindInDirService(FindService.FindService):
 | 
			
		||||
        findBtn = wx.Button(frame, wx.ID_OK, _("Find"))
 | 
			
		||||
        findBtn.SetDefault()
 | 
			
		||||
        buttonSizer.Add(findBtn, 0, wx.BOTTOM, HALF_SPACE)
 | 
			
		||||
        buttonSizer.Add(wx.Button(frame, wx.ID_CANCEL, _("Cancel")), 0)
 | 
			
		||||
        buttonSizer.Add(wx.Button(frame, wx.ID_CANCEL), 0)
 | 
			
		||||
        borderSizer.Add(buttonSizer, 0, wx.ALL, SPACE)
 | 
			
		||||
 | 
			
		||||
        frame.SetSizer(borderSizer)
 | 
			
		||||
 
 | 
			
		||||
@@ -97,19 +97,11 @@ class FindService(wx.lib.pydocview.DocService):
 | 
			
		||||
 | 
			
		||||
    def ProcessUpdateUIEvent(self, event):
 | 
			
		||||
        id = event.GetId()
 | 
			
		||||
        if id == FindService.FIND_ID:
 | 
			
		||||
            event.Enable(False)
 | 
			
		||||
            return True
 | 
			
		||||
        elif id == FindService.FIND_PREVIOUS_ID:
 | 
			
		||||
            event.Enable(False)
 | 
			
		||||
            return True
 | 
			
		||||
        elif id == FindService.FIND_NEXT_ID:
 | 
			
		||||
            event.Enable(False)
 | 
			
		||||
            return True
 | 
			
		||||
        elif id == FindService.REPLACE_ID:
 | 
			
		||||
            event.Enable(False)
 | 
			
		||||
            return True
 | 
			
		||||
        elif id == FindService.GOTO_LINE_ID:
 | 
			
		||||
        if (id == FindService.FIND_ID
 | 
			
		||||
        or id == FindService.FIND_PREVIOUS_ID
 | 
			
		||||
        or id == FindService.FIND_NEXT_ID
 | 
			
		||||
        or id == FindService.REPLACE_ID
 | 
			
		||||
        or id == FindService.GOTO_LINE_ID):
 | 
			
		||||
            event.Enable(False)
 | 
			
		||||
            return True
 | 
			
		||||
        else:
 | 
			
		||||
@@ -362,7 +354,7 @@ class FindDialog(wx.Dialog):
 | 
			
		||||
        findBtn = wx.Button(self, FindService.FINDONE_ID, _("Find Next"))
 | 
			
		||||
        findBtn.SetDefault()
 | 
			
		||||
        wx.EVT_BUTTON(self, FindService.FINDONE_ID, self.OnActionEvent)
 | 
			
		||||
        cancelBtn = wx.Button(self, wx.ID_CANCEL, _("Cancel"))
 | 
			
		||||
        cancelBtn = wx.Button(self, wx.ID_CANCEL)
 | 
			
		||||
        wx.EVT_BUTTON(self, wx.ID_CANCEL, self.OnClose)
 | 
			
		||||
        buttonSizer.Add(findBtn, 0, wx.BOTTOM, HALF_SPACE)
 | 
			
		||||
        buttonSizer.Add(cancelBtn, 0)
 | 
			
		||||
@@ -457,7 +449,7 @@ class FindReplaceDialog(FindDialog):
 | 
			
		||||
        findBtn = wx.Button(self, FindService.FINDONE_ID, _("Find Next"))
 | 
			
		||||
        findBtn.SetDefault()
 | 
			
		||||
        wx.EVT_BUTTON(self, FindService.FINDONE_ID, self.OnActionEvent)
 | 
			
		||||
        cancelBtn = wx.Button(self, wx.ID_CANCEL, _("Cancel"))
 | 
			
		||||
        cancelBtn = wx.Button(self, wx.ID_CANCEL)
 | 
			
		||||
        wx.EVT_BUTTON(self, wx.ID_CANCEL, self.OnClose)
 | 
			
		||||
        replaceBtn = wx.Button(self, FindService.REPLACEONE_ID, _("Replace"))
 | 
			
		||||
        wx.EVT_BUTTON(self, FindService.REPLACEONE_ID, self.OnActionEvent)
 | 
			
		||||
 
 | 
			
		||||
@@ -348,6 +348,11 @@ class IDEApplication(wx.lib.pydocview.DocApp):
 | 
			
		||||
            if not welcomeService.RunWelcomeIfFirstTime():
 | 
			
		||||
                if os.path.exists("activegrid/tool/data/tips.txt"):
 | 
			
		||||
                    wx.CallAfter(self.ShowTip, docManager.FindSuitableParent(), wx.CreateFileTipProvider("activegrid/tool/data/tips.txt", 0))
 | 
			
		||||
        else:
 | 
			
		||||
            if os.path.exists("activegrid/tool/data/tips.txt"):
 | 
			
		||||
                wx.CallAfter(self.ShowTip, docManager.FindSuitableParent(), wx.CreateFileTipProvider("activegrid/tool/data/tips.txt", 0))
 | 
			
		||||
 | 
			
		||||
        wx.UpdateUIEvent.SetUpdateInterval(200)  # Overhead of updating menus was too much.  Change to update every 200 milliseconds.
 | 
			
		||||
        
 | 
			
		||||
        return True
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -41,12 +41,23 @@ class ImageView(wx.lib.docview.View):
 | 
			
		||||
        panel = wx.Panel(frame, -1)            
 | 
			
		||||
        bitmap = wx.Image(doc.GetFilename()).ConvertToBitmap()
 | 
			
		||||
        self._ctrl = wx.StaticBitmap(panel, -1, bitmap, (0,0), (bitmap.GetWidth(), bitmap.GetHeight()))
 | 
			
		||||
        wx.EVT_LEFT_DOWN(self._ctrl, self.OnFocus)
 | 
			
		||||
        wx.EVT_LEFT_DCLICK(self._ctrl, self.OnFocus)
 | 
			
		||||
        wx.EVT_RIGHT_DOWN(self._ctrl, self.OnFocus)
 | 
			
		||||
        wx.EVT_RIGHT_DCLICK(self._ctrl, self.OnFocus)
 | 
			
		||||
        wx.EVT_MIDDLE_DOWN(self._ctrl, self.OnFocus)
 | 
			
		||||
        wx.EVT_MIDDLE_DCLICK(self._ctrl, self.OnFocus)
 | 
			
		||||
        panel.SetClientSize(bitmap.GetSize())
 | 
			
		||||
        frame.SetClientSize(panel.GetSize())
 | 
			
		||||
        self.Activate()
 | 
			
		||||
        return True
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    def OnFocus(self, event):
 | 
			
		||||
        self._ctrl.SetFocus()
 | 
			
		||||
        event.Skip()
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    def OnClose(self, deleteWindow = True):
 | 
			
		||||
        statusC = wx.GetApp().CloseChildDocuments(self.GetDocument())
 | 
			
		||||
        statusP = wx.lib.docview.View.OnClose(self, deleteWindow = deleteWindow)
 | 
			
		||||
 
 | 
			
		||||
@@ -156,11 +156,8 @@ class OutlineView(Service.ServiceView):
 | 
			
		||||
                treeCtrl.Expand(child)
 | 
			
		||||
            (child, cookie) = treeCtrl.GetNextChild(parentItem, cookie)
 | 
			
		||||
 | 
			
		||||
        # wxBug: This causes a crash, tried using ScrollTo which crashed as well.  Then tried calling it with wx.CallAfter and that crashed as well, with both EnsureVisible and ScrollTo
 | 
			
		||||
        # self.GetControl().EnsureVisible(self.GetControl().GetRootItem())
 | 
			
		||||
        # So doing the following massive hack which forces the treectrl to scroll up to the top item
 | 
			
		||||
        treeCtrl.Collapse(parentItem)
 | 
			
		||||
        treeCtrl.Expand(parentItem)
 | 
			
		||||
        if parentItem:
 | 
			
		||||
            treeCtrl.EnsureVisible(parentItem)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class OutlineTreeCtrl(wx.TreeCtrl):
 | 
			
		||||
 
 | 
			
		||||
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							@@ -293,10 +293,6 @@ class TextView(wx.lib.docview.View):
 | 
			
		||||
        if not self.GetCtrl():
 | 
			
		||||
            return False
 | 
			
		||||
 | 
			
		||||
        hasSelection = self.GetCtrl().GetSelectionStart() != self.GetCtrl().GetSelectionEnd()
 | 
			
		||||
        hasText = self.GetCtrl().GetTextLength() > 0
 | 
			
		||||
        notOnLastChar = self.GetCtrl().GetSelectionStart() != self.GetCtrl().GetTextLength()
 | 
			
		||||
 | 
			
		||||
        id = event.GetId()
 | 
			
		||||
        if id == wx.ID_UNDO:
 | 
			
		||||
             event.Enable(self.GetCtrl().CanUndo())
 | 
			
		||||
@@ -306,41 +302,44 @@ class TextView(wx.lib.docview.View):
 | 
			
		||||
            event.Enable(self.GetCtrl().CanRedo())
 | 
			
		||||
            event.SetText(_("Redo") + '\t' + _('Ctrl+Y'))
 | 
			
		||||
            return True
 | 
			
		||||
        elif id == wx.ID_CUT:
 | 
			
		||||
            event.Enable(hasSelection)
 | 
			
		||||
            return True
 | 
			
		||||
        elif id == wx.ID_COPY:
 | 
			
		||||
        elif (id == wx.ID_CUT
 | 
			
		||||
        or id == wx.ID_COPY
 | 
			
		||||
        or id == wx.ID_CLEAR):
 | 
			
		||||
            hasSelection = self.GetCtrl().GetSelectionStart() != self.GetCtrl().GetSelectionEnd()
 | 
			
		||||
            event.Enable(hasSelection)
 | 
			
		||||
            return True
 | 
			
		||||
        elif id == wx.ID_PASTE:
 | 
			
		||||
            event.Enable(self.GetCtrl().CanPaste())
 | 
			
		||||
            return True
 | 
			
		||||
        elif id == wx.ID_CLEAR:
 | 
			
		||||
            event.Enable(hasSelection)
 | 
			
		||||
            return True
 | 
			
		||||
        elif id == wx.ID_SELECTALL:
 | 
			
		||||
            hasText = self.GetCtrl().GetTextLength() > 0
 | 
			
		||||
            event.Enable(hasText)
 | 
			
		||||
            return True
 | 
			
		||||
        elif id == TEXT_ID:
 | 
			
		||||
            event.Enable(True)
 | 
			
		||||
            return True
 | 
			
		||||
        elif id == VIEW_WHITESPACE_ID:
 | 
			
		||||
            hasText = self.GetCtrl().GetTextLength() > 0
 | 
			
		||||
            event.Enable(hasText)
 | 
			
		||||
            event.Check(self.GetCtrl().GetViewWhiteSpace())
 | 
			
		||||
            return True
 | 
			
		||||
        elif id == VIEW_EOL_ID:
 | 
			
		||||
            hasText = self.GetCtrl().GetTextLength() > 0
 | 
			
		||||
            event.Enable(hasText)
 | 
			
		||||
            event.Check(self.GetCtrl().GetViewEOL())
 | 
			
		||||
            return True
 | 
			
		||||
        elif id == VIEW_INDENTATION_GUIDES_ID:
 | 
			
		||||
            hasText = self.GetCtrl().GetTextLength() > 0
 | 
			
		||||
            event.Enable(hasText)
 | 
			
		||||
            event.Check(self.GetCtrl().GetIndentationGuides())
 | 
			
		||||
            return True
 | 
			
		||||
        elif id == VIEW_RIGHT_EDGE_ID:
 | 
			
		||||
            hasText = self.GetCtrl().GetTextLength() > 0
 | 
			
		||||
            event.Enable(hasText)
 | 
			
		||||
            event.Check(self.GetCtrl().GetViewRightEdge())
 | 
			
		||||
            return True
 | 
			
		||||
        elif id == VIEW_LINE_NUMBERS_ID:
 | 
			
		||||
            hasText = self.GetCtrl().GetTextLength() > 0
 | 
			
		||||
            event.Enable(hasText)
 | 
			
		||||
            event.Check(self.GetCtrl().GetViewLineNumbers())
 | 
			
		||||
            return True
 | 
			
		||||
@@ -364,19 +363,23 @@ class TextView(wx.lib.docview.View):
 | 
			
		||||
            event.Check(self.GetCtrl().CanWordWrap() and self.GetCtrl().GetWordWrap())
 | 
			
		||||
            return True
 | 
			
		||||
        elif id == FindService.FindService.FIND_ID:
 | 
			
		||||
            hasText = self.GetCtrl().GetTextLength() > 0
 | 
			
		||||
            event.Enable(hasText)
 | 
			
		||||
            return True
 | 
			
		||||
        elif id == FindService.FindService.FIND_PREVIOUS_ID:
 | 
			
		||||
            hasText = self.GetCtrl().GetTextLength() > 0
 | 
			
		||||
            event.Enable(hasText and
 | 
			
		||||
                         self._FindServiceHasString() and
 | 
			
		||||
                         self.GetCtrl().GetSelection()[0] > 0)
 | 
			
		||||
            return True
 | 
			
		||||
        elif id == FindService.FindService.FIND_NEXT_ID:
 | 
			
		||||
            hasText = self.GetCtrl().GetTextLength() > 0
 | 
			
		||||
            event.Enable(hasText and
 | 
			
		||||
                         self._FindServiceHasString() and
 | 
			
		||||
                         self.GetCtrl().GetSelection()[0] < self.GetCtrl().GetLength())
 | 
			
		||||
            return True
 | 
			
		||||
        elif id == FindService.FindService.REPLACE_ID:
 | 
			
		||||
            hasText = self.GetCtrl().GetTextLength() > 0
 | 
			
		||||
            event.Enable(hasText)
 | 
			
		||||
            return True
 | 
			
		||||
        elif id == FindService.FindService.GOTO_LINE_ID:
 | 
			
		||||
@@ -745,40 +748,18 @@ class TextService(wx.lib.pydocview.DocService):
 | 
			
		||||
 | 
			
		||||
    def ProcessUpdateUIEvent(self, event):
 | 
			
		||||
        id = event.GetId()
 | 
			
		||||
        if id == TEXT_ID:
 | 
			
		||||
            event.Enable(False)
 | 
			
		||||
            return True
 | 
			
		||||
        elif id == VIEW_WHITESPACE_ID:
 | 
			
		||||
            event.Enable(False)
 | 
			
		||||
            return True
 | 
			
		||||
        elif id == VIEW_EOL_ID:
 | 
			
		||||
            event.Enable(False)
 | 
			
		||||
            return True
 | 
			
		||||
        elif id == VIEW_INDENTATION_GUIDES_ID:
 | 
			
		||||
            event.Enable(False)
 | 
			
		||||
            return True
 | 
			
		||||
        elif id == VIEW_RIGHT_EDGE_ID:
 | 
			
		||||
            event.Enable(False)
 | 
			
		||||
            return True
 | 
			
		||||
        elif id == VIEW_LINE_NUMBERS_ID:
 | 
			
		||||
            event.Enable(False)
 | 
			
		||||
            return True
 | 
			
		||||
        elif id == ZOOM_ID:
 | 
			
		||||
            event.Enable(False)
 | 
			
		||||
            return True
 | 
			
		||||
        elif id == ZOOM_NORMAL_ID:
 | 
			
		||||
            event.Enable(False)
 | 
			
		||||
            return True
 | 
			
		||||
        elif id == ZOOM_IN_ID:
 | 
			
		||||
            event.Enable(False)
 | 
			
		||||
            return True
 | 
			
		||||
        elif id == ZOOM_OUT_ID:
 | 
			
		||||
            event.Enable(False)
 | 
			
		||||
            return True
 | 
			
		||||
        elif id == CHOOSE_FONT_ID:
 | 
			
		||||
            event.Enable(False)
 | 
			
		||||
            return True
 | 
			
		||||
        elif id == WORD_WRAP_ID:
 | 
			
		||||
        if (id == TEXT_ID
 | 
			
		||||
        or id == VIEW_WHITESPACE_ID
 | 
			
		||||
        or id == VIEW_EOL_ID
 | 
			
		||||
        or id == VIEW_INDENTATION_GUIDES_ID
 | 
			
		||||
        or id == VIEW_RIGHT_EDGE_ID
 | 
			
		||||
        or id == VIEW_LINE_NUMBERS_ID
 | 
			
		||||
        or id == ZOOM_ID
 | 
			
		||||
        or id == ZOOM_NORMAL_ID
 | 
			
		||||
        or id == ZOOM_IN_ID
 | 
			
		||||
        or id == ZOOM_OUT_ID
 | 
			
		||||
        or id == CHOOSE_FONT_ID
 | 
			
		||||
        or id == WORD_WRAP_ID):
 | 
			
		||||
            event.Enable(False)
 | 
			
		||||
            return True
 | 
			
		||||
        else:
 | 
			
		||||
 
 | 
			
		||||
@@ -88,6 +88,7 @@ def AddFilesToCurrentProject(paths, save=False):
 | 
			
		||||
                    paths.remove(path)
 | 
			
		||||
            if paths:
 | 
			
		||||
                projectDocument.GetCommandProcessor().Submit(ProjectEditor.ProjectAddFilesCommand(projectDocument, paths))
 | 
			
		||||
                projectDocument.GetFirstView().DoSelectFiles([paths[0]])
 | 
			
		||||
                if save:
 | 
			
		||||
                    projectDocument.OnSaveDocument(projectDocument.GetFilename())
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -722,6 +722,14 @@ def processFiles(files, cfg = None, pre_process_cb = None) :
 | 
			
		||||
            pre_process_cb(moduleName)
 | 
			
		||||
        module = Module(moduleName, fullpath = filename)
 | 
			
		||||
 | 
			
		||||
        # reload the given module, otherwise won't get new syntax errors.
 | 
			
		||||
        sysModule = sys.modules.get(moduleName)
 | 
			
		||||
        if sysModule:
 | 
			
		||||
            try:
 | 
			
		||||
                reload(sysModule)
 | 
			
		||||
            except:
 | 
			
		||||
                pass
 | 
			
		||||
                
 | 
			
		||||
        module.load(warnings)
 | 
			
		||||
    utils.popConfig()
 | 
			
		||||
    return warnings
 | 
			
		||||
@@ -757,6 +765,7 @@ def checkSyntax(filename, messageView):
 | 
			
		||||
    _count = 0
 | 
			
		||||
 | 
			
		||||
    # insert this here, so we find files in the local dir before std library
 | 
			
		||||
    if sys.path[0] != '' :
 | 
			
		||||
        sys.path.insert(0, '')
 | 
			
		||||
 | 
			
		||||
    importWarnings = processFiles(files, _cfg, _print_processing)
 | 
			
		||||
 
 | 
			
		||||
@@ -1,3 +1,15 @@
 | 
			
		||||
#----------------------------------------------------------------------------
 | 
			
		||||
# Name:         __init__.py
 | 
			
		||||
# Purpose:      Utilities
 | 
			
		||||
#
 | 
			
		||||
# Author:       Joel Hare
 | 
			
		||||
#
 | 
			
		||||
# Created:      7/28/04
 | 
			
		||||
# CVS-ID:       $Id$
 | 
			
		||||
# Copyright:    (c) 2004-2005 ActiveGrid, Inc.
 | 
			
		||||
# License:      wxWindows License
 | 
			
		||||
#----------------------------------------------------------------------------
 | 
			
		||||
 | 
			
		||||
import logging
 | 
			
		||||
import cStringIO
 | 
			
		||||
import traceback
 | 
			
		||||
@@ -44,18 +56,18 @@ def getattrignorecase(object, name):
 | 
			
		||||
    return object.__dict__[name]
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
def defaultLoad(fileObject):
 | 
			
		||||
def defaultLoad(fileObject, knownTypes=None):
 | 
			
		||||
    xml = fileObject.read()
 | 
			
		||||
    loadedObject = xmlmarshaller.unmarshal(xml)
 | 
			
		||||
    loadedObject = xmlmarshaller.unmarshal(xml, knownTypes=knownTypes)
 | 
			
		||||
    if hasattr(fileObject, 'name'):
 | 
			
		||||
        loadedObject.fileName = os.path.abspath(fileObject.name)
 | 
			
		||||
    loadedObject.initialize()
 | 
			
		||||
    return loadedObject
 | 
			
		||||
 | 
			
		||||
def defaultSave(fileObject, objectToSave):
 | 
			
		||||
    xml = xmlmarshaller.marshal(objectToSave, prettyPrint=True)
 | 
			
		||||
def defaultSave(fileObject, objectToSave, knownTypes=None):
 | 
			
		||||
    xml = xmlmarshaller.marshal(objectToSave, prettyPrint=True, knownTypes=knownTypes)
 | 
			
		||||
    fileObject.write(xml)
 | 
			
		||||
   
 | 
			
		||||
    fileObject.close()
 | 
			
		||||
 
 | 
			
		||||
def clone(objectToClone):
 | 
			
		||||
    xml = xmlmarshaller.marshal(objectToClone, prettyPrint=True)
 | 
			
		||||
 
 | 
			
		||||
@@ -97,19 +97,11 @@ class FindService(wx.lib.pydocview.DocService):
 | 
			
		||||
 | 
			
		||||
    def ProcessUpdateUIEvent(self, event):
 | 
			
		||||
        id = event.GetId()
 | 
			
		||||
        if id == FindService.FIND_ID:
 | 
			
		||||
            event.Enable(False)
 | 
			
		||||
            return True
 | 
			
		||||
        elif id == FindService.FIND_PREVIOUS_ID:
 | 
			
		||||
            event.Enable(False)
 | 
			
		||||
            return True
 | 
			
		||||
        elif id == FindService.FIND_NEXT_ID:
 | 
			
		||||
            event.Enable(False)
 | 
			
		||||
            return True
 | 
			
		||||
        elif id == FindService.REPLACE_ID:
 | 
			
		||||
            event.Enable(False)
 | 
			
		||||
            return True
 | 
			
		||||
        elif id == FindService.GOTO_LINE_ID:
 | 
			
		||||
        if (id == FindService.FIND_ID
 | 
			
		||||
        or id == FindService.FIND_PREVIOUS_ID
 | 
			
		||||
        or id == FindService.FIND_NEXT_ID
 | 
			
		||||
        or id == FindService.REPLACE_ID
 | 
			
		||||
        or id == FindService.GOTO_LINE_ID):
 | 
			
		||||
            event.Enable(False)
 | 
			
		||||
            return True
 | 
			
		||||
        else:
 | 
			
		||||
@@ -362,7 +354,7 @@ class FindDialog(wx.Dialog):
 | 
			
		||||
        findBtn = wx.Button(self, FindService.FINDONE_ID, _("Find Next"))
 | 
			
		||||
        findBtn.SetDefault()
 | 
			
		||||
        wx.EVT_BUTTON(self, FindService.FINDONE_ID, self.OnActionEvent)
 | 
			
		||||
        cancelBtn = wx.Button(self, wx.ID_CANCEL, _("Cancel"))
 | 
			
		||||
        cancelBtn = wx.Button(self, wx.ID_CANCEL)
 | 
			
		||||
        wx.EVT_BUTTON(self, wx.ID_CANCEL, self.OnClose)
 | 
			
		||||
        buttonSizer.Add(findBtn, 0, wx.BOTTOM, HALF_SPACE)
 | 
			
		||||
        buttonSizer.Add(cancelBtn, 0)
 | 
			
		||||
@@ -457,7 +449,7 @@ class FindReplaceDialog(FindDialog):
 | 
			
		||||
        findBtn = wx.Button(self, FindService.FINDONE_ID, _("Find Next"))
 | 
			
		||||
        findBtn.SetDefault()
 | 
			
		||||
        wx.EVT_BUTTON(self, FindService.FINDONE_ID, self.OnActionEvent)
 | 
			
		||||
        cancelBtn = wx.Button(self, wx.ID_CANCEL, _("Cancel"))
 | 
			
		||||
        cancelBtn = wx.Button(self, wx.ID_CANCEL)
 | 
			
		||||
        wx.EVT_BUTTON(self, wx.ID_CANCEL, self.OnClose)
 | 
			
		||||
        replaceBtn = wx.Button(self, FindService.REPLACEONE_ID, _("Replace"))
 | 
			
		||||
        wx.EVT_BUTTON(self, FindService.REPLACEONE_ID, self.OnActionEvent)
 | 
			
		||||
 
 | 
			
		||||
@@ -7,7 +7,7 @@
 | 
			
		||||
# Created:      8/15/03
 | 
			
		||||
# CVS-ID:       $Id$
 | 
			
		||||
# Copyright:    (c) 2003-2005 ActiveGrid, Inc.
 | 
			
		||||
# License:      ASL 2.0  http://apache.org/licenses/LICENSE-2.0
 | 
			
		||||
# License:      wxWindows License
 | 
			
		||||
#----------------------------------------------------------------------------
 | 
			
		||||
import wx
 | 
			
		||||
import wx.lib.docview
 | 
			
		||||
 
 | 
			
		||||
@@ -215,16 +215,13 @@ class Document(wx.EvtHandler):
 | 
			
		||||
        self._documentModified = modify
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    def SetDocumentModificationDate(self, filename=None):
 | 
			
		||||
    def SetDocumentModificationDate(self):
 | 
			
		||||
        """
 | 
			
		||||
        Saves the file's last modification date.
 | 
			
		||||
        This is used to check if the file has been modified outside of the application.
 | 
			
		||||
        This method has been added to wxPython and is not in wxWindows.
 | 
			
		||||
        """
 | 
			
		||||
        if not filename:
 | 
			
		||||
            filename = self.GetFilename()
 | 
			
		||||
        self._documentModificationDate = os.path.getmtime(filename)
 | 
			
		||||
        print "debug print, file: %s set modification date to %s" % (filename, self._documentModificationDate)
 | 
			
		||||
        self._documentModificationDate = os.path.getmtime(self.GetFilename())
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    def GetDocumentModificationDate(self):
 | 
			
		||||
@@ -365,7 +362,6 @@ class Document(wx.EvtHandler):
 | 
			
		||||
 | 
			
		||||
        """ check for file modification outside of application """
 | 
			
		||||
        if os.path.exists(self.GetFilename()) and os.path.getmtime(self.GetFilename()) != self.GetDocumentModificationDate():
 | 
			
		||||
            print "debug print, File %s: new mod date %s, original mod date %s" % (self.GetFilename(), os.path.getmtime(self.GetFilename()), self.GetDocumentModificationDate())
 | 
			
		||||
            msgTitle = wx.GetApp().GetAppName()
 | 
			
		||||
            if not msgTitle:
 | 
			
		||||
                msgTitle = _("Application")
 | 
			
		||||
@@ -468,6 +464,7 @@ class Document(wx.EvtHandler):
 | 
			
		||||
            if backupFilename:
 | 
			
		||||
                os.remove(filename)
 | 
			
		||||
                os.rename(backupFilename, filename)
 | 
			
		||||
                self.SetDocumentModificationDate()
 | 
			
		||||
 | 
			
		||||
            wx.MessageBox("Could not save '%s'.  %s" % (FileNameFromPath(filename), sys.exc_value),
 | 
			
		||||
                          msgTitle,
 | 
			
		||||
@@ -596,7 +593,6 @@ class Document(wx.EvtHandler):
 | 
			
		||||
 | 
			
		||||
        """ check for file modification outside of application """
 | 
			
		||||
        if os.path.exists(self.GetFilename()) and os.path.getmtime(self.GetFilename()) != self.GetDocumentModificationDate():
 | 
			
		||||
            print "debug print, File %s: new mod date %s, original mod date %s" % (self.GetFilename(), os.path.getmtime(self.GetFilename()), self.GetDocumentModificationDate())
 | 
			
		||||
            msgTitle = wx.GetApp().GetAppName()
 | 
			
		||||
            if not msgTitle:
 | 
			
		||||
                msgTitle = _("Warning")
 | 
			
		||||
 
 | 
			
		||||
@@ -780,18 +780,20 @@ class DocTabbedParentFrame(wx.Frame, DocFrameMixIn, DocMDIParentFrameMixIn):
 | 
			
		||||
        for template in templates:
 | 
			
		||||
            icon = template.GetIcon()
 | 
			
		||||
            if icon:
 | 
			
		||||
                if icon.GetHeight() != 16:
 | 
			
		||||
                    icon.SetHeight(16)  # wxBug: img2py.py uses EmptyIcon which is 32x32
 | 
			
		||||
                if icon.GetWidth() != 16:
 | 
			
		||||
                    icon.SetWidth(16)   # wxBug: img2py.py uses EmptyIcon which is 32x32
 | 
			
		||||
                if icon.GetHeight() != 16 or icon.GetWidth() != 16:
 | 
			
		||||
                    icon.SetHeight(16)
 | 
			
		||||
                    icon.SetWidth(16)
 | 
			
		||||
                    if wx.GetApp().GetDebug():
 | 
			
		||||
                        print "Warning: icon for '%s' isn't 16x16, not crossplatform" % template._docTypeName
 | 
			
		||||
                iconIndex = iconList.AddIcon(icon)
 | 
			
		||||
                self._iconIndexLookup.append((template, iconIndex))
 | 
			
		||||
                
 | 
			
		||||
        icon = getBlankIcon()
 | 
			
		||||
        if icon.GetHeight() != 16:
 | 
			
		||||
            icon.SetHeight(16)  # wxBug: img2py.py uses EmptyIcon which is 32x32
 | 
			
		||||
        if icon.GetWidth() != 16:
 | 
			
		||||
            icon.SetWidth(16)   # wxBug: img2py.py uses EmptyIcon which is 32x32
 | 
			
		||||
        if icon.GetHeight() != 16 or icon.GetWidth() != 16:
 | 
			
		||||
            icon.SetHeight(16)
 | 
			
		||||
            icon.SetWidth(16)
 | 
			
		||||
            if wx.GetApp().GetDebug():
 | 
			
		||||
                print "Warning: getBlankIcon isn't 16x16, not crossplatform"
 | 
			
		||||
        self._blankIconIndex = iconList.AddIcon(icon)
 | 
			
		||||
        self._notebook.AssignImageList(iconList)
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user