|
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657 |
- # This is a sample file, and shows the basic framework for using an "Object" based
- # document, rather than a "filename" based document.
- # This is referenced by the Pythonwin .html documentation.
-
- # In the example below, the OpenObject() method is used instead of OpenDocumentFile,
- # and all the core MFC document open functionality is retained.
-
- import win32ui
- from pywin.mfc import docview
-
-
- class object_template(docview.DocTemplate):
- def __init__(self):
- docview.DocTemplate.__init__(self, None, None, None, object_view)
-
- def OpenObject(self, object): # Use this instead of OpenDocumentFile.
- # Look for existing open document
- for doc in self.GetDocumentList():
- print("document is ", doc)
- if doc.object is object:
- doc.GetFirstView().ActivateFrame()
- return doc
- # not found - new one.
- doc = object_document(self, object)
- frame = self.CreateNewFrame(doc)
- doc.OnNewDocument()
- doc.SetTitle(str(object))
- self.InitialUpdateFrame(frame, doc)
- return doc
-
-
- class object_document(docview.Document):
- def __init__(self, template, object):
- docview.Document.__init__(self, template)
- self.object = object
-
- def OnOpenDocument(self, name):
- raise RuntimeError("Should not be called if template strings set up correctly")
- return 0
-
-
- class object_view(docview.EditView):
- def OnInitialUpdate(self):
- self.ReplaceSel("Object is %s" % repr(self.GetDocument().object))
-
-
- def demo():
- t = object_template()
- d = t.OpenObject(win32ui)
- return (t, d)
-
-
- if __name__ == "__main__":
- import demoutils
-
- if demoutils.NeedGoodGUI():
- demo()
|