summaryrefslogtreecommitdiff
path: root/Application.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'Application.cpp')
-rw-r--r--Application.cpp27
1 files changed, 22 insertions, 5 deletions
diff --git a/Application.cpp b/Application.cpp
index e15b3db0..eb81c2de 100644
--- a/Application.cpp
+++ b/Application.cpp
@@ -67,7 +67,9 @@ bool Application::OnInit()
//Note: initialization is done in the FIRST idle event instead of OnInit. Reason: batch mode requires the wxApp eventhandler to be established
//for UI update events. This is not the case at the time of OnInit().
- Connect(wxEVT_IDLE, wxIdleEventHandler(Application::OnStartApplication), NULL, this);
+ Connect(wxEVT_IDLE, wxIdleEventHandler(Application::OnStartApplication), NULL, this);
+ Connect(wxEVT_QUERY_END_SESSION, wxEventHandler (Application::OnQueryEndSession ), NULL, this);
+ Connect(wxEVT_END_SESSION, wxEventHandler (Application::OnQueryEndSession ), NULL, this);
return true;
}
@@ -274,6 +276,19 @@ int Application::OnExit()
}
+void Application::OnQueryEndSession(wxEvent& event)
+{
+ //alas wxWidgets screws up once again: http://trac.wxwidgets.org/ticket/3069
+
+ MainDialog* mainWin = dynamic_cast<MainDialog*>(GetTopWindow());
+ if (mainWin)
+ mainWin->onQueryEndSession();
+ OnExit();
+ //wxEntryCleanup(); -> gives popup "dll init failed" on XP
+ std::exit(returnValue); //Windows will terminate anyway: destruct global objects
+}
+
+
void Application::runGuiMode(const xmlAccess::XmlGuiConfig& guiCfg, xmlAccess::XmlGlobalSettings& settings)
{
MainDialog* frame = new MainDialog(std::vector<wxString>(), guiCfg, settings, true);
@@ -306,7 +321,7 @@ void Application::runBatchMode(const wxString& filename, xmlAccess::XmlGlobalSet
//all settings have been read successfully...
//regular check for program updates -> disabled for batch
- //if (!batchCfg.silent)
+ //if (batchCfg.showProgress)
// checkForUpdatePeriodically(globSettings.lastUpdateCheck);
try //begin of synchronization process (all in one try-catch block)
@@ -314,13 +329,15 @@ void Application::runBatchMode(const wxString& filename, xmlAccess::XmlGlobalSet
const SwitchToGui switchBatchToGui(filename, batchCfg, globSettings); //prepare potential operational switch
//class handling status updates and error messages
- BatchStatusHandler statusHandler(batchCfg.silent,
+ BatchStatusHandler statusHandler(batchCfg.showProgress,
extractJobName(filename),
batchCfg.logFileDirectory,
batchCfg.logFileCountMax,
batchCfg.handleError,
switchBatchToGui,
- returnValue);
+ returnValue,
+ batchCfg.mainCfg.onCompletion,
+ globSettings.gui.onCompletionHistory);
const std::vector<FolderPairCfg> cmpConfig = extractCompareCfg(batchCfg.mainCfg);
@@ -370,7 +387,7 @@ void Application::runBatchMode(const wxString& filename, xmlAccess::XmlGlobalSet
syncProc.startSynchronizationProcess(syncProcessCfg, folderCmp);
//play (optional) sound notification after sync has completed -> don't play in silent mode, consider RealtimeSync!
- if (!batchCfg.silent)
+ if (batchCfg.showProgress)
{
const wxString soundFile = toWx(getResourceDir()) + wxT("Sync_Complete.wav");
if (fileExists(toZ(soundFile)))
bgstack15