+void MyFrame::MultiChoice(wxCommandEvent& WXUNUSED(event) )
+{
+ const wxString choices[] = { "One", "Two", "Three", "Four", "Five" } ;
+ int n = 5;
+
+ wxArrayInt selections;
+ size_t count = wxGetMultipleChoices(selections,
+ "This is a small sample\n"
+ "A multi-choice convenience dialog",
+ "Please select a value",
+ n, (const wxString *)choices,
+ this);
+ if ( count )
+ {
+ wxString msg;
+ msg.Printf("You selected %u items:\n", count);
+ for ( size_t n = 0; n < count; n++ )
+ {
+ msg += wxString::Format("\t%u: %u (%s)\n", n, selections[n],
+ choices[selections[n]].c_str());
+ }
+ wxLogMessage(msg);
+ }
+ //else: cancelled or nothing selected
+}
+
+void MyFrame::FileOpen(wxCommandEvent& WXUNUSED(event) )
+{
+// wxFAIL_MSG( "Test assert" );
+
+ wxFileDialog dialog(this, "Testing open file dialog", "", "", "*.txt", 0);
+
+ if (dialog.ShowModal() == wxID_OK)
+ {
+ wxString info;
+ info.Printf(_T("Full file name: %s\n")
+ _T("Path: %s\n")
+ _T("Name: %s"),
+ dialog.GetPath().c_str(),
+ dialog.GetDirectory().c_str(),
+ dialog.GetFilename().c_str());
+ wxMessageDialog dialog2(this, info, "Selected file");
+ dialog2.ShowModal();
+ }
+}
+
+// this shows how to take advantage of specifying a default extension in the
+// call to wxFileSelector: it is remembered after each new call and the next
+// one will use it by default
+void MyFrame::FileOpen2(wxCommandEvent& WXUNUSED(event) )
+{
+ wxOnAssert( "Test assert.txt", 20, "Test" );
+ return;
+
+ static wxString s_extDef;
+ wxString path = wxFileSelector(
+ _T("Select the file to load"),
+ _T(""), _T(""),
+ s_extDef,
+ _T("Waveform (*.wav)|*.wav|Plain text (*.txt)|*.txt|All files (*.*)|*.*"),
+ 0,
+ this
+ );
+
+ if ( !path )
+ return;
+
+ // it is just a sample, would use wxSplitPath in real program
+ s_extDef = path.AfterLast(_T('.'));
+
+ wxLogMessage(_T("You selected the file '%s', remembered extension '%s'"),
+ (const wxChar*) path, (const wxChar*) s_extDef);
+}
+
+void MyFrame::FilesOpen(wxCommandEvent& WXUNUSED(event) )
+{
+ wxFileDialog dialog(this, "Testing open multiple file dialog",
+ "", "", wxFileSelectorDefaultWildcardStr,
+ wxMULTIPLE);
+
+ if (dialog.ShowModal() == wxID_OK)
+ {
+ wxArrayString paths, filenames;
+
+ dialog.GetPaths(paths);
+ dialog.GetFilenames(filenames);
+
+ wxString msg, s;
+ size_t count = paths.GetCount();
+ for ( size_t n = 0; n < count; n++ )
+ {
+ s.Printf(_T("File %d: %s (%s)\n"),
+ n, paths[n].c_str(), filenames[n].c_str());
+
+ msg += s;
+ }
+
+ wxMessageDialog dialog2(this, msg, "Selected files");
+ dialog2.ShowModal();
+ }
+}
+
+void MyFrame::FileSave(wxCommandEvent& WXUNUSED(event) )
+{
+ wxFileDialog dialog(this, "Testing save file dialog", "", "myletter.txt",
+ "Text files (*.txt)|*.txt|Document files (*.doc)|*.doc",
+ wxSAVE|wxOVERWRITE_PROMPT);
+
+ if (dialog.ShowModal() == wxID_OK)
+ {
+ wxChar buf[400];
+ wxSprintf(buf, _T("%s, filter %d"), (const wxChar*)dialog.GetPath(), dialog.GetFilterIndex());
+ wxMessageDialog dialog2(this, wxString(buf), "Selected path");
+ dialog2.ShowModal();
+ }
+}
+
+void MyFrame::DirChoose(wxCommandEvent& WXUNUSED(event) )
+{
+ // pass some initial dir to wxDirDialog
+ wxString dirHome;
+ wxGetHomeDir(&dirHome);
+
+ wxDirDialog dialog(this, "Testing directory picker", dirHome);
+
+ if (dialog.ShowModal() == wxID_OK)
+ {
+ wxMessageDialog dialog2(this, dialog.GetPath(), "Selected path");
+ dialog2.ShowModal();
+ }
+}
+
+void MyFrame::GenericDirChoose(wxCommandEvent& WXUNUSED(event) )
+{
+#if !defined(__WXMSW__) || defined(wxUSE_DIRDLGG) && wxUSE_DIRDLGG
+ // pass some initial dir to wxDirDialog
+ wxString dirHome;
+ wxGetHomeDir(&dirHome);
+
+ wxGenericDirDialog dialog(this, "Testing generic directory picker", dirHome);
+
+ if (dialog.ShowModal() == wxID_OK)
+ {
+ wxMessageDialog dialog2(this, dialog.GetPath(), "Selected path");
+ dialog2.ShowModal();
+ }
+#else
+ wxLogError("Sorry, generic dir dialog not available:\n"
+ "set wxUSE_DIRDLGG to 1 and recompile");
+#endif
+}
+
+void MyFrame::ModalDlg(wxCommandEvent& WXUNUSED(event))
+{
+ MyModalDialog dlg(this);
+ dlg.ShowModal();
+}
+
+void MyFrame::ModelessDlg(wxCommandEvent& event)
+{
+ bool show = GetMenuBar()->IsChecked(event.GetId());
+
+ if ( show )
+ {
+ if ( !m_dialog )
+ {
+ m_dialog = new MyModelessDialog(this);
+ }
+
+ m_dialog->Show(TRUE);
+ }
+ else // hide
+ {
+ m_dialog->Hide();
+ }
+}
+
+void MyFrame::ShowTip(wxCommandEvent& event)
+{
+#if wxUSE_STARTUP_TIPS
+ static size_t s_index = (size_t)-1;
+
+ if ( s_index == (size_t)-1 )
+ {
+ srand(time(NULL));
+
+ // this is completely bogus, we don't know how many lines are there
+ // in the file, but who cares, it's a demo only...
+ s_index = rand() % 5;
+ }
+
+ wxTipProvider *tipProvider = wxCreateFileTipProvider("tips.txt", s_index);
+
+ bool showAtStartup = wxShowTip(this, tipProvider);
+
+ if ( showAtStartup )
+ {
+ wxMessageBox("Will show tips on startup", "Tips dialog",
+ wxOK | wxICON_INFORMATION, this);
+ }
+
+ s_index = tipProvider->GetCurrentTip();
+ delete tipProvider;
+#endif
+}
+
+void MyFrame::OnExit(wxCommandEvent& WXUNUSED(event) )