X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/9b16ffef92279005902e4ef456da245ed6969a3a..c6e8c6f84a1420a9247fa56d342b561af730364c:/samples/dialogs/dialogs.cpp?ds=sidebyside diff --git a/samples/dialogs/dialogs.cpp b/samples/dialogs/dialogs.cpp index 7264b345c5..fecd4b0ec3 100644 --- a/samples/dialogs/dialogs.cpp +++ b/samples/dialogs/dialogs.cpp @@ -388,7 +388,14 @@ MyFrame::MyFrame(wxWindow *parent, m_clrData.SetChooseFull(true); for (int i = 0; i < 16; i++) { - m_clrData.SetCustomColour(i, wxColour(i*16, i*16, i*16)); + m_clrData.SetCustomColour( + i, + wxColour( + (unsigned char)(i*16), + (unsigned char)(i*16), + (unsigned char)(i*16) + ) + ); } #endif // wxUSE_COLOURDLG @@ -414,6 +421,36 @@ void MyFrame::ChooseColour(wxCommandEvent& WXUNUSED(event) ) } #endif // wxUSE_COLOURDLG +#if USE_COLOURDLG_GENERIC +void MyFrame::ChooseColourGeneric(wxCommandEvent& WXUNUSED(event)) +{ + m_clrData.SetColour(myCanvas->GetBackgroundColour()); + + //FIXME:TODO:This has no effect... + m_clrData.SetChooseFull(true); + + for (int i = 0; i < 16; i++) + { + wxColour colour( + (unsigned char)(i*16), + (unsigned char)(i*16), + (unsigned char)(i*16) + ); + m_clrData.SetCustomColour(i, colour); + } + + wxGenericColourDialog *dialog = new wxGenericColourDialog(this, &m_clrData); + if (dialog->ShowModal() == wxID_OK) + { + m_clrData = dialog->GetColourData(); + myCanvas->SetBackgroundColour(m_clrData.GetColour()); + myCanvas->ClearBackground(); + myCanvas->Refresh(); + } + dialog->Destroy(); +} +#endif // USE_COLOURDLG_GENERIC + #if wxUSE_FONTDLG void MyFrame::ChooseFont(wxCommandEvent& WXUNUSED(event) ) { @@ -439,31 +476,6 @@ void MyFrame::ChooseFont(wxCommandEvent& WXUNUSED(event) ) } #endif // wxUSE_FONTDLG -#if USE_COLOURDLG_GENERIC -void MyFrame::ChooseColourGeneric(wxCommandEvent& WXUNUSED(event)) -{ - wxColourData data; - data.SetChooseFull(true); - for (int i = 0; i < 16; i++) - { - wxColour colour(i*16, i*16, i*16); - data.SetCustomColour(i, colour); - } - - wxGenericColourDialog *dialog = new wxGenericColourDialog(this, &data); - if (dialog->ShowModal() == wxID_OK) - { - wxColourData retData = dialog->GetColourData(); - wxColour col = retData.GetColour(); -// wxBrush *brush = wxTheBrushList->FindOrCreateBrush(&col, wxSOLID); - myCanvas->SetBackgroundColour(col); - myCanvas->ClearBackground(); - myCanvas->Refresh(); - } - dialog->Destroy(); -} -#endif // USE_COLOURDLG_GENERIC - #if USE_FONTDLG_GENERIC void MyFrame::ChooseFontGeneric(wxCommandEvent& WXUNUSED(event) ) { @@ -563,7 +575,7 @@ void MyFrame::PasswordEntry(wxCommandEvent& WXUNUSED(event)) _T("Password entry dialog"), wxEmptyString, this); - if ( !!pwd ) + if ( !pwd.empty() ) { wxMessageBox(wxString::Format(wxT("Your password is '%s'"), pwd.c_str()), _T("Got password"), wxOK | wxICON_INFORMATION, this); @@ -893,7 +905,14 @@ void MyFrame::ModelessDlg(wxCommandEvent& event) } else // hide { - m_dialog->Hide(); + // If m_dialog is NULL, then possibly the system + // didn't report the checked menu item status correctly. + // It should be true just after the menu item was selected, + // if there was no modeless dialog yet. + + wxASSERT( m_dialog != NULL ); + if (m_dialog) + m_dialog->Hide(); } } #endif // USE_MODAL_PRESENTATION @@ -978,14 +997,18 @@ void MyFrame::ShowProgress( wxCommandEvent& WXUNUSED(event) ) max, // range this, // parent wxPD_CAN_ABORT | + wxPD_CAN_SKIP | wxPD_APP_MODAL | // wxPD_AUTO_HIDE | -- try this as well wxPD_ELAPSED_TIME | wxPD_ESTIMATED_TIME | - wxPD_REMAINING_TIME); + wxPD_REMAINING_TIME | + wxPD_SMOOTH); bool cont = true; - for ( int i = 0; i <= max; i++ ) + bool skip = false; + // each skip will move progress about quarter forward + for ( int i = 0; i <= max; i = wxMin(i+(skip?int(max/4):1), max+1), skip = false ) { #if wxUSE_STOPWATCH && wxUSE_LONGLONG // do (almost) the same operations as we did for the performance test @@ -1006,25 +1029,27 @@ void MyFrame::ShowProgress( wxCommandEvent& WXUNUSED(event) ) #else wxSleep(1); #endif + + wxString msg; + if ( i == max ) { - cont = dialog.Update(i, _T("That's all, folks!")); + msg = _T("That's all, folks!"); } - else if ( i == max / 2 ) + else if ( i > max / 2 ) { - cont = dialog.Update(i, _T("Only a half left (very long message)!")); + msg = _T("Only a half left (very long message)!"); } - else + +#if wxUSE_STOPWATCH && wxUSE_LONGLONG + if ( (i % (max/100)) == 0 ) // // only 100 updates, this makes it much faster { - #if wxUSE_STOPWATCH && wxUSE_LONGLONG - if ( (i % (max/100)) == 0 ) // // only 100 updates, this makes it much faster - { - cont = dialog.Update(i); - } - #else - cont = dialog.Update(i); - #endif + cont = dialog.Update(i, msg, &skip); } +#else + cont = dialog.Update(i, msg, &skip); +#endif + if ( !cont ) { if ( wxMessageBox(_T("Do you really want to cancel?"),