X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/9a83f860948059b0273b5cc6d9e43fadad3ebfca..a4ea083bbdf710d3234dcbd2eafb5d0e078f8348:/samples/xrc/myframe.cpp diff --git a/samples/xrc/myframe.cpp b/samples/xrc/myframe.cpp index 50797d3a91..2c902d9511 100644 --- a/samples/xrc/myframe.cpp +++ b/samples/xrc/myframe.cpp @@ -2,7 +2,6 @@ // Name: myframe.cpp // Purpose: XML resources sample: A derived frame, called MyFrame // Author: Robert O'Connor (rob@medicalmnemonics.com), Vaclav Slavik -// RCS-ID: $Id$ // Copyright: (c) Robert O'Connor and Vaclav Slavik // Licence: wxWindows licence //----------------------------------------------------------------------------- @@ -49,7 +48,10 @@ #include "derivdlg.h" // Our custom class, for the custom class example. #include "custclas.h" -// For functions to manipulate our wxTreeCtrl and wxListCtrl +// And our objref dialog, for the object reference and ID range example. +#include "objrefdlg.h" +// For functions to manipulate the corresponding controls. +#include "wx/animate.h" #include "wx/treectrl.h" #include "wx/listctrl.h" @@ -57,10 +59,10 @@ // Regular resources (the non-XRC kind). //----------------------------------------------------------------------------- -// The application icon -// All non-MSW platforms use an xpm. MSW uses an .ico file -#if defined(__WXGTK__) || defined(__WXX11__) || defined(__WXMOTIF__) || defined(__WXMAC__) || defined(__WXMGL__) - #include "rc/appicon.xpm" +// the application icon (under Windows and OS/2 it is in resources and even +// though we could still include the XPM here it would be unused) +#ifndef wxHAS_IMAGES_IN_RESOURCES + #include "../sample.xpm" #endif //----------------------------------------------------------------------------- @@ -83,10 +85,12 @@ BEGIN_EVENT_TABLE(MyFrame, wxFrame) EVT_MENU(XRCID("derived_tool_or_menuitem"), MyFrame::OnDerivedDialogToolOrMenuCommand) EVT_MENU(XRCID("controls_tool_or_menuitem"), MyFrame::OnControlsToolOrMenuCommand) EVT_MENU(XRCID("uncentered_tool_or_menuitem"), MyFrame::OnUncenteredToolOrMenuCommand) + EVT_MENU(XRCID("obj_ref_tool_or_menuitem"), MyFrame::OnObjRefToolOrMenuCommand) EVT_MENU(XRCID("custom_class_tool_or_menuitem"), MyFrame::OnCustomClassToolOrMenuCommand) 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("recursive_load"), MyFrame::OnRecursiveLoad) EVT_MENU(wxID_ABOUT, MyFrame::OnAboutToolOrMenuCommand) END_EVENT_TABLE() @@ -108,7 +112,7 @@ MyFrame::MyFrame(wxWindow* parent) wxXmlResource::Get()->LoadFrame(this, parent, wxT("main_frame")); // Set the icon for the frame. - SetIcon(wxICON(appicon)); + SetIcon(wxICON(sample)); // Load the menubar from XRC and set this frame's menubar to it. SetMenuBar(wxXmlResource::Get()->LoadMenuBar(wxT("main_menu"))); @@ -225,9 +229,9 @@ void MyFrame::OnControlsToolOrMenuCommand(wxCommandEvent& WXUNUSED(event)) // 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"); + list->InsertItem(0, "Athos", 0); list->SetItem(0, 1, "90", 2); + list->InsertItem(1, "Porthos", 5); list->SetItem(1, 1, "120", 3); + list->InsertItem(2, "Aramis", 1); list->SetItem(2, 1, "80", 4); #endif // wxUSE_LISTCTRL #if wxUSE_TREECTRL @@ -250,7 +254,7 @@ void MyFrame::OnControlsToolOrMenuCommand(wxCommandEvent& WXUNUSED(event)) #if wxUSE_ANIMATIONCTRL // dynamically connect our event handler for the "clicked" event of the "play" button // in the animation ctrl page of our dialog - dlg.Connect(XRCID("controls_animation_button_play"), wxEVT_COMMAND_BUTTON_CLICKED, + dlg.Connect(XRCID("controls_animation_button_play"), wxEVT_BUTTON, wxCommandEventHandler(MyFrame::OnAnimationCtrlPlay)); #endif @@ -267,6 +271,22 @@ void MyFrame::OnUncenteredToolOrMenuCommand(wxCommandEvent& WXUNUSED(event)) } +void MyFrame::OnObjRefToolOrMenuCommand(wxCommandEvent& WXUNUSED(event)) +{ + // The dialog redirects log messages, so save the old log target first + wxLog* oldlogtarget = wxLog::SetActiveTarget(NULL); + + // Make an instance of the dialog + ObjrefDialog* objrefDialog = new ObjrefDialog(this); + // Show the instance of the dialog, modally. + objrefDialog->ShowModal(); + objrefDialog->Destroy(); + + // Restore the old log target + delete wxLog::SetActiveTarget(oldlogtarget); +} + + void MyFrame::OnCustomClassToolOrMenuCommand(wxCommandEvent& WXUNUSED(event)) { wxDialog dlg; @@ -311,6 +331,47 @@ 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)) {