58 lines
1.7 KiB
Python
58 lines
1.7 KiB
Python
|
# 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()
|