X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/d6c9c1b71e069396bbe3850862de9aa10e6812e0..b231914f6abe2c148193b006a0919d60575f9a20:/samples/minimal/minimal.cpp diff --git a/samples/minimal/minimal.cpp b/samples/minimal/minimal.cpp index 7f1ab0047c..59e20e6ca9 100644 --- a/samples/minimal/minimal.cpp +++ b/samples/minimal/minimal.cpp @@ -16,9 +16,10 @@ // ---------------------------------------------------------------------------- // headers // ---------------------------------------------------------------------------- + #ifdef __GNUG__ - #pragma implementation "minimal.cpp" - #pragma interface "minimal.cpp" +// #pragma implementation "minimal.cpp" +// #pragma interface "minimal.cpp" #endif // For compilers that support precompilation, includes "wx/wx.h". @@ -34,11 +35,15 @@ #include "wx/wx.h" #endif +#include "wx/dynarray.h" + +WX_DEFINE_ARRAY(wxWindow *, wxArrayLboxes); + // ---------------------------------------------------------------------------- // resources // ---------------------------------------------------------------------------- // the application icon -#if defined(__WXGTK__) || defined(__WXMOTIF__) +#if defined(__WXGTK__) || defined(__WXMOTIF__) || defined(__WXMAC__) #include "mondrian.xpm" #endif @@ -67,20 +72,15 @@ public: MyFrame(const wxString& title, const wxPoint& pos, const wxSize& size); // event handlers (these functions should _not_ be virtual) - void OnPaint(wxPaintEvent& event) - { - wxPaintDC dc(this); - dc.DrawRectangle(20, 20, 100, 100); - dc.SetPen(*wxRED_PEN); - dc.SetDeviceOrigin(20, 20); - dc.SetClippingRegion(0, 0, 100, 100); - dc.DrawLine(0, 0, 1000, 1000); - } - void OnQuit(wxCommandEvent& event); void OnAbout(wxCommandEvent& event); + void OnCreateLbox(wxCommandEvent& event); + void OnDeleteLbox(wxCommandEvent& event); private: + wxArrayLboxes m_lboxes; + wxCoord m_pos; + // any class wishing to process wxWindows events must use this macro DECLARE_EVENT_TABLE() }; @@ -94,9 +94,14 @@ enum { // menu items Minimal_Quit = 1, - Minimal_About + Minimal_About, + Minimal_CreateLbox, + Minimal_DeleteLbox, }; +static const size_t NUM_LBOXES = 10; +static const wxCoord POS_STEP = 5; + // ---------------------------------------------------------------------------- // event tables and other macros for wxWindows // ---------------------------------------------------------------------------- @@ -105,9 +110,10 @@ enum // handlers) which process them. It can be also done at run-time, but for the // simple menu events like this the static method is much simpler. BEGIN_EVENT_TABLE(MyFrame, wxFrame) - EVT_PAINT(MyFrame::OnPaint) EVT_MENU(Minimal_Quit, MyFrame::OnQuit) EVT_MENU(Minimal_About, MyFrame::OnAbout) + EVT_MENU(Minimal_CreateLbox, MyFrame::OnCreateLbox) + EVT_MENU(Minimal_DeleteLbox, MyFrame::OnDeleteLbox) END_EVENT_TABLE() // Create a new application object: this macro will allow wxWindows to create @@ -150,6 +156,8 @@ bool MyApp::OnInit() MyFrame::MyFrame(const wxString& title, const wxPoint& pos, const wxSize& size) : wxFrame((wxFrame *)NULL, -1, title, pos, size) { + m_pos = 0; + #ifdef __WXMAC__ // we need this in order to allow the about menu relocation, since ABOUT is // not the default id of the about menu @@ -159,12 +167,15 @@ MyFrame::MyFrame(const wxString& title, const wxPoint& pos, const wxSize& size) // set the frame icon SetIcon(wxICON(mondrian)); +#if wxUSE_MENUS // create a menu bar wxMenu *menuFile = new wxMenu("", wxMENU_TEAROFF); // the "About" item should be in the help menu wxMenu *helpMenu = new wxMenu; helpMenu->Append(Minimal_About, "&About...\tCtrl-A", "Show about dialog"); + helpMenu->Append(Minimal_CreateLbox, "&Create 10 listboxes\tCtrl-C"); + helpMenu->Append(Minimal_DeleteLbox, "&Delete 10 listboxes\tCtrl-D"); menuFile->Append(Minimal_Quit, "E&xit\tAlt-X", "Quit this program"); @@ -175,6 +186,7 @@ MyFrame::MyFrame(const wxString& title, const wxPoint& pos, const wxSize& size) // ... and attach this menu bar to the frame SetMenuBar(menuBar); +#endif // wxUSE_MENUS #if wxUSE_STATUSBAR // create a status bar just for fun (by default with 1 pane only) @@ -200,3 +212,28 @@ void MyFrame::OnAbout(wxCommandEvent& WXUNUSED(event)) wxMessageBox(msg, "About Minimal", wxOK | wxICON_INFORMATION, this); } + +void MyFrame::OnCreateLbox(wxCommandEvent& WXUNUSED(event)) +{ + for ( size_t n = 0; n < NUM_LBOXES; n++ ) + { + m_lboxes.Add(new wxListBox(this, -1, wxPoint(m_pos, m_pos))); + m_pos += POS_STEP; + } +} + +void MyFrame::OnDeleteLbox(wxCommandEvent& WXUNUSED(event)) +{ + size_t count = m_lboxes.GetCount(); + if ( count < NUM_LBOXES ) + return; + + for ( size_t n = 0; n < NUM_LBOXES; n++ ) + { + delete m_lboxes[--count]; + m_lboxes.RemoveAt(count); + + m_pos -= POS_STEP; + } +} +