[dasher: 26/217] Win32 Config to turn off unsaved file prompt. Added prompt at exit



commit bee3f2a93ac5e90bf53b3e0b675ae1d3a50c59a5
Author: ipomoena <amajorek google com>
Date:   Thu Sep 10 19:27:20 2015 -0700

    Win32 Config to turn off unsaved file prompt. Added prompt at exit

 Src/Common/AppSettingsData.h       |    3 ++-
 Src/Common/AppSettingsHeader.h     |    2 +-
 Src/Win32/Dasher.rc                |   15 ++++++++-------
 Src/Win32/DasherWindow.cpp         |    7 ++++---
 Src/Win32/Widgets/AdvancedPage.cpp |   12 ++----------
 Src/Win32/Widgets/Edit.cpp         |   35 ++++++++++++++++-------------------
 Src/Win32/Widgets/Edit.h           |    2 +-
 Src/Win32/Widgets/FilenameGUI.cpp  |    4 ++--
 Src/Win32/resource.h               |    1 +
 9 files changed, 37 insertions(+), 44 deletions(-)
---
diff --git a/Src/Common/AppSettingsData.h b/Src/Common/AppSettingsData.h
index 399c2f4..913566e 100644
--- a/Src/Common/AppSettingsData.h
+++ b/Src/Common/AppSettingsData.h
@@ -52,7 +52,8 @@ struct app_sp_table {
 // is useful
 
 app_bp_table app_boolparamtable[] = {
-  {APP_BP_TIME_STAMP, "TimeStampNewFiles", PERS, true, true, "TimeStampNewFiles"},
+  { APP_BP_TIME_STAMP, "TimeStampNewFiles", PERS, true, true, "TimeStampNewFiles" },
+  { APP_BP_CONFIRM_UNSAVED, "ConfirmUnsavedFiles", PERS, true, true, "ConfirmUnsavedFiles" },
   {APP_BP_SHOW_TOOLBAR, "ViewToolbar", PERS, true, true, "ViewToolbar"},
   {APP_BP_SHOW_TOOLBAR_TEXT, "ShowToolbarText", PERS, true, true, "ShowToolbarText"},
   {APP_BP_SHOW_LARGE_ICONS, "ShowLargeIcons", PERS, true, true, "ShowLargeIcons"},
diff --git a/Src/Common/AppSettingsHeader.h b/Src/Common/AppSettingsHeader.h
index 7024a47..516500e 100644
--- a/Src/Common/AppSettingsHeader.h
+++ b/Src/Common/AppSettingsHeader.h
@@ -7,7 +7,7 @@
 #endif
 
 enum { 
-  APP_BP_TIME_STAMP = END_OF_SPS, APP_BP_SHOW_TOOLBAR,
+  APP_BP_TIME_STAMP = END_OF_SPS, APP_BP_CONFIRM_UNSAVED, APP_BP_SHOW_TOOLBAR,
   APP_BP_SHOW_TOOLBAR_TEXT, APP_BP_SHOW_LARGE_ICONS, APP_BP_FIX_LAYOUT,
   APP_BP_COPY_ALL_ON_STOP,APP_BP_WINDOW_PAUSE, APP_BP_SPEECH_MODE, 
   APP_BP_KEYBOARD_MODE, APP_BP_SPEECH_WORD, END_OF_APP_BPS
diff --git a/Src/Win32/Dasher.rc b/Src/Win32/Dasher.rc
index b5a7a09..9d47662 100644
--- a/Src/Win32/Dasher.rc
+++ b/Src/Win32/Dasher.rc
@@ -177,23 +177,24 @@ BEGIN
 END
 
 IDD_APPPAGE DIALOGEX 0, 0, 381, 238
-STYLE DS_SETFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
+STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_CAPTION | WS_SYSMENU
 CAPTION "Dialog"
 FONT 8, "MS Shell Dlg", 400, 0, 0x1
 BEGIN
-    CONTROL         "Control mode",IDC_CONTROLMODE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,12,54,59,10
-    CONTROL         "Show toolbar",IDC_CHECK1,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,12,30,58,10
-    CONTROL         "Show statusbar",IDC_CHECK2,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,12,42,66,10
     CONTROL         "Timestamp new files",IDC_TIMESTAMP,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,12,18,80,8
+    CONTROL         "Confirm unsaved changes",IDC_CONFIRM_UNSAVED,"Button",BS_AUTOCHECKBOX | 
WS_TABSTOP,12,30,108,8
+    CONTROL         "Show toolbar",IDC_CHECK1,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,12,42,58,10
+    CONTROL         "Show statusbar",IDC_CHECK2,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,12,54,66,10
+    CONTROL         "Control mode",IDC_CONTROLMODE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,12,66,59,10
     CONTROL         "Stand-alone",IDC_STYLE_STANDALONE,"Button",BS_AUTORADIOBUTTON | WS_GROUP | 
WS_TABSTOP,204,96,55,10
     CONTROL         "Composition",IDC_STYLE_COMPOSITION,"Button",BS_AUTORADIOBUTTON | 
WS_TABSTOP,204,120,55,10
     CONTROL         "Direct entry",IDC_STYLE_DIRECT,"Button",BS_AUTORADIOBUTTON | WS_TABSTOP,204,108,54,10
     GROUPBOX        "Application Style:",IDC_STATIC,198,84,180,63
     CONTROL         "Full screen",IDC_STYLE_FULL,"Button",BS_AUTORADIOBUTTON | NOT WS_VISIBLE | 
WS_TABSTOP,204,132,50,10
-    GROUPBOX        "Application Options:",IDC_STATIC,6,6,180,66
+    GROUPBOX        "Application Options:",IDC_STATIC,6,6,180,78
     GROUPBOX        "Speech:",IDC_STATIC,198,6,180,39
-    GROUPBOX        "Editor Font:",IDC_STATIC,6,78,180,30
-    PUSHBUTTON      "Change Font",IDC_EFONT_BUTTON,12,90,166,14
+    GROUPBOX        "Editor Font:",IDC_STATIC,6,90,180,30
+    PUSHBUTTON      "Change Font",IDC_EFONT_BUTTON,12,102,166,14
     CONTROL         "Speak on stop",IDC_CHECK3,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,204,18,99,10
     CONTROL         "Speak on word breaks",IDC_CHECK4,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,204,30,90,10
     GROUPBOX        "Clipboard:",IDC_STATIC,198,48,180,30
diff --git a/Src/Win32/DasherWindow.cpp b/Src/Win32/DasherWindow.cpp
index 9984797..d48f6e5 100644
--- a/Src/Win32/DasherWindow.cpp
+++ b/Src/Win32/DasherWindow.cpp
@@ -321,9 +321,10 @@ LRESULT CDasherWindow::OnInitMenuPopup(UINT message, WPARAM wParam, LPARAM lPara
 }
 
 LRESULT CDasherWindow::OnClose(UINT message, WPARAM wParam, LPARAM lParam, BOOL& bHandled) {
-  // TODO: Prompt for confirmation here
-  SaveWindowState();
-  DestroyWindow();
+  if (m_pEdit->ConfirmAndSaveIfNeeded()) {
+    SaveWindowState();
+    DestroyWindow();
+  }
   return 0;
 }
 
diff --git a/Src/Win32/Widgets/AdvancedPage.cpp b/Src/Win32/Widgets/AdvancedPage.cpp
index 9c2dead..40f10e9 100644
--- a/Src/Win32/Widgets/AdvancedPage.cpp
+++ b/Src/Win32/Widgets/AdvancedPage.cpp
@@ -40,7 +40,8 @@ struct menuentry {
 static menuentry menutable[] = {
   {APP_BP_SHOW_TOOLBAR, IDC_CHECK1},
   {BP_SHOW_SLIDER, IDC_CHECK2},
-  {APP_BP_TIME_STAMP, IDC_TIMESTAMP},
+  { APP_BP_TIME_STAMP, IDC_TIMESTAMP },
+  { APP_BP_CONFIRM_UNSAVED, IDC_CONFIRM_UNSAVED },
   {BP_CONTROL_MODE, IDC_CONTROLMODE},  // Not global setting - specific to editbox/widget
   {BP_SPEAK_WORDS, IDC_CHECK4},
   {BP_SPEAK_ALL_ON_STOP, IDC_CHECK3},
@@ -60,15 +61,6 @@ std::string CAdvancedPage::GetControlText(HWND Dialog, int ControlID)
 }
 
 void CAdvancedPage::PopulateList() {
-
-   //if(m_pAppSettings->GetBoolParameter(APP_BP_TIME_STAMP)) {
-   //   SendMessage(GetDlgItem(m_hwnd, IDC_TIMESTAMP), BM_SETCHECK, BST_CHECKED, 0);
-   // }
-   // else  {
-   //   SendMessage(GetDlgItem(m_hwnd, IDC_TIMESTAMP), BM_SETCHECK, BST_UNCHECKED, 0);
-   // }
-
-
   // Populate the controls in the dialogue box based on the relevent parameters
   for(int ii = 0; ii<sizeof(menutable)/sizeof(menuentry); ii++)
   {
diff --git a/Src/Win32/Widgets/Edit.cpp b/Src/Win32/Widgets/Edit.cpp
index 0f283e0..4535b22 100644
--- a/Src/Win32/Widgets/Edit.cpp
+++ b/Src/Win32/Widgets/Edit.cpp
@@ -175,35 +175,32 @@ bool CEdit::Save() {
   return true;
 }
 
-void CEdit::New() {
+bool CEdit::ConfirmAndSaveIfNeeded() {
+  if (!m_pAppSettings->GetBoolParameter(APP_BP_CONFIRM_UNSAVED))
+    return true;
+  
   switch (m_FilenameGUI->QuerySaveFirst()) {
   case IDYES:
-    if(!Save())
-      if(!TSaveAs(m_FilenameGUI->SaveAs()))
-        return;
+    if (!Save())
+      if (!TSaveAs(m_FilenameGUI->SaveAs()))
+        return false;
     break;
   case IDNO:
     break;
   default:
-    return;
+    return false;
   }
-  TNew(TEXT(""));
+  return true;
+}
+
+void CEdit::New() {
+  if (ConfirmAndSaveIfNeeded())
+    TNew(TEXT(""));
 }
 
 void CEdit::Open() {
-  switch (m_FilenameGUI->QuerySaveFirst()) {
-  case IDYES:
-    if(!Save())
-      if(!TSaveAs(m_FilenameGUI->SaveAs()))
-        return;
-    break;
-  case IDNO:
-    break;
-  default:
-    return;
-    break;
-  }
-  TOpen(m_FilenameGUI->Open());
+  if (ConfirmAndSaveIfNeeded())
+    TOpen(m_FilenameGUI->Open());
 }
 
 void CEdit::SaveAs() {
diff --git a/Src/Win32/Widgets/Edit.h b/Src/Win32/Widgets/Edit.h
index c670d08..4d81127 100644
--- a/Src/Win32/Widgets/Edit.h
+++ b/Src/Win32/Widgets/Edit.h
@@ -87,7 +87,7 @@ class CEdit : public ATL::CWindowImpl<CEdit> {
   int Move(bool bForwards, Dasher::CControlManager::EditDistance iDist);
   int Delete(bool bForwards, Dasher::CControlManager::EditDistance iDist);
   void SetKeyboardTarget(HWND hwnd);
-  
+  bool ConfirmAndSaveIfNeeded();
   bool Save();
   // Functions for Windows GUI to call
   void New();
diff --git a/Src/Win32/Widgets/FilenameGUI.cpp b/Src/Win32/Widgets/FilenameGUI.cpp
index 3120bc8..62736c9 100644
--- a/Src/Win32/Widgets/FilenameGUI.cpp
+++ b/Src/Win32/Widgets/FilenameGUI.cpp
@@ -203,8 +203,8 @@ int CFilenameGUI::QuerySaveFirst() {
     WinLocalisation::GetResourceString(IDS_QUERY_SAVE_CHANGES, &ResourceString);
     WinLocalisation::GetResourceString(IDS_UNSAVED_CHANGES, &Title);
 
-       return IDNO;// MessageBox(WindowWithTitlebar, ResourceString.c_str(), Title.c_str(), MB_YESNOCANCEL | 
MB_ICONWARNING | MB_DEFBUTTON1 | MB_APPLMODAL);
-    }
+    return MessageBox(WindowWithTitlebar, ResourceString.c_str(), Title.c_str(), MB_YESNOCANCEL | 
MB_ICONWARNING | MB_DEFBUTTON1 | MB_APPLMODAL);
+  }
 
   return IDNO;
 }
diff --git a/Src/Win32/resource.h b/Src/Win32/resource.h
index 28cdaa6..851aa80 100644
--- a/Src/Win32/resource.h
+++ b/Src/Win32/resource.h
@@ -55,6 +55,7 @@
 #define IDC_OUTLINE                     1091
 #define IDC_STOPIDLE                    1091
 #define IDC_TIMESTAMP                   1092
+#define IDC_CONFIRM_UNSAVED             1093
 #define IDC_DRAWMOUSE                   1094
 #define IDC_DRAWMOUSELINE               1097
 #define IDC_COLOURSCHEME                1098


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]