More updates to the docview library modules and sample apps from the

ActiveGrid folks.  Their sample IDE is now able to integrate with
Subversion.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@34158 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Robin Dunn
2005-05-19 00:21:49 +00:00
parent 4809f5df5d
commit 6f1a3f9c1a
19 changed files with 1791 additions and 1064 deletions

View File

@@ -366,7 +366,7 @@ class DocMDIParentFrameMixIn:
return wx.GetApp().ProcessUpdateUIEvent(event)
def CreateEmbeddedWindows(self, windows = 0):
def CreateEmbeddedWindows(self, windows=0):
"""
Create the specified embedded windows around the edges of the frame.
"""
@@ -488,7 +488,7 @@ class DocMDIParentFrameMixIn:
return None
def _CreateEmbeddedWindow(self, parent, size, orientation, alignment, visible = True, sash = None):
def _CreateEmbeddedWindow(self, parent, size, orientation, alignment, visible=True, sash=None):
"""
Creates the embedded window with the specified size, orientation, and alignment. If the
window is not visible it will retain the size with which it was last viewed.
@@ -527,7 +527,7 @@ class DocMDIParentFrameMixIn:
return window
def ShowEmbeddedWindow(self, window, show = True):
def ShowEmbeddedWindow(self, window, show=True):
"""
Shows or hides the embedded window specified by the embedded window location constant.
"""
@@ -591,7 +591,7 @@ class DocTabbedChildFrame(wx.Panel):
"""
def __init__(self, doc, view, frame, id, title, pos = wx.DefaultPosition, size = wx.DefaultSize, style = wx.DEFAULT_FRAME_STYLE, name = "frame"):
def __init__(self, doc, view, frame, id, title, pos=wx.DefaultPosition, size=wx.DefaultSize, style=wx.DEFAULT_FRAME_STYLE, name="frame"):
"""
Constructor. Note that the event table must be rebuilt for the
frame since the EvtHandler is not virtual.
@@ -773,6 +773,7 @@ class DocTabbedParentFrame(wx.Frame, DocFrameMixIn, DocMDIParentFrameMixIn):
# self._notebook.SetSizer(wx.NotebookSizer(self._notebook))
wx.EVT_NOTEBOOK_PAGE_CHANGED(self, self._notebook.GetId(), self.OnNotebookPageChanged)
wx.EVT_RIGHT_DOWN(self._notebook, self.OnNotebookRightClick)
wx.EVT_MOTION(self._notebook, self.OnNotebookMouseOver)
templates = wx.GetApp().GetDocumentManager().GetTemplates()
iconList = wx.ImageList(16, 16, initialCount = len(templates))
@@ -825,6 +826,17 @@ class DocTabbedParentFrame(wx.Frame, DocFrameMixIn, DocMDIParentFrameMixIn):
self._notebook.GetPage(index).GetView().Activate()
def OnNotebookMouseOver(self, event):
# wxBug: On Windows XP the tooltips don't automatically disappear when you move the mouse and it is on a notebook tab, has nothing to do with this code!!!
index, type = self._notebook.HitTest(event.GetPosition())
if index > -1:
doc = self._notebook.GetPage(index).GetView().GetDocument()
self._notebook.SetToolTip(wx.ToolTip(doc.GetFilename()))
else:
self._notebook.SetToolTip(wx.ToolTip(""))
event.Skip()
def OnNotebookRightClick(self, event):
"""
Handles right clicks for the notebook, enabling users to either close
@@ -842,6 +854,15 @@ class DocTabbedParentFrame(wx.Frame, DocFrameMixIn, DocMDIParentFrameMixIn):
doc.DeleteAllViews()
wx.EVT_MENU(self, id, OnRightMenuSelect)
if self._notebook.GetPageCount() > 1:
id = wx.NewId()
menu.Append(id, _("Close All but \"%s\"" % doc.GetPrintableName()))
def OnRightMenuSelect(event):
for i in range(self._notebook.GetPageCount()-1, -1, -1): # Go from len-1 to 0
if i != index:
doc = self._notebook.GetPage(i).GetView().GetDocument()
if not self.GetDocumentManager().CloseDocument(doc, False):
return
wx.EVT_MENU(self, id, OnRightMenuSelect)
menu.AppendSeparator()
tabsMenu = wx.Menu()
menu.AppendMenu(wx.NewId(), _("Select Tab"), tabsMenu)
@@ -899,6 +920,7 @@ class DocTabbedParentFrame(wx.Frame, DocFrameMixIn, DocMDIParentFrameMixIn):
"""
index = self.GetNotebookPageIndex(panel)
if index > -1:
self._notebook.SetFocus()
self._notebook.SetSelection(index)
@@ -1015,7 +1037,7 @@ class DocMDIChildFrame(wx.MDIChildFrame):
"""
def __init__(self, doc, view, frame, id, title, pos = wx.DefaultPosition, size = wx.DefaultSize, style = wx.DEFAULT_FRAME_STYLE, name = "frame"):
def __init__(self, doc, view, frame, id, title, pos=wx.DefaultPosition, size=wx.DefaultSize, style=wx.DEFAULT_FRAME_STYLE, name="frame"):
"""
Constructor. Note that the event table must be rebuilt for the
frame since the EvtHandler is not virtual.
@@ -1176,7 +1198,7 @@ class DocService(wx.EvtHandler):
self._docManager = docManager
def InstallControls(self, frame, menuBar = None, toolBar = None, statusBar = None, document = None):
def InstallControls(self, frame, menuBar=None, toolBar=None, statusBar=None, document=None):
"""Called to install controls into the menubar and toolbar of a SDI or MDI window. Override this method for a particular service."""
pass
@@ -1263,7 +1285,7 @@ class DocOptionsService(DocService):
"""
def __init__(self, showGeneralOptions=True, allowModeChanges=True):
def __init__(self, showGeneralOptions=True, supportedModes=wx.lib.docview.DOC_SDI & wx.lib.docview.DOC_MDI):
"""
Initializes the options service with the option of suppressing the default
general options pane that is included with the options service by setting
@@ -1273,13 +1295,13 @@ class DocOptionsService(DocService):
"""
DocService.__init__(self)
self.ClearOptionsPanels()
self._allowModeChanges = allowModeChanges
self._supportedModes = supportedModes
self._toolOptionsID = wx.NewId()
if showGeneralOptions:
self.AddOptionsPanel(GeneralOptionsPanel)
def InstallControls(self, frame, menuBar = None, toolBar = None, statusBar = None, document = None):
def InstallControls(self, frame, menuBar=None, toolBar=None, statusBar=None, document=None):
"""
Installs a "Tools" menu with an "Options" menu item.
"""
@@ -1310,20 +1332,20 @@ class DocOptionsService(DocService):
return False
def GetAllowModeChanges(self):
def GetSupportedModes(self):
"""
Return true if the default general options pane should allow users to
change the document interface mode between SDI and MDI modes.
Return the modes supported by the application. Use docview.DOC_SDI and
docview.DOC_MDI flags to check if SDI and/or MDI modes are supported.
"""
return self._allowModeChanges
return self._supportedModes
def SetAllowModeChanges(self, allowModeChanges):
def SetSupportedModes(self, _supportedModessupportedModes):
"""
Set to true if the default general options pane should allow users to
change the document interface mode between SDI and MDI modes.
Sets the modes supported by the application. Use docview.DOC_SDI and
docview.DOC_MDI flags to set if SDI and/or MDI modes are supported.
"""
self._allowModeChanges = allowModeChanges
self._supportedModes = supportedModes
def ClearOptionsPanels(self):
@@ -1375,7 +1397,7 @@ class OptionsDialog(wx.Dialog):
sizer = wx.BoxSizer(wx.VERTICAL)
optionsNotebook = wx.Notebook(self, -1, size = (560, 325))
optionsNotebook = wx.Notebook(self, -1, size=(560, 325))
sizer.Add(optionsNotebook, 0, wx.ALL | wx.EXPAND, SPACE)
for optionsPanelClass in optionsPanelClasses:
optionsPanel = optionsPanelClass(optionsNotebook, -1)
@@ -1430,20 +1452,27 @@ class GeneralOptionsPanel(wx.Panel):
config = wx.ConfigBase_Get()
self._showTipsCheckBox = wx.CheckBox(self, -1, _("Show tips at start up"))
self._showTipsCheckBox.SetValue(config.ReadInt("ShowTipAtStartup", True))
if wx.GetApp().GetService(DocOptionsService).GetAllowModeChanges():
choices = [_("Show each document in its own window"), _("Show all documents in a single window with tabs")]
if self._AllowModeChanges():
supportedModes = wx.GetApp().GetService(DocOptionsService).GetSupportedModes()
choices = []
self._sdiChoice = _("Show each document in its own window")
self._mdiChoice = _("Show all documents in a single window with tabs")
self._winMdiChoice = _("Show all documents in a single window with child windows")
if supportedModes & wx.lib.docview.DOC_SDI:
choices.append(self._sdiChoice)
choices.append(self._mdiChoice)
if wx.Platform == "__WXMSW__":
choices.append(_("Show all documents in a single window with child windows"))
choices.append(self._winMdiChoice)
self._documentRadioBox = wx.RadioBox(self, -1, _("Document Interface"),
choices = choices,
majorDimension=1,
)
if config.ReadInt("UseWinMDI", False):
self._documentRadioBox.SetSelection(2)
self._documentRadioBox.SetStringSelection(self._winMdiChoice)
elif config.ReadInt("UseMDI", True):
self._documentRadioBox.SetSelection(1)
self._documentRadioBox.SetStringSelection(self._mdiChoice)
else:
self._documentRadioBox.SetSelection(0)
self._documentRadioBox.SetStringSelection(self._sdiChoice)
def OnDocumentInterfaceSelect(event):
if not self._documentInterfaceMessageShown:
msgTitle = wx.GetApp().GetAppName()
@@ -1457,7 +1486,7 @@ class GeneralOptionsPanel(wx.Panel):
wx.EVT_RADIOBOX(self, self._documentRadioBox.GetId(), OnDocumentInterfaceSelect)
optionsBorderSizer = wx.BoxSizer(wx.VERTICAL)
optionsSizer = wx.BoxSizer(wx.VERTICAL)
if wx.GetApp().GetService(DocOptionsService).GetAllowModeChanges():
if self._AllowModeChanges():
optionsSizer.Add(self._documentRadioBox, 0, wx.ALL, HALF_SPACE)
optionsSizer.Add(self._showTipsCheckBox, 0, wx.ALL, HALF_SPACE)
optionsBorderSizer.Add(optionsSizer, 0, wx.ALL, SPACE)
@@ -1467,15 +1496,20 @@ class GeneralOptionsPanel(wx.Panel):
parent.AddPage(self, _("Options"))
def _AllowModeChanges(self):
supportedModes = wx.GetApp().GetService(DocOptionsService).GetSupportedModes()
return supportedModes & wx.lib.docview.DOC_SDI and supportedModes & wx.lib.docview.DOC_MDI or wx.Platform == "__WXMSW__" and supportedModes & wx.lib.docview.DOC_MDI # More than one mode is supported, allow selection
def OnOK(self, optionsDialog):
"""
Updates the config based on the selections in the options panel.
"""
config = wx.ConfigBase_Get()
config.WriteInt("ShowTipAtStartup", self._showTipsCheckBox.GetValue())
if wx.GetApp().GetService(DocOptionsService).GetAllowModeChanges():
config.WriteInt("UseMDI", (self._documentRadioBox.GetSelection() == 1))
config.WriteInt("UseWinMDI", (self._documentRadioBox.GetSelection() == 2))
if self._AllowModeChanges():
config.WriteInt("UseMDI", (self._documentRadioBox.GetStringSelection() == self._mdiChoice))
config.WriteInt("UseWinMDI", (self._documentRadioBox.GetStringSelection() == self._winMdiChoice))
class DocApp(wx.PySimpleApp):
@@ -1793,7 +1827,7 @@ class DocApp(wx.PySimpleApp):
return frame
def CreateSDIDocumentFrame(self, doc, view, id = -1, title = "", pos = wx.DefaultPosition, size = wx.DefaultSize, style = wx.DEFAULT_FRAME_STYLE):
def CreateSDIDocumentFrame(self, doc, view, id=-1, title="", pos=wx.DefaultPosition, size=wx.DefaultSize, style=wx.DEFAULT_FRAME_STYLE):
"""
Creates and returns an SDI Document Frame.
"""
@@ -1801,7 +1835,7 @@ class DocApp(wx.PySimpleApp):
return frame
def CreateTabbedDocumentFrame(self, doc, view, id = -1, title = "", pos = wx.DefaultPosition, size = wx.DefaultSize, style = wx.DEFAULT_FRAME_STYLE):
def CreateTabbedDocumentFrame(self, doc, view, id=-1, title="", pos=wx.DefaultPosition, size=wx.DefaultSize, style=wx.DEFAULT_FRAME_STYLE):
"""
Creates and returns an MDI Document Frame for a Tabbed MDI view
"""
@@ -1809,7 +1843,7 @@ class DocApp(wx.PySimpleApp):
return frame
def CreateMDIDocumentFrame(self, doc, view, id = -1, title = "", pos = wx.DefaultPosition, size = wx.DefaultSize, style = wx.DEFAULT_FRAME_STYLE):
def CreateMDIDocumentFrame(self, doc, view, id=-1, title="", pos=wx.DefaultPosition, size=wx.DefaultSize, style=wx.DEFAULT_FRAME_STYLE):
"""
Creates and returns an MDI Document Frame.
"""
@@ -1924,7 +1958,7 @@ class DocApp(wx.PySimpleApp):
def CreateChildDocument(self, parentDocument, documentType, objectToEdit, path = ''):
def CreateChildDocument(self, parentDocument, documentType, objectToEdit, path=''):
"""
Creates a child window of a document that edits an object. The child window
is managed by the parent document frame, so it will be prompted to close if its
@@ -2043,7 +2077,7 @@ class DocMDIParentFrame(wx.lib.docview.DocMDIParentFrame, DocFrameMixIn, DocMDIP
"""
def __init__(self, docManager, parent, id, title, pos = wx.DefaultPosition, size = wx.DefaultSize, style = wx.DEFAULT_FRAME_STYLE, name = "DocMDIFrame", embeddedWindows = 0):
def __init__(self, docManager, parent, id, title, pos=wx.DefaultPosition, size=wx.DefaultSize, style=wx.DEFAULT_FRAME_STYLE, name="DocMDIFrame", embeddedWindows=0):
"""
Initializes the DocMDIParentFrame with the default menubar, toolbar, and status bar. Use the
optional embeddedWindows parameter with the embedded window constants to create embedded
@@ -2148,7 +2182,7 @@ class DocSDIFrame(wx.lib.docview.DocChildFrame, DocFrameMixIn):
"""
def __init__(self, doc, view, parent, id, title, pos = wx.DefaultPosition, size = wx.DefaultSize, style = wx.DEFAULT_FRAME_STYLE, name = "DocSDIFrame"):
def __init__(self, doc, view, parent, id, title, pos=wx.DefaultPosition, size=wx.DefaultSize, style=wx.DEFAULT_FRAME_STYLE, name="DocSDIFrame"):
"""
Initializes the DocSDIFrame with the default menubar, toolbar, and status bar.
"""
@@ -2374,7 +2408,7 @@ class FilePropertiesService(DocService):
self._customEventHandlers = []
def InstallControls(self, frame, menuBar = None, toolBar = None, statusBar = None, document = None):
def InstallControls(self, frame, menuBar=None, toolBar=None, statusBar=None, document=None):
"""
Installs a File/Properties menu item.
"""
@@ -2418,7 +2452,7 @@ class FilePropertiesService(DocService):
return False
def ShowPropertiesDialog(self, filename = None):
def ShowPropertiesDialog(self, filename=None):
"""
Shows the PropertiesDialog for the specified file.
"""
@@ -2453,7 +2487,7 @@ class FilePropertiesService(DocService):
self._customEventHandlers.remove(handler)
def chopPath(self, text, length = 36):
def chopPath(self, text, length=36):
"""
Simple version of textwrap. textwrap.fill() unfortunately chops lines at spaces
and creates odd word boundaries. Instead, we will chop the path without regard to
@@ -2494,7 +2528,7 @@ class FilePropertiesDialog(wx.Dialog):
"""
Initializes the properties dialog.
"""
wx.Dialog.__init__(self, parent, -1, _("File Properties"), size = (310, 330))
wx.Dialog.__init__(self, parent, -1, _("File Properties"), size=(310, 330))
HALF_SPACE = 5
SPACE = 10
@@ -2635,14 +2669,14 @@ class ChildDocTemplate(wx.lib.docview.DocTemplate):
"""
def __init__(self, manager, description, filter, dir, ext, docTypeName, viewTypeName, docType, viewType, flags = wx.lib.docview.TEMPLATE_INVISIBLE, icon = None):
def __init__(self, manager, description, filter, dir, ext, docTypeName, viewTypeName, docType, viewType, flags=wx.lib.docview.TEMPLATE_INVISIBLE, icon=None):
"""
Initializes the ChildDocTemplate.
"""
wx.lib.docview.DocTemplate.__init__(self, manager, description, filter, dir, ext, docTypeName, viewTypeName, docType, viewType, flags = flags, icon = icon)
wx.lib.docview.DocTemplate.__init__(self, manager, description, filter, dir, ext, docTypeName, viewTypeName, docType, viewType, flags=flags, icon=icon)
def CreateDocument(self, path, flags, data = None, parentDocument = None):
def CreateDocument(self, path, flags, data=None, parentDocument=None):
"""
Called when a ChildDocument is to be created and does the minimum such that the
ChildDocument looks like a real Document to the framework.
@@ -2687,7 +2721,7 @@ class WindowMenuService(DocService):
self.SELECT_MORE_WINDOWS_ID = wx.NewId()
def InstallControls(self, frame, menuBar = None, toolBar = None, statusBar = None, document = None):
def InstallControls(self, frame, menuBar=None, toolBar=None, statusBar=None, document=None):
"""
Installs the Window menu.
"""
@@ -2796,7 +2830,7 @@ class WindowMenuService(DocService):
return [self.SELECT_WINDOW_1_ID, self.SELECT_WINDOW_2_ID, self.SELECT_WINDOW_3_ID, self.SELECT_WINDOW_4_ID, self.SELECT_WINDOW_5_ID, self.SELECT_WINDOW_6_ID, self.SELECT_WINDOW_7_ID, self.SELECT_WINDOW_8_ID, self.SELECT_WINDOW_9_ID]
def _GetWindowMenuFrameList(self, currentFrame = None):
def _GetWindowMenuFrameList(self, currentFrame=None):
"""
Returns the Frame associated with each menu item in the Window menu.
"""