Reworked dialogs sample in the direction of fully working in not fully specified setup.h. Dedicated mainly for all those hard working on various port. Be happy with always working dialogs sample.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@27756 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Włodzimierz Skiba
2004-06-11 20:43:45 +00:00
parent 23c47bc1f3
commit 13188defe3
2 changed files with 406 additions and 196 deletions

View File

@@ -2,7 +2,7 @@
// Name: dialogs.cpp // Name: dialogs.cpp
// Purpose: Common dialogs demo // Purpose: Common dialogs demo
// Author: Julian Smart // Author: Julian Smart
// Modified by: // Modified by: ABX (2004) - adjustementd for conditional building
// Created: 04/01/98 // Created: 04/01/98
// RCS-ID: $Id$ // RCS-ID: $Id$
// Copyright: (c) Julian Smart // Copyright: (c) Julian Smart
@@ -25,69 +25,131 @@
#include "wx/wx.h" #include "wx/wx.h"
#endif #endif
#ifdef __WXWINCE__
#include "wx/msw/wince/time.h"
#endif
#include "wx/numdlg.h"
#include "wx/colordlg.h"
#include "wx/filedlg.h"
#include "wx/dirdlg.h"
#include "wx/fontdlg.h"
#include "wx/choicdlg.h"
#include "wx/tipdlg.h"
#include "wx/progdlg.h"
#include "wx/fdrepdlg.h"
#include "wx/busyinfo.h"
#include "wx/image.h" #include "wx/image.h"
#define wxTEST_GENERIC_DIALOGS_IN_MSW 0 #if wxUSE_COLOURDLG
#include "wx/colordlg.h"
#endif // wxUSE_COLOURDLG
#if defined(__WXMSW__) && wxTEST_GENERIC_DIALOGS_IN_MSW #if wxUSE_CHOICEDLG
#include "wx/generic/colrdlgg.h" #include "wx/choicdlg.h"
#include "wx/generic/fontdlgg.h" #endif // wxUSE_CHOICEDLG
#endif
#define wxUSE_DIRDLGG 0 #if wxUSE_STARTUP_TIPS
#include "wx/tipdlg.h"
#endif // wxUSE_STARTUP_TIPS
#if !(defined(__WXMSW__) || defined(__WXMAC__)) || wxUSE_DIRDLGG #if wxUSE_PROGRESSDLG
#include "wx/generic/dirdlgg.h" #include "wx/progdlg.h"
#endif #endif // wxUSE_PROGRESSDLG
#if wxUSE_BUSYINFO
#include "wx/busyinfo.h"
#endif // wxUSE_BUSYINFO
#if wxUSE_NUMBERDLG
#include "wx/numdlg.h"
#endif // wxUSE_NUMBERDLG
#if wxUSE_FILEDLG
#include "wx/filedlg.h"
#endif // wxUSE_FILEDLG
#if wxUSE_DIRDLG
#include "wx/dirdlg.h"
#endif // wxUSE_DIRDLG
#if wxUSE_FONTDLG
#include "wx/fontdlg.h"
#endif // wxUSE_FONTDLG
#if wxUSE_FINDREPLDLG
#include "wx/fdrepdlg.h"
#endif // wxUSE_FINDREPLDLG
#include "dialogs.h" #include "dialogs.h"
#if USE_COLOURDLG_GENERIC
#include "wx/generic/colrdlgg.h"
#endif // USE_COLOURDLG_GENERIC
#if USE_FONTDLG_GENERIC
#include "wx/generic/fontdlgg.h"
#endif // USE_FONTDLG_GENERIC
#if USE_DIRDLG_GENERIC
#include "wx/generic/dirdlgg.h"
#endif // USE_DIRDLG_GENERIC
IMPLEMENT_APP(MyApp) IMPLEMENT_APP(MyApp)
BEGIN_EVENT_TABLE(MyCanvas, wxScrolledWindow) BEGIN_EVENT_TABLE(MyCanvas, wxScrolledWindow)
EVT_PAINT(MyCanvas::OnPaint) EVT_PAINT(MyCanvas::OnPaint)
END_EVENT_TABLE() END_EVENT_TABLE()
BEGIN_EVENT_TABLE(MyFrame, wxFrame) BEGIN_EVENT_TABLE(MyFrame, wxFrame)
EVT_MENU(DIALOGS_CHOOSE_COLOUR, MyFrame::ChooseColour)
EVT_MENU(DIALOGS_CHOOSE_FONT, MyFrame::ChooseFont)
EVT_MENU(DIALOGS_LOG_DIALOG, MyFrame::LogDialog)
EVT_MENU(DIALOGS_MESSAGE_BOX, MyFrame::MessageBox) EVT_MENU(DIALOGS_MESSAGE_BOX, MyFrame::MessageBox)
#if wxUSE_COLOURDLG
EVT_MENU(DIALOGS_CHOOSE_COLOUR, MyFrame::ChooseColour)
#endif // wxUSE_COLOURDLG
#if wxUSE_FONTDLG
EVT_MENU(DIALOGS_CHOOSE_FONT, MyFrame::ChooseFont)
#endif // wxUSE_FONTDLG
#if wxUSE_LOG_DIALOG
EVT_MENU(DIALOGS_LOG_DIALOG, MyFrame::LogDialog)
#endif // wxUSE_LOG_DIALOG
#if wxUSE_TEXTDLG
EVT_MENU(DIALOGS_TEXT_ENTRY, MyFrame::TextEntry) EVT_MENU(DIALOGS_TEXT_ENTRY, MyFrame::TextEntry)
EVT_MENU(DIALOGS_PASSWORD_ENTRY, MyFrame::PasswordEntry) EVT_MENU(DIALOGS_PASSWORD_ENTRY, MyFrame::PasswordEntry)
#endif // wxUSE_TEXTDLG
#if wxUSE_NUMBERDLG
EVT_MENU(DIALOGS_NUM_ENTRY, MyFrame::NumericEntry) EVT_MENU(DIALOGS_NUM_ENTRY, MyFrame::NumericEntry)
#endif // wxUSE_NUMBERDLG
#if wxUSE_CHOICEDLG
EVT_MENU(DIALOGS_SINGLE_CHOICE, MyFrame::SingleChoice) EVT_MENU(DIALOGS_SINGLE_CHOICE, MyFrame::SingleChoice)
EVT_MENU(DIALOGS_MULTI_CHOICE, MyFrame::MultiChoice) EVT_MENU(DIALOGS_MULTI_CHOICE, MyFrame::MultiChoice)
#endif // wxUSE_CHOICEDLG
#if wxUSE_FILEDLG
EVT_MENU(DIALOGS_FILE_OPEN, MyFrame::FileOpen) EVT_MENU(DIALOGS_FILE_OPEN, MyFrame::FileOpen)
EVT_MENU(DIALOGS_FILE_OPEN2, MyFrame::FileOpen2) EVT_MENU(DIALOGS_FILE_OPEN2, MyFrame::FileOpen2)
EVT_MENU(DIALOGS_FILES_OPEN, MyFrame::FilesOpen) EVT_MENU(DIALOGS_FILES_OPEN, MyFrame::FilesOpen)
EVT_MENU(DIALOGS_FILE_SAVE, MyFrame::FileSave) EVT_MENU(DIALOGS_FILE_SAVE, MyFrame::FileSave)
#endif // wxUSE_FILEDLG
#if wxUSE_DIRDLG
EVT_MENU(DIALOGS_DIR_CHOOSE, MyFrame::DirChoose) EVT_MENU(DIALOGS_DIR_CHOOSE, MyFrame::DirChoose)
EVT_MENU(DIALOGS_DIRNEW_CHOOSE, MyFrame::DirChooseNew) EVT_MENU(DIALOGS_DIRNEW_CHOOSE, MyFrame::DirChooseNew)
#if defined(__WXMSW__) || defined(__WXMAC__) #endif // wxUSE_DIRDLG
EVT_MENU(DIALOGS_GENERIC_DIR_CHOOSE, MyFrame::GenericDirChoose)
#endif // wxMSW || wxMAC #if USE_MODAL_PRESENTATION
EVT_MENU(DIALOGS_MODAL, MyFrame::ModalDlg) EVT_MENU(DIALOGS_MODAL, MyFrame::ModalDlg)
EVT_MENU(DIALOGS_MODELESS, MyFrame::ModelessDlg) EVT_MENU(DIALOGS_MODELESS, MyFrame::ModelessDlg)
#endif // USE_MODAL
#if wxUSE_STARTUP_TIPS
EVT_MENU(DIALOGS_TIP, MyFrame::ShowTip) EVT_MENU(DIALOGS_TIP, MyFrame::ShowTip)
#if defined(__WXMSW__) && wxTEST_GENERIC_DIALOGS_IN_MSW #endif // wxUSE_STARTUP_TIPS
EVT_MENU(DIALOGS_CHOOSE_COLOUR_GENERIC, MyFrame::ChooseColourGeneric)
#if USE_FONTDLG_GENERIC
EVT_MENU(DIALOGS_CHOOSE_FONT_GENERIC, MyFrame::ChooseFontGeneric) EVT_MENU(DIALOGS_CHOOSE_FONT_GENERIC, MyFrame::ChooseFontGeneric)
#endif #endif // USE_FONTDLG_GENERIC
#if USE_DIRDLG_GENERIC
EVT_MENU(DIALOGS_GENERIC_DIR_CHOOSE, MyFrame::GenericDirChoose)
#endif // wxMSW || wxMAC
#if USE_COLOURDLG_GENERIC
EVT_MENU(DIALOGS_CHOOSE_COLOUR_GENERIC, MyFrame::ChooseColourGeneric)
#endif // USE_COLOURDLG_GENERIC
#if wxUSE_PROGRESSDLG #if wxUSE_PROGRESSDLG
EVT_MENU(DIALOGS_PROGRESS, MyFrame::ShowProgress) EVT_MENU(DIALOGS_PROGRESS, MyFrame::ShowProgress)
@@ -101,24 +163,28 @@ BEGIN_EVENT_TABLE(MyFrame, wxFrame)
EVT_MENU(DIALOGS_FIND, MyFrame::ShowFindDialog) EVT_MENU(DIALOGS_FIND, MyFrame::ShowFindDialog)
EVT_MENU(DIALOGS_REPLACE, MyFrame::ShowReplaceDialog) EVT_MENU(DIALOGS_REPLACE, MyFrame::ShowReplaceDialog)
EVT_FIND(-1, MyFrame::OnFindDialog) EVT_FIND(wxID_ANY, MyFrame::OnFindDialog)
EVT_FIND_NEXT(-1, MyFrame::OnFindDialog) EVT_FIND_NEXT(wxID_ANY, MyFrame::OnFindDialog)
EVT_FIND_REPLACE(-1, MyFrame::OnFindDialog) EVT_FIND_REPLACE(wxID_ANY, MyFrame::OnFindDialog)
EVT_FIND_REPLACE_ALL(-1, MyFrame::OnFindDialog) EVT_FIND_REPLACE_ALL(wxID_ANY, MyFrame::OnFindDialog)
EVT_FIND_CLOSE(-1, MyFrame::OnFindDialog) EVT_FIND_CLOSE(wxID_ANY, MyFrame::OnFindDialog)
#endif // wxUSE_FINDREPLDLG #endif // wxUSE_FINDREPLDLG
EVT_MENU(wxID_EXIT, MyFrame::OnExit) EVT_MENU(wxID_EXIT, MyFrame::OnExit)
END_EVENT_TABLE() END_EVENT_TABLE()
BEGIN_EVENT_TABLE(MyModalDialog, wxDialog) #if USE_MODAL_PRESENTATION
EVT_BUTTON(-1, MyModalDialog::OnButton)
END_EVENT_TABLE()
BEGIN_EVENT_TABLE(MyModelessDialog, wxDialog) BEGIN_EVENT_TABLE(MyModalDialog, wxDialog)
EVT_BUTTON(wxID_ANY, MyModalDialog::OnButton)
END_EVENT_TABLE()
BEGIN_EVENT_TABLE(MyModelessDialog, wxDialog)
EVT_BUTTON(DIALOGS_MODELESS_BTN, MyModelessDialog::OnButton) EVT_BUTTON(DIALOGS_MODELESS_BTN, MyModelessDialog::OnButton)
EVT_CLOSE(MyModelessDialog::OnClose) EVT_CLOSE(MyModelessDialog::OnClose)
END_EVENT_TABLE() END_EVENT_TABLE()
#endif // USE_MODAL_PRESENTATION
MyCanvas *myCanvas = (MyCanvas *) NULL; MyCanvas *myCanvas = (MyCanvas *) NULL;
@@ -137,63 +203,130 @@ bool MyApp::OnInit()
m_canvasFont = *wxNORMAL_FONT; m_canvasFont = *wxNORMAL_FONT;
// Create the main frame window // Create the main frame window
MyFrame *frame = new MyFrame((wxFrame *) NULL, _T("wxWidgets dialogs example"), wxPoint(20, 20), wxSize(400, 300)); MyFrame *frame = new MyFrame((wxFrame *) NULL, _T("wxWidgets dialogs example"));
// Make a menubar // Make a menubar
wxMenu *file_menu = new wxMenu; wxMenu *file_menu = new wxMenu;
file_menu->Append(DIALOGS_CHOOSE_COLOUR, _T("&Choose colour"));
#if defined(__WXMSW__) && wxTEST_GENERIC_DIALOGS_IN_MSW
file_menu->Append(DIALOGS_CHOOSE_COLOUR_GENERIC, _T("Choose colour (&generic)"));
#endif
file_menu->AppendSeparator();
file_menu->Append(DIALOGS_CHOOSE_FONT, _T("Choose &font"));
#if defined(__WXMSW__) && wxTEST_GENERIC_DIALOGS_IN_MSW
file_menu->Append(DIALOGS_CHOOSE_FONT_GENERIC, _T("Choose f&ont (generic)"));
#endif
file_menu->AppendSeparator();
file_menu->Append(DIALOGS_LOG_DIALOG, _T("&Log dialog\tCtrl-L"));
file_menu->Append(DIALOGS_MESSAGE_BOX, _T("&Message box\tCtrl-M")); file_menu->Append(DIALOGS_MESSAGE_BOX, _T("&Message box\tCtrl-M"));
file_menu->Append(DIALOGS_TEXT_ENTRY, _T("Text &entry\tCtrl-E"));
file_menu->Append(DIALOGS_PASSWORD_ENTRY, _T("&Password entry\tCtrl-P"));
file_menu->Append(DIALOGS_NUM_ENTRY, _T("&Numeric entry\tCtrl-N"));
file_menu->Append(DIALOGS_SINGLE_CHOICE, _T("&Single choice\tCtrl-C"));
file_menu->Append(DIALOGS_MULTI_CHOICE, _T("M&ultiple choice\tCtrl-U"));
file_menu->AppendSeparator();
file_menu->Append(DIALOGS_TIP, _T("&Tip of the day\tCtrl-T"));
file_menu->AppendSeparator();
file_menu->Append(DIALOGS_FILE_OPEN, _T("&Open file\tCtrl-O"));
file_menu->Append(DIALOGS_FILE_OPEN2, _T("&Second open file\tCtrl-2"));
file_menu->Append(DIALOGS_FILES_OPEN, _T("Open &files\tCtrl-Q"));
file_menu->Append(DIALOGS_FILE_SAVE, _T("Sa&ve file\tCtrl-S"));
file_menu->Append(DIALOGS_DIR_CHOOSE, _T("&Choose a directory\tCtrl-D"));
file_menu->Append(DIALOGS_DIRNEW_CHOOSE, _T("Choose a directory (with \"Ne&w\" button)\tShift-Ctrl-D"));
#if defined(__WXMSW__) || defined(__WXMAC__)
file_menu->Append(DIALOGS_GENERIC_DIR_CHOOSE, _T("&Choose a directory (generic implementation)"));
#endif // wxMSW || wxMAC
file_menu->AppendSeparator();
#if wxUSE_PROGRESSDLG
file_menu->Append(DIALOGS_PROGRESS, _T("Pro&gress dialog\tCtrl-G"));
#endif // wxUSE_PROGRESSDLG
#if wxUSE_BUSYINFO
file_menu->Append(DIALOGS_BUSYINFO, _T("&Busy info dialog\tCtrl-B"));
#endif // wxUSE_BUSYINFO
#if wxUSE_FINDREPLDLG
file_menu->Append(DIALOGS_FIND, _T("&Find dialog\tCtrl-F"), _T(""), TRUE);
file_menu->Append(DIALOGS_REPLACE, _T("Find and &replace dialog\tShift-Ctrl-F"), _T(""), TRUE);
#endif // wxUSE_FINDREPLDLG
file_menu->AppendSeparator();
file_menu->Append(DIALOGS_MODAL, _T("Mo&dal dialog\tCtrl-W")); #if wxUSE_COLOURDLG || wxUSE_FONTDLG || wxUSE_CHOICEDLG
file_menu->Append(DIALOGS_MODELESS, _T("Modeless &dialog\tCtrl-Z"), _T(""), TRUE);
file_menu->AppendSeparator();
wxMenu *choices_menu = new wxMenu;
#if wxUSE_COLOURDLG
choices_menu->Append(DIALOGS_CHOOSE_COLOUR, _T("&Choose colour"));
#endif // wxUSE_COLOURDLG
#if USE_COLOURDLG_GENERIC
choices_menu->Append(DIALOGS_CHOOSE_COLOUR_GENERIC, _T("&Choose colour (generic)"));
#endif // USE_COLOURDLG_GENERIC
#if wxUSE_FONTDLG
choices_menu->Append(DIALOGS_CHOOSE_FONT, _T("Choose &font"));
#endif // wxUSE_FONTDLG
#if USE_FONTDLG_GENERIC
choices_menu->Append(DIALOGS_CHOOSE_FONT_GENERIC, _T("Choose &font (generic)"));
#endif // USE_FONTDLG_GENERIC
#if wxUSE_CHOICEDLG
choices_menu->Append(DIALOGS_SINGLE_CHOICE, _T("&Single choice\tCtrl-C"));
choices_menu->Append(DIALOGS_MULTI_CHOICE, _T("M&ultiple choice\tCtrl-U"));
#endif // wxUSE_CHOICEDLG
file_menu->Append(wxID_ANY,_T("Choices and selectors"),choices_menu);
#endif // wxUSE_COLOURDLG || wxUSE_FONTDLG || wxUSE_CHOICEDLG
#if wxUSE_TEXTDLG || wxUSE_NUMBERDLG
wxMenu *entry_menu = new wxMenu;
#if wxUSE_TEXTDLG
entry_menu->Append(DIALOGS_TEXT_ENTRY, _T("Text &entry\tCtrl-E"));
entry_menu->Append(DIALOGS_PASSWORD_ENTRY, _T("&Password entry\tCtrl-P"));
#endif // wxUSE_TEXTDLG
#if wxUSE_NUMBERDLG
entry_menu->Append(DIALOGS_NUM_ENTRY, _T("&Numeric entry\tCtrl-N"));
#endif // wxUSE_NUMBERDLG
file_menu->Append(wxID_ANY,_T("Entry dialogs"),entry_menu);
#endif
#if wxUSE_FILEDLG
wxMenu *filedlg_menu = new wxMenu;
filedlg_menu->Append(DIALOGS_FILE_OPEN, _T("&Open file\tCtrl-O"));
filedlg_menu->Append(DIALOGS_FILE_OPEN2, _T("&Second open file\tCtrl-2"));
filedlg_menu->Append(DIALOGS_FILES_OPEN, _T("Open &files\tCtrl-Q"));
filedlg_menu->Append(DIALOGS_FILE_SAVE, _T("Sa&ve file\tCtrl-S"));
file_menu->Append(wxID_ANY,_T("File operations"),filedlg_menu);
#endif // wxUSE_FILEDLG
#if wxUSE_DIRDLG
wxMenu *dir_menu = new wxMenu;
dir_menu->Append(DIALOGS_DIR_CHOOSE, _T("&Choose a directory\tCtrl-D"));
#if USE_DIRDLG_GENERIC
dir_menu->Append(DIALOGS_GENERIC_DIR_CHOOSE, _T("&Choose a directory (generic)"));
#endif // USE_DIRDLG_GENERIC
dir_menu->Append(DIALOGS_DIRNEW_CHOOSE, _T("Choose a directory (with \"Ne&w\" button)\tShift-Ctrl-D"));
file_menu->Append(wxID_ANY,_T("Directory operations"),dir_menu);
#endif // wxUSE_DIRDLG
#if wxUSE_STARTUP_TIPS || wxUSE_PROGRESSDLG || wxUSE_BUSYINFO || wxUSE_LOG_DIALOG
wxMenu *info_menu = new wxMenu;
#if wxUSE_STARTUP_TIPS
info_menu->Append(DIALOGS_TIP, _T("&Tip of the day\tCtrl-T"));
#endif // wxUSE_STARTUP_TIPS
#if wxUSE_PROGRESSDLG
info_menu->Append(DIALOGS_PROGRESS, _T("Pro&gress dialog\tCtrl-G"));
#endif // wxUSE_PROGRESSDLG
#if wxUSE_BUSYINFO
info_menu->Append(DIALOGS_BUSYINFO, _T("&Busy info dialog\tCtrl-B"));
#endif // wxUSE_BUSYINFO
#if wxUSE_LOG_DIALOG
info_menu->Append(DIALOGS_LOG_DIALOG, _T("&Log dialog\tCtrl-L"));
#endif // wxUSE_LOG_DIALOG
file_menu->Append(wxID_ANY,_T("Informative dialogs"),info_menu);
#endif // wxUSE_STARTUP_TIPS || wxUSE_PROGRESSDLG || wxUSE_BUSYINFO || wxUSE_LOG_DIALOG
#if wxUSE_FINDREPLDLG
wxMenu *find_menu = new wxMenu;
find_menu->Append(DIALOGS_FIND, _T("&Find dialog\tCtrl-F"), _T(""), true);
find_menu->Append(DIALOGS_REPLACE, _T("Find and &replace dialog\tShift-Ctrl-F"), _T(""), true);
file_menu->Append(wxID_ANY,_T("Searching"),find_menu);
#endif // wxUSE_FINDREPLDLG
#if USE_MODAL_PRESENTATION
wxMenu *modal_menu = new wxMenu;
modal_menu->Append(DIALOGS_MODAL, _T("Mo&dal dialog\tCtrl-W"));
modal_menu->Append(DIALOGS_MODELESS, _T("Modeless &dialog\tCtrl-Z"), _T(""), true);
file_menu->Append(wxID_ANY,_T("Modal/Modeless"),modal_menu);
#endif // USE_MODAL_PRESENTATION
file_menu->AppendSeparator();
file_menu->Append(wxID_EXIT, _T("E&xit\tAlt-X")); file_menu->Append(wxID_EXIT, _T("E&xit\tAlt-X"));
wxMenuBar *menu_bar = new wxMenuBar; wxMenuBar *menu_bar = new wxMenuBar;
menu_bar->Append(file_menu, _T("&File")); menu_bar->Append(file_menu, _T("&File"));
frame->SetMenuBar(menu_bar); frame->SetMenuBar(menu_bar);
@@ -204,36 +337,39 @@ bool MyApp::OnInit()
frame->Centre(wxBOTH); frame->Centre(wxBOTH);
// Show the frame // Show the frame
frame->Show(TRUE); frame->Show(true);
SetTopWindow(frame); SetTopWindow(frame);
return TRUE; return true;
} }
// My frame constructor // My frame constructor
MyFrame::MyFrame(wxWindow *parent, MyFrame::MyFrame(wxWindow *parent,
const wxString& title, const wxString& title)
const wxPoint& pos, : wxFrame(parent, wxID_ANY, title)
const wxSize& size)
: wxFrame(parent, -1, title, pos, size)
{ {
#if USE_MODAL_PRESENTATION
m_dialog = (MyModelessDialog *)NULL; m_dialog = (MyModelessDialog *)NULL;
#endif // USE_MODAL_PRESENTATION
#if wxUSE_FINDREPLDLG #if wxUSE_FINDREPLDLG
m_dlgFind = m_dlgFind =
m_dlgReplace = NULL; m_dlgReplace = NULL;
#endif #endif
#if wxUSE_COLOURDLG
m_clrData.SetChooseFull(true); m_clrData.SetChooseFull(true);
for (int i = 0; i < 16; i++) for (int i = 0; i < 16; i++)
{ {
m_clrData.SetCustomColour(i, wxColour(i*16, i*16, i*16)); m_clrData.SetCustomColour(i, wxColour(i*16, i*16, i*16));
} }
#endif // wxUSE_COLOURDLG
CreateStatusBar(); CreateStatusBar();
} }
#if wxUSE_COLOURDLG
void MyFrame::ChooseColour(wxCommandEvent& WXUNUSED(event) ) void MyFrame::ChooseColour(wxCommandEvent& WXUNUSED(event) )
{ {
m_clrData.SetColour(myCanvas->GetBackgroundColour()); m_clrData.SetColour(myCanvas->GetBackgroundColour());
@@ -248,7 +384,9 @@ void MyFrame::ChooseColour(wxCommandEvent& WXUNUSED(event) )
myCanvas->Refresh(); myCanvas->Refresh();
} }
} }
#endif // wxUSE_COLOURDLG
#if wxUSE_FONTDLG
void MyFrame::ChooseFont(wxCommandEvent& WXUNUSED(event) ) void MyFrame::ChooseFont(wxCommandEvent& WXUNUSED(event) )
{ {
wxFontData data; wxFontData data;
@@ -271,12 +409,13 @@ void MyFrame::ChooseFont(wxCommandEvent& WXUNUSED(event) )
} }
//else: cancelled by the user, don't change the font //else: cancelled by the user, don't change the font
} }
#endif // wxUSE_FONTDLG
#if defined(__WXMSW__) && wxTEST_GENERIC_DIALOGS_IN_MSW #if USE_COLOURDLG_GENERIC
void MyFrame::ChooseColourGeneric(wxCommandEvent& WXUNUSED(event)) void MyFrame::ChooseColourGeneric(wxCommandEvent& WXUNUSED(event))
{ {
wxColourData data; wxColourData data;
data.SetChooseFull(TRUE); data.SetChooseFull(true);
for (int i = 0; i < 16; i++) for (int i = 0; i < 16; i++)
{ {
wxColour colour(i*16, i*16, i*16); wxColour colour(i*16, i*16, i*16);
@@ -295,7 +434,9 @@ void MyFrame::ChooseColourGeneric(wxCommandEvent& WXUNUSED(event))
} }
dialog->Destroy(); dialog->Destroy();
} }
#endif // USE_COLOURDLG_GENERIC
#if USE_FONTDLG_GENERIC
void MyFrame::ChooseFontGeneric(wxCommandEvent& WXUNUSED(event) ) void MyFrame::ChooseFontGeneric(wxCommandEvent& WXUNUSED(event) )
{ {
wxFontData data; wxFontData data;
@@ -312,7 +453,7 @@ void MyFrame::ChooseFontGeneric(wxCommandEvent& WXUNUSED(event) )
} }
dialog->Destroy(); dialog->Destroy();
} }
#endif // wxTEST_GENERIC_DIALOGS_IN_MSW #endif // USE_FONTDLG_GENERIC
void MyFrame::LogDialog(wxCommandEvent& WXUNUSED(event)) void MyFrame::LogDialog(wxCommandEvent& WXUNUSED(event))
{ {
@@ -360,6 +501,7 @@ void MyFrame::MessageBox(wxCommandEvent& WXUNUSED(event) )
} }
} }
#if wxUSE_NUMBERDLG
void MyFrame::NumericEntry(wxCommandEvent& WXUNUSED(event) ) void MyFrame::NumericEntry(wxCommandEvent& WXUNUSED(event) )
{ {
long res = wxGetNumberFromUser( _T("This is some text, actually a lot of text.\n") long res = wxGetNumberFromUser( _T("This is some text, actually a lot of text.\n")
@@ -382,7 +524,9 @@ void MyFrame::NumericEntry(wxCommandEvent& WXUNUSED(event) )
wxMessageBox(msg, _T("Numeric test result"), wxOK | icon, this); wxMessageBox(msg, _T("Numeric test result"), wxOK | icon, this);
} }
#endif // wxUSE_NUMBERDLG
#if wxUSE_TEXTDLG
void MyFrame::PasswordEntry(wxCommandEvent& WXUNUSED(event)) void MyFrame::PasswordEntry(wxCommandEvent& WXUNUSED(event))
{ {
wxString pwd = wxGetPasswordFromUser(_T("Enter password:"), wxString pwd = wxGetPasswordFromUser(_T("Enter password:"),
@@ -411,7 +555,9 @@ void MyFrame::TextEntry(wxCommandEvent& WXUNUSED(event))
dialog2.ShowModal(); dialog2.ShowModal();
} }
} }
#endif // wxUSE_TEXTDLG
#if wxUSE_CHOICEDLG
void MyFrame::SingleChoice(wxCommandEvent& WXUNUSED(event) ) void MyFrame::SingleChoice(wxCommandEvent& WXUNUSED(event) )
{ {
const wxString choices[] = { _T("One"), _T("Two"), _T("Three"), _T("Four"), _T("Five") } ; const wxString choices[] = { _T("One"), _T("Two"), _T("Three"), _T("Four"), _T("Five") } ;
@@ -461,7 +607,9 @@ void MyFrame::MultiChoice(wxCommandEvent& WXUNUSED(event) )
} }
//else: cancelled or nothing selected //else: cancelled or nothing selected
} }
#endif // wxUSE_CHOICEDLG
#if wxUSE_FILEDLG
void MyFrame::FileOpen(wxCommandEvent& WXUNUSED(event) ) void MyFrame::FileOpen(wxCommandEvent& WXUNUSED(event) )
{ {
wxFileDialog dialog wxFileDialog dialog
@@ -571,7 +719,9 @@ void MyFrame::FileSave(wxCommandEvent& WXUNUSED(event) )
dialog.GetPath().c_str(), dialog.GetFilterIndex()); dialog.GetPath().c_str(), dialog.GetFilterIndex());
} }
} }
#endif // wxUSE_FILEDLG
#if wxUSE_DIRDLG
void MyFrame::DoDirChoose(int style) void MyFrame::DoDirChoose(int style)
{ {
// pass some initial dir to wxDirDialog // pass some initial dir to wxDirDialog
@@ -595,12 +745,11 @@ void MyFrame::DirChooseNew(wxCommandEvent& WXUNUSED(event) )
{ {
DoDirChoose(wxDD_DEFAULT_STYLE | wxDD_NEW_DIR_BUTTON); DoDirChoose(wxDD_DEFAULT_STYLE | wxDD_NEW_DIR_BUTTON);
} }
#endif // wxUSE_DIRDLG
#if defined(__WXMSW__) || defined(__WXMAC__) #if USE_DIRDLG_GENERIC
void MyFrame::GenericDirChoose(wxCommandEvent& WXUNUSED(event) ) void MyFrame::GenericDirChoose(wxCommandEvent& WXUNUSED(event) )
{ {
#if !(defined(__WXMSW__) || defined(__WXMAC__)) || wxUSE_DIRDLGG
// pass some initial dir to wxDirDialog // pass some initial dir to wxDirDialog
wxString dirHome; wxString dirHome;
wxGetHomeDir(&dirHome); wxGetHomeDir(&dirHome);
@@ -612,14 +761,10 @@ void MyFrame::GenericDirChoose(wxCommandEvent& WXUNUSED(event) )
wxMessageDialog dialog2(this, dialog.GetPath(), _T("Selected path")); wxMessageDialog dialog2(this, dialog.GetPath(), _T("Selected path"));
dialog2.ShowModal(); dialog2.ShowModal();
} }
#else
wxLogError(wxT("Sorry, generic dir dialog not available:\n")
wxT("set wxUSE_DIRDLGG to 1 and recompile"));
#endif
} }
#endif // USE_DIRDLG_GENERIC
#endif // wxMSW || wxMAC #if USE_MODAL_PRESENTATION
void MyFrame::ModalDlg(wxCommandEvent& WXUNUSED(event)) void MyFrame::ModalDlg(wxCommandEvent& WXUNUSED(event))
{ {
MyModalDialog dlg(this); MyModalDialog dlg(this);
@@ -637,17 +782,18 @@ void MyFrame::ModelessDlg(wxCommandEvent& event)
m_dialog = new MyModelessDialog(this); m_dialog = new MyModelessDialog(this);
} }
m_dialog->Show(TRUE); m_dialog->Show(true);
} }
else // hide else // hide
{ {
m_dialog->Hide(); m_dialog->Hide();
} }
} }
#endif // USE_MODAL_PRESENTATION
#if wxUSE_STARTUP_TIPS
void MyFrame::ShowTip(wxCommandEvent& WXUNUSED(event)) void MyFrame::ShowTip(wxCommandEvent& WXUNUSED(event))
{ {
#if wxUSE_STARTUP_TIPS
static size_t s_index = (size_t)-1; static size_t s_index = (size_t)-1;
if ( s_index == (size_t)-1 ) if ( s_index == (size_t)-1 )
@@ -671,12 +817,12 @@ void MyFrame::ShowTip(wxCommandEvent& WXUNUSED(event))
s_index = tipProvider->GetCurrentTip(); s_index = tipProvider->GetCurrentTip();
delete tipProvider; delete tipProvider;
#endif
} }
#endif // wxUSE_STARTUP_TIPS
void MyFrame::OnExit(wxCommandEvent& WXUNUSED(event) ) void MyFrame::OnExit(wxCommandEvent& WXUNUSED(event) )
{ {
Close(TRUE); Close(true);
} }
#if wxUSE_PROGRESSDLG #if wxUSE_PROGRESSDLG
@@ -696,7 +842,7 @@ void MyFrame::ShowProgress( wxCommandEvent& WXUNUSED(event) )
wxPD_ESTIMATED_TIME | wxPD_ESTIMATED_TIME |
wxPD_REMAINING_TIME); wxPD_REMAINING_TIME);
bool cont = TRUE; bool cont = true;
for ( int i = 0; i <= max; i++ ) for ( int i = 0; i <= max; i++ )
{ {
wxSleep(1); wxSleep(1);
@@ -775,7 +921,7 @@ void MyFrame::ShowReplaceDialog( wxCommandEvent& WXUNUSED(event) )
wxFR_REPLACEDIALOG wxFR_REPLACEDIALOG
); );
m_dlgReplace->Show(TRUE); m_dlgReplace->Show(true);
} }
} }
@@ -797,7 +943,7 @@ void MyFrame::ShowFindDialog( wxCommandEvent& WXUNUSED(event) )
wxFR_NOWHOLEWORD wxFR_NOWHOLEWORD
); );
m_dlgFind->Show(TRUE); m_dlgFind->Show(true);
} }
} }
@@ -853,16 +999,16 @@ void MyFrame::OnFindDialog(wxFindDialogEvent& event)
else else
{ {
txt = _T("Unknown"); txt = _T("Unknown");
idMenu = -1; idMenu = wxID_ANY;
wxFAIL_MSG( _T("unexpected event") ); wxFAIL_MSG( _T("unexpected event") );
} }
wxLogMessage(wxT("%s dialog is being closed."), txt); wxLogMessage(wxT("%s dialog is being closed."), txt);
if ( idMenu != -1 ) if ( idMenu != wxID_ANY )
{ {
GetMenuBar()->Check(idMenu, FALSE); GetMenuBar()->Check(idMenu, false);
} }
dlg->Destroy(); dlg->Destroy();
@@ -893,18 +1039,18 @@ void MyCanvas::OnPaint(wxPaintEvent& WXUNUSED(event) )
// ---------------------------------------------------------------------------- // ----------------------------------------------------------------------------
MyModelessDialog::MyModelessDialog(wxWindow *parent) MyModelessDialog::MyModelessDialog(wxWindow *parent)
: wxDialog(parent, -1, wxString(_T("Modeless dialog"))) : wxDialog(parent, wxID_ANY, wxString(_T("Modeless dialog")))
{ {
wxBoxSizer *sizerTop = new wxBoxSizer(wxVERTICAL); wxBoxSizer *sizerTop = new wxBoxSizer(wxVERTICAL);
wxButton *btn = new wxButton(this, DIALOGS_MODELESS_BTN, _T("Press me")); wxButton *btn = new wxButton(this, DIALOGS_MODELESS_BTN, _T("Press me"));
wxCheckBox *check = new wxCheckBox(this, -1, _T("Should be disabled")); wxCheckBox *check = new wxCheckBox(this, wxID_ANY, _T("Should be disabled"));
check->Disable(); check->Disable();
sizerTop->Add(btn, 1, wxEXPAND | wxALL, 5); sizerTop->Add(btn, 1, wxEXPAND | wxALL, 5);
sizerTop->Add(check, 1, wxEXPAND | wxALL, 5); sizerTop->Add(check, 1, wxEXPAND | wxALL, 5);
SetAutoLayout(TRUE); SetAutoLayout(true);
SetSizer(sizerTop); SetSizer(sizerTop);
sizerTop->SetSizeHints(this); sizerTop->SetSizeHints(this);
@@ -934,13 +1080,13 @@ void MyModelessDialog::OnClose(wxCloseEvent& event)
// ---------------------------------------------------------------------------- // ----------------------------------------------------------------------------
MyModalDialog::MyModalDialog(wxWindow *parent) MyModalDialog::MyModalDialog(wxWindow *parent)
: wxDialog(parent, -1, wxString(_T("Modal dialog"))) : wxDialog(parent, wxID_ANY, wxString(_T("Modal dialog")))
{ {
wxBoxSizer *sizerTop = new wxBoxSizer(wxHORIZONTAL); wxBoxSizer *sizerTop = new wxBoxSizer(wxHORIZONTAL);
m_btnModal = new wxButton(this, -1, _T("&Modal dialog...")); m_btnModal = new wxButton(this, wxID_ANY, _T("&Modal dialog..."));
m_btnModeless = new wxButton(this, -1, _T("Mode&less dialog")); m_btnModeless = new wxButton(this, wxID_ANY, _T("Mode&less dialog"));
m_btnDelete = new wxButton(this, -1, _T("&Delete button")); m_btnDelete = new wxButton(this, wxID_ANY, _T("&Delete button"));
wxButton *btnOk = new wxButton(this, wxID_CANCEL, _T("&Close")); wxButton *btnOk = new wxButton(this, wxID_CANCEL, _T("&Close"));
sizerTop->Add(m_btnModal, 0, wxALIGN_CENTER | wxALL, 5); sizerTop->Add(m_btnModal, 0, wxALIGN_CENTER | wxALL, 5);
@@ -948,7 +1094,7 @@ MyModalDialog::MyModalDialog(wxWindow *parent)
sizerTop->Add(m_btnDelete, 0, wxALIGN_CENTER | wxALL, 5); sizerTop->Add(m_btnDelete, 0, wxALIGN_CENTER | wxALL, 5);
sizerTop->Add(btnOk, 0, wxALIGN_CENTER | wxALL, 5); sizerTop->Add(btnOk, 0, wxALIGN_CENTER | wxALL, 5);
SetAutoLayout(TRUE); SetAutoLayout(true);
SetSizer(sizerTop); SetSizer(sizerTop);
sizerTop->SetSizeHints(this); sizerTop->SetSizeHints(this);
@@ -969,9 +1115,13 @@ void MyModalDialog::OnButton(wxCommandEvent& event)
} }
else if ( event.GetEventObject() == m_btnModal ) else if ( event.GetEventObject() == m_btnModal )
{ {
#if wxUSE_TEXTDLG
wxGetTextFromUser(_T("Dummy prompt"), wxGetTextFromUser(_T("Dummy prompt"),
_T("Modal dialog called from dialog"), _T("Modal dialog called from dialog"),
_T(""), this); _T(""), this);
#else
wxMessageBox(_T("Modal dialog called from dialog"));
#endif // wxUSE_TEXTDLG
} }
else if ( event.GetEventObject() == m_btnModeless ) else if ( event.GetEventObject() == m_btnModeless )
{ {

View File

@@ -2,7 +2,7 @@
// Name: dialogs.h // Name: dialogs.h
// Purpose: Common dialogs demo // Purpose: Common dialogs demo
// Author: Julian Smart // Author: Julian Smart
// Modified by: // Modified by: ABX (2004) - adjustementd for conditional building
// Created: 04/01/98 // Created: 04/01/98
// RCS-ID: $Id$ // RCS-ID: $Id$
// Copyright: (c) Julian Smart // Copyright: (c) Julian Smart
@@ -12,6 +12,25 @@
#ifndef __DIALOGSH__ #ifndef __DIALOGSH__
#define __DIALOGSH__ #define __DIALOGSH__
#define USE_COLOURDLG_GENERIC \
( \
wxUSE_COLOURDLG && \
( defined(__WXMSW__) || defined(__WXMAC__) || defined(__WXGTK20__) ) && \
!defined(__WXUNIVERSAL__) \
)
#define USE_FONTDLG_GENERIC \
( \
wxUSE_FONTDLG && \
( defined(__WXMSW__) || defined(__WXGTK__) || defined(__WXPM__) ) && \
!defined(__WXUNIVERSAL__) \
)
#define USE_DIRDLG_GENERIC 0
#define USE_MODAL_PRESENTATION 1
// Define a new application type // Define a new application type
class MyApp: public wxApp class MyApp: public wxApp
{ {
@@ -55,52 +74,93 @@ private:
class MyFrame: public wxFrame class MyFrame: public wxFrame
{ {
public: public:
MyFrame(wxWindow *parent, const wxString& title, MyFrame(wxWindow *parent, const wxString& title);
const wxPoint& pos, const wxSize& size);
void ChooseColour(wxCommandEvent& event);
void ChooseFont(wxCommandEvent& event);
void LogDialog(wxCommandEvent& event);
void MessageBox(wxCommandEvent& event); void MessageBox(wxCommandEvent& event);
#if wxUSE_COLOURDLG
void ChooseColour(wxCommandEvent& event);
#endif // wxUSE_COLOURDLG
#if wxUSE_FONTDLG
void ChooseFont(wxCommandEvent& event);
#endif // wxUSE_FONTDLG
#if wxUSE_LOG_DIALOG
void LogDialog(wxCommandEvent& event);
#endif // wxUSE_LOG_DIALOG
#if wxUSE_CHOICEDLG
void SingleChoice(wxCommandEvent& event); void SingleChoice(wxCommandEvent& event);
void MultiChoice(wxCommandEvent& event); void MultiChoice(wxCommandEvent& event);
#endif // wxUSE_CHOICEDLG
#if wxUSE_TEXTDLG
void TextEntry(wxCommandEvent& event); void TextEntry(wxCommandEvent& event);
void PasswordEntry(wxCommandEvent& event); void PasswordEntry(wxCommandEvent& event);
#endif // wxUSE_TEXTDLG
#if wxUSE_NUMBERDLG
void NumericEntry(wxCommandEvent& event); void NumericEntry(wxCommandEvent& event);
#endif // wxUSE_NUMBERDLG
#if wxUSE_FILEDLG
void FileOpen(wxCommandEvent& event); void FileOpen(wxCommandEvent& event);
void FileOpen2(wxCommandEvent& event); void FileOpen2(wxCommandEvent& event);
void FilesOpen(wxCommandEvent& event); void FilesOpen(wxCommandEvent& event);
void FileSave(wxCommandEvent& event); void FileSave(wxCommandEvent& event);
#endif // wxUSE_FILEDLG
#if wxUSE_DIRDLG
void DirChoose(wxCommandEvent& event); void DirChoose(wxCommandEvent& event);
void DirChooseNew(wxCommandEvent& event); void DirChooseNew(wxCommandEvent& event);
#endif // wxUSE_DIRDLG
#if USE_DIRDLG_GENERIC
void GenericDirChoose(wxCommandEvent& event); void GenericDirChoose(wxCommandEvent& event);
#endif // USE_DIRDLG_GENERIC
#if wxUSE_STARTUP_TIPS
void ShowTip(wxCommandEvent& event); void ShowTip(wxCommandEvent& event);
#endif // wxUSE_STARTUP_TIPS
#if USE_MODAL_PRESENTATION
void ModalDlg(wxCommandEvent& event); void ModalDlg(wxCommandEvent& event);
void ModelessDlg(wxCommandEvent& event); void ModelessDlg(wxCommandEvent& event);
#endif // USE_MODAL_PRESENTATION
#if wxUSE_PROGRESSDLG #if wxUSE_PROGRESSDLG
void ShowProgress(wxCommandEvent& event); void ShowProgress(wxCommandEvent& event);
#endif // wxUSE_PROGRESSDLG #endif // wxUSE_PROGRESSDLG
#if wxUSE_BUSYINFO #if wxUSE_BUSYINFO
void ShowBusyInfo(wxCommandEvent& event); void ShowBusyInfo(wxCommandEvent& event);
#endif // wxUSE_BUSYINFO #endif // wxUSE_BUSYINFO
#if wxUSE_FINDREPLDLG #if wxUSE_FINDREPLDLG
void ShowFindDialog(wxCommandEvent& event); void ShowFindDialog(wxCommandEvent& event);
void ShowReplaceDialog(wxCommandEvent& event); void ShowReplaceDialog(wxCommandEvent& event);
void OnFindDialog(wxFindDialogEvent& event); void OnFindDialog(wxFindDialogEvent& event);
#endif // wxUSE_FINDREPLDLG #endif // wxUSE_FINDREPLDLG
#if !defined(__WXMSW__) || wxTEST_GENERIC_DIALOGS_IN_MSW #if USE_COLOURDLG_GENERIC
void ChooseColourGeneric(wxCommandEvent& event); void ChooseColourGeneric(wxCommandEvent& event);
#endif // USE_COLOURDLG_GENERIC
#if USE_FONTDLG_GENERIC
void ChooseFontGeneric(wxCommandEvent& event); void ChooseFontGeneric(wxCommandEvent& event);
#endif #endif // USE_FONTDLG_GENERIC
void OnExit(wxCommandEvent& event); void OnExit(wxCommandEvent& event);
private: private:
#if wxUSE_DIRDLG
void DoDirChoose(int style); void DoDirChoose(int style);
#endif // wxUSE_DIRDLG
#if USE_MODAL_PRESENTATION
MyModelessDialog *m_dialog; MyModelessDialog *m_dialog;
#endif // USE_MODAL_PRESENTATION
#if wxUSE_FINDREPLDLG #if wxUSE_FINDREPLDLG
wxFindReplaceData m_findData; wxFindReplaceData m_findData;
@@ -118,7 +178,7 @@ class MyCanvas: public wxScrolledWindow
{ {
public: public:
MyCanvas(wxWindow *parent) : MyCanvas(wxWindow *parent) :
wxScrolledWindow(parent,-1,wxDefaultPosition,wxDefaultSize,wxNO_FULL_REPAINT_ON_RESIZE) { } wxScrolledWindow(parent,wxID_ANY,wxDefaultPosition,wxDefaultSize,wxNO_FULL_REPAINT_ON_RESIZE) { }
void OnPaint(wxPaintEvent& event); void OnPaint(wxPaintEvent& event);
@@ -129,7 +189,7 @@ public:
// Menu IDs // Menu IDs
enum enum
{ {
DIALOGS_CHOOSE_COLOUR = 1, DIALOGS_CHOOSE_COLOUR = wxID_HIGHEST,
DIALOGS_CHOOSE_COLOUR_GENERIC, DIALOGS_CHOOSE_COLOUR_GENERIC,
DIALOGS_CHOOSE_FONT, DIALOGS_CHOOSE_FONT,
DIALOGS_CHOOSE_FONT_GENERIC, DIALOGS_CHOOSE_FONT_GENERIC,