Add a Save all confirm dialog
and add also an option in Preferences dialog to enable or diable the dialog. Fix #2124, fix #9931, close #9968
This commit is contained in:
parent
27524e1d4d
commit
80c285ee2d
|
@ -1084,6 +1084,7 @@ You can define several column markers by using white space to separate the diffe
|
||||||
<Item id="6345" name="Peek on tab"/>
|
<Item id="6345" name="Peek on tab"/>
|
||||||
<Item id="6346" name="Peek on document map"/>
|
<Item id="6346" name="Peek on document map"/>
|
||||||
<Item id="6360" name="Mute all sounds"/>
|
<Item id="6360" name="Mute all sounds"/>
|
||||||
|
<Item id="6361" name="Enable Save All confirm dialog"/>
|
||||||
</MISC>
|
</MISC>
|
||||||
</Preference>
|
</Preference>
|
||||||
<MultiMacro title="Run a Macro Multiple Times">
|
<MultiMacro title="Run a Macro Multiple Times">
|
||||||
|
@ -1232,6 +1233,10 @@ Do you want to launch Notepad++ in Administrator mode?"/>
|
||||||
Notepad++ will be restarted after all the operations are terminated.
|
Notepad++ will be restarted after all the operations are terminated.
|
||||||
Continue?"/>
|
Continue?"/>
|
||||||
<NeedToRestartToLoadPlugins title="Notepad++ need to be relaunched" message="You have to restart Notepad++ to load plugins you installed."/> <!-- HowToReproduce: Import a plugin via menu "Settings->Import->Import Plugin(s)...". -->
|
<NeedToRestartToLoadPlugins title="Notepad++ need to be relaunched" message="You have to restart Notepad++ to load plugins you installed."/> <!-- HowToReproduce: Import a plugin via menu "Settings->Import->Import Plugin(s)...". -->
|
||||||
|
<SaveAllConfirm title="Save All Confirmation" message="Are you sure you want to save all documents?
|
||||||
|
|
||||||
|
Choose "Cancel" if your answer will always be "Yes" and you won't be asked this question again.
|
||||||
|
You can re-activate this dialog in Preferences dialog later." /> <!-- HowToReproduce: Check the 'Enable Save All confirm dialog' checkbox in Preference->MISC, now click 'Save all' -->
|
||||||
</MessageBox>
|
</MessageBox>
|
||||||
<ClipboardHistory>
|
<ClipboardHistory>
|
||||||
<PanelTitle name="Clipboard History"/>
|
<PanelTitle name="Clipboard History"/>
|
||||||
|
|
|
@ -182,6 +182,7 @@ public:
|
||||||
bool fileCloseAllToRight();
|
bool fileCloseAllToRight();
|
||||||
bool fileCloseAllUnchanged();
|
bool fileCloseAllUnchanged();
|
||||||
bool fileSave(BufferID id = BUFFER_INVALID);
|
bool fileSave(BufferID id = BUFFER_INVALID);
|
||||||
|
bool fileSaveAllConfirm();
|
||||||
bool fileSaveAll();
|
bool fileSaveAll();
|
||||||
bool fileSaveSpecific(const generic_string& fileNameToSave);
|
bool fileSaveSpecific(const generic_string& fileNameToSave);
|
||||||
bool fileSaveAs(BufferID id = BUFFER_INVALID, bool isSaveCopy = false);
|
bool fileSaveAs(BufferID id = BUFFER_INVALID, bool isSaveCopy = false);
|
||||||
|
|
|
@ -1598,26 +1598,62 @@ bool Notepad_plus::fileSaveSpecific(const generic_string& fileNameToSave)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
bool Notepad_plus::fileSaveAll()
|
bool Notepad_plus::fileSaveAllConfirm()
|
||||||
{
|
{
|
||||||
if (viewVisible(MAIN_VIEW))
|
bool confirmed = false;
|
||||||
|
|
||||||
|
if (NppParameters::getInstance().getNppGUI()._saveAllConfirm)
|
||||||
{
|
{
|
||||||
for (size_t i = 0; i < _mainDocTab.nbItem(); ++i)
|
int answer = _nativeLangSpeaker.messageBox("SaveAllConfirm",
|
||||||
|
_pPublicInterface->getHSelf(),
|
||||||
|
TEXT("Are you sure you want to save all documents?\r\rChoose \"Cancel\" if your answer will always be \"Yes\" and you won't be asked this question again.\rYou can re-activate this dialog in Preferences dialog later."),
|
||||||
|
TEXT("Save All Confirmation"),
|
||||||
|
MB_YESNOCANCEL | MB_DEFBUTTON2);
|
||||||
|
|
||||||
|
if (answer == IDYES)
|
||||||
{
|
{
|
||||||
BufferID idToSave = _mainDocTab.getBufferByIndex(i);
|
confirmed = true;
|
||||||
fileSave(idToSave);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (answer == IDCANCEL)
|
||||||
|
{
|
||||||
|
NppParameters::getInstance().getNppGUI()._saveAllConfirm = false;
|
||||||
|
//uncheck the "Enable save all confirm dialog" checkbox in Preference-> MISC settings
|
||||||
|
_preference._miscSubDlg.setChecked(IDC_CHECK_SAVEALLCONFIRM, false);
|
||||||
|
confirmed = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
confirmed = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (viewVisible(SUB_VIEW))
|
return confirmed;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool Notepad_plus::fileSaveAll()
|
||||||
|
{
|
||||||
|
if ( fileSaveAllConfirm() )
|
||||||
{
|
{
|
||||||
for (size_t i = 0; i < _subDocTab.nbItem(); ++i)
|
if (viewVisible(MAIN_VIEW))
|
||||||
{
|
{
|
||||||
BufferID idToSave = _subDocTab.getBufferByIndex(i);
|
for (size_t i = 0; i < _mainDocTab.nbItem(); ++i)
|
||||||
fileSave(idToSave);
|
{
|
||||||
|
BufferID idToSave = _mainDocTab.getBufferByIndex(i);
|
||||||
|
fileSave(idToSave);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (viewVisible(SUB_VIEW))
|
||||||
|
{
|
||||||
|
for (size_t i = 0; i < _subDocTab.nbItem(); ++i)
|
||||||
|
{
|
||||||
|
BufferID idToSave = _subDocTab.getBufferByIndex(i);
|
||||||
|
fileSave(idToSave);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
checkDocState();
|
||||||
}
|
}
|
||||||
checkDocState();
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -4390,6 +4390,21 @@ void NppParameters::feedGUIParameters(TiXmlNode *node)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
else if (!lstrcmp(nm, TEXT("SaveAllConfirm")))
|
||||||
|
{
|
||||||
|
TiXmlNode *n = childNode->FirstChild();
|
||||||
|
if (n)
|
||||||
|
{
|
||||||
|
const TCHAR* val = n->Value();
|
||||||
|
if (val)
|
||||||
|
{
|
||||||
|
if (lstrcmp(val, TEXT("yes")) == 0)
|
||||||
|
_nppGUI._saveAllConfirm = true;
|
||||||
|
else
|
||||||
|
_nppGUI._saveAllConfirm = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
else if (lstrcmp(nm, TEXT("MaitainIndent")) == 0)
|
else if (lstrcmp(nm, TEXT("MaitainIndent")) == 0)
|
||||||
{
|
{
|
||||||
TiXmlNode *n = childNode->FirstChild();
|
TiXmlNode *n = childNode->FirstChild();
|
||||||
|
@ -6122,6 +6137,11 @@ void NppParameters::createXmlTreeFromGUIParams()
|
||||||
{
|
{
|
||||||
insertGUIConfigBoolNode(newGUIRoot, TEXT("DetectEncoding"), _nppGUI._detectEncoding);
|
insertGUIConfigBoolNode(newGUIRoot, TEXT("DetectEncoding"), _nppGUI._detectEncoding);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// <GUIConfig name = "SaveAllConfirm">yes< / GUIConfig>
|
||||||
|
{
|
||||||
|
insertGUIConfigBoolNode(newGUIRoot, TEXT("SaveAllConfirm"), _nppGUI._saveAllConfirm);
|
||||||
|
}
|
||||||
|
|
||||||
// <GUIConfig name = "NewDocDefaultSettings" format = "0" encoding = "0" lang = "3" codepage = "-1" openAnsiAsUTF8 = "no" / >
|
// <GUIConfig name = "NewDocDefaultSettings" format = "0" encoding = "0" lang = "3" codepage = "-1" openAnsiAsUTF8 = "no" / >
|
||||||
{
|
{
|
||||||
|
|
|
@ -833,6 +833,7 @@ struct NppGUI final
|
||||||
bool _rememberLastSession = true; // remember next session boolean will be written in the settings
|
bool _rememberLastSession = true; // remember next session boolean will be written in the settings
|
||||||
bool _isCmdlineNosessionActivated = false; // used for if -nosession is indicated on the launch time
|
bool _isCmdlineNosessionActivated = false; // used for if -nosession is indicated on the launch time
|
||||||
bool _detectEncoding = true;
|
bool _detectEncoding = true;
|
||||||
|
bool _saveAllConfirm = true;
|
||||||
bool _setSaveDlgExtFiltToAllTypes = false;
|
bool _setSaveDlgExtFiltToAllTypes = false;
|
||||||
bool _doTaskList = true;
|
bool _doTaskList = true;
|
||||||
bool _maitainIndent = true;
|
bool _maitainIndent = true;
|
||||||
|
|
|
@ -458,6 +458,7 @@ BEGIN
|
||||||
CONTROL "Minimize to system tray",IDC_CHECK_MIN2SYSTRAY,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,37,139,217,10
|
CONTROL "Minimize to system tray",IDC_CHECK_MIN2SYSTRAY,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,37,139,217,10
|
||||||
CONTROL "Show only filename in title bar",IDC_CHECK_SHORTTITLE,"Button",BS_AUTOCHECKBOX | BS_MULTILINE | WS_TABSTOP,37,154,217,10
|
CONTROL "Show only filename in title bar",IDC_CHECK_SHORTTITLE,"Button",BS_AUTOCHECKBOX | BS_MULTILINE | WS_TABSTOP,37,154,217,10
|
||||||
CONTROL "Use DirectWrite (May improve rendering special characters, need to restart Notepad++)",IDC_CHECK_DIRECTWRITE_ENABLE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,37,169,377,10
|
CONTROL "Use DirectWrite (May improve rendering special characters, need to restart Notepad++)",IDC_CHECK_DIRECTWRITE_ENABLE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,37,169,377,10
|
||||||
|
CONTROL "Enable Save All confirm dialog", IDC_CHECK_SAVEALLCONFIRM, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 37, 184, 217, 10
|
||||||
COMBOBOX IDC_COMBO_FILEUPDATECHOICE,44,16,140,100,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
|
COMBOBOX IDC_COMBO_FILEUPDATECHOICE,44,16,140,100,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
|
||||||
CONTROL "Update silently",IDC_CHECK_UPDATESILENTLY,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,44,32,140,10
|
CONTROL "Update silently",IDC_CHECK_UPDATESILENTLY,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,44,32,140,10
|
||||||
CONTROL "Scroll to the last line after update",IDC_CHECK_UPDATEGOTOEOF,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,44,44,140,10
|
CONTROL "Scroll to the last line after update",IDC_CHECK_UPDATEGOTOEOF,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,44,44,140,10
|
||||||
|
|
|
@ -1136,6 +1136,7 @@ INT_PTR CALLBACK MiscSubDlg::run_dlgProc(UINT message, WPARAM wParam, LPARAM)
|
||||||
|
|
||||||
::SendDlgItemMessage(_hSelf, IDC_CHECK_MIN2SYSTRAY, BM_SETCHECK, nppGUI._isMinimizedToTray, 0);
|
::SendDlgItemMessage(_hSelf, IDC_CHECK_MIN2SYSTRAY, BM_SETCHECK, nppGUI._isMinimizedToTray, 0);
|
||||||
::SendDlgItemMessage(_hSelf, IDC_CHECK_DETECTENCODING, BM_SETCHECK, nppGUI._detectEncoding, 0);
|
::SendDlgItemMessage(_hSelf, IDC_CHECK_DETECTENCODING, BM_SETCHECK, nppGUI._detectEncoding, 0);
|
||||||
|
::SendDlgItemMessage(_hSelf, IDC_CHECK_SAVEALLCONFIRM, BM_SETCHECK, nppGUI._saveAllConfirm, 0);
|
||||||
::SendDlgItemMessage(_hSelf, IDC_CHECK_AUTOUPDATE, BM_SETCHECK, nppGUI._autoUpdateOpt._doAutoUpdate, 0);
|
::SendDlgItemMessage(_hSelf, IDC_CHECK_AUTOUPDATE, BM_SETCHECK, nppGUI._autoUpdateOpt._doAutoUpdate, 0);
|
||||||
::SendDlgItemMessage(_hSelf, IDC_CHECK_DIRECTWRITE_ENABLE, BM_SETCHECK, nppGUI._writeTechnologyEngine == directWriteTechnology, 0);
|
::SendDlgItemMessage(_hSelf, IDC_CHECK_DIRECTWRITE_ENABLE, BM_SETCHECK, nppGUI._writeTechnologyEngine == directWriteTechnology, 0);
|
||||||
::SendDlgItemMessage(_hSelf, IDC_CHECK_ENABLEDOCPEEKER, BM_SETCHECK, nppGUI._isDocPeekOnTab ? BST_CHECKED : BST_UNCHECKED, 0);
|
::SendDlgItemMessage(_hSelf, IDC_CHECK_ENABLEDOCPEEKER, BM_SETCHECK, nppGUI._isDocPeekOnTab ? BST_CHECKED : BST_UNCHECKED, 0);
|
||||||
|
@ -1275,6 +1276,12 @@ INT_PTR CALLBACK MiscSubDlg::run_dlgProc(UINT message, WPARAM wParam, LPARAM)
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
case IDC_CHECK_SAVEALLCONFIRM:
|
||||||
|
{
|
||||||
|
nppGUI._saveAllConfirm = isCheckedOrNot(IDC_CHECK_SAVEALLCONFIRM);
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
default:
|
default:
|
||||||
{
|
{
|
||||||
if (HIWORD(wParam) == CBN_SELCHANGE)
|
if (HIWORD(wParam) == CBN_SELCHANGE)
|
||||||
|
|
|
@ -242,7 +242,7 @@ private :
|
||||||
class PreferenceDlg : public StaticDialog
|
class PreferenceDlg : public StaticDialog
|
||||||
{
|
{
|
||||||
friend class NativeLangSpeaker;
|
friend class NativeLangSpeaker;
|
||||||
|
friend class Notepad_plus;
|
||||||
public :
|
public :
|
||||||
PreferenceDlg() = default;
|
PreferenceDlg() = default;
|
||||||
|
|
||||||
|
|
|
@ -220,6 +220,7 @@
|
||||||
#define IDC_CHECK_MARKALLWHOLEWORDONLY (IDD_PREFERENCE_SUB_MISC + 53)
|
#define IDC_CHECK_MARKALLWHOLEWORDONLY (IDD_PREFERENCE_SUB_MISC + 53)
|
||||||
#define IDC_SMARTHILITEMATCHING_STATIC (IDD_PREFERENCE_SUB_MISC + 54)
|
#define IDC_SMARTHILITEMATCHING_STATIC (IDD_PREFERENCE_SUB_MISC + 54)
|
||||||
#define IDC_CHECK_MUTE_SOUNDS (IDD_PREFERENCE_SUB_MISC + 60)
|
#define IDC_CHECK_MUTE_SOUNDS (IDD_PREFERENCE_SUB_MISC + 60)
|
||||||
|
#define IDC_CHECK_SAVEALLCONFIRM (IDD_PREFERENCE_SUB_MISC + 61)
|
||||||
|
|
||||||
#define IDD_PREFERENCE_SUB_NEWDOCUMENT 6400 //(IDD_PREFERENCE_BOX + 400)
|
#define IDD_PREFERENCE_SUB_NEWDOCUMENT 6400 //(IDD_PREFERENCE_BOX + 400)
|
||||||
#define IDC_FORMAT_GB_STATIC (IDD_PREFERENCE_SUB_NEWDOCUMENT + 1)
|
#define IDC_FORMAT_GB_STATIC (IDD_PREFERENCE_SUB_NEWDOCUMENT + 1)
|
||||||
|
|
Loading…
Reference in New Issue