diff --git a/PowerEditor/installer/nativeLang/english.xml b/PowerEditor/installer/nativeLang/english.xml index dbe1e5deb..94b833144 100644 --- a/PowerEditor/installer/nativeLang/english.xml +++ b/PowerEditor/installer/nativeLang/english.xml @@ -113,6 +113,7 @@ The comments are here for explanation, it's not necessary to translate them. + @@ -1048,12 +1049,15 @@ You can define several column markers by using white space to separate the diffe - + + + + diff --git a/PowerEditor/installer/nativeLang/french.xml b/PowerEditor/installer/nativeLang/french.xml index 7808d3f63..6446dfb8f 100644 --- a/PowerEditor/installer/nativeLang/french.xml +++ b/PowerEditor/installer/nativeLang/french.xml @@ -114,6 +114,7 @@ + @@ -1025,12 +1026,15 @@ Vous pouvez définir plusieurs marqueurs de colonne en utilisant un espace pour - + + + + diff --git a/PowerEditor/installer/nativeLang/taiwaneseMandarin.xml b/PowerEditor/installer/nativeLang/taiwaneseMandarin.xml index 456cba8ae..33a892d51 100644 --- a/PowerEditor/installer/nativeLang/taiwaneseMandarin.xml +++ b/PowerEditor/installer/nativeLang/taiwaneseMandarin.xml @@ -108,8 +108,9 @@ - - + + + @@ -1040,12 +1041,17 @@ - + + + + + + diff --git a/PowerEditor/src/MISC/Common/Common.cpp b/PowerEditor/src/MISC/Common/Common.cpp index c99c7553e..72943fafd 100644 --- a/PowerEditor/src/MISC/Common/Common.cpp +++ b/PowerEditor/src/MISC/Common/Common.cpp @@ -1328,3 +1328,26 @@ int nbDigitsFromNbLines(size_t nbLines) } return nbDigits; } + +generic_string getDateTimeStrFrom(const generic_string& dateTimeFormat, const SYSTEMTIME& st) +{ + generic_string dateTimeStr = dateTimeFormat; + dateTimeStr = stringReplace(dateTimeStr, TEXT("Y"), std::to_wstring(st.wYear)); + wchar_t buf[3]; + _snwprintf(buf, sizeof(buf), TEXT("%02d"), st.wMonth); + dateTimeStr = stringReplace(dateTimeStr, TEXT("M"), buf); + + _snwprintf(buf, sizeof(buf), TEXT("%02d"), st.wDay); + dateTimeStr = stringReplace(dateTimeStr, TEXT("D"), buf); + + _snwprintf(buf, sizeof(buf), TEXT("%02d"), st.wHour); + dateTimeStr = stringReplace(dateTimeStr, TEXT("h"), buf); + + _snwprintf(buf, sizeof(buf), TEXT("%02d"), st.wMinute); + dateTimeStr = stringReplace(dateTimeStr, TEXT("m"), buf); + + _snwprintf(buf, sizeof(buf), TEXT("%02d"), st.wSecond); + dateTimeStr = stringReplace(dateTimeStr, TEXT("s"), buf); + + return dateTimeStr; +} diff --git a/PowerEditor/src/MISC/Common/Common.h b/PowerEditor/src/MISC/Common/Common.h index c5cff1729..547dd950f 100644 --- a/PowerEditor/src/MISC/Common/Common.h +++ b/PowerEditor/src/MISC/Common/Common.h @@ -228,3 +228,5 @@ void trim(generic_string& str); bool endsWith(const generic_string& s, const generic_string& suffix); int nbDigitsFromNbLines(size_t nbLines); + +generic_string getDateTimeStrFrom(const generic_string& dateTimeFormat, const SYSTEMTIME& st); diff --git a/PowerEditor/src/Notepad_plus.rc b/PowerEditor/src/Notepad_plus.rc index a9facdcc3..8381a9b56 100644 --- a/PowerEditor/src/Notepad_plus.rc +++ b/PowerEditor/src/Notepad_plus.rc @@ -430,8 +430,9 @@ BEGIN MENUITEM SEPARATOR POPUP "Insert" BEGIN - MENUITEM "Date Time (short)", IDM_EDIT_INSERT_DATETIME_SHORT - MENUITEM "Date Time (long)", IDM_EDIT_INSERT_DATETIME_LONG + MENUITEM "Date Time (short)", IDM_EDIT_INSERT_DATETIME_SHORT + MENUITEM "Date Time (long)", IDM_EDIT_INSERT_DATETIME_LONG + MENUITEM "Date Time (customized)", IDM_EDIT_INSERT_DATETIME_CUSTOMIZED END POPUP "Cop&y to Clipboard" BEGIN diff --git a/PowerEditor/src/NppCommands.cpp b/PowerEditor/src/NppCommands.cpp index 26eea7ca0..69a79d2bd 100644 --- a/PowerEditor/src/NppCommands.cpp +++ b/PowerEditor/src/NppCommands.cpp @@ -15,6 +15,7 @@ // along with this program. If not, see . #include +#include #include #include "Notepad_plus_Window.h" #include "EncodingMapper.h" @@ -69,19 +70,44 @@ void Notepad_plus::command(int id) case IDM_EDIT_INSERT_DATETIME_SHORT: case IDM_EDIT_INSERT_DATETIME_LONG: { - SYSTEMTIME st = { 0 }; - ::GetLocalTime(&st); + SYSTEMTIME currentTime = { 0 }; + ::GetLocalTime(¤tTime); wchar_t dateStr[128] = { 0 }; wchar_t timeStr[128] = { 0 }; int dateFlag = (id == IDM_EDIT_INSERT_DATETIME_SHORT) ? DATE_SHORTDATE : DATE_LONGDATE; - GetDateFormatEx(LOCALE_NAME_USER_DEFAULT, dateFlag, &st, NULL, dateStr, sizeof(dateStr) / sizeof(dateStr[0]), NULL); - GetTimeFormatEx(LOCALE_NAME_USER_DEFAULT, TIME_NOSECONDS, &st, NULL, timeStr, sizeof(timeStr) / sizeof(timeStr[0])); + GetDateFormatEx(LOCALE_NAME_USER_DEFAULT, dateFlag, ¤tTime, NULL, dateStr, sizeof(dateStr) / sizeof(dateStr[0]), NULL); + GetTimeFormatEx(LOCALE_NAME_USER_DEFAULT, TIME_NOSECONDS, ¤tTime, NULL, timeStr, sizeof(timeStr) / sizeof(timeStr[0])); - generic_string dateTimeStr = timeStr; - dateTimeStr += TEXT(" "); - dateTimeStr += dateStr; + generic_string dateTimeStr; + if (NppParameters::getInstance().getNppGUI()._dateTimeReverseDefaultOrder) + { + // reverse default order: DATE + TIME + dateTimeStr = dateStr; + dateTimeStr += TEXT(" "); + dateTimeStr += timeStr; + } + else + { + // default: TIME + DATE (Microsoft Notepad behaviour) + dateTimeStr = timeStr; + dateTimeStr += TEXT(" "); + dateTimeStr += dateStr; + } + + _pEditView->execute(SCI_REPLACESEL, 0, reinterpret_cast("")); + _pEditView->addGenericText(dateTimeStr.c_str()); + } + break; + + case IDM_EDIT_INSERT_DATETIME_CUSTOMIZED: + { + SYSTEMTIME currentTime = { 0 }; + ::GetLocalTime(¤tTime); + + NppGUI& nppGUI = NppParameters::getInstance().getNppGUI(); + generic_string dateTimeStr = getDateTimeStrFrom(nppGUI._dateTimeFormat, currentTime); _pEditView->execute(SCI_REPLACESEL, 0, reinterpret_cast("")); _pEditView->addGenericText(dateTimeStr.c_str()); diff --git a/PowerEditor/src/Parameters.cpp b/PowerEditor/src/Parameters.cpp index 10a65ccd7..0f7f89f80 100644 --- a/PowerEditor/src/Parameters.cpp +++ b/PowerEditor/src/Parameters.cpp @@ -4604,6 +4604,7 @@ void NppParameters::feedGUIParameters(TiXmlNode *node) } } } + else if (!lstrcmp(nm, TEXT("ScintillaViewsSplitter"))) { TiXmlNode *n = childNode->FirstChild(); @@ -4619,6 +4620,7 @@ void NppParameters::feedGUIParameters(TiXmlNode *node) } } } + else if (!lstrcmp(nm, TEXT("UserDefineDlg"))) { bool isFailed = false; @@ -4652,6 +4654,7 @@ void NppParameters::feedGUIParameters(TiXmlNode *node) if (isFailed) _nppGUI._userDefineDlgStatus = oldValue; } + else if (!lstrcmp(nm, TEXT("TabSetting"))) { int i; @@ -4808,6 +4811,7 @@ void NppParameters::feedGUIParameters(TiXmlNode *node) _nppGUI._newDocDefaultSettings._openAnsiAsUtf8 = (lstrcmp(val, TEXT("yes")) == 0); } + else if (!lstrcmp(nm, TEXT("langsExcluded"))) { // TODO @@ -5201,6 +5205,7 @@ void NppParameters::feedGUIParameters(TiXmlNode *node) _nppGUI._matchedPairConf._matchedPairsInit.push_back(pair(char(open), char(close))); } } + else if (!lstrcmp(nm, TEXT("sessionExt"))) { TiXmlNode *n = childNode->FirstChild(); @@ -5211,6 +5216,7 @@ void NppParameters::feedGUIParameters(TiXmlNode *node) _nppGUI._definedSessionExt = val; } } + else if (!lstrcmp(nm, TEXT("workspaceExt"))) { TiXmlNode *n = childNode->FirstChild(); @@ -5221,6 +5227,7 @@ void NppParameters::feedGUIParameters(TiXmlNode *node) _nppGUI._definedWorkspaceExt = val; } } + else if (!lstrcmp(nm, TEXT("noUpdate"))) { TiXmlNode *n = childNode->FirstChild(); @@ -5240,6 +5247,7 @@ void NppParameters::feedGUIParameters(TiXmlNode *node) _nppGUI._autoUpdateOpt._nextUpdateDate = Date(val); } } + else if (!lstrcmp(nm, TEXT("openSaveDir"))) { const TCHAR * value = element->Attribute(TEXT("value")); @@ -5260,6 +5268,7 @@ void NppParameters::feedGUIParameters(TiXmlNode *node) ::ExpandEnvironmentStrings(_nppGUI._defaultDir, _nppGUI._defaultDirExp, MAX_PATH); } } + else if (!lstrcmp(nm, TEXT("titleBar"))) { const TCHAR * value = element->Attribute(TEXT("short")); @@ -5272,12 +5281,30 @@ void NppParameters::feedGUIParameters(TiXmlNode *node) _nppGUI._shortTitlebar = false; } } + else if (!lstrcmp(nm, TEXT("stylerTheme"))) { const TCHAR *themePath = element->Attribute(TEXT("path")); if (themePath != NULL && themePath[0]) _nppGUI._themeName.assign(themePath); } + + else if (!lstrcmp(nm, TEXT("insertDateTime"))) + { + const TCHAR* customFormat = element->Attribute(TEXT("customizedFormat")); + if (customFormat != NULL && customFormat[0]) + _nppGUI._dateTimeFormat = customFormat; + + const TCHAR* value = element->Attribute(TEXT("reverseDefaultOrder")); + if (value && value[0]) + { + if (lstrcmp(value, TEXT("yes")) == 0) + _nppGUI._dateTimeReverseDefaultOrder = true; + else if (lstrcmp(value, TEXT("no")) == 0) + _nppGUI._dateTimeReverseDefaultOrder = false; + } + } + else if (!lstrcmp(nm, TEXT("wordCharList"))) { const TCHAR * value = element->Attribute(TEXT("useDefault")); @@ -6382,6 +6409,15 @@ void NppParameters::createXmlTreeFromGUIParams() GUIConfigElement->SetAttribute(TEXT("path"), _nppGUI._themeName.c_str()); } + // + { + TiXmlElement* GUIConfigElement = (newGUIRoot->InsertEndChild(TiXmlElement(TEXT("GUIConfig"))))->ToElement(); + GUIConfigElement->SetAttribute(TEXT("name"), TEXT("insertDateTime")); + GUIConfigElement->SetAttribute(TEXT("customizedFormat"), _nppGUI._dateTimeFormat.c_str()); + const TCHAR* pStr = (_nppGUI._dateTimeReverseDefaultOrder) ? TEXT("yes") : TEXT("no"); + GUIConfigElement->SetAttribute(TEXT("reverseDefaultOrder"), pStr); + } + // { TiXmlElement *GUIConfigElement = (newGUIRoot->InsertEndChild(TiXmlElement(TEXT("GUIConfig"))))->ToElement(); diff --git a/PowerEditor/src/Parameters.h b/PowerEditor/src/Parameters.h index 0ae730013..826ce3a2b 100644 --- a/PowerEditor/src/Parameters.h +++ b/PowerEditor/src/Parameters.h @@ -875,6 +875,8 @@ struct NppGUI final generic_string _uriSchemes = TEXT("svn:// cvs:// git:// imap:// irc:// irc6:// ircs:// ldap:// ldaps:// news: telnet:// gopher:// ssh:// sftp:// smb:// skype: snmp:// spotify: steam:// sms: slack:// chrome:// bitcoin:"); NewDocDefaultSettings _newDocDefaultSettings; + generic_string _dateTimeFormat = TEXT("Y-M-D h:m:s"); + bool _dateTimeReverseDefaultOrder = false; void setTabReplacedBySpace(bool b) {_tabReplacedBySpace = b;}; const NewDocDefaultSettings & getNewDocDefaultSettings() const {return _newDocDefaultSettings;}; diff --git a/PowerEditor/src/WinControls/Preference/preference.rc b/PowerEditor/src/WinControls/Preference/preference.rc index 111c97599..d56402de2 100644 --- a/PowerEditor/src/WinControls/Preference/preference.rc +++ b/PowerEditor/src/WinControls/Preference/preference.rc @@ -381,15 +381,22 @@ BEGIN END -IDD_PREFERENCE_SUB_MULTIINSTANCE DIALOGEX 0, 0, 455, 185 +IDD_PREFERENCE_SUB_MULTIINSTANCE DIALOGEX 0, 0, 455, 210 STYLE DS_SETFONT | DS_FIXEDSYS | DS_CONTROL | WS_CHILD FONT 8, "MS Shell Dlg", 0, 0, 0x1 BEGIN - GROUPBOX "Multi-instance settings",IDC_MULTIINST_GB_STATIC,89,44,268,110,BS_CENTER - CONTROL "Open session in a new instance of Notepad++",IDC_SESSIONININST_RADIO,"Button",BS_AUTORADIOBUTTON,122,61,226,10 - CONTROL "Always in multi-instance mode",IDC_MULTIINST_RADIO,"Button",BS_AUTORADIOBUTTON,122,80,218,10 - CONTROL "Default (mono-instance)",IDC_MONOINST_RADIO,"Button",BS_AUTORADIOBUTTON,122,99,196,10 - LTEXT "* The modification of this setting needs to restart Notepad++",IDD_STATIC_RESTARTNOTE,110,124,239,20 + GROUPBOX "Multi-instance settings",IDC_MULTIINST_GB_STATIC,89,3,268,89,BS_CENTER + CONTROL "Open session in a new instance of Notepad++",IDC_SESSIONININST_RADIO,"Button",BS_AUTORADIOBUTTON,122,17,226,10 + CONTROL "Always in multi-instance mode",IDC_MULTIINST_RADIO,"Button",BS_AUTORADIOBUTTON,122,34,218,10 + CONTROL "Default (mono-instance)",IDC_MONOINST_RADIO,"Button",BS_AUTORADIOBUTTON,122,51,196,10 + LTEXT "* The modification of this setting needs to restart Notepad++",IDD_STATIC_RESTARTNOTE,110,70,239,20 + GROUPBOX "Customize insert Date Time",IDC_DATETIMEFORMAT_GB_STATIC,90,97,268,105,BS_CENTER + CONTROL "Reverse default date time order (short && long formats)",IDD_DATETIMEFORMAT_REVERSEORDER_CHECK,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,103,113,241,10 + RTEXT "Y-M-D h:m:s\nh:m:s D/M/Y\nM D, Y h:m",IDC_STATIC,134,142,77,25 + LTEXT "1985-10-26 01:24:00\n01:24:00 26/10/1985\n10 26, 1985 01:24",IDC_STATIC,234,142,94,25 + RTEXT "Custom format:",IDD_DATETIMEFORMAT_STATIC,92,172,71,8 + EDITTEXT IDC_DATETIMEFORMAT_EDIT,164,170,179,14,ES_AUTOHSCROLL + LTEXT "",IDD_DATETIMEFORMAT_RESULT_STATIC,166,187,180,8 END diff --git a/PowerEditor/src/WinControls/Preference/preferenceDlg.cpp b/PowerEditor/src/WinControls/Preference/preferenceDlg.cpp index 760716b0e..13b22f08b 100644 --- a/PowerEditor/src/WinControls/Preference/preferenceDlg.cpp +++ b/PowerEditor/src/WinControls/Preference/preferenceDlg.cpp @@ -169,7 +169,7 @@ INT_PTR CALLBACK PreferenceDlg::run_dlgProc(UINT message, WPARAM wParam, LPARAM _wVector.push_back(DlgInfo(&_searchingSubDlg, TEXT("Searching"), TEXT("Searching"))); _wVector.push_back(DlgInfo(&_backupSubDlg, TEXT("Backup"), TEXT("Backup"))); _wVector.push_back(DlgInfo(&_autoCompletionSubDlg, TEXT("Auto-Completion"), TEXT("AutoCompletion"))); - _wVector.push_back(DlgInfo(&_multiInstanceSubDlg, TEXT("Multi-Instance"), TEXT("MultiInstance"))); + _wVector.push_back(DlgInfo(&_multiInstanceSubDlg, TEXT("Multi-Instance & Date"), TEXT("MultiInstance"))); _wVector.push_back(DlgInfo(&_delimiterSubDlg, TEXT("Delimiter"), TEXT("Delimiter"))); _wVector.push_back(DlgInfo(&_cloudAndLinkSubDlg, TEXT("Cloud & Link"), TEXT("Cloud"))); _wVector.push_back(DlgInfo(&_searchEngineSubDlg, TEXT("Search Engine"), TEXT("SearchEngine"))); @@ -3866,6 +3866,12 @@ INT_PTR CALLBACK MultiInstanceSubDlg::run_dlgProc(UINT message, WPARAM wParam, L ::SendDlgItemMessage(_hSelf, IDC_SESSIONININST_RADIO, BM_SETCHECK, multiInstSetting == multiInstOnSession?BST_CHECKED:BST_UNCHECKED, 0); ::SendDlgItemMessage(_hSelf, IDC_MULTIINST_RADIO, BM_SETCHECK, multiInstSetting == multiInst?BST_CHECKED:BST_UNCHECKED, 0); ::SendDlgItemMessage(_hSelf, IDC_MONOINST_RADIO, BM_SETCHECK, multiInstSetting == monoInst?BST_CHECKED:BST_UNCHECKED, 0); + + ::SendDlgItemMessage(_hSelf, IDD_DATETIMEFORMAT_REVERSEORDER_CHECK, BM_SETCHECK, nppGUI._dateTimeReverseDefaultOrder ? BST_CHECKED : BST_UNCHECKED, 0); + + ::SetDlgItemText(_hSelf, IDC_DATETIMEFORMAT_EDIT, nppGUI._dateTimeFormat.c_str()); + generic_string datetimeStr = getDateTimeStrFrom(nppGUI._dateTimeFormat, _BTTF_time); + ::SetDlgItemText(_hSelf, IDD_DATETIMEFORMAT_RESULT_STATIC, datetimeStr.c_str()); } break; @@ -3890,6 +3896,18 @@ INT_PTR CALLBACK MultiInstanceSubDlg::run_dlgProc(UINT message, WPARAM wParam, L case WM_COMMAND : { + if (HIWORD(wParam) == EN_CHANGE && LOWORD(wParam) == IDC_DATETIMEFORMAT_EDIT) + { + const size_t inputLen = 256; + TCHAR input[inputLen]; + ::GetDlgItemText(_hSelf, IDC_DATETIMEFORMAT_EDIT, input, inputLen); + + nppGUI._dateTimeFormat = input; + generic_string datetimeStr = getDateTimeStrFrom(nppGUI._dateTimeFormat, _BTTF_time); + ::SetDlgItemText(_hSelf, IDD_DATETIMEFORMAT_RESULT_STATIC, datetimeStr.c_str()); + return TRUE; + } + switch (wParam) { case IDC_SESSIONININST_RADIO : @@ -3909,6 +3927,13 @@ INT_PTR CALLBACK MultiInstanceSubDlg::run_dlgProc(UINT message, WPARAM wParam, L nppGUI._multiInstSetting = monoInst; } break; + + case IDD_DATETIMEFORMAT_REVERSEORDER_CHECK: + { + nppGUI._dateTimeReverseDefaultOrder = isCheckedOrNot(IDD_DATETIMEFORMAT_REVERSEORDER_CHECK); + } + break; + default : return FALSE; } diff --git a/PowerEditor/src/WinControls/Preference/preferenceDlg.h b/PowerEditor/src/WinControls/Preference/preferenceDlg.h index 8e751aff5..746d32178 100644 --- a/PowerEditor/src/WinControls/Preference/preferenceDlg.h +++ b/PowerEditor/src/WinControls/Preference/preferenceDlg.h @@ -211,6 +211,7 @@ public : MultiInstanceSubDlg() = default; private : + const SYSTEMTIME _BTTF_time = {1985, 10, 6, 26, 01, 24, 0, 0}; INT_PTR CALLBACK run_dlgProc(UINT message, WPARAM wParam, LPARAM lParam); }; diff --git a/PowerEditor/src/WinControls/Preference/preference_rc.h b/PowerEditor/src/WinControls/Preference/preference_rc.h index ecae9c119..fce5c38b1 100644 --- a/PowerEditor/src/WinControls/Preference/preference_rc.h +++ b/PowerEditor/src/WinControls/Preference/preference_rc.h @@ -64,7 +64,8 @@ #define IDC_MONOINST_RADIO (IDD_PREFERENCE_SUB_MULTIINSTANCE + 4) #define IDD_STATIC_RESTARTNOTE (IDD_PREFERENCE_SUB_MULTIINSTANCE + 5) -#define IDD_PREFERENCE_WORDCHARLIST_BOX 6160 //(IDD_PREFERENCE_BOX + 150) + +#define IDD_PREFERENCE_WORDCHARLIST_BOX 6160 //(IDD_PREFERENCE_BOX + 160) #define IDC_WORDCHARLIST_GB_STATIC (IDD_PREFERENCE_WORDCHARLIST_BOX + 1) #define IDC_RADIO_WORDCHAR_DEFAULT (IDD_PREFERENCE_WORDCHARLIST_BOX + 2) #define IDC_RADIO_WORDCHAR_CUSTOM (IDD_PREFERENCE_WORDCHARLIST_BOX + 3) @@ -72,6 +73,15 @@ #define IDD_WORDCHAR_QUESTION_BUTTON (IDD_PREFERENCE_WORDCHARLIST_BOX + 5) #define IDD_STATIC_WORDCHAR_WARNING (IDD_PREFERENCE_WORDCHARLIST_BOX + 6) + +#define IDD_PREFERENCE_SUB_DATETIMEFORMAT 6170 //(IDD_PREFERENCE_BOX + 170) + #define IDC_DATETIMEFORMAT_GB_STATIC (IDD_PREFERENCE_SUB_DATETIMEFORMAT + 1) + #define IDD_DATETIMEFORMAT_STATIC (IDD_PREFERENCE_SUB_DATETIMEFORMAT + 2) + #define IDC_DATETIMEFORMAT_EDIT (IDD_PREFERENCE_SUB_DATETIMEFORMAT + 3) + #define IDD_DATETIMEFORMAT_RESULT_STATIC (IDD_PREFERENCE_SUB_DATETIMEFORMAT + 4) + #define IDD_DATETIMEFORMAT_REVERSEORDER_CHECK (IDD_PREFERENCE_SUB_DATETIMEFORMAT + 5) + + #define IDD_PREFERENCE_SUB_EDITING 6200 //(IDD_PREFERENCE_BOX + 200) #define IDC_FMS_GB_STATIC (IDD_PREFERENCE_SUB_EDITING + 1) #define IDC_RADIO_SIMPLE (IDD_PREFERENCE_SUB_EDITING + 2) diff --git a/PowerEditor/src/menuCmdID.h b/PowerEditor/src/menuCmdID.h index 4b5ae2037..6ff212b0d 100644 --- a/PowerEditor/src/menuCmdID.h +++ b/PowerEditor/src/menuCmdID.h @@ -167,6 +167,7 @@ #define IDM_EDIT_SORTLINES_REVERSE_ORDER (IDM_EDIT + 83) #define IDM_EDIT_INSERT_DATETIME_SHORT (IDM_EDIT + 84) #define IDM_EDIT_INSERT_DATETIME_LONG (IDM_EDIT + 85) + #define IDM_EDIT_INSERT_DATETIME_CUSTOMIZED (IDM_EDIT + 86) #define IDM_EDIT_AUTOCOMPLETE (50000 + 0) #define IDM_EDIT_AUTOCOMPLETE_CURRENTFILE (50000 + 1)