// Set full path file name in buffer object, // and determinate its language by its extension. // If the ext is not in the list, the defaultLang passed as argument will be set. void Buffer::setFileName(const TCHAR *fn, LangType defaultLang) { NppParameters *pNppParamInst = NppParameters::getInstance(); if (_fullPathName == fn) { updateTimeStamp(); doNotify(BufferChangeTimestamp); return; } _fullPathName = fn; _fileName = PathFindFileName(_fullPathName.c_str()); // for _lang LangType newLang = defaultLang; TCHAR *ext = PathFindExtension(_fullPathName.c_str()); if (*ext == '.') { //extension found ext += 1; // Define User Lang firstly const TCHAR *langName = pNppParamInst->getUserDefinedLangNameFromExt(ext); if (langName) { newLang = L_USER; _userLangExt = langName; } else // if it's not user lang, then check if it's supported lang { _userLangExt = TEXT(""); newLang = pNppParamInst->getLangFromExt(ext); } } if (newLang == defaultLang || newLang == L_TEXT) //language can probably be refined { if ((!generic_stricmp(_fileName, TEXT("makefile"))) || (!generic_stricmp(_fileName, TEXT("GNUmakefile")))) newLang = L_MAKEFILE; else if (!generic_stricmp(_fileName, TEXT("CmakeLists.txt"))) newLang = L_CMAKE; else if ((!generic_stricmp(_fileName, TEXT("SConstruct"))) || (!generic_stricmp(_fileName, TEXT("SConscript")))) newLang = L_PYTHON; } updateTimeStamp(); if (newLang != _lang || _lang == L_USER) { _lang = newLang; doNotify(BufferChangeFilename | BufferChangeLanguage | BufferChangeTimestamp); return; } doNotify(BufferChangeFilename | BufferChangeTimestamp); }
bool isInList(const TCHAR *token, const TCHAR *list) { if ((!token) || (!list)) return false; TCHAR word[64]; int i = 0; int j = 0; for (; i <= int(lstrlen(list)) ; i++) { if ((list[i] == ' ')||(list[i] == '\0')) { if (j != 0) { word[j] = '\0'; j = 0; if (!generic_stricmp(token, word)) return true; } } else { word[j] = list[i]; j++; } } return false; }
bool isInList(const TCHAR *token, const TCHAR *list) { if ((!token) || (!list)) return false; TCHAR word[64]; size_t i = 0; size_t j = 0; for (size_t len = lstrlen(list); i <= len; ++i) { if ((list[i] == ' ')||(list[i] == '\0')) { if (j != 0) { word[j] = '\0'; j = 0; if (!generic_stricmp(token, word)) return true; } } else { word[j] = list[i]; ++j; } } return false; }
void PluginsManager::runPluginCommand(const TCHAR *pluginName, int commandID) { for (size_t i = 0 ; i < _pluginsCommands.size() ; i++) { if (!generic_stricmp(_pluginsCommands[i]._pluginName.c_str(), pluginName)) { if (_pluginsCommands[i]._funcID == commandID) { try { _pluginsCommands[i]._pFunc(); } catch(std::exception e) { ::MessageBoxA(NULL, e.what(), "Exception", MB_OK); } catch (...) { TCHAR funcInfo[128]; generic_sprintf(funcInfo, TEXT("runPluginCommand(const TCHAR *pluginName : %s, int commandID : %d)"), pluginName, commandID); pluginCrashAlert(_pluginsCommands[i]._pluginName.c_str(), funcInfo); } } } } }
bool Notepad_plus::isFileSession(const TCHAR * filename) { // if file2open matches the ext of user defined session file ext, then it'll be opened as a session const TCHAR *definedSessionExt = NppParameters::getInstance()->getNppGUI()._definedSessionExt.c_str(); if (*definedSessionExt != '\0') { generic_string fncp = filename; TCHAR *pExt = PathFindExtension(fncp.c_str()); generic_string usrSessionExt = TEXT(""); if (*definedSessionExt != '.') { usrSessionExt += TEXT("."); } usrSessionExt += definedSessionExt; if (!generic_stricmp(pExt, usrSessionExt.c_str())) { return true; } } return false; }
BOOL CALLBACK RegExtDlg::run_dlgProc(UINT Message, WPARAM wParam, LPARAM lParam) { switch (Message) { case WM_INITDIALOG : { getRegisteredExts(); getDefSupportedExts(); //goToCenter(); ::EnableWindow(::GetDlgItem(_hSelf, IDC_ADDFROMLANGEXT_BUTTON), false); ::EnableWindow(::GetDlgItem(_hSelf, IDC_REMOVEEXT_BUTTON), false); ::SendDlgItemMessage(_hSelf, IDC_CUSTOMEXT_EDIT, EM_SETLIMITTEXT, extNameMax-1, 0); return TRUE; } case WM_DRAWITEM : { HICON hIcon = ::LoadIcon(_hInst, MAKEINTRESOURCE(IDI_DELETE_ICON)); DRAWITEMSTRUCT *pdis = (DRAWITEMSTRUCT *)lParam; ::DrawIcon(pdis->hDC, 0, 0, hIcon); return TRUE; } case WM_COMMAND : { switch (wParam) { case IDC_ADDFROMLANGEXT_BUTTON : { writeNppPath(); TCHAR ext2Add[extNameMax] = TEXT(""); if (!_isCustomize) { int index2Add = ::SendDlgItemMessage(_hSelf, IDC_REGEXT_LANGEXT_LIST, LB_GETCURSEL, 0, 0); ::SendDlgItemMessage(_hSelf, IDC_REGEXT_LANGEXT_LIST, LB_GETTEXT, index2Add, (LPARAM)ext2Add); addExt(ext2Add); ::SendDlgItemMessage(_hSelf, IDC_REGEXT_LANGEXT_LIST, LB_DELETESTRING, index2Add, 0); } else { ::SendDlgItemMessage(_hSelf, IDC_CUSTOMEXT_EDIT, WM_GETTEXT, extNameMax, (LPARAM)ext2Add); int i = ::SendDlgItemMessage(_hSelf, IDC_REGEXT_REGISTEREDEXTS_LIST, LB_FINDSTRINGEXACT, 0, (LPARAM)ext2Add); if (i != LB_ERR) return TRUE; addExt(ext2Add); ::SendDlgItemMessage(_hSelf, IDC_CUSTOMEXT_EDIT, WM_SETTEXT, 0, (LPARAM)TEXT("")); } ::SendDlgItemMessage(_hSelf, IDC_REGEXT_REGISTEREDEXTS_LIST, LB_ADDSTRING, 0, (LPARAM)ext2Add); ::EnableWindow(::GetDlgItem(_hSelf, IDC_ADDFROMLANGEXT_BUTTON), false); return TRUE; } case IDC_REMOVEEXT_BUTTON : { TCHAR ext2Sup[extNameMax] = TEXT(""); int index2Sup = ::SendDlgItemMessage(_hSelf, IDC_REGEXT_REGISTEREDEXTS_LIST, LB_GETCURSEL, 0, 0); ::SendDlgItemMessage(_hSelf, IDC_REGEXT_REGISTEREDEXTS_LIST, LB_GETTEXT, index2Sup, (LPARAM)ext2Sup); if (deleteExts(ext2Sup)) ::SendDlgItemMessage(_hSelf, IDC_REGEXT_REGISTEREDEXTS_LIST, LB_DELETESTRING, index2Sup, 0); int langIndex = ::SendDlgItemMessage(_hSelf, IDC_REGEXT_LANG_LIST, LB_GETCURSEL, 0, 0); ::EnableWindow(::GetDlgItem(_hSelf, IDC_REMOVEEXT_BUTTON), false); if (langIndex != LB_ERR) { for (int i = 1 ; i < nbExtMax ; i++) { if (!generic_stricmp(ext2Sup, defExtArray[langIndex][i])) { ::SendDlgItemMessage(_hSelf, IDC_REGEXT_LANGEXT_LIST, LB_ADDSTRING, 0, (LPARAM)ext2Sup); return TRUE; } } } return TRUE; } case IDCANCEL : ::EndDialog(_hSelf, 0); return TRUE; } if (HIWORD(wParam) == EN_CHANGE) { TCHAR text[extNameMax] = TEXT(""); ::SendDlgItemMessage(_hSelf, IDC_CUSTOMEXT_EDIT, WM_GETTEXT, extNameMax, (LPARAM)text); if ((lstrlen(text) == 1) && (text[0] != '.')) { text[1] = text[0]; text[0] = '.'; text[2] = '\0'; ::SendDlgItemMessage(_hSelf, IDC_CUSTOMEXT_EDIT, WM_SETTEXT, 0, (LPARAM)text); ::SendDlgItemMessage(_hSelf, IDC_CUSTOMEXT_EDIT, EM_SETSEL, 2, 2); } ::EnableWindow(::GetDlgItem(_hSelf, IDC_ADDFROMLANGEXT_BUTTON), (lstrlen(text) > 1)); return TRUE; } if (HIWORD(wParam) == LBN_SELCHANGE) { int i = ::SendDlgItemMessage(_hSelf, LOWORD(wParam), LB_GETCURSEL, 0, 0); if (LOWORD(wParam) == IDC_REGEXT_LANG_LIST) { if (i != LB_ERR) { TCHAR itemName[32]; ::SendDlgItemMessage(_hSelf, LOWORD(wParam), LB_GETTEXT, i, (LPARAM)itemName); if (!generic_stricmp(defExtArray[nbSupportedLang-1][0], itemName)) { ::ShowWindow(::GetDlgItem(_hSelf, IDC_REGEXT_LANGEXT_LIST), SW_HIDE); ::ShowWindow(::GetDlgItem(_hSelf, IDC_CUSTOMEXT_EDIT), SW_SHOW); _isCustomize = true; } else { if (_isCustomize) { ::ShowWindow(::GetDlgItem(_hSelf, IDC_REGEXT_LANGEXT_LIST), SW_SHOW); ::ShowWindow(::GetDlgItem(_hSelf, IDC_CUSTOMEXT_EDIT), SW_HIDE); _isCustomize = false; } int count = ::SendDlgItemMessage(_hSelf, IDC_REGEXT_LANGEXT_LIST, LB_GETCOUNT, 0, 0); for (count -= 1 ; count >= 0 ; count--) ::SendDlgItemMessage(_hSelf, IDC_REGEXT_LANGEXT_LIST, LB_DELETESTRING, count, 0); for (int j = 1 ; j < nbExtMax ; j++) if (lstrcmp(TEXT(""), defExtArray[i][j])) { int index = ::SendDlgItemMessage(_hSelf, IDC_REGEXT_REGISTEREDEXTS_LIST, LB_FINDSTRINGEXACT, 0, (LPARAM)defExtArray[i][j]); if (index == -1) ::SendDlgItemMessage(_hSelf, IDC_REGEXT_LANGEXT_LIST, LB_ADDSTRING, 0, (LPARAM)defExtArray[i][j]); } } ::EnableWindow(::GetDlgItem(_hSelf, IDC_ADDFROMLANGEXT_BUTTON), false); } } else if (LOWORD(wParam) == IDC_REGEXT_LANGEXT_LIST) { if (i != LB_ERR) ::EnableWindow(::GetDlgItem(_hSelf, IDC_ADDFROMLANGEXT_BUTTON), true); } else if (LOWORD(wParam) == IDC_REGEXT_REGISTEREDEXTS_LIST) { if (i != LB_ERR) ::EnableWindow(::GetDlgItem(_hSelf, IDC_REMOVEEXT_BUTTON), true); } } } default : return FALSE; } //return FALSE; }
int getCpFromStringValue(const TCHAR * encodingStr) { if (!encodingStr) return CP_ACP; if (generic_stricmp(TEXT("windows-1250"), encodingStr) == 0) return 1250; if (generic_stricmp(TEXT("windows-1251"), encodingStr) == 0) return 1251; if (generic_stricmp(TEXT("windows-1252"), encodingStr) == 0) return 1252; if (generic_stricmp(TEXT("windows-1253"), encodingStr) == 0) return 1253; if (generic_stricmp(TEXT("windows-1254"), encodingStr) == 0) return 1254; if (generic_stricmp(TEXT("windows-1255"), encodingStr) == 0) return 1255; if (generic_stricmp(TEXT("windows-1256"), encodingStr) == 0) return 1256; if (generic_stricmp(TEXT("windows-1257"), encodingStr) == 0) return 1257; if (generic_stricmp(TEXT("windows-1258"), encodingStr) == 0) return 1258; if (generic_stricmp(TEXT("big5"), encodingStr) == 0) return 950; if (generic_stricmp(TEXT("gb2312"), encodingStr) == 0) return 936; if (generic_stricmp(TEXT("shift_jis"), encodingStr) == 0) return 936; if (generic_stricmp(TEXT("euc-kr"), encodingStr) == 0) return 936; if (generic_stricmp(TEXT("tis-620"), encodingStr) == 0) return 874; if (generic_stricmp(TEXT("iso-8859-8"), encodingStr) == 0) return 28598; if (generic_stricmp(TEXT("utf-8"), encodingStr) == 0) return 65001; return CP_ACP; }
INT_PTR CALLBACK RegExtDlg::run_dlgProc(UINT Message, WPARAM wParam, LPARAM lParam) { switch (Message) { case WM_INITDIALOG : { getRegisteredExts(); getDefSupportedExts(); //goToCenter(); ::EnableWindow(::GetDlgItem(_hSelf, IDC_ADDFROMLANGEXT_BUTTON), false); ::EnableWindow(::GetDlgItem(_hSelf, IDC_REMOVEEXT_BUTTON), false); ::SendDlgItemMessage(_hSelf, IDC_CUSTOMEXT_EDIT, EM_SETLIMITTEXT, extNameMax-1, 0); return TRUE; } case WM_DRAWITEM : { HICON hIcon = ::LoadIcon(_hInst, MAKEINTRESOURCE(IDI_DELETE_ICON)); DRAWITEMSTRUCT *pdis = (DRAWITEMSTRUCT *)lParam; ::DrawIcon(pdis->hDC, 0, 0, hIcon); return TRUE; } case WM_COMMAND : { // Handle File association list extension if (LOWORD(wParam) == IDC_REGEXT_LANGEXT_LIST || LOWORD(wParam) == IDC_REGEXT_REGISTEREDEXTS_LIST) { // On double click an item in the list then toggle the item between both lists // by simulating "<-" or "->" button clicked if (HIWORD(wParam) == LBN_DBLCLK) { // Check whether click happened on a item not in empty area if (-1 != ::SendDlgItemMessage(_hSelf, LOWORD(wParam), LB_GETCURSEL, 0, 0)) { HWND(lParam) == ::GetDlgItem(_hSelf, IDC_REGEXT_LANGEXT_LIST) ? ::SendMessage(_hSelf, WM_COMMAND, IDC_ADDFROMLANGEXT_BUTTON, 0) : ::SendMessage(_hSelf, WM_COMMAND, IDC_REMOVEEXT_BUTTON, 0); } return TRUE; } } switch (wParam) { case IDC_ADDFROMLANGEXT_BUTTON : { writeNppPath(); TCHAR ext2Add[extNameMax] = TEXT(""); if (!_isCustomize) { auto index2Add = ::SendDlgItemMessage(_hSelf, IDC_REGEXT_LANGEXT_LIST, LB_GETCURSEL, 0, 0); auto lbTextLen = ::SendDlgItemMessage(_hSelf, IDC_REGEXT_LANGEXT_LIST, LB_GETTEXTLEN, index2Add, 0); if (lbTextLen > extNameMax - 1) return TRUE; ::SendDlgItemMessage(_hSelf, IDC_REGEXT_LANGEXT_LIST, LB_GETTEXT, index2Add, reinterpret_cast<LPARAM>(ext2Add)); addExt(ext2Add); ::SendDlgItemMessage(_hSelf, IDC_REGEXT_LANGEXT_LIST, LB_DELETESTRING, index2Add, 0); } else { ::SendDlgItemMessage(_hSelf, IDC_CUSTOMEXT_EDIT, WM_GETTEXT, extNameMax, reinterpret_cast<LPARAM>(ext2Add)); auto i = ::SendDlgItemMessage(_hSelf, IDC_REGEXT_REGISTEREDEXTS_LIST, LB_FINDSTRINGEXACT, 0, reinterpret_cast<LPARAM>(ext2Add)); if (i != LB_ERR) return TRUE; addExt(ext2Add); ::SendDlgItemMessage(_hSelf, IDC_CUSTOMEXT_EDIT, WM_SETTEXT, 0, reinterpret_cast<LPARAM>(TEXT(""))); } ::SendDlgItemMessage(_hSelf, IDC_REGEXT_REGISTEREDEXTS_LIST, LB_ADDSTRING, 0, reinterpret_cast<LPARAM>(ext2Add)); ::EnableWindow(::GetDlgItem(_hSelf, IDC_ADDFROMLANGEXT_BUTTON), false); return TRUE; } case IDC_REMOVEEXT_BUTTON : { TCHAR ext2Sup[extNameMax] = TEXT(""); auto index2Sup = ::SendDlgItemMessage(_hSelf, IDC_REGEXT_REGISTEREDEXTS_LIST, LB_GETCURSEL, 0, 0); auto lbTextLen = ::SendDlgItemMessage(_hSelf, IDC_REGEXT_REGISTEREDEXTS_LIST, LB_GETTEXTLEN, index2Sup, 0); if (lbTextLen > extNameMax - 1) return TRUE; ::SendDlgItemMessage(_hSelf, IDC_REGEXT_REGISTEREDEXTS_LIST, LB_GETTEXT, index2Sup, reinterpret_cast<LPARAM>(ext2Sup)); if (deleteExts(ext2Sup)) ::SendDlgItemMessage(_hSelf, IDC_REGEXT_REGISTEREDEXTS_LIST, LB_DELETESTRING, index2Sup, 0); auto langIndex = ::SendDlgItemMessage(_hSelf, IDC_REGEXT_LANG_LIST, LB_GETCURSEL, 0, 0); ::EnableWindow(::GetDlgItem(_hSelf, IDC_REMOVEEXT_BUTTON), false); if (langIndex != LB_ERR) { for (int i = 1 ; i < nbExtMax ; ++i) { if (!generic_stricmp(ext2Sup, defExtArray[langIndex][i])) { ::SendDlgItemMessage(_hSelf, IDC_REGEXT_LANGEXT_LIST, LB_ADDSTRING, 0, reinterpret_cast<LPARAM>(ext2Sup)); return TRUE; } } } return TRUE; } case IDCANCEL: { ::EndDialog(_hSelf, 0); return TRUE; } } if (HIWORD(wParam) == EN_CHANGE) { TCHAR text[extNameMax] = TEXT(""); ::SendDlgItemMessage(_hSelf, IDC_CUSTOMEXT_EDIT, WM_GETTEXT, extNameMax, reinterpret_cast<LPARAM>(text)); if ((lstrlen(text) == 1) && (text[0] != '.')) { text[1] = text[0]; text[0] = '.'; text[2] = '\0'; ::SendDlgItemMessage(_hSelf, IDC_CUSTOMEXT_EDIT, WM_SETTEXT, 0, reinterpret_cast<LPARAM>(text)); ::SendDlgItemMessage(_hSelf, IDC_CUSTOMEXT_EDIT, EM_SETSEL, 2, 2); } ::EnableWindow(::GetDlgItem(_hSelf, IDC_ADDFROMLANGEXT_BUTTON), (lstrlen(text) > 1)); return TRUE; } if (HIWORD(wParam) == LBN_SELCHANGE) { auto i = ::SendDlgItemMessage(_hSelf, LOWORD(wParam), LB_GETCURSEL, 0, 0); if (LOWORD(wParam) == IDC_REGEXT_LANG_LIST) { if (i != LB_ERR) { const size_t itemNameLen = 32; TCHAR itemName[itemNameLen + 1]; auto lbTextLen = ::SendDlgItemMessage(_hSelf, LOWORD(wParam), LB_GETTEXTLEN, i, 0); if (lbTextLen > itemNameLen) return TRUE; ::SendDlgItemMessage(_hSelf, LOWORD(wParam), LB_GETTEXT, i, reinterpret_cast<LPARAM>(itemName)); if (!generic_stricmp(defExtArray[nbSupportedLang-1][0], itemName)) { ::ShowWindow(::GetDlgItem(_hSelf, IDC_REGEXT_LANGEXT_LIST), SW_HIDE); ::ShowWindow(::GetDlgItem(_hSelf, IDC_CUSTOMEXT_EDIT), SW_SHOW); _isCustomize = true; } else { if (_isCustomize) { ::ShowWindow(::GetDlgItem(_hSelf, IDC_REGEXT_LANGEXT_LIST), SW_SHOW); ::ShowWindow(::GetDlgItem(_hSelf, IDC_CUSTOMEXT_EDIT), SW_HIDE); _isCustomize = false; } LRESULT count = ::SendDlgItemMessage(_hSelf, IDC_REGEXT_LANGEXT_LIST, LB_GETCOUNT, 0, 0); for (count -= 1 ; count >= 0 ; count--) ::SendDlgItemMessage(_hSelf, IDC_REGEXT_LANGEXT_LIST, LB_DELETESTRING, count, 0); for (int j = 1 ; j < nbExtMax ; ++j) { if (lstrcmp(TEXT(""), defExtArray[i][j])) { auto index = ::SendDlgItemMessage(_hSelf, IDC_REGEXT_REGISTEREDEXTS_LIST, LB_FINDSTRINGEXACT, 0, reinterpret_cast<LPARAM>(defExtArray[i][j])); if (index == -1) ::SendDlgItemMessage(_hSelf, IDC_REGEXT_LANGEXT_LIST, LB_ADDSTRING, 0, reinterpret_cast<LPARAM>(defExtArray[i][j])); } } } ::EnableWindow(::GetDlgItem(_hSelf, IDC_ADDFROMLANGEXT_BUTTON), false); } } else if (LOWORD(wParam) == IDC_REGEXT_LANGEXT_LIST) { if (i != LB_ERR) ::EnableWindow(::GetDlgItem(_hSelf, IDC_ADDFROMLANGEXT_BUTTON), true); } else if (LOWORD(wParam) == IDC_REGEXT_REGISTEREDEXTS_LIST) { if (i != LB_ERR) ::EnableWindow(::GetDlgItem(_hSelf, IDC_REMOVEEXT_BUTTON), true); } } // break; // no break here } default : return FALSE; } //return FALSE; }