X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/863d562dfcfbdd2dffb8a5ef929f4372a92c5fda..7c3310596eab058b89e7946625eb20b293860367:/samples/xrc/myframe.cpp diff --git a/samples/xrc/myframe.cpp b/samples/xrc/myframe.cpp index 618fe342a4..0e8e1f6049 100644 --- a/samples/xrc/myframe.cpp +++ b/samples/xrc/myframe.cpp @@ -78,8 +78,7 @@ BEGIN_EVENT_TABLE(MyFrame, wxFrame) EVT_MENU(XRCID("unload_resource_menuitem"), MyFrame::OnUnloadResourceMenuCommand) EVT_MENU(XRCID("reload_resource_menuitem"), MyFrame::OnReloadResourceMenuCommand) - EVT_MENU(XRCID("exit_tool_or_menuitem"), MyFrame::OnExitToolOrMenuCommand) - EVT_MENU(XRCID("exit_tool_or_menuitem"), MyFrame::OnExitToolOrMenuCommand) + EVT_MENU(wxID_EXIT, MyFrame::OnExitToolOrMenuCommand) EVT_MENU(XRCID("non_derived_dialog_tool_or_menuitem"), MyFrame::OnNonDerivedDialogToolOrMenuCommand) EVT_MENU(XRCID("derived_tool_or_menuitem"), MyFrame::OnDerivedDialogToolOrMenuCommand) EVT_MENU(XRCID("controls_tool_or_menuitem"), MyFrame::OnControlsToolOrMenuCommand) @@ -88,7 +87,8 @@ BEGIN_EVENT_TABLE(MyFrame, wxFrame) EVT_MENU(XRCID("platform_property_tool_or_menuitem"), MyFrame::OnPlatformPropertyToolOrMenuCommand) EVT_MENU(XRCID("art_provider_tool_or_menuitem"), MyFrame::OnArtProviderToolOrMenuCommand) EVT_MENU(XRCID("variable_expansion_tool_or_menuitem"), MyFrame::OnVariableExpansionToolOrMenuCommand) - EVT_MENU(XRCID("about_tool_or_menuitem"), MyFrame::OnAboutToolOrMenuCommand) + EVT_MENU(XRCID("recursive_load"), MyFrame::OnRecursiveLoad) + EVT_MENU(wxID_ABOUT, MyFrame::OnAboutToolOrMenuCommand) END_EVENT_TABLE() //----------------------------------------------------------------------------- @@ -137,18 +137,26 @@ MyFrame::MyFrame(wxWindow* parent) void MyFrame::OnUnloadResourceMenuCommand(wxCommandEvent& WXUNUSED(event)) { if ( wxXmlResource::Get()->Unload(wxT("rc/basicdlg.xrc")) ) - wxLogMessage(_T("Basic dialog resource has now been unloaded, you ") - _T("won't be able to use it before loading it again")); + { + wxLogMessage(wxT("Basic dialog resource has now been unloaded, you ") + wxT("won't be able to use it before loading it again")); + } else - wxLogWarning(_T("Failed to unload basic dialog resource")); + { + wxLogWarning(wxT("Failed to unload basic dialog resource")); + } } void MyFrame::OnReloadResourceMenuCommand(wxCommandEvent& WXUNUSED(event)) { if ( wxXmlResource::Get()->Load(wxT("rc/basicdlg.xrc")) ) - wxLogStatus(_T("Basic dialog resource has been loaded.")); + { + wxLogStatus(wxT("Basic dialog resource has been loaded.")); + } else - wxLogError(_T("Failed to load basic dialog resource")); + { + wxLogError(wxT("Failed to load basic dialog resource")); + } } void MyFrame::OnExitToolOrMenuCommand(wxCommandEvent& WXUNUSED(event)) @@ -208,22 +216,20 @@ void MyFrame::OnControlsToolOrMenuCommand(wxCommandEvent& WXUNUSED(event)) wxXmlResource::Get()->LoadDialog(&dlg, this, wxT("controls_dialog")); #if wxUSE_LISTCTRL - // There is no data in the listctrl. This will add some columns - // and some data. You don't need to use any pointers - // at all to manipulate the controls, just simply use the XRCCTL(...) macros. - // "controls_treectrl" is the name of this control in the XRC. - // (1) Insert a column, with the column header of "Name" - // (The '_' function around "Name" marks this string as one to translate). - XRCCTRL(dlg, "controls_listctrl", wxListCtrl)->InsertColumn( 0, - _("Name"), - wxLIST_FORMAT_LEFT, - ( 200 ) - ); - // (2) Insert some items into the listctrl - XRCCTRL(dlg, "controls_listctrl", wxListCtrl)->InsertItem(0,wxT("Todd Hope")); - XRCCTRL(dlg, "controls_listctrl", wxListCtrl)->InsertItem(1,wxT("Kim Wynd")); - XRCCTRL(dlg, "controls_listctrl", wxListCtrl)->InsertItem(2,wxT("Leon Li")); -#endif + // The resource file specifies the columns of the control as they are + // typically static while the items themselves are added from here as + // usually they are not static (but if they are, they can be defined in the + // resources too, see the two other list controls definitions in + // controls.xrc) + + // Insert some items into the listctrl: notice that we can access it using + // XRCCTRL + wxListCtrl * const list = XRCCTRL(dlg, "controls_listctrl", wxListCtrl); + + list->InsertItem(0, "Athos"); list->SetItem(0, 1, "90"); + list->InsertItem(1, "Porthos"); list->SetItem(1, 1, "120"); + list->InsertItem(2, "Aramis"); list->SetItem(2, 1, "80"); +#endif // wxUSE_LISTCTRL #if wxUSE_TREECTRL // There is no data in the tree ctrl. These lines will add some. @@ -306,12 +312,53 @@ void MyFrame::OnVariableExpansionToolOrMenuCommand(wxCommandEvent& WXUNUSED(even dlg.ShowModal(); } +void MyFrame::OnRecursiveLoad(wxCommandEvent& WXUNUSED(event)) +{ + // this dialog is created manually to show how you can inject a single + // control from XRC into an existing dialog + // + // this is a slightly contrived example, please keep in mind that it's done + // only to demonstrate LoadObjectRecursively() in action and is not the + // recommended to do this + wxDialog dlg(NULL, wxID_ANY, "Recursive Load Example", + wxDefaultPosition, wxDefaultSize, + wxDEFAULT_DIALOG_STYLE | wxRESIZE_BORDER); + wxSizer * const sizer = new wxBoxSizer(wxVERTICAL); + sizer->Add + ( + new wxStaticText + ( + &dlg, + wxID_ANY, + "The entire tree book control below is loaded from XRC" + ), + wxSizerFlags().Expand().Border() + ); + + sizer->Add + ( + static_cast + ( + // notice that controls_treebook is defined inside a notebook page + // inside a dialog defined in controls.xrc and so LoadObject() + // wouldn't find it -- but LoadObjectRecursively() does + wxXmlResource::Get()-> + LoadObjectRecursively(&dlg, "controls_treebook", "wxTreebook") + ), + wxSizerFlags(1).Expand().Border() + ); + + dlg.SetSizer(sizer); + dlg.SetClientSize(400, 200); + + dlg.ShowModal(); +} void MyFrame::OnAboutToolOrMenuCommand(wxCommandEvent& WXUNUSED(event)) { wxString msg; - msg.Printf( _T("This is the about dialog of XML resources demo.\n") - _T("Welcome to %s"), wxVERSION_STRING); + msg.Printf( wxT("This is the about dialog of XML resources demo.\n") + wxT("Welcome to %s"), wxVERSION_STRING); wxMessageBox(msg, _("About XML resources demo"), wxOK | wxICON_INFORMATION, this); }