Spaces:
Sleeping
Sleeping
File size: 4,089 Bytes
d12bc25 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 |
# document and view classes for MFC.
import win32ui
from . import object, window
class View(window.Wnd):
def __init__(self, initobj):
window.Wnd.__init__(self, initobj)
def OnInitialUpdate(self):
pass
# Simple control based views.
class CtrlView(View):
def __init__(self, doc, wndclass, style=0):
View.__init__(self, win32ui.CreateCtrlView(doc, wndclass, style))
class EditView(CtrlView):
def __init__(self, doc):
View.__init__(self, win32ui.CreateEditView(doc))
class RichEditView(CtrlView):
def __init__(self, doc):
View.__init__(self, win32ui.CreateRichEditView(doc))
class ListView(CtrlView):
def __init__(self, doc):
View.__init__(self, win32ui.CreateListView(doc))
class TreeView(CtrlView):
def __init__(self, doc):
View.__init__(self, win32ui.CreateTreeView(doc))
# Other more advanced views.
class ScrollView(View):
def __init__(self, doc):
View.__init__(self, win32ui.CreateView(doc))
class FormView(View):
def __init__(self, doc, id):
View.__init__(self, win32ui.CreateFormView(doc, id))
class Document(object.CmdTarget):
def __init__(self, template, docobj=None):
if docobj is None:
docobj = template.DoCreateDoc()
object.CmdTarget.__init__(self, docobj)
class RichEditDoc(object.CmdTarget):
def __init__(self, template):
object.CmdTarget.__init__(self, template.DoCreateRichEditDoc())
class CreateContext:
"A transient base class used as a CreateContext"
def __init__(self, template, doc=None):
self.template = template
self.doc = doc
def __del__(self):
self.close()
def close(self):
self.doc = None
self.template = None
class DocTemplate(object.CmdTarget):
def __init__(
self, resourceId=None, MakeDocument=None, MakeFrame=None, MakeView=None
):
if resourceId is None:
resourceId = win32ui.IDR_PYTHONTYPE
object.CmdTarget.__init__(self, self._CreateDocTemplate(resourceId))
self.MakeDocument = MakeDocument
self.MakeFrame = MakeFrame
self.MakeView = MakeView
self._SetupSharedMenu_()
def _SetupSharedMenu_(self):
pass # to be overridden by each "app"
def _CreateDocTemplate(self, resourceId):
return win32ui.CreateDocTemplate(resourceId)
def __del__(self):
object.CmdTarget.__del__(self)
def CreateCreateContext(self, doc=None):
return CreateContext(self, doc)
def CreateNewFrame(self, doc):
makeFrame = self.MakeFrame
if makeFrame is None:
makeFrame = window.MDIChildWnd
wnd = makeFrame()
context = self.CreateCreateContext(doc)
wnd.LoadFrame(
self.GetResourceID(), -1, None, context
) # triggers OnCreateClient...
return wnd
def CreateNewDocument(self):
makeDocument = self.MakeDocument
if makeDocument is None:
makeDocument = Document
return makeDocument(self)
def CreateView(self, frame, context):
makeView = self.MakeView
if makeView is None:
makeView = EditView
view = makeView(context.doc)
view.CreateWindow(frame)
class RichEditDocTemplate(DocTemplate):
def __init__(
self, resourceId=None, MakeDocument=None, MakeFrame=None, MakeView=None
):
if MakeView is None:
MakeView = RichEditView
if MakeDocument is None:
MakeDocument = RichEditDoc
DocTemplate.__init__(self, resourceId, MakeDocument, MakeFrame, MakeView)
def _CreateDocTemplate(self, resourceId):
return win32ui.CreateRichEditDocTemplate(resourceId)
def t():
class FormTemplate(DocTemplate):
def CreateView(self, frame, context):
makeView = self.MakeView
# view = FormView(context.doc, win32ui.IDD_PROPDEMO1)
view = ListView(context.doc)
view.CreateWindow(frame)
t = FormTemplate()
return t.OpenDocumentFile(None)
|