X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/a99c96b0ffb9d689a249ac2eb968c8c0b8c16dea..5cf83b1ac09099a783104e1bb34d9bac9034c21c:/demos/life/dialogs.cpp diff --git a/demos/life/dialogs.cpp b/demos/life/dialogs.cpp index 635aa75da1..36e98059a7 100644 --- a/demos/life/dialogs.cpp +++ b/demos/life/dialogs.cpp @@ -1,5 +1,5 @@ ///////////////////////////////////////////////////////////////////////////// -// Name: dialogs.cpp +// Name: life/dialogs.cpp // Purpose: Life! dialogs // Author: Guillermo Rodriguez Garcia, // Modified by: @@ -13,10 +13,6 @@ // headers, declarations, constants // ========================================================================== -#ifdef __GNUG__ - #pragma implementation "dialogs.h" -#endif - // For compilers that support precompilation, includes "wx/wx.h". #include "wx/wxprec.h" @@ -30,6 +26,7 @@ #include "wx/statline.h" #include "wx/minifram.h" +#include "wx/settings.h" #include "dialogs.h" #include "life.h" @@ -40,10 +37,7 @@ // resources // -------------------------------------------------------------------------- -#if defined(__WXGTK__) || defined(__WXMOTIF__) || defined(__WXMAC__) - // logo for the about dialog - #include "bitmaps/life.xpm" -#endif +#include "bitmaps/life.xpm" // sample configurations #include "samples.inc" @@ -60,7 +54,7 @@ enum }; // -------------------------------------------------------------------------- -// event tables and other macros for wxWindows +// event tables and other macros for wxWidgets // -------------------------------------------------------------------------- // Event tables @@ -78,18 +72,28 @@ END_EVENT_TABLE() // -------------------------------------------------------------------------- LifeSamplesDialog::LifeSamplesDialog(wxWindow *parent) - : wxDialog(parent, -1, - _("Sample games"), - wxDefaultPosition, - wxDefaultSize, - wxDEFAULT_DIALOG_STYLE | wxDIALOG_MODAL) + : wxDialog(parent, wxID_ANY, _("Sample games"), + wxDefaultPosition, wxDefaultSize) { m_value = 0; - + + wxSize listSize = wxDefaultSize; + bool isPDA = wxSystemSettings::GetScreenType() <= wxSYS_SCREEN_PDA; + + // Screens are generally horizontal in orientation, + // but PDAs are generally vertical. + bool screenIsHorizontal = true; + if (isPDA && + wxSystemSettings::GetMetric(wxSYS_SCREEN_X) < wxSystemSettings::GetMetric(wxSYS_SCREEN_Y)) + { + listSize = wxSize(wxDefaultCoord, 50); + screenIsHorizontal = false; + } + // create and populate the list of available samples m_list = new wxListBox( this, ID_LISTBOX, wxDefaultPosition, - wxDefaultSize, + listSize, 0, NULL, wxLB_SINGLE | wxLB_NEEDED_SB | wxLB_HSCROLL ); @@ -97,38 +101,52 @@ LifeSamplesDialog::LifeSamplesDialog(wxWindow *parent) m_list->Append(g_patterns[i].m_name); // descriptions - wxStaticBox *statbox = new wxStaticBox( this, -1, _("Description")); + wxStaticBox *statbox = new wxStaticBox( this, wxID_ANY, _("Description")); m_life = new Life(); m_life->SetPattern(g_patterns[0]); - m_canvas = new LifeCanvas( this, m_life, FALSE ); - m_text = new wxTextCtrl( this, -1, + m_canvas = new LifeCanvas( this, m_life, false ); + m_text = new wxTextCtrl( this, wxID_ANY, g_patterns[0].m_description, wxDefaultPosition, wxSize(300, 60), wxTE_MULTILINE | wxTE_READONLY); // layout components + wxStaticBoxSizer *sizer1 = new wxStaticBoxSizer( statbox, wxVERTICAL ); sizer1->Add( m_canvas, 2, wxGROW | wxALL, 5); sizer1->Add( m_text, 1, wxGROW | wxALL, 5 ); - wxBoxSizer *sizer2 = new wxBoxSizer( wxHORIZONTAL ); + wxBoxSizer *sizer2 = new wxBoxSizer( screenIsHorizontal ? wxHORIZONTAL : wxVERTICAL ); sizer2->Add( m_list, 0, wxGROW | wxALL, 5 ); sizer2->Add( sizer1, 1, wxGROW | wxALL, 5 ); wxBoxSizer *sizer3 = new wxBoxSizer( wxVERTICAL ); - sizer3->Add( CreateTextSizer(_("Select one configuration")), 0, wxALL, 10 ); - sizer3->Add( new wxStaticLine(this, -1), 0, wxGROW | wxLEFT | wxRIGHT, 10 ); + sizer3->Add( CreateTextSizer(_("Select a configuration")), 0, wxALL|wxCENTRE, isPDA ? 2 : 10 ); +#if wxUSE_STATLINE + if (!isPDA) + sizer3->Add( new wxStaticLine(this, wxID_ANY), 0, wxGROW | wxLEFT | wxRIGHT, 10 ); +#endif // wxUSE_STATLINE sizer3->Add( sizer2, 1, wxGROW | wxALL, 5 ); - sizer3->Add( new wxStaticLine(this, -1), 0, wxGROW | wxLEFT | wxRIGHT, 10 ); - sizer3->Add( CreateButtonSizer(wxOK | wxCANCEL), 0, wxCENTRE | wxALL, 10 ); + + wxSizer *buttonSizer = CreateButtonSizer( wxOK|wxCANCEL , true, 10 ); + if(buttonSizer->GetChildren().GetCount() > 0 ) + { + sizer3->Add( buttonSizer, 0, wxEXPAND | wxALL, 10 ); + } + else + { + sizer3->AddSpacer( 10 ); + delete buttonSizer; + } // activate SetSizer(sizer3); - SetAutoLayout(TRUE); +#if !defined(__SMARTPHONE__) && !defined(__POCKETPC__) sizer3->SetSizeHints(this); sizer3->Fit(this); Centre(wxBOTH | wxCENTRE_ON_SCREEN); +#endif } LifeSamplesDialog::~LifeSamplesDialog() @@ -164,39 +182,42 @@ void LifeSamplesDialog::OnListBox(wxCommandEvent& event) // -------------------------------------------------------------------------- LifeAboutDialog::LifeAboutDialog(wxWindow *parent) - : wxDialog(parent, -1, - _("About Life!"), - wxDefaultPosition, - wxDefaultSize, - wxDEFAULT_DIALOG_STYLE | wxDIALOG_MODAL) + : wxDialog(parent, wxID_ANY, _("About Life!"), + wxDefaultPosition, wxDefaultSize) { // logo - wxBitmap bmp = wxBITMAP(life); -#if !defined(__WXGTK__) && !defined(__WXMOTIF__) && !defined(__WXMAC__) - bmp.SetMask(new wxMask(bmp, *wxBLUE)); -#endif - wxStaticBitmap *sbmp = new wxStaticBitmap(this, -1, bmp); + wxStaticBitmap *sbmp = new wxStaticBitmap(this, wxID_ANY, wxBitmap(life_xpm)); // layout components wxBoxSizer *sizer = new wxBoxSizer( wxVERTICAL ); sizer->Add( sbmp, 0, wxCENTRE | wxALL, 10 ); - sizer->Add( new wxStaticLine(this, -1), 0, wxGROW | wxLEFT | wxRIGHT, 5 ); - sizer->Add( CreateTextSizer(_("Life! version 2.2 for wxWindows\n\n" - "(c) 2000 Guillermo Rodriguez Garcia\n\n" - "\n\n" - "Portions of the code are based in XLife;\n" - "XLife is (c) 1989 by Jon Bennett et al.")), - 0, wxCENTRE | wxALL, 20 ); - sizer->Add( new wxStaticLine(this, -1), 0, wxGROW | wxLEFT | wxRIGHT, 5 ); - sizer->Add( CreateButtonSizer(wxOK), 0, wxCENTRE | wxALL, 10 ); +#if wxUSE_STATLINE + sizer->Add( new wxStaticLine(this, wxID_ANY), 0, wxGROW | wxLEFT | wxRIGHT, 5 ); +#endif // wxUSE_STATLINE + sizer->Add( CreateTextSizer(_("Life! version 2.2 for wxWidgets\n\n\ +(c) 2000 Guillermo Rodriguez Garcia\n\n\ +\n\n\ +Portions of the code are based in XLife;\n\ +XLife is (c) 1989 by Jon Bennett et al.")), + 0, wxCENTRE | wxRIGHT|wxLEFT|wxTOP, 20 ); + + // buttons if any + wxSizer *buttonSizer = CreateButtonSizer( wxOK , true, 10 ); + if(buttonSizer->GetChildren().GetCount() > 0 ) + { + sizer->Add( buttonSizer, 0, wxEXPAND | wxALL, 10 ); + } + else + { + sizer->AddSpacer( 20 ); + delete buttonSizer; + } // activate SetSizer(sizer); - SetAutoLayout(TRUE); +#if !defined(__SMARTPHONE__) && !defined(__POCKETPC__) sizer->SetSizeHints(this); sizer->Fit(this); Centre(wxBOTH | wxCENTRE_ON_SCREEN); +#endif } - - -