#include "smallDialogs.h" #include "../library/globalFunctions.h" AboutDlg::AboutDlg(MainDialog* window) : AboutDlgGenerated(window) { m_bitmap9->SetBitmap(*GlobalResources::bitmapWebsite); m_bitmap10->SetBitmap(*GlobalResources::bitmapEmail); m_animationControl1->SetAnimation(*GlobalResources::animationMoney); m_animationControl1->Play(); //build wxString build = wxString(_("(Build: ")) + __TDATE__ + ")"; m_build->SetLabel(build); m_button8->SetFocus(); } AboutDlg::~AboutDlg() {} void AboutDlg::OnClose(wxCloseEvent& event) { Destroy(); } void AboutDlg::OnOK(wxCommandEvent& event) { Destroy(); } //######################################################################################## HelpDlg::HelpDlg(MainDialog* window) : HelpDlgGenerated(window) { m_button8->SetFocus(); } HelpDlg::~HelpDlg() {} void HelpDlg::OnClose(wxCloseEvent& event) { Destroy(); } void HelpDlg::OnOK(wxCommandEvent& event) { Destroy(); } //######################################################################################## FilterDlg::FilterDlg(MainDialog* window) : FilterDlgGenerated(window), mainDialog(window) { m_bitmap8->SetBitmap(*GlobalResources::bitmapInclude); m_bitmap9->SetBitmap(*GlobalResources::bitmapExclude); m_textCtrlInclude->SetValue(mainDialog->includeFilter); m_textCtrlExclude->SetValue(mainDialog->excludeFilter); } FilterDlg::~FilterDlg() {} void FilterDlg::OnClose(wxCloseEvent& event) { EndModal(0); } void FilterDlg::OnOK(wxCommandEvent& event) { //only if user presses ApplyFilter, he wants the changes to be committed mainDialog->includeFilter = m_textCtrlInclude->GetValue(); mainDialog->excludeFilter = m_textCtrlExclude->GetValue(); //when leaving dialog: filter and redraw grid, if filter is active EndModal(OkayButtonPressed); } void FilterDlg::OnCancel(wxCommandEvent& event) { EndModal(0); } void FilterDlg::OnDefault(wxCommandEvent& event) { m_textCtrlInclude->SetValue("*"); m_textCtrlExclude->SetValue(""); //changes to mainDialog are only committed when the OK button is pressed event.Skip(); } //######################################################################################## DeleteDialog::DeleteDialog(const wxString& headerText, const wxString& messageText, wxWindow* main) : DeleteDialogGenerated(main) { m_staticTextHeader->SetLabel(headerText); m_textCtrlMessage->SetValue(messageText); m_buttonOK->SetFocus(); } DeleteDialog::~DeleteDialog() {} void DeleteDialog::OnOK(wxCommandEvent& event) { EndModal(OkayButtonPressed); } void DeleteDialog::OnCancel(wxCommandEvent& event) { EndModal(CancelButtonPressed); } void DeleteDialog::OnClose(wxCloseEvent& event) { EndModal(CancelButtonPressed); } //######################################################################################## ErrorDlg::ErrorDlg(const wxString messageText, bool& suppressErrormessages) : ErrorDlgGenerated(0), suppressErrors(suppressErrormessages) { m_bitmap10->SetBitmap(*GlobalResources::bitmapWarning); m_textCtrl8->SetValue(messageText); m_buttonContinue->SetFocus(); } ErrorDlg::~ErrorDlg() {} void ErrorDlg::OnClose(wxCloseEvent& event) { //suppressErrors = m_checkBoxSuppress->GetValue(); -> not needed here EndModal(AbortButtonPressed); } void ErrorDlg::OnContinue(wxCommandEvent& event) { suppressErrors = m_checkBoxSuppress->GetValue(); EndModal(ContinueButtonPressed); } void ErrorDlg::OnRetry(wxCommandEvent& event) { //suppressErrors = m_checkBoxSuppress->GetValue(); -> not needed here EndModal(RetryButtonPressed); } void ErrorDlg::OnAbort(wxCommandEvent& event) { //suppressErrors = m_checkBoxSuppress->GetValue(); -> not needed here EndModal(AbortButtonPressed); } //######################################################################################## SyncStatus::SyncStatus(StatusUpdater* updater, double gaugeTotalElements, wxWindow* parentWindow) : SyncStatusGenerated(parentWindow), currentStatusUpdater(updater), windowToDis(parentWindow), currentProcessIsRunning(true), numberOfProcessedObjects(0) { //initialize gauge m_gauge1->SetRange(50000); m_gauge1->SetValue(0); resetGauge(gaugeTotalElements); m_buttonAbort->SetFocus(); if (windowToDis) //disable (main) window while this status dialog is shown windowToDis->Enable(false); } SyncStatus::~SyncStatus() { if (windowToDis) { windowToDis->Enable(true); windowToDis->Raise(); } } void SyncStatus::resetGauge(double totalNrOfElements) { currentElements = 0; totalElements = totalNrOfElements; if (totalElements != 0) scalingFactor = 50000 / totalElements; //let's normalize to 50000 else scalingFactor = 0; } void SyncStatus::incProgressIndicator_NoUpdate(double number) { currentElements+= number; numberOfProcessedObjects++; } void SyncStatus::setStatusText_NoUpdate(const wxString& text) { currentStatusText = text; } void SyncStatus::updateStatusDialogNow() { //progress indicator m_gauge1->SetValue(int(currentElements * scalingFactor)); //status text m_textCtrlInfo->SetValue(currentStatusText); //processed objects m_staticTextProcessedObj->SetLabel(GlobalFunctions::numberToWxString(numberOfProcessedObjects)); //remaining bytes left for copy const wxString remainingBytes = FreeFileSync::formatFilesizeToShortString(mpz_class(currentElements)) + "/" + FreeFileSync::formatFilesizeToShortString(mpz_class(totalElements)); m_staticTextBytesCopied->SetLabel(remainingBytes); //do the ui update updateUI_Now(); } void SyncStatus::processHasFinished(const wxString& finalStatusText) //essential to call this in StatusUpdater derived class destructor { //at the LATEST(!) to prevent access to currentStatusUpdater currentProcessIsRunning = false; //enable okay and close events m_staticTextStatus->SetLabel(finalStatusText); m_buttonAbort->Hide(); m_buttonOK->Show(); m_buttonOK->SetFocus(); updateStatusDialogNow(); //keep this sequence to avoid display distortion, if e.g. only 1 item is sync'ed Layout(); // } void SyncStatus::OnOkay(wxCommandEvent& event) { if (!currentProcessIsRunning) Destroy(); } void SyncStatus::OnAbort(wxCommandEvent& event) { if (currentProcessIsRunning) currentStatusUpdater->requestAbortion(); } void SyncStatus::OnClose(wxCloseEvent& event) { if (!currentProcessIsRunning) Destroy(); }