Added SetSheetStyle to property sheet dialog to allow specification

of alternative book styles and shrink-to-fit mode
Updated dialogs sample with example of toolbook-style property sheet dialog


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@37233 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Julian Smart
2006-01-31 13:54:17 +00:00
parent 93bfe54527
commit cc8bc5aa9c
6 changed files with 189 additions and 16 deletions

View File

@@ -25,6 +25,7 @@
#include "wx/datetime.h"
#include "wx/image.h"
#include "wx/bookctrl.h"
#include "wx/artprov.h"
#if wxUSE_COLOURDLG
#include "wx/colordlg.h"
@@ -191,6 +192,7 @@ BEGIN_EVENT_TABLE(MyFrame, wxFrame)
#if USE_SETTINGS_DIALOG
EVT_MENU(DIALOGS_PROPERTY_SHEET, MyFrame::OnPropertySheet)
EVT_MENU(DIALOGS_PROPERTY_SHEET_TOOLBOOK, MyFrame::OnPropertySheetToolBook)
#endif
EVT_MENU(DIALOGS_REQUEST, MyFrame::OnRequestUserAttention)
@@ -358,6 +360,7 @@ bool MyApp::OnInit()
#if USE_SETTINGS_DIALOG
file_menu->Append(DIALOGS_PROPERTY_SHEET, _T("&Property Sheet Dialog\tCtrl-P"));
file_menu->Append(DIALOGS_PROPERTY_SHEET_TOOLBOOK, _T("Property Sheet Dialog using &ToolBook"));
#endif
file_menu->Append(DIALOGS_REQUEST, _T("&Request user attention\tCtrl-R"));
@@ -973,6 +976,12 @@ void MyFrame::OnPropertySheet(wxCommandEvent& WXUNUSED(event))
SettingsDialog dialog(this);
dialog.ShowModal();
}
void MyFrame::OnPropertySheetToolBook(wxCommandEvent& WXUNUSED(event))
{
SettingsDialog dialog(this, true);
dialog.ShowModal();
}
#endif // USE_SETTINGS_DIALOG
void MyFrame::OnRequestUserAttention(wxCommandEvent& WXUNUSED(event))
@@ -1371,33 +1380,67 @@ IMPLEMENT_CLASS(SettingsDialog, wxPropertySheetDialog)
BEGIN_EVENT_TABLE(SettingsDialog, wxPropertySheetDialog)
END_EVENT_TABLE()
SettingsDialog::SettingsDialog(wxWindow* win)
SettingsDialog::SettingsDialog(wxWindow* win, bool useToolBook)
{
SetExtraStyle(wxDIALOG_EX_CONTEXTHELP|wxWS_EX_VALIDATE_RECURSIVELY);
int tabImage1 = -1;
int tabImage2 = -1;
if (useToolBook)
{
tabImage1 = 0;
tabImage2 = 1;
SetSheetStyle(wxPROPSHEET_TOOLBOOK|wxPROPSHEET_SHRINKTOFIT);
// create a dummy image list with a few icons
const wxSize imageSize(32, 32);
m_imageList = new wxImageList(imageSize.GetWidth(), imageSize.GetHeight());
m_imageList->
Add(wxArtProvider::GetIcon(wxART_INFORMATION, wxART_OTHER, imageSize));
m_imageList->
Add(wxArtProvider::GetIcon(wxART_QUESTION, wxART_OTHER, imageSize));
m_imageList->
Add(wxArtProvider::GetIcon(wxART_WARNING, wxART_OTHER, imageSize));
m_imageList->
Add(wxArtProvider::GetIcon(wxART_ERROR, wxART_OTHER, imageSize));
}
else
m_imageList = NULL;
Create(win, wxID_ANY, _("Preferences"), wxDefaultPosition, wxDefaultSize,
wxDEFAULT_DIALOG_STYLE
#ifndef __WXWINCE__
|wxRESIZE_BORDER
#endif
);
CreateButtons(wxOK|wxCANCEL
// If using a toolbook, also follow Mac style and don't create buttons
if (!useToolBook)
CreateButtons(wxOK|wxCANCEL
#ifndef __POCKETPC__
|wxHELP
|wxHELP
#endif
);
wxBookCtrlBase* notebook = GetBookCtrl();
notebook->SetImageList(m_imageList);
wxPanel* generalSettings = CreateGeneralSettingsPage(notebook);
wxPanel* aestheticSettings = CreateAestheticSettingsPage(notebook);
notebook->AddPage(generalSettings, _("General"));
notebook->AddPage(aestheticSettings, _("Aesthetics"));
notebook->AddPage(generalSettings, _("General"), true, tabImage1);
notebook->AddPage(aestheticSettings, _("Aesthetics"), false, tabImage2);
LayoutDialog();
}
SettingsDialog::~SettingsDialog()
{
delete m_imageList;
}
wxPanel* SettingsDialog::CreateGeneralSettingsPage(wxWindow* parent)
{
wxPanel* panel = new wxPanel(parent, wxID_ANY);