From: Paul K <pau...@ya...> - 2012-06-14 22:01:55
|
Hi John, This looks like exactly the information I was looking for. DynamicCast is the method I was missing. Thank you for the detailed examples. Paul. On Tue, Jun 12, 2012 at 8:57 PM, John Labenski <jla...@gm...> wrote: > On Tue, Jun 12, 2012 at 2:26 AM, Paul K <pau...@ya...> wrote: >> >> I have the same problem as described here >> (https://groups.google.com/forum/?fromgroups#!topic/wxpython-users/T78KWU6vS_A): >> when tabs in AuiNotebook are moved using drag and drop, their order >> changes on the screen, but not internally and I'd like to enumerate >> them in the right order. > > Use a unique wxWindow ID or wxWindow::Get/SetName() to give each > notebook page a unique name so you can find the window no matter what. > You can also use wxWindow::FindWindowById/Name(). Doing this should be > the cleanest solution since you will definitely know what window > you're getting. > >> I can get the list of children for my notebook >> (notebook:GetChildren()) and can enumerate those using >> GetFirst()/GetNext() and then get their target using GetData(), but >> all their targets are of wxWindow type. How do I know which one is >> AuiTabCtrl and how do I cast it to AuiTabCtrl to call GetPage()? > > Here's how to get information about what an object is and how to cast > wxObject derived classes up and down their class hierarchy. > > The wxClassInfo is may not be right for all classes and this function > only works for wxObject derived classes, but it will work for all > major classes. You can also just call Lua's tostring() function to get > the object type as string name. NOTE! The integer number is NOT fixed > between versions, but will be constant within a single run. > > Here's some code run in the wxLuaEdit console to show some of the > possibilities and what works and what doesn't. > > f = wx.wxFrame(wx.NULL, -1, "Hello") > w = wx.wxWindow(f, -1) > f:Show(true) > c = wx.wxComboBox(w, -1) > ci = c:GetClassInfo() -- from wxObject > print(ci) > userdata: 0x161d918 [wxClassInfo(0x7f33d2cf8b40, 23)] > print(ci:GetClassName()) > wxComboBox > print(tostring(c)) > userdata: 0x161b368 [wxComboBox(0x1614c00, 134)] > cw = c:DynamicCast("wxWindow") > print(cw) > userdata: 0x16273f8 [wxWindow(0x1614c00, 368)] > ciw = ci:DynamicCast("wxWindow") > > Error: Lua: Error while running chunk > [string "wxLuaShell"]:1: wxLua: Unable to call an unknown method > 'DynamicCast' on a 'wxClassInfo' type. > stack traceback: > [C]: ? > [string "wxLuaShell"]:1: in main chunk > > c_from_win = cw:DynamicCast("wxComboBox") > print(c_from_win) > userdata: 0x161b368 [wxComboBox(0x1614c00, 134)] > dialog_from_combobox = cw:DynamicCast("wxDialog") > > Error: Lua: Error while running chunk > [string "wxLuaShell"]:1: wxLua: wxObject::DynamicCast() Unable to cast > a 'wxComboBox' to a 'wxDialog' with wxClassInfo 'wxDialog'. > Function called: 'DynamicCast(wxWindow, string)' > 01. wxObject::DynamicCast(wxObject(self), string) > stack traceback: > [C]: in function 'DynamicCast' > [string "wxLuaShell"]:1: in main chunk > > Hope this helps, > John > > ------------------------------------------------------------------------------ > Live Security Virtual Conference > Exclusive live event will cover all the ways today's security and > threat landscape has changed and how IT managers can respond. Discussions > will include endpoint security, mobile security and the latest in malware > threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/ > _______________________________________________ > wxlua-users mailing list > wxl...@li... > https://lists.sourceforge.net/lists/listinfo/wxlua-users |