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
// Purpose: Common dialogs demo
// Author: Julian Smart
// Modified by:
// Modified by: ABX (2004) - adjustementd for conditional building
// Created: 04/01/98
// RCS-ID: $Id$
// Copyright: (c) Julian Smart
@ -25,69 +25,131 @@
#include "wx/wx.h"
#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"
#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
#include "wx/generic/colrdlgg.h"
#include "wx/generic/fontdlgg.h"
#endif
#if wxUSE_CHOICEDLG
#include "wx/choicdlg.h"
#endif // wxUSE_CHOICEDLG
#define wxUSE_DIRDLGG 0
#if wxUSE_STARTUP_TIPS
#include "wx/tipdlg.h"
#endif // wxUSE_STARTUP_TIPS
#if !(defined(__WXMSW__) || defined(__WXMAC__)) || wxUSE_DIRDLGG
#include "wx/generic/dirdlgg.h"
#endif
#if wxUSE_PROGRESSDLG
#include "wx/progdlg.h"
#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"
#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)
BEGIN_EVENT_TABLE(MyCanvas, wxScrolledWindow)
EVT_PAINT(MyCanvas::OnPaint)
END_EVENT_TABLE()
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)
#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_PASSWORD_ENTRY, MyFrame::PasswordEntry)
#endif // wxUSE_TEXTDLG
#if wxUSE_NUMBERDLG
EVT_MENU(DIALOGS_NUM_ENTRY, MyFrame::NumericEntry)
#endif // wxUSE_NUMBERDLG
#if wxUSE_CHOICEDLG
EVT_MENU(DIALOGS_SINGLE_CHOICE, MyFrame::SingleChoice)
EVT_MENU(DIALOGS_MULTI_CHOICE, MyFrame::MultiChoice)
#endif // wxUSE_CHOICEDLG
#if wxUSE_FILEDLG
EVT_MENU(DIALOGS_FILE_OPEN, MyFrame::FileOpen)
EVT_MENU(DIALOGS_FILE_OPEN2, MyFrame::FileOpen2)
EVT_MENU(DIALOGS_FILES_OPEN, MyFrame::FilesOpen)
EVT_MENU(DIALOGS_FILE_SAVE, MyFrame::FileSave)
#endif // wxUSE_FILEDLG
#if wxUSE_DIRDLG
EVT_MENU(DIALOGS_DIR_CHOOSE, MyFrame::DirChoose)
EVT_MENU(DIALOGS_DIRNEW_CHOOSE, MyFrame::DirChooseNew)
#if defined(__WXMSW__) || defined(__WXMAC__)
EVT_MENU(DIALOGS_GENERIC_DIR_CHOOSE, MyFrame::GenericDirChoose)
#endif // wxMSW || wxMAC
#endif // wxUSE_DIRDLG
#if USE_MODAL_PRESENTATION
EVT_MENU(DIALOGS_MODAL, MyFrame::ModalDlg)
EVT_MENU(DIALOGS_MODELESS, MyFrame::ModelessDlg)
#endif // USE_MODAL
#if wxUSE_STARTUP_TIPS
EVT_MENU(DIALOGS_TIP, MyFrame::ShowTip)
#if defined(__WXMSW__) && wxTEST_GENERIC_DIALOGS_IN_MSW
EVT_MENU(DIALOGS_CHOOSE_COLOUR_GENERIC, MyFrame::ChooseColourGeneric)
#endif // wxUSE_STARTUP_TIPS
#if USE_FONTDLG_GENERIC
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
EVT_MENU(DIALOGS_PROGRESS, MyFrame::ShowProgress)
@ -101,25 +163,29 @@ BEGIN_EVENT_TABLE(MyFrame, wxFrame)
EVT_MENU(DIALOGS_FIND, MyFrame::ShowFindDialog)
EVT_MENU(DIALOGS_REPLACE, MyFrame::ShowReplaceDialog)
EVT_FIND(-1, MyFrame::OnFindDialog)
EVT_FIND_NEXT(-1, MyFrame::OnFindDialog)
EVT_FIND_REPLACE(-1, MyFrame::OnFindDialog)
EVT_FIND_REPLACE_ALL(-1, MyFrame::OnFindDialog)
EVT_FIND_CLOSE(-1, MyFrame::OnFindDialog)
EVT_FIND(wxID_ANY, MyFrame::OnFindDialog)
EVT_FIND_NEXT(wxID_ANY, MyFrame::OnFindDialog)
EVT_FIND_REPLACE(wxID_ANY, MyFrame::OnFindDialog)
EVT_FIND_REPLACE_ALL(wxID_ANY, MyFrame::OnFindDialog)
EVT_FIND_CLOSE(wxID_ANY, MyFrame::OnFindDialog)
#endif // wxUSE_FINDREPLDLG
EVT_MENU(wxID_EXIT, MyFrame::OnExit)
END_EVENT_TABLE()
#if USE_MODAL_PRESENTATION
BEGIN_EVENT_TABLE(MyModalDialog, wxDialog)
EVT_BUTTON(-1, MyModalDialog::OnButton)
EVT_BUTTON(wxID_ANY, MyModalDialog::OnButton)
END_EVENT_TABLE()
BEGIN_EVENT_TABLE(MyModelessDialog, wxDialog)
EVT_BUTTON(DIALOGS_MODELESS_BTN, MyModelessDialog::OnButton)
EVT_CLOSE(MyModelessDialog::OnClose)
END_EVENT_TABLE()
#endif // USE_MODAL_PRESENTATION
MyCanvas *myCanvas = (MyCanvas *) NULL;
// `Main program' equivalent, creating windows and returning main app frame
@ -137,63 +203,130 @@ bool MyApp::OnInit()
m_canvasFont = *wxNORMAL_FONT;
// 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
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_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_COLOURDLG || wxUSE_FONTDLG || wxUSE_CHOICEDLG
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
file_menu->Append(DIALOGS_PROGRESS, _T("Pro&gress dialog\tCtrl-G"));
info_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"));
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
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);
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
file_menu->AppendSeparator();
file_menu->Append(DIALOGS_MODAL, _T("Mo&dal dialog\tCtrl-W"));
file_menu->Append(DIALOGS_MODELESS, _T("Modeless &dialog\tCtrl-Z"), _T(""), TRUE);
file_menu->AppendSeparator();
#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"));
wxMenuBar *menu_bar = new wxMenuBar;
menu_bar->Append(file_menu, _T("&File"));
frame->SetMenuBar(menu_bar);
@ -204,36 +337,39 @@ bool MyApp::OnInit()
frame->Centre(wxBOTH);
// Show the frame
frame->Show(TRUE);
frame->Show(true);
SetTopWindow(frame);
return TRUE;
return true;
}
// My frame constructor
MyFrame::MyFrame(wxWindow *parent,
const wxString& title,
const wxPoint& pos,
const wxSize& size)
: wxFrame(parent, -1, title, pos, size)
const wxString& title)
: wxFrame(parent, wxID_ANY, title)
{
#if USE_MODAL_PRESENTATION
m_dialog = (MyModelessDialog *)NULL;
#endif // USE_MODAL_PRESENTATION
#if wxUSE_FINDREPLDLG
m_dlgFind =
m_dlgReplace = NULL;
#endif
#if wxUSE_COLOURDLG
m_clrData.SetChooseFull(true);
for (int i = 0; i < 16; i++)
{
m_clrData.SetCustomColour(i, wxColour(i*16, i*16, i*16));
}
#endif // wxUSE_COLOURDLG
CreateStatusBar();
}
#if wxUSE_COLOURDLG
void MyFrame::ChooseColour(wxCommandEvent& WXUNUSED(event) )
{
m_clrData.SetColour(myCanvas->GetBackgroundColour());
@ -248,7 +384,9 @@ void MyFrame::ChooseColour(wxCommandEvent& WXUNUSED(event) )
myCanvas->Refresh();
}
}
#endif // wxUSE_COLOURDLG
#if wxUSE_FONTDLG
void MyFrame::ChooseFont(wxCommandEvent& WXUNUSED(event) )
{
wxFontData data;
@ -271,12 +409,13 @@ void MyFrame::ChooseFont(wxCommandEvent& WXUNUSED(event) )
}
//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))
{
wxColourData data;
data.SetChooseFull(TRUE);
data.SetChooseFull(true);
for (int i = 0; i < 16; i++)
{
wxColour colour(i*16, i*16, i*16);
@ -295,7 +434,9 @@ void MyFrame::ChooseColourGeneric(wxCommandEvent& WXUNUSED(event))
}
dialog->Destroy();
}
#endif // USE_COLOURDLG_GENERIC
#if USE_FONTDLG_GENERIC
void MyFrame::ChooseFontGeneric(wxCommandEvent& WXUNUSED(event) )
{
wxFontData data;
@ -312,7 +453,7 @@ void MyFrame::ChooseFontGeneric(wxCommandEvent& WXUNUSED(event) )
}
dialog->Destroy();
}
#endif // wxTEST_GENERIC_DIALOGS_IN_MSW
#endif // USE_FONTDLG_GENERIC
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) )
{
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);
}
#endif // wxUSE_NUMBERDLG
#if wxUSE_TEXTDLG
void MyFrame::PasswordEntry(wxCommandEvent& WXUNUSED(event))
{
wxString pwd = wxGetPasswordFromUser(_T("Enter password:"),
@ -411,7 +555,9 @@ void MyFrame::TextEntry(wxCommandEvent& WXUNUSED(event))
dialog2.ShowModal();
}
}
#endif // wxUSE_TEXTDLG
#if wxUSE_CHOICEDLG
void MyFrame::SingleChoice(wxCommandEvent& WXUNUSED(event) )
{
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
}
#endif // wxUSE_CHOICEDLG
#if wxUSE_FILEDLG
void MyFrame::FileOpen(wxCommandEvent& WXUNUSED(event) )
{
wxFileDialog dialog
@ -571,7 +719,9 @@ void MyFrame::FileSave(wxCommandEvent& WXUNUSED(event) )
dialog.GetPath().c_str(), dialog.GetFilterIndex());
}
}
#endif // wxUSE_FILEDLG
#if wxUSE_DIRDLG
void MyFrame::DoDirChoose(int style)
{
// pass some initial dir to wxDirDialog
@ -595,12 +745,11 @@ void MyFrame::DirChooseNew(wxCommandEvent& WXUNUSED(event) )
{
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) )
{
#if !(defined(__WXMSW__) || defined(__WXMAC__)) || wxUSE_DIRDLGG
// pass some initial dir to wxDirDialog
wxString dirHome;
wxGetHomeDir(&dirHome);
@ -612,14 +761,10 @@ void MyFrame::GenericDirChoose(wxCommandEvent& WXUNUSED(event) )
wxMessageDialog dialog2(this, dialog.GetPath(), _T("Selected path"));
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))
{
MyModalDialog dlg(this);
@ -637,17 +782,18 @@ void MyFrame::ModelessDlg(wxCommandEvent& event)
m_dialog = new MyModelessDialog(this);
}
m_dialog->Show(TRUE);
m_dialog->Show(true);
}
else // hide
{
m_dialog->Hide();
}
}
#endif // USE_MODAL_PRESENTATION
#if wxUSE_STARTUP_TIPS
void MyFrame::ShowTip(wxCommandEvent& WXUNUSED(event))
{
#if wxUSE_STARTUP_TIPS
static size_t 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();
delete tipProvider;
#endif
}
#endif // wxUSE_STARTUP_TIPS
void MyFrame::OnExit(wxCommandEvent& WXUNUSED(event) )
{
Close(TRUE);
Close(true);
}
#if wxUSE_PROGRESSDLG
@ -696,7 +842,7 @@ void MyFrame::ShowProgress( wxCommandEvent& WXUNUSED(event) )
wxPD_ESTIMATED_TIME |
wxPD_REMAINING_TIME);
bool cont = TRUE;
bool cont = true;
for ( int i = 0; i <= max; i++ )
{
wxSleep(1);
@ -775,7 +921,7 @@ void MyFrame::ShowReplaceDialog( wxCommandEvent& WXUNUSED(event) )
wxFR_REPLACEDIALOG
);
m_dlgReplace->Show(TRUE);
m_dlgReplace->Show(true);
}
}
@ -797,7 +943,7 @@ void MyFrame::ShowFindDialog( wxCommandEvent& WXUNUSED(event) )
wxFR_NOWHOLEWORD
);
m_dlgFind->Show(TRUE);
m_dlgFind->Show(true);
}
}
@ -853,16 +999,16 @@ void MyFrame::OnFindDialog(wxFindDialogEvent& event)
else
{
txt = _T("Unknown");
idMenu = -1;
idMenu = wxID_ANY;
wxFAIL_MSG( _T("unexpected event") );
}
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();
@ -893,18 +1039,18 @@ void MyCanvas::OnPaint(wxPaintEvent& WXUNUSED(event) )
// ----------------------------------------------------------------------------
MyModelessDialog::MyModelessDialog(wxWindow *parent)
: wxDialog(parent, -1, wxString(_T("Modeless dialog")))
: wxDialog(parent, wxID_ANY, wxString(_T("Modeless dialog")))
{
wxBoxSizer *sizerTop = new wxBoxSizer(wxVERTICAL);
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();
sizerTop->Add(btn, 1, wxEXPAND | wxALL, 5);
sizerTop->Add(check, 1, wxEXPAND | wxALL, 5);
SetAutoLayout(TRUE);
SetAutoLayout(true);
SetSizer(sizerTop);
sizerTop->SetSizeHints(this);
@ -934,13 +1080,13 @@ void MyModelessDialog::OnClose(wxCloseEvent& event)
// ----------------------------------------------------------------------------
MyModalDialog::MyModalDialog(wxWindow *parent)
: wxDialog(parent, -1, wxString(_T("Modal dialog")))
: wxDialog(parent, wxID_ANY, wxString(_T("Modal dialog")))
{
wxBoxSizer *sizerTop = new wxBoxSizer(wxHORIZONTAL);
m_btnModal = new wxButton(this, -1, _T("&Modal dialog..."));
m_btnModeless = new wxButton(this, -1, _T("Mode&less dialog"));
m_btnDelete = new wxButton(this, -1, _T("&Delete button"));
m_btnModal = new wxButton(this, wxID_ANY, _T("&Modal dialog..."));
m_btnModeless = new wxButton(this, wxID_ANY, _T("Mode&less dialog"));
m_btnDelete = new wxButton(this, wxID_ANY, _T("&Delete button"));
wxButton *btnOk = new wxButton(this, wxID_CANCEL, _T("&Close"));
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(btnOk, 0, wxALIGN_CENTER | wxALL, 5);
SetAutoLayout(TRUE);
SetAutoLayout(true);
SetSizer(sizerTop);
sizerTop->SetSizeHints(this);
@ -969,9 +1115,13 @@ void MyModalDialog::OnButton(wxCommandEvent& event)
}
else if ( event.GetEventObject() == m_btnModal )
{
#if wxUSE_TEXTDLG
wxGetTextFromUser(_T("Dummy prompt"),
_T("Modal dialog called from dialog"),
_T(""), this);
#else
wxMessageBox(_T("Modal dialog called from dialog"));
#endif // wxUSE_TEXTDLG
}
else if ( event.GetEventObject() == m_btnModeless )
{

View File

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