git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@12897 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
		
			
				
	
	
		
			85 lines
		
	
	
		
			2.6 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			85 lines
		
	
	
		
			2.6 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
#!/usr/bin/env python
 | 
						|
 | 
						|
from wxPython.wx import *
 | 
						|
from wxPython.dllwidget import wxDllWidget, wxDllWidget_GetDllExt
 | 
						|
 | 
						|
#----------------------------------------------------------------------
 | 
						|
 | 
						|
class TestFrame(wxFrame):
 | 
						|
    def __init__(self):
 | 
						|
        wxFrame.__init__(self, None, -1, "Test wxDllWidget")
 | 
						|
 | 
						|
        menu = wxMenu()
 | 
						|
        menu.Append(101, "Send command &1")
 | 
						|
        menu.Append(102, "Send command &2")
 | 
						|
        menu.Append(103, "Send command &3")
 | 
						|
        menu.AppendSeparator()
 | 
						|
        menu.Append(110, "E&xit")
 | 
						|
 | 
						|
        mb = wxMenuBar()
 | 
						|
        mb.Append(menu, "&Test")
 | 
						|
        self.SetMenuBar(mb)
 | 
						|
 | 
						|
        EVT_MENU_RANGE(self, 101, 109, self.OnSendCommand)
 | 
						|
        EVT_MENU(self, 110, self.OnExit)
 | 
						|
 | 
						|
        panel = wxPanel(self, -1)
 | 
						|
        panel.SetFont(wxFont(12, wxSWISS, wxNORMAL, wxBOLD))
 | 
						|
 | 
						|
        st = wxStaticText(panel, -1,
 | 
						|
                          "The widget below was dynamically imported from\n"
 | 
						|
                          "test_dll.dll or test_dll.so with no prior knowledge\n"
 | 
						|
                          "of it's contents or structure by wxPython.")
 | 
						|
 | 
						|
        self.dw = dw = wxDllWidget(panel, -1,
 | 
						|
                                   "test_dll" + wxDllWidget_GetDllExt(),
 | 
						|
                                   "TestWindow",
 | 
						|
                                   size=(250, 150))
 | 
						|
 | 
						|
        if dw.Ok():
 | 
						|
            # The embedded window is the one exported from the DLL
 | 
						|
            print dw.GetWidgetWindow().GetClassName()
 | 
						|
 | 
						|
            # This shows that we can give it a child from this side of things.
 | 
						|
            # You can also call any wxWindow methods on it too.
 | 
						|
            wxStaticText(dw.GetWidgetWindow(), -1,
 | 
						|
                         "Loaded from test_dll...", pos=(10,10))
 | 
						|
        else:
 | 
						|
            wxStaticText(dw, -1, "ERROR!!!!", pos=(20,20))
 | 
						|
 | 
						|
        sizer = wxBoxSizer(wxVERTICAL)
 | 
						|
        sizer.Add(wxStaticLine(panel, -1), 0, wxGROW)
 | 
						|
        sizer.Add(st, 0, wxGROW|wxALL, 5)
 | 
						|
        sizer.Add(dw, 1, wxGROW|wxALL, 5)
 | 
						|
 | 
						|
        panel.SetSizer(sizer)
 | 
						|
        panel.SetAutoLayout(true)
 | 
						|
        sizer.Fit(self)
 | 
						|
        sizer.SetSizeHints(self)
 | 
						|
 | 
						|
 | 
						|
    def OnExit(self, evt):
 | 
						|
        self.Close()
 | 
						|
 | 
						|
 | 
						|
    def OnSendCommand(self, evt):
 | 
						|
        ID = evt.GetId() - 100  # use the menu ID as the command
 | 
						|
        param = ""
 | 
						|
        if ID == 2:
 | 
						|
            dlg = wxTextEntryDialog(self, "Enter a colour name to pass to the embedded widget:")
 | 
						|
            if dlg.ShowModal() == wxID_OK:
 | 
						|
                param = dlg.GetValue()
 | 
						|
            dlg.Destroy()
 | 
						|
        self.dw.SendCommand(ID, param)
 | 
						|
 | 
						|
 | 
						|
 | 
						|
#----------------------------------------------------------------------
 | 
						|
 | 
						|
 | 
						|
if __name__ == "__main__":
 | 
						|
    app = wxPySimpleApp()
 | 
						|
    frame = TestFrame()
 | 
						|
    frame.Show(true)
 | 
						|
    app.MainLoop()
 |