///////////////////////////////////////////////////////////////////////////////
-// Name: generic/wizard.cpp
+// Name: src/generic/wizard.cpp
// Purpose: generic implementation of wxWizard class
// Author: Vadim Zeitlin
// Modified by: Robert Cavanaugh
// headers
// ----------------------------------------------------------------------------
-#if defined(__GNUG__) && !defined(NO_GCC_PRAGMA)
- #pragma implementation "wizardg.h"
-#endif
-
// For compilers that support precompilation, includes "wx.h".
#include "wx/wxprec.h"
#include "wx/statline.h"
#include "wx/sizer.h"
+#include "wx/settings.h"
#include "wx/wizard.h"
m_calledSetBorder = false;
m_border = 0;
m_started = false;
+ m_wasModal = false;
}
bool wxWizard::Create(wxWindow *parent,
// 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)
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)
{
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);
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
void wxWizard::FinishLayout()
{
+ bool isPda = (wxSystemSettings::GetScreenType() <= wxSYS_SCREEN_PDA);
+
// Set to enable wxWizardSizer::GetMaxChildSize
m_started = true;
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)
// can't return false here because there is no old page
(void)ShowPage(firstPage, true /* forward */);
+ m_wasModal = true;
+
return ShowModal() == wxID_OK;
}
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);
}
}
- if ( !IsModal() &&
+ if ( ( !m_wasModal ) &&
event.IsAllowed() &&
( event.GetEventType() == wxEVT_WIZARD_FINISHED ||
event.GetEventType() == wxEVT_WIZARD_CANCEL
}
}
-// ----------------------------------------------------------------------------
-// our public interface
-// ----------------------------------------------------------------------------
-
-#if WXWIN_COMPATIBILITY_2_2
-
-/* static */
-wxWizard *wxWizardBase::Create(wxWindow *parent,
- int id,
- const wxString& title,
- const wxBitmap& bitmap,
- const wxPoint& pos,
- const wxSize& WXUNUSED(size))
-{
- return new wxWizard(parent, id, title, bitmap, pos);
-}
-
-#endif // WXWIN_COMPATIBILITY_2_2
-
// ----------------------------------------------------------------------------
// wxWizardEvent
// ----------------------------------------------------------------------------