/* WARNING: This file was generated by dkct. Changes you make here will be lost if dkct is run again! You should modify the original source and run dkct on it. Original source: Dk4WxProgressDialog.wxc */ /** @file Dk4WxProgressDialog.cpp The Dk4WxProgressDialog module. */ #line 249 "Dk4WxProgressDialog.wxc" #include "Dk4WxProgressDialog.h" #line 255 "Dk4WxProgressDialog.wxc" BEGIN_EVENT_TABLE(Dk4WxProgressDialog,wxDialog) EVT_IDLE( Dk4WxProgressDialog::OnIdle) EVT_BUTTON(wxID_CANCEL, Dk4WxProgressDialog::OnCancel) END_EVENT_TABLE() static const wxChar * dk4wx_progress_kw_wx[] = { /* 0 */ wxT("Operation in progress"), /* 1 */ wxT("Cancel"), /* 2 */ wxT("Abort operation"), /* 3 */ wxT("Abortion scheduled, please wait."), NULL #line 274 "Dk4WxProgressDialog.wxc" }; /** Integer preference names. */ static const wxChar * const names[] = { /* 0 */ wxT("progress.min-width"), NULL #line 284 "Dk4WxProgressDialog.wxc" }; #line 288 "Dk4WxProgressDialog.wxc" Dk4WxProgressDialog::Dk4WxProgressDialog( wxFrame *parent, Dk4WxApplicationHelper *pAppHelp ) : wxDialog( parent, wxID_ANY, ( (NULL != pAppHelp) ? (pAppHelp->GetBasicString(2)) : (dk4wx_progress_kw_wx[0]) ), wxDefaultPosition, wxDefaultSize, wxDEFAULT_DIALOG_STYLE ) { const wxChar *labelText = NULL; int minWidth = 300; labelText = dk4wx_progress_kw_wx[0]; if (NULL != pAppHelp) { labelText = pAppHelp->GetBasicString(2); pAppHelp->GetMultiple(names, &minWidth, 1); if (0 > minWidth) { minWidth = 300; } } iOld = 0; iNew = 0; bActive = true; bAborted = false; bFinished = false; bSuccess = false; bHaveDialog = false; sDialogTitle = wxEmptyString; sDialogText = wxEmptyString; iDialogStyle = wxID_OK; if (NULL != pAppHelp) { sText[0] = pAppHelp->GetBasicString(3); // Button label sText[1] = pAppHelp->GetBasicString(4); // Button tooltip sText[2] = pAppHelp->GetBasicString(5); // Text hint } else { sText[0] = dk4wx_progress_kw_wx[1]; sText[1] = dk4wx_progress_kw_wx[2]; sText[2] = dk4wx_progress_kw_wx[3]; } dkctGUILayoutOK = false; sDialog = NULL; verticalSizer = NULL; sttInProgress = NULL; gaugeProgress = NULL; sttWait = NULL; bCancel = NULL; sDialog = new wxBoxSizer( wxHORIZONTAL ); if(!(sDialog)) { goto dkctGUILayoutFinished; } sDialog->Add(10, 10, 0); verticalSizer = new wxBoxSizer( wxVERTICAL ); if(!(verticalSizer)) { goto dkctGUILayoutFinished; } verticalSizer->Add(10, 10, 0); sttInProgress = new wxStaticText( this, wxID_ANY, labelText, wxDefaultPosition, wxDefaultSize, wxALIGN_CENTRE ); if(!(sttInProgress)) { goto dkctGUILayoutFinished; } verticalSizer->Add( sttInProgress ); verticalSizer->Add(10, 10, 0); gaugeProgress = new wxGauge( this, wxID_ANY, 1000 ); if(!(gaugeProgress)) { goto dkctGUILayoutFinished; } verticalSizer->Add( gaugeProgress, 1, wxALIGN_CENTER_HORIZONTAL|wxGROW ); verticalSizer->Add(10, 10, 0); sttWait = new wxStaticText( this, wxID_ANY, wxT(""), wxDefaultPosition, wxDefaultSize, wxALIGN_CENTRE ); if(!(sttWait)) { goto dkctGUILayoutFinished; } verticalSizer->Add( sttWait, 1, wxALIGN_CENTER_HORIZONTAL|wxGROW ); verticalSizer->Add(10, 10, 0); bCancel = new wxButton( this, wxID_CANCEL, sText[0] ); if(!(bCancel)) { goto dkctGUILayoutFinished; } bCancel->SetToolTip(sText[1]); verticalSizer->Add( bCancel, 0, wxALIGN_CENTER_HORIZONTAL ); verticalSizer->Add(10, 10, 0); sDialog->Add( verticalSizer, 1, wxGROW ); sDialog->Add(10, 10, 0); SetSizer(sDialog); dkctGUILayoutOK = true; dkctGUILayoutFinished: if(dkctGUILayoutOK) { sDialog->Fit(this); sDialog->SetSizeHints(this); } #line 334 "Dk4WxProgressDialog.wxc" if (dkctGUILayoutOK) { wxSize gaugeSize = gaugeProgress->GetMinSize(); if (300 > gaugeSize.GetWidth()) { gaugeSize.SetWidth(300); gaugeProgress->SetMinSize(gaugeSize); } sDialog->Fit(this); sDialog->SetSizeHints(this); } } #line 346 "Dk4WxProgressDialog.wxc" void Dk4WxProgressDialog::OnIdle(wxIdleEvent & event) { int result; { wxCriticalSectionLocker lock(csProtect); if (bActive) { if (bFinished) { bActive = false; result = wxID_OK; if ((bAborted) || (!(bSuccess))) { result = wxID_CANCEL; } if (IsModal()) { EndModal(result); } else { SetReturnCode((bSuccess) && (!(bAborted))); Show(false); } } else { if (iNew != iOld) { iOld = iNew; gaugeProgress->SetValue(iNew); Refresh(); Update(); } event.RequestMore(); } } } event.Skip(); } void Dk4WxProgressDialog::OnCancel(wxCommandEvent & WXUNUSED(event)) { bCancel->Enable(false); bCancel->SetToolTip(sText[2]); Refresh(); Update(); { wxCriticalSectionLocker lock(csProtect); if (!(bFinished)) { bAborted = true; } } } void Dk4WxProgressDialog::SetGauge(int value) { wxCriticalSectionLocker lock(csProtect); iNew = value; } void Dk4WxProgressDialog::SetDialogData( const wxString & title, const wxString & msg, int st ) { wxCriticalSectionLocker lock(csProtect); bHaveDialog = true; sDialogTitle = title; sDialogText = msg; iDialogStyle = st; } void Dk4WxProgressDialog::StartProcessing(void) { wxCriticalSectionLocker lock(csProtect); bActive = true; sDialogTitle = wxEmptyString; sDialogText = wxEmptyString; iOld = 0; iNew = 0; bAborted = false; bFinished = false; bSuccess = true; bActive = true; bHaveDialog = false; } void Dk4WxProgressDialog::EndProcessing(bool success) { wxCriticalSectionLocker lock(csProtect); bFinished = true; if (!(bAborted)) { bSuccess = success; } } bool Dk4WxProgressDialog::CanContinue(void) { bool back = true; { wxCriticalSectionLocker lock(csProtect); if ((bAborted) || (bFinished)) { back = false; } } return back; } bool Dk4WxProgressDialog::IsFinished(void) { bool back = false; { wxCriticalSectionLocker lock(csProtect); back = bFinished; } return back; } int Dk4WxProgressDialog::GetGauge(void) { int back = 0; { wxCriticalSectionLocker lock(csProtect); back = iNew; } return back; } void Dk4WxProgressDialog::AbortProcessing(void) { wxCriticalSectionLocker lock(csProtect); if (!(bFinished)) { bAborted = true; } } bool Dk4WxProgressDialog::GetSuccess(void) { bool back = false; { wxCriticalSectionLocker lock(csProtect); if (bFinished) { back = true; if ((bAborted) || (!(bSuccess))) { back = false; } } } return back; } bool Dk4WxProgressDialog::GetDialogData( wxString & title, wxString & msg, int & style ) { bool back = false; { wxCriticalSectionLocker lock(csProtect); if (bHaveDialog) { title = sDialogTitle; msg = sDialogText; style = iDialogStyle; back = true; } } return back; }