|
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879 |
- import commctrl
- import fontdemo
- import win32ui
- from pywin.mfc import docview, window
-
- # derive from CMDIChild. This does much work for us.
-
-
- class SplitterFrame(window.MDIChildWnd):
- def __init__(self):
- # call base CreateFrame
- self.images = None
- window.MDIChildWnd.__init__(self)
-
- def OnCreateClient(self, cp, context):
- splitter = win32ui.CreateSplitter()
- doc = context.doc
- frame_rect = self.GetWindowRect()
- size = ((frame_rect[2] - frame_rect[0]), (frame_rect[3] - frame_rect[1]) // 2)
- sub_size = (size[0] // 2, size[1])
- splitter.CreateStatic(self, 2, 1)
- self.v1 = win32ui.CreateEditView(doc)
- self.v2 = fontdemo.FontView(doc)
- # CListControl view
- self.v3 = win32ui.CreateListView(doc)
- sub_splitter = win32ui.CreateSplitter()
- # pass "splitter" so each view knows how to get to the others
- sub_splitter.CreateStatic(splitter, 1, 2)
- sub_splitter.CreateView(self.v1, 0, 0, (sub_size))
- sub_splitter.CreateView(self.v2, 0, 1, (0, 0)) # size ignored.
- splitter.SetRowInfo(0, size[1], 0)
- splitter.CreateView(self.v3, 1, 0, (0, 0)) # size ignored.
- # Setup items in the imagelist
- self.images = win32ui.CreateImageList(32, 32, 1, 5, 5)
- self.images.Add(win32ui.GetApp().LoadIcon(win32ui.IDR_MAINFRAME))
- self.images.Add(win32ui.GetApp().LoadIcon(win32ui.IDR_PYTHONCONTYPE))
- self.images.Add(win32ui.GetApp().LoadIcon(win32ui.IDR_TEXTTYPE))
- self.v3.SetImageList(self.images, commctrl.LVSIL_NORMAL)
- self.v3.InsertItem(0, "Icon 1", 0)
- self.v3.InsertItem(0, "Icon 2", 1)
- self.v3.InsertItem(0, "Icon 3", 2)
- # self.v3.Arrange(commctrl.LVA_DEFAULT) Hmmm - win95 aligns left always???
- return 1
-
- def OnDestroy(self, msg):
- window.MDIChildWnd.OnDestroy(self, msg)
- if self.images:
- self.images.DeleteImageList()
- self.images = None
-
- def InitialUpdateFrame(self, doc, makeVisible):
- self.v1.ReplaceSel("Hello from Edit Window 1")
- self.v1.SetModifiedFlag(0)
-
-
- class SampleTemplate(docview.DocTemplate):
- def __init__(self):
- docview.DocTemplate.__init__(
- self, win32ui.IDR_PYTHONTYPE, None, SplitterFrame, None
- )
-
- def InitialUpdateFrame(self, frame, doc, makeVisible):
- # print "frame is ", frame, frame._obj_
- # print "doc is ", doc, doc._obj_
- self._obj_.InitialUpdateFrame(frame, doc, makeVisible) # call default handler.
- frame.InitialUpdateFrame(doc, makeVisible)
-
-
- def demo():
- template = SampleTemplate()
- doc = template.OpenDocumentFile(None)
- doc.SetTitle("Splitter Demo")
-
-
- if __name__ == "__main__":
- import demoutils
-
- if demoutils.NeedGoodGUI():
- demo()
|