/env/Lib/site-packages/pywin32-218-py2.7-win32.egg/pywin/Demos/ocx/ocxtest.py
Python | 186 lines | 154 code | 15 blank | 17 comment | 7 complexity | 863c843c409ec3e047db4ed84047d44a MD5 | raw file
- # OCX Tester for Pythonwin
- #
- # This file _is_ ready to run. All that is required is that the OCXs being tested
- # are installed on your machine.
- #
- # The .py files behind the OCXs will be automatically generated and imported.
- from pywin.mfc import dialog, window, activex
- import win32ui, win32uiole
- import win32con
- import os, sys, win32api, glob
- from win32com.client import gencache
- def MakeDlgTemplate():
- style = win32con.DS_MODALFRAME | win32con.WS_POPUP | win32con.WS_VISIBLE | win32con.WS_CAPTION | win32con.WS_SYSMENU | win32con.DS_SETFONT
- cs = win32con.WS_CHILD | win32con.WS_VISIBLE
- dlg = [ ["OCX Demos", (0, 0, 350, 350), style, None, (8, "MS Sans Serif")], ]
- s = win32con.WS_TABSTOP | cs
- # dlg.append([131, None, 130, (5, 40, 110, 48),
- # s | win32con.LBS_NOTIFY | win32con.LBS_SORT | win32con.LBS_NOINTEGRALHEIGHT | win32con.WS_VSCROLL | win32con.WS_BORDER])
- # dlg.append(["{8E27C92B-1264-101C-8A2F-040224009C02}", None, 131, (5, 40, 110, 48),win32con.WS_TABSTOP])
- dlg.append([128, "About", win32con.IDOK, (124, 5, 50, 14), s | win32con.BS_DEFPUSHBUTTON])
- s = win32con.BS_PUSHBUTTON | s
- dlg.append([128, "Close", win32con.IDCANCEL, (124, 22, 50, 14), s])
-
- return dlg
- ####################################
- #
- # Calendar test code
- #
- def GetTestCalendarClass():
- global calendarParentModule
- win32ui.DoWaitCursor(1)
- calendarParentModule = gencache.EnsureModule("{8E27C92E-1264-101C-8A2F-040224009C02}", 0, 7, 0)
- win32ui.DoWaitCursor(0)
- if calendarParentModule is None:
- return None
- class TestCalDialog(dialog.Dialog):
- def OnInitDialog(self):
-
- class MyCal(activex.Control, calendarParentModule.Calendar):
- def OnAfterUpdate(self):
- print "OnAfterUpdate"
- def OnClick(self):
- print "OnClick"
- def OnDblClick(self):
- print "OnDblClick"
- def OnKeyDown(self, KeyCode, Shift):
- print "OnKeyDown", KeyCode, Shift
- def OnKeyPress(self, KeyAscii):
- print "OnKeyPress", KeyAscii
- def OnKeyUp(self, KeyCode, Shift):
- print "OnKeyUp", KeyCode, Shift
- def OnBeforeUpdate(self, Cancel):
- print "OnBeforeUpdate", Cancel
- def OnNewMonth(self):
- print "OnNewMonth"
- def OnNewYear(self):
- print "OnNewYear"
- rc = dialog.Dialog.OnInitDialog(self)
- self.olectl = MyCal()
- try:
- self.olectl.CreateControl("OCX", win32con.WS_TABSTOP | win32con.WS_VISIBLE, (7,43,500,300), self._obj_, 131)
- except win32ui.error:
- self.MessageBox("The Calendar Control could not be created")
- self.olectl = None
- self.EndDialog(win32con.IDCANCEL)
- return rc
- def OnOK(self):
- self.olectl.AboutBox()
-
- return TestCalDialog
-
- ####################################
- #
- # Video Control
- #
- def GetTestVideoModule():
- global videoControlModule, videoControlFileName
- win32ui.DoWaitCursor(1)
- videoControlModule = gencache.EnsureModule("{05589FA0-C356-11CE-BF01-00AA0055595A}", 0, 2, 0)
- win32ui.DoWaitCursor(0)
- if videoControlModule is None:
- return None
- fnames = glob.glob(os.path.join(win32api.GetWindowsDirectory(), "*.avi"))
- if not fnames:
- print "No AVI files available in system directory"
- return None
- videoControlFileName = fnames[0]
- return videoControlModule
- def GetTestVideoDialogClass():
- if GetTestVideoModule() is None:
- return None
- class TestVideoDialog(dialog.Dialog):
- def OnInitDialog(self):
- rc = dialog.Dialog.OnInitDialog(self)
- try:
- self.olectl = activex.MakeControlInstance(videoControlModule.ActiveMovie)
- self.olectl.CreateControl("", win32con.WS_TABSTOP | win32con.WS_VISIBLE, (7,43,500,300), self._obj_, 131)
- except win32ui.error:
- self.MessageBox("The Video Control could not be created")
- self.olectl = None
- self.EndDialog(win32con.IDCANCEL)
- return
- self.olectl.FileName = videoControlFileName
- # self.olectl.Run()
- return rc
- def OnOK(self):
- self.olectl.AboutBox()
- return TestVideoDialog
- ###############
- #
- # An OCX in an MDI Frame
- #
- class OCXFrame(window.MDIChildWnd):
- def __init__(self):
- pass # Dont call base class doc/view version...
- def Create(self, controlClass, title, rect = None, parent = None):
- style = win32con.WS_CHILD | win32con.WS_VISIBLE | win32con.WS_OVERLAPPEDWINDOW
- self._obj_ = win32ui.CreateMDIChild()
- self._obj_.AttachObject(self)
- self._obj_.CreateWindow(None, title, style, rect, parent)
-
- rect = self.GetClientRect()
- rect = (0,0,rect[2]-rect[0], rect[3]-rect[1])
- self.ocx = controlClass()
- self.ocx.CreateControl("", win32con.WS_VISIBLE | win32con.WS_CHILD, rect, self, 1000)
- def MDITest():
- calendarParentModule = gencache.EnsureModule("{8E27C92E-1264-101C-8A2F-040224009C02}", 0, 7, 0)
- class MyCal(activex.Control, calendarParentModule.Calendar):
- def OnAfterUpdate(self):
- print "OnAfterUpdate"
- def OnClick(self):
- print "OnClick"
-
- f = OCXFrame()
- f.Create(MyCal, "Calendar Test")
- def test1():
- klass = GetTestCalendarClass()
- if klass is None:
- print "Can not test the MSAccess Calendar control - it does not appear to be installed"
- return
- d = klass(MakeDlgTemplate() )
- d.DoModal()
- def test2():
- klass = GetTestVideoDialogClass()
- if klass is None:
- print "Can not test the Video OCX - it does not appear to be installed,"
- print "or no AVI files can be found."
- return
- d = klass(MakeDlgTemplate() )
- d.DoModal()
- d = None
- def test3():
- d = TestCOMMDialog(MakeDlgTemplate() )
- d.DoModal()
- d = None
- def testall():
- test1()
- test2()
- def demo():
- testall()
- if __name__=='__main__':
- import demoutils
- if demoutils.NeedGoodGUI():
- testall()