Spaces:
Sleeping
Sleeping
# 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() | |