From a6328131cd431ccecb931ba98cb8f4567576683a Mon Sep 17 00:00:00 2001 From: Julian Smart Date: Fri, 12 Aug 2005 14:16:05 +0000 Subject: [PATCH 1/1] Adaptations for PDA-sized screens git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@35178 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- docs/changes.txt | 1 + src/generic/wizard.cpp | 52 +++++++++++++++++++++++++++++------------- 2 files changed, 37 insertions(+), 16 deletions(-) diff --git a/docs/changes.txt b/docs/changes.txt index bef9bf04f7..defea037a0 100644 --- a/docs/changes.txt +++ b/docs/changes.txt @@ -25,6 +25,7 @@ All (GUI): - Cross-compile now supported for wxGTK, wxX11 and wxMotif. - Cygwin compilation of wxX11, wxGTK and wxMotif now supported. - Now reads "help" parameter for all windows (context help text). +- wxWizard adapts to PDA-sized screens. wxMSW: diff --git a/src/generic/wizard.cpp b/src/generic/wizard.cpp index 84f1f90ed5..5656355235 100644 --- a/src/generic/wizard.cpp +++ b/src/generic/wizard.cpp @@ -43,6 +43,7 @@ #include "wx/statline.h" #include "wx/sizer.h" +#include "wx/settings.h" #include "wx/wizard.h" @@ -390,6 +391,9 @@ void wxWizard::AddButtonRow(wxBoxSizer *mainColumn) // key to TAB to the next entry field and page. This would not be possible, if the 'back' button // was created before the 'next' button. + bool isPda = (wxSystemSettings::GetScreenType() <= wxSYS_SCREEN_PDA); + int buttonStyle = isPda ? wxBU_EXACTFIT : 0; + wxBoxSizer *buttonRow = new wxBoxSizer(wxHORIZONTAL); #ifdef __WXMAC__ if (GetExtraStyle() & wxWIZARD_EX_HELPBUTTON) @@ -411,16 +415,16 @@ void wxWizard::AddButtonRow(wxBoxSizer *mainColumn) wxButton *btnHelp=0; #ifdef __WXMAC__ if (GetExtraStyle() & wxWIZARD_EX_HELPBUTTON) - btnHelp=new wxButton(this, wxID_HELP, _("&Help")); + btnHelp=new wxButton(this, wxID_HELP, _("&Help"), wxDefaultPosition, wxDefaultSize, buttonStyle); #endif m_btnNext = new wxButton(this, wxID_FORWARD, _("&Next >")); - wxButton *btnCancel=new wxButton(this, wxID_CANCEL, _("&Cancel")); + wxButton *btnCancel=new wxButton(this, wxID_CANCEL, _("&Cancel"), wxDefaultPosition, wxDefaultSize, buttonStyle); #ifndef __WXMAC__ if (GetExtraStyle() & wxWIZARD_EX_HELPBUTTON) - btnHelp=new wxButton(this, wxID_HELP, _("&Help")); + btnHelp=new wxButton(this, wxID_HELP, _("&Help"), wxDefaultPosition, wxDefaultSize, buttonStyle); #endif - m_btnPrev = new wxButton(this, wxID_BACKWARD, _("< &Back")); + m_btnPrev = new wxButton(this, wxID_BACKWARD, _("< &Back"), wxDefaultPosition, wxDefaultSize, buttonStyle); if (btnHelp) { @@ -452,6 +456,11 @@ void wxWizard::DoCreateControls() if ( WasCreated() ) return; + bool isPda = (wxSystemSettings::GetScreenType() <= wxSYS_SCREEN_PDA); + + // Horizontal stretching, and if not PDA, border all around + int mainColumnSizerFlags = isPda ? wxEXPAND : wxALL|wxEXPAND ; + // wxWindow::SetSizer will be called at end wxBoxSizer *windowSizer = new wxBoxSizer(wxVERTICAL); @@ -459,12 +468,15 @@ void wxWizard::DoCreateControls() windowSizer->Add( mainColumn, 1, // Vertical stretching - wxALL | wxEXPAND, // Border all around, horizontal stretching + mainColumnSizerFlags, 5 // Border width ); AddBitmapRow(mainColumn); - AddStaticLine(mainColumn); + + if (!isPda) + AddStaticLine(mainColumn); + AddButtonRow(mainColumn); // wxWindow::SetSizer should be followed by wxWindow::Fit, but @@ -480,6 +492,8 @@ void wxWizard::SetPageSize(const wxSize& size) void wxWizard::FinishLayout() { + bool isPda = (wxSystemSettings::GetScreenType() <= wxSYS_SCREEN_PDA); + // Set to enable wxWizardSizer::GetMaxChildSize m_started = true; @@ -490,9 +504,12 @@ void wxWizard::FinishLayout() m_sizerPage->Border() ); - GetSizer()->SetSizeHints(this); - if ( m_posWizard == wxDefaultPosition ) - CentreOnScreen(); + if (!isPda) + { + GetSizer()->SetSizeHints(this); + if ( m_posWizard == wxDefaultPosition ) + CentreOnScreen(); + } } void wxWizard::FitToPage(const wxWizardPage *page) @@ -674,13 +691,16 @@ void wxWizard::SetBorder(int border) wxSize wxWizard::GetManualPageSize() const { // default width and height of the page - static const int DEFAULT_PAGE_WIDTH = 270; - //static const int DEFAULT_PAGE_HEIGHT = 290; - // For compatibility with 2.4: there's too much - // space under the bitmap, probably due to differences in - // the sizer implementation. This makes it reasonable again. - static const int DEFAULT_PAGE_HEIGHT = 270; - + int DEFAULT_PAGE_WIDTH = 270; + int DEFAULT_PAGE_HEIGHT = 270; + bool isPda = (wxSystemSettings::GetScreenType() <= wxSYS_SCREEN_PDA); + if (isPda) + { + // Make the default page size small enough to fit on screen + DEFAULT_PAGE_WIDTH = wxSystemSettings::GetMetric(wxSYS_SCREEN_X) / 2; + DEFAULT_PAGE_HEIGHT = wxSystemSettings::GetMetric(wxSYS_SCREEN_Y) / 2; + } + wxSize totalPageSize(DEFAULT_PAGE_WIDTH,DEFAULT_PAGE_HEIGHT); totalPageSize.IncTo(m_sizePage); -- 2.45.2