mirror of
https://github.com/notepad-plus-plus/notepad-plus-plus.git
synced 2025-04-08 17:15:37 +02:00
Add the UTF8 character ability for Run & Macro menu
Ref: https://github.com/notepad-plus-plus/notepad-plus-plus/issues/13221#issuecomment-1457325172 Fix #12670, fix #13221, fix #13488, close #13538
This commit is contained in:
parent
ac5657d826
commit
fff5f9b24c
@ -597,23 +597,23 @@ void PluginsManager::addInMenuFromPMIndex(int i)
|
|||||||
|
|
||||||
int cmdID = ID_PLUGINS_CMD + static_cast<int32_t>(_pluginsCommands.size() - 1);
|
int cmdID = ID_PLUGINS_CMD + static_cast<int32_t>(_pluginsCommands.size() - 1);
|
||||||
_pluginInfos[i]->_funcItems[j]._cmdID = cmdID;
|
_pluginInfos[i]->_funcItems[j]._cmdID = cmdID;
|
||||||
generic_string itemName = _pluginInfos[i]->_funcItems[j]._itemName;
|
string itemName = wstring2string(_pluginInfos[i]->_funcItems[j]._itemName, CP_UTF8);
|
||||||
|
|
||||||
if (_pluginInfos[i]->_funcItems[j]._pShKey)
|
if (_pluginInfos[i]->_funcItems[j]._pShKey)
|
||||||
{
|
{
|
||||||
ShortcutKey & sKey = *(_pluginInfos[i]->_funcItems[j]._pShKey);
|
ShortcutKey & sKey = *(_pluginInfos[i]->_funcItems[j]._pShKey);
|
||||||
PluginCmdShortcut pcs(Shortcut(itemName.c_str(), sKey._isCtrl, sKey._isAlt, sKey._isShift, sKey._key), cmdID, _pluginInfos[i]->_moduleName.c_str(), j);
|
PluginCmdShortcut pcs(Shortcut(itemName.c_str(), sKey._isCtrl, sKey._isAlt, sKey._isShift, sKey._key), cmdID, wstring2string(_pluginInfos[i]->_moduleName, CP_UTF8).c_str(), j);
|
||||||
pluginCmdSCList.push_back(pcs);
|
pluginCmdSCList.push_back(pcs);
|
||||||
itemName += TEXT("\t");
|
itemName += "\t";
|
||||||
itemName += pcs.toString();
|
itemName += pcs.toString();
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{ //no ShortcutKey is provided, add an disabled shortcut (so it can still be mapped, Paramaters class can still index any changes and the toolbar wont funk out
|
{ //no ShortcutKey is provided, add an disabled shortcut (so it can still be mapped, Paramaters class can still index any changes and the toolbar wont funk out
|
||||||
Shortcut sc(itemName.c_str(), false, false, false, 0x00);
|
Shortcut sc(itemName.c_str(), false, false, false, 0x00);
|
||||||
PluginCmdShortcut pcs(sc, cmdID, _pluginInfos[i]->_moduleName.c_str(), j); //VK_NULL and everything disabled, the menu name is left alone
|
PluginCmdShortcut pcs(sc, cmdID, wstring2string(_pluginInfos[i]->_moduleName, CP_UTF8).c_str(), j); //VK_NULL and everything disabled, the menu name is left alone
|
||||||
pluginCmdSCList.push_back(pcs);
|
pluginCmdSCList.push_back(pcs);
|
||||||
}
|
}
|
||||||
::InsertMenu(_pluginInfos[i]->_pluginMenu, j, MF_BYPOSITION, cmdID, itemName.c_str());
|
::InsertMenu(_pluginInfos[i]->_pluginMenu, j, MF_BYPOSITION, cmdID, string2wstring(itemName, CP_UTF8).c_str());
|
||||||
|
|
||||||
if (_pluginInfos[i]->_funcItems[j]._init2Check)
|
if (_pluginInfos[i]->_funcItems[j]._init2Check)
|
||||||
::CheckMenuItem(_hPluginsMenu, cmdID, MF_BYCOMMAND | MF_CHECKED);
|
::CheckMenuItem(_hPluginsMenu, cmdID, MF_BYCOMMAND | MF_CHECKED);
|
||||||
|
@ -5346,8 +5346,8 @@ bool Notepad_plus::addCurrentMacro()
|
|||||||
::InsertMenu(hMacroMenu, posBase + nbTopLevelItem + 2, MF_BYCOMMAND, IDM_SETTING_SHORTCUT_MAPPER_MACRO, nativeLangShortcutMapperMacro.c_str());
|
::InsertMenu(hMacroMenu, posBase + nbTopLevelItem + 2, MF_BYCOMMAND, IDM_SETTING_SHORTCUT_MAPPER_MACRO, nativeLangShortcutMapperMacro.c_str());
|
||||||
}
|
}
|
||||||
theMacros.push_back(ms);
|
theMacros.push_back(ms);
|
||||||
macroMenu.push_back(MenuItemUnit(cmdID, ms.getName()));
|
macroMenu.push_back(MenuItemUnit(cmdID, string2wstring(ms.getName(), CP_UTF8)));
|
||||||
::InsertMenu(hMacroMenu, static_cast<UINT>(posBase + nbTopLevelItem), MF_BYPOSITION, cmdID, ms.toMenuItemString().c_str());
|
::InsertMenu(hMacroMenu, static_cast<UINT>(posBase + nbTopLevelItem), MF_BYPOSITION, cmdID, string2wstring(ms.toMenuItemString(), CP_UTF8).c_str());
|
||||||
_accelerator.updateShortcuts();
|
_accelerator.updateShortcuts();
|
||||||
nppParams.setShortcutDirty();
|
nppParams.setShortcutDirty();
|
||||||
return true;
|
return true;
|
||||||
@ -8515,7 +8515,7 @@ void Notepad_plus::updateCommandShortcuts()
|
|||||||
shortcutName = menuName;
|
shortcutName = menuName;
|
||||||
}
|
}
|
||||||
|
|
||||||
csc.setName(menuName.c_str(), shortcutName.c_str());
|
csc.setName(wstring2string(menuName, CP_UTF8).c_str(), wstring2string(shortcutName, CP_UTF8).c_str());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1455,7 +1455,7 @@ LRESULT Notepad_plus::process(HWND hwnd, UINT message, WPARAM wParam, LPARAM lPa
|
|||||||
|
|
||||||
case WM_FRSAVE_STR:
|
case WM_FRSAVE_STR:
|
||||||
{
|
{
|
||||||
_macro.push_back(recordedMacroStep(static_cast<int32_t>(wParam), 0, 0, reinterpret_cast<const TCHAR *>(lParam), recordedMacroStep::mtSavedSnR));
|
_macro.push_back(recordedMacroStep(static_cast<int32_t>(wParam), 0, 0, reinterpret_cast<const char *>(lParam), recordedMacroStep::mtSavedSnR));
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -48,7 +48,7 @@ void Notepad_plus::macroPlayback(Macro macro)
|
|||||||
if (step->isScintillaMacro())
|
if (step->isScintillaMacro())
|
||||||
step->PlayBack(_pPublicInterface, _pEditView);
|
step->PlayBack(_pPublicInterface, _pEditView);
|
||||||
else
|
else
|
||||||
_findReplaceDlg.execSavedCommand(step->_message, step->_lParameter, step->_sParameter);
|
_findReplaceDlg.execSavedCommand(step->_message, step->_lParameter, string2wstring(step->_sParameter, CP_UTF8));
|
||||||
}
|
}
|
||||||
|
|
||||||
_pEditView->execute(SCI_ENDUNDOACTION);
|
_pEditView->execute(SCI_ENDUNDOACTION);
|
||||||
@ -3964,7 +3964,7 @@ void Notepad_plus::command(int id)
|
|||||||
vector<UserCommand> & theUserCommands = (NppParameters::getInstance()).getUserCommandList();
|
vector<UserCommand> & theUserCommands = (NppParameters::getInstance()).getUserCommandList();
|
||||||
UserCommand ucmd = theUserCommands[i];
|
UserCommand ucmd = theUserCommands[i];
|
||||||
|
|
||||||
Command cmd(ucmd.getCmd());
|
Command cmd(string2wstring(ucmd.getCmd(), CP_UTF8));
|
||||||
cmd.run(_pPublicInterface->getHSelf());
|
cmd.run(_pPublicInterface->getHSelf());
|
||||||
}
|
}
|
||||||
else if ((id >= ID_PLUGINS_CMD) && (id < ID_PLUGINS_CMD_LIMIT))
|
else if ((id >= ID_PLUGINS_CMD) && (id < ID_PLUGINS_CMD_LIMIT))
|
||||||
|
@ -1025,8 +1025,7 @@ BOOL Notepad_plus::notify(SCNotification *notification)
|
|||||||
recordedMacroStep(
|
recordedMacroStep(
|
||||||
notification->message,
|
notification->message,
|
||||||
notification->wParam,
|
notification->wParam,
|
||||||
notification->lParam,
|
notification->lParam
|
||||||
static_cast<int32_t>(_pEditView->execute(SCI_GETCODEPAGE))
|
|
||||||
)
|
)
|
||||||
);
|
);
|
||||||
break;
|
break;
|
||||||
|
@ -1471,12 +1471,12 @@ bool NppParameters::load()
|
|||||||
::CopyFile(srcShortcutsPath.c_str(), _shortcutsPath.c_str(), TRUE);
|
::CopyFile(srcShortcutsPath.c_str(), _shortcutsPath.c_str(), TRUE);
|
||||||
}
|
}
|
||||||
|
|
||||||
_pXmlShortcutDoc = new TiXmlDocument(_shortcutsPath);
|
_pXmlShortcutDocA = new TiXmlDocumentA();
|
||||||
loadOkay = _pXmlShortcutDoc->LoadFile();
|
loadOkay = _pXmlShortcutDocA->LoadUnicodeFilePath(_shortcutsPath.c_str());
|
||||||
if (!loadOkay)
|
if (!loadOkay)
|
||||||
{
|
{
|
||||||
delete _pXmlShortcutDoc;
|
delete _pXmlShortcutDocA;
|
||||||
_pXmlShortcutDoc = nullptr;
|
_pXmlShortcutDocA = nullptr;
|
||||||
isAllLaoded = false;
|
isAllLaoded = false;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@ -1613,10 +1613,9 @@ void NppParameters::destroyInstance()
|
|||||||
|
|
||||||
delete _pXmlNativeLangDocA;
|
delete _pXmlNativeLangDocA;
|
||||||
delete _pXmlToolIconsDoc;
|
delete _pXmlToolIconsDoc;
|
||||||
delete _pXmlShortcutDoc;
|
delete _pXmlShortcutDocA;
|
||||||
delete _pXmlContextMenuDocA;
|
delete _pXmlContextMenuDocA;
|
||||||
delete _pXmlTabContextMenuDocA;
|
delete _pXmlTabContextMenuDocA;
|
||||||
delete _pXmlBlacklistDoc;
|
|
||||||
delete getInstancePointer();
|
delete getInstancePointer();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1903,10 +1902,10 @@ std::pair<unsigned char, unsigned char> NppParameters::addUserDefineLangsFromXml
|
|||||||
|
|
||||||
bool NppParameters::getShortcutsFromXmlTree()
|
bool NppParameters::getShortcutsFromXmlTree()
|
||||||
{
|
{
|
||||||
if (!_pXmlShortcutDoc)
|
if (!_pXmlShortcutDocA)
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
TiXmlNode *root = _pXmlShortcutDoc->FirstChild(TEXT("NotepadPlus"));
|
TiXmlNodeA *root = _pXmlShortcutDocA->FirstChild("NotepadPlus");
|
||||||
if (!root)
|
if (!root)
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
@ -1917,10 +1916,10 @@ bool NppParameters::getShortcutsFromXmlTree()
|
|||||||
|
|
||||||
bool NppParameters::getMacrosFromXmlTree()
|
bool NppParameters::getMacrosFromXmlTree()
|
||||||
{
|
{
|
||||||
if (!_pXmlShortcutDoc)
|
if (!_pXmlShortcutDocA)
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
TiXmlNode *root = _pXmlShortcutDoc->FirstChild(TEXT("NotepadPlus"));
|
TiXmlNodeA *root = _pXmlShortcutDocA->FirstChild("NotepadPlus");
|
||||||
if (!root)
|
if (!root)
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
@ -1931,10 +1930,10 @@ bool NppParameters::getMacrosFromXmlTree()
|
|||||||
|
|
||||||
bool NppParameters::getUserCmdsFromXmlTree()
|
bool NppParameters::getUserCmdsFromXmlTree()
|
||||||
{
|
{
|
||||||
if (!_pXmlShortcutDoc)
|
if (!_pXmlShortcutDocA)
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
TiXmlNode *root = _pXmlShortcutDoc->FirstChild(TEXT("NotepadPlus"));
|
TiXmlNodeA *root = _pXmlShortcutDocA->FirstChild("NotepadPlus");
|
||||||
if (!root)
|
if (!root)
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
@ -1945,10 +1944,10 @@ bool NppParameters::getUserCmdsFromXmlTree()
|
|||||||
|
|
||||||
bool NppParameters::getPluginCmdsFromXmlTree()
|
bool NppParameters::getPluginCmdsFromXmlTree()
|
||||||
{
|
{
|
||||||
if (!_pXmlShortcutDoc)
|
if (!_pXmlShortcutDocA)
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
TiXmlNode *root = _pXmlShortcutDoc->FirstChild(TEXT("NotepadPlus"));
|
TiXmlNodeA *root = _pXmlShortcutDocA->FirstChild("NotepadPlus");
|
||||||
if (!root)
|
if (!root)
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
@ -1959,10 +1958,10 @@ bool NppParameters::getPluginCmdsFromXmlTree()
|
|||||||
|
|
||||||
bool NppParameters::getScintKeysFromXmlTree()
|
bool NppParameters::getScintKeysFromXmlTree()
|
||||||
{
|
{
|
||||||
if (!_pXmlShortcutDoc)
|
if (!_pXmlShortcutDocA)
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
TiXmlNode *root = _pXmlShortcutDoc->FirstChild(TEXT("NotepadPlus"));
|
TiXmlNodeA *root = _pXmlShortcutDocA->FirstChild("NotepadPlus");
|
||||||
if (!root)
|
if (!root)
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
@ -1970,18 +1969,6 @@ bool NppParameters::getScintKeysFromXmlTree()
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool NppParameters::getBlackListFromXmlTree()
|
|
||||||
{
|
|
||||||
if (!_pXmlBlacklistDoc)
|
|
||||||
return false;
|
|
||||||
|
|
||||||
TiXmlNode *root = _pXmlBlacklistDoc->FirstChild(TEXT("NotepadPlus"));
|
|
||||||
if (!root)
|
|
||||||
return false;
|
|
||||||
|
|
||||||
return feedBlacklist(root);
|
|
||||||
}
|
|
||||||
|
|
||||||
void NppParameters::initMenuKeys()
|
void NppParameters::initMenuKeys()
|
||||||
{
|
{
|
||||||
int nbCommands = sizeof(winKeyDefs)/sizeof(WinMenuKeyDefinition);
|
int nbCommands = sizeof(winKeyDefs)/sizeof(WinMenuKeyDefinition);
|
||||||
@ -1989,7 +1976,7 @@ void NppParameters::initMenuKeys()
|
|||||||
for (int i = 0; i < nbCommands; ++i)
|
for (int i = 0; i < nbCommands; ++i)
|
||||||
{
|
{
|
||||||
wkd = winKeyDefs[i];
|
wkd = winKeyDefs[i];
|
||||||
Shortcut sc((wkd.specialName ? wkd.specialName : TEXT("")), wkd.isCtrl, wkd.isAlt, wkd.isShift, static_cast<unsigned char>(wkd.vKey));
|
Shortcut sc((wkd.specialName ? wstring2string(wkd.specialName, CP_UTF8).c_str() : ""), wkd.isCtrl, wkd.isAlt, wkd.isShift, static_cast<unsigned char>(wkd.vKey));
|
||||||
_shortcuts.push_back( CommandShortcut(sc, wkd.functionId) );
|
_shortcuts.push_back( CommandShortcut(sc, wkd.functionId) );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -2016,7 +2003,7 @@ void NppParameters::initScintillaKeys()
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
Shortcut s = Shortcut(skd.name, skd.isCtrl, skd.isAlt, skd.isShift, static_cast<unsigned char>(skd.vKey));
|
Shortcut s = Shortcut(wstring2string(skd.name, CP_UTF8).c_str(), skd.isCtrl, skd.isAlt, skd.isShift, static_cast<unsigned char>(skd.vKey));
|
||||||
ScintillaKeyMap sm = ScintillaKeyMap(s, skd.functionId, skd.redirFunctionId);
|
ScintillaKeyMap sm = ScintillaKeyMap(s, skd.functionId, skd.redirFunctionId);
|
||||||
_scintillaKeyCommands.push_back(sm);
|
_scintillaKeyCommands.push_back(sm);
|
||||||
++prevIndex;
|
++prevIndex;
|
||||||
@ -2712,17 +2699,17 @@ void NppParameters::feedFindHistoryParameters(TiXmlNode *node)
|
|||||||
_findHistory._isPurge = (lstrcmp(TEXT("yes"), boolStr) == 0);
|
_findHistory._isPurge = (lstrcmp(TEXT("yes"), boolStr) == 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
void NppParameters::feedShortcut(TiXmlNode *node)
|
void NppParameters::feedShortcut(TiXmlNodeA *node)
|
||||||
{
|
{
|
||||||
TiXmlNode *shortcutsRoot = node->FirstChildElement(TEXT("InternalCommands"));
|
TiXmlNodeA *shortcutsRoot = node->FirstChildElement("InternalCommands");
|
||||||
if (!shortcutsRoot) return;
|
if (!shortcutsRoot) return;
|
||||||
|
|
||||||
for (TiXmlNode *childNode = shortcutsRoot->FirstChildElement(TEXT("Shortcut"));
|
for (TiXmlNodeA *childNode = shortcutsRoot->FirstChildElement("Shortcut");
|
||||||
childNode ;
|
childNode ;
|
||||||
childNode = childNode->NextSibling(TEXT("Shortcut")) )
|
childNode = childNode->NextSibling("Shortcut"))
|
||||||
{
|
{
|
||||||
int id;
|
int id;
|
||||||
const TCHAR *idStr = (childNode->ToElement())->Attribute(TEXT("id"), &id);
|
const char* idStr = (childNode->ToElement())->Attribute("id", &id);
|
||||||
if (idStr)
|
if (idStr)
|
||||||
{
|
{
|
||||||
//find the commandid that matches this Shortcut sc and alter it, push back its index in the modified list, if not present
|
//find the commandid that matches this Shortcut sc and alter it, push back its index in the modified list, if not present
|
||||||
@ -2739,73 +2726,52 @@ void NppParameters::feedShortcut(TiXmlNode *node)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void NppParameters::feedMacros(TiXmlNode *node)
|
void NppParameters::feedMacros(TiXmlNodeA *node)
|
||||||
{
|
{
|
||||||
TiXmlNode *macrosRoot = node->FirstChildElement(TEXT("Macros"));
|
TiXmlNodeA *macrosRoot = node->FirstChildElement("Macros");
|
||||||
if (!macrosRoot) return;
|
if (!macrosRoot) return;
|
||||||
|
|
||||||
for (TiXmlNode *childNode = macrosRoot->FirstChildElement(TEXT("Macro"));
|
for (TiXmlNodeA *childNode = macrosRoot->FirstChildElement("Macro");
|
||||||
childNode ;
|
childNode ;
|
||||||
childNode = childNode->NextSibling(TEXT("Macro")) )
|
childNode = childNode->NextSibling("Macro"))
|
||||||
{
|
{
|
||||||
Shortcut sc;
|
Shortcut sc;
|
||||||
generic_string fdnm;
|
string fdnm;
|
||||||
if (getShortcuts(childNode, sc, &fdnm))
|
if (getShortcuts(childNode, sc, &fdnm))
|
||||||
{
|
{
|
||||||
Macro macro;
|
Macro macro;
|
||||||
getActions(childNode, macro);
|
getActions(childNode, macro);
|
||||||
int cmdID = ID_MACRO + static_cast<int32_t>(_macros.size());
|
int cmdID = ID_MACRO + static_cast<int32_t>(_macros.size());
|
||||||
_macros.push_back(MacroShortcut(sc, macro, cmdID));
|
_macros.push_back(MacroShortcut(sc, macro, cmdID));
|
||||||
|
_macroMenuItems.push_back(MenuItemUnit(cmdID, string2wstring(sc.getName(), CP_UTF8), string2wstring(fdnm, CP_UTF8)));
|
||||||
// User could add folder name in his/her native language,
|
|
||||||
// so let's make non-western languages displayable here.
|
|
||||||
if (!fdnm.empty())
|
|
||||||
{
|
|
||||||
// The function WideCharToMultiByte with CP_ACP doesn't work.
|
|
||||||
// So we use our way to convert to char from wchar_t:
|
|
||||||
size_t len = fdnm.size();
|
|
||||||
const wchar_t* fdnmW = fdnm.c_str();
|
|
||||||
char* fdnmA = new char[len+1];
|
|
||||||
for (size_t i = 0; i < len; ++i)
|
|
||||||
{
|
|
||||||
fdnmA[i] = (char)fdnmW[i];
|
|
||||||
}
|
|
||||||
fdnmA[len] = '\0';
|
|
||||||
|
|
||||||
WcharMbcsConvertor& wmc = WcharMbcsConvertor::getInstance();
|
|
||||||
fdnm = wmc.char2wchar(fdnmA, SC_CP_UTF8);
|
|
||||||
|
|
||||||
delete[] fdnmA;
|
|
||||||
}
|
|
||||||
_macroMenuItems.push_back(MenuItemUnit(cmdID, sc.getName(), fdnm));
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void NppParameters::getActions(TiXmlNode *node, Macro & macro)
|
void NppParameters::getActions(TiXmlNodeA *node, Macro & macro)
|
||||||
{
|
{
|
||||||
for (TiXmlNode *childNode = node->FirstChildElement(TEXT("Action"));
|
for (TiXmlNodeA *childNode = node->FirstChildElement("Action");
|
||||||
childNode ;
|
childNode ;
|
||||||
childNode = childNode->NextSibling(TEXT("Action")) )
|
childNode = childNode->NextSibling("Action") )
|
||||||
{
|
{
|
||||||
int type;
|
int type;
|
||||||
const TCHAR *typeStr = (childNode->ToElement())->Attribute(TEXT("type"), &type);
|
const char *typeStr = (childNode->ToElement())->Attribute("type", &type);
|
||||||
if ((!typeStr) || (type > 3))
|
if ((!typeStr) || (type > 3))
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
int msg = 0;
|
int msg = 0;
|
||||||
(childNode->ToElement())->Attribute(TEXT("message"), &msg);
|
(childNode->ToElement())->Attribute("message", &msg);
|
||||||
|
|
||||||
int wParam = 0;
|
int wParam = 0;
|
||||||
(childNode->ToElement())->Attribute(TEXT("wParam"), &wParam);
|
(childNode->ToElement())->Attribute("wParam", &wParam);
|
||||||
|
|
||||||
int lParam = 0;
|
int lParam = 0;
|
||||||
(childNode->ToElement())->Attribute(TEXT("lParam"), &lParam);
|
(childNode->ToElement())->Attribute("lParam", &lParam);
|
||||||
|
|
||||||
const TCHAR *sParam = (childNode->ToElement())->Attribute(TEXT("sParam"));
|
const char *sParam = (childNode->ToElement())->Attribute("sParam");
|
||||||
if (!sParam)
|
if (!sParam)
|
||||||
sParam = TEXT("");
|
sParam = "";
|
||||||
recordedMacroStep step(msg, wParam, lParam, sParam, type);
|
recordedMacroStep step(msg, wParam, lParam, sParam, type);
|
||||||
if (step.isValid())
|
if (step.isValid())
|
||||||
macro.push_back(step);
|
macro.push_back(step);
|
||||||
@ -2813,71 +2779,49 @@ void NppParameters::getActions(TiXmlNode *node, Macro & macro)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void NppParameters::feedUserCmds(TiXmlNode *node)
|
void NppParameters::feedUserCmds(TiXmlNodeA *node)
|
||||||
{
|
{
|
||||||
TiXmlNode *userCmdsRoot = node->FirstChildElement(TEXT("UserDefinedCommands"));
|
TiXmlNodeA *userCmdsRoot = node->FirstChildElement("UserDefinedCommands");
|
||||||
if (!userCmdsRoot) return;
|
if (!userCmdsRoot) return;
|
||||||
|
|
||||||
for (TiXmlNode *childNode = userCmdsRoot->FirstChildElement(TEXT("Command"));
|
for (TiXmlNodeA *childNode = userCmdsRoot->FirstChildElement("Command");
|
||||||
childNode ;
|
childNode ;
|
||||||
childNode = childNode->NextSibling(TEXT("Command")) )
|
childNode = childNode->NextSibling("Command") )
|
||||||
{
|
{
|
||||||
Shortcut sc;
|
Shortcut sc;
|
||||||
generic_string fdnm;
|
string fdnm;
|
||||||
if (getShortcuts(childNode, sc, &fdnm))
|
if (getShortcuts(childNode, sc, &fdnm))
|
||||||
{
|
{
|
||||||
TiXmlNode *aNode = childNode->FirstChild();
|
TiXmlNodeA *aNode = childNode->FirstChild();
|
||||||
if (aNode)
|
if (aNode)
|
||||||
{
|
{
|
||||||
const TCHAR *cmdStr = aNode->Value();
|
const char* cmdStr = aNode->Value();
|
||||||
if (cmdStr)
|
if (cmdStr)
|
||||||
{
|
{
|
||||||
int cmdID = ID_USER_CMD + static_cast<int32_t>(_userCommands.size());
|
int cmdID = ID_USER_CMD + static_cast<int32_t>(_userCommands.size());
|
||||||
_userCommands.push_back(UserCommand(sc, cmdStr, cmdID));
|
_userCommands.push_back(UserCommand(sc, cmdStr, cmdID));
|
||||||
|
_runMenuItems.push_back(MenuItemUnit(cmdID, string2wstring(sc.getName(), CP_UTF8), string2wstring(fdnm, CP_UTF8)));
|
||||||
// User could add folder name in his/her native language,
|
|
||||||
// so let's make non-western languages displayable here.
|
|
||||||
if (!fdnm.empty())
|
|
||||||
{
|
|
||||||
// The function WideCharToMultiByte with CP_ACP doesn't work.
|
|
||||||
// So we use our way to convert to char from wchar_t:
|
|
||||||
size_t len = fdnm.size();
|
|
||||||
const wchar_t* fdnmW = fdnm.c_str();
|
|
||||||
char* fdnmA = new char[len + 1];
|
|
||||||
for (size_t i = 0; i < len; ++i)
|
|
||||||
{
|
|
||||||
fdnmA[i] = (char)fdnmW[i];
|
|
||||||
}
|
|
||||||
fdnmA[len] = '\0';
|
|
||||||
|
|
||||||
WcharMbcsConvertor& wmc = WcharMbcsConvertor::getInstance();
|
|
||||||
fdnm = wmc.char2wchar(fdnmA, SC_CP_UTF8);
|
|
||||||
|
|
||||||
delete[] fdnmA;
|
|
||||||
}
|
|
||||||
|
|
||||||
_runMenuItems.push_back(MenuItemUnit(cmdID, sc.getName(), fdnm));
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void NppParameters::feedPluginCustomizedCmds(TiXmlNode *node)
|
void NppParameters::feedPluginCustomizedCmds(TiXmlNodeA *node)
|
||||||
{
|
{
|
||||||
TiXmlNode *pluginCustomizedCmdsRoot = node->FirstChildElement(TEXT("PluginCommands"));
|
TiXmlNodeA *pluginCustomizedCmdsRoot = node->FirstChildElement("PluginCommands");
|
||||||
if (!pluginCustomizedCmdsRoot) return;
|
if (!pluginCustomizedCmdsRoot) return;
|
||||||
|
|
||||||
for (TiXmlNode *childNode = pluginCustomizedCmdsRoot->FirstChildElement(TEXT("PluginCommand"));
|
for (TiXmlNodeA *childNode = pluginCustomizedCmdsRoot->FirstChildElement("PluginCommand");
|
||||||
childNode ;
|
childNode ;
|
||||||
childNode = childNode->NextSibling(TEXT("PluginCommand")) )
|
childNode = childNode->NextSibling("PluginCommand") )
|
||||||
{
|
{
|
||||||
const TCHAR *moduleName = (childNode->ToElement())->Attribute(TEXT("moduleName"));
|
const char *moduleName = (childNode->ToElement())->Attribute("moduleName");
|
||||||
if (!moduleName)
|
if (!moduleName)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
int internalID = -1;
|
int internalID = -1;
|
||||||
const TCHAR *internalIDStr = (childNode->ToElement())->Attribute(TEXT("internalID"), &internalID);
|
const char *internalIDStr = (childNode->ToElement())->Attribute("internalID", &internalID);
|
||||||
|
|
||||||
if (!internalIDStr)
|
if (!internalIDStr)
|
||||||
continue;
|
continue;
|
||||||
@ -2887,7 +2831,7 @@ void NppParameters::feedPluginCustomizedCmds(TiXmlNode *node)
|
|||||||
for (size_t i = 0; i < len; ++i)
|
for (size_t i = 0; i < len; ++i)
|
||||||
{
|
{
|
||||||
PluginCmdShortcut & pscOrig = _pluginCommands[i];
|
PluginCmdShortcut & pscOrig = _pluginCommands[i];
|
||||||
if (!wcsnicmp(pscOrig.getModuleName(), moduleName, lstrlen(moduleName)) && pscOrig.getInternalID() == internalID)
|
if (!strnicmp(pscOrig.getModuleName(), moduleName, strlen(moduleName)) && pscOrig.getInternalID() == internalID)
|
||||||
{
|
{
|
||||||
//Found matching command
|
//Found matching command
|
||||||
getShortcuts(childNode, _pluginCommands[i]);
|
getShortcuts(childNode, _pluginCommands[i]);
|
||||||
@ -2898,22 +2842,22 @@ void NppParameters::feedPluginCustomizedCmds(TiXmlNode *node)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void NppParameters::feedScintKeys(TiXmlNode *node)
|
void NppParameters::feedScintKeys(TiXmlNodeA *node)
|
||||||
{
|
{
|
||||||
TiXmlNode *scintKeysRoot = node->FirstChildElement(TEXT("ScintillaKeys"));
|
TiXmlNodeA *scintKeysRoot = node->FirstChildElement("ScintillaKeys");
|
||||||
if (!scintKeysRoot) return;
|
if (!scintKeysRoot) return;
|
||||||
|
|
||||||
for (TiXmlNode *childNode = scintKeysRoot->FirstChildElement(TEXT("ScintKey"));
|
for (TiXmlNodeA *childNode = scintKeysRoot->FirstChildElement("ScintKey");
|
||||||
childNode ;
|
childNode ;
|
||||||
childNode = childNode->NextSibling(TEXT("ScintKey")) )
|
childNode = childNode->NextSibling("ScintKey") )
|
||||||
{
|
{
|
||||||
int scintKey;
|
int scintKey;
|
||||||
const TCHAR *keyStr = (childNode->ToElement())->Attribute(TEXT("ScintID"), &scintKey);
|
const char *keyStr = (childNode->ToElement())->Attribute("ScintID", &scintKey);
|
||||||
if (!keyStr)
|
if (!keyStr)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
int menuID;
|
int menuID;
|
||||||
keyStr = (childNode->ToElement())->Attribute(TEXT("menuCmdID"), &menuID);
|
keyStr = (childNode->ToElement())->Attribute("menuCmdID", &menuID);
|
||||||
if (!keyStr)
|
if (!keyStr)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
@ -2930,27 +2874,27 @@ void NppParameters::feedScintKeys(TiXmlNode *node)
|
|||||||
_scintillaKeyCommands[i].setKeyComboByIndex(0, _scintillaKeyCommands[i].getKeyCombo());
|
_scintillaKeyCommands[i].setKeyComboByIndex(0, _scintillaKeyCommands[i].getKeyCombo());
|
||||||
addScintillaModifiedIndex(i);
|
addScintillaModifiedIndex(i);
|
||||||
KeyCombo kc;
|
KeyCombo kc;
|
||||||
for (TiXmlNode *nextNode = childNode->FirstChildElement(TEXT("NextKey"));
|
for (TiXmlNodeA *nextNode = childNode->FirstChildElement("NextKey");
|
||||||
nextNode ;
|
nextNode ;
|
||||||
nextNode = nextNode->NextSibling(TEXT("NextKey")))
|
nextNode = nextNode->NextSibling("NextKey"))
|
||||||
{
|
{
|
||||||
const TCHAR *str = (nextNode->ToElement())->Attribute(TEXT("Ctrl"));
|
const char *str = (nextNode->ToElement())->Attribute("Ctrl");
|
||||||
if (!str)
|
if (!str)
|
||||||
continue;
|
continue;
|
||||||
kc._isCtrl = (lstrcmp(TEXT("yes"), str) == 0);
|
kc._isCtrl = (strcmp("yes", str) == 0);
|
||||||
|
|
||||||
str = (nextNode->ToElement())->Attribute(TEXT("Alt"));
|
str = (nextNode->ToElement())->Attribute("Alt");
|
||||||
if (!str)
|
if (!str)
|
||||||
continue;
|
continue;
|
||||||
kc._isAlt = (lstrcmp(TEXT("yes"), str) == 0);
|
kc._isAlt = (strcmp("yes", str) == 0);
|
||||||
|
|
||||||
str = (nextNode->ToElement())->Attribute(TEXT("Shift"));
|
str = (nextNode->ToElement())->Attribute("Shift");
|
||||||
if (!str)
|
if (!str)
|
||||||
continue;
|
continue;
|
||||||
kc._isShift = (lstrcmp(TEXT("yes"), str) == 0);
|
kc._isShift = (strcmp("yes", str) == 0);
|
||||||
|
|
||||||
int key;
|
int key;
|
||||||
str = (nextNode->ToElement())->Attribute(TEXT("Key"), &key);
|
str = (nextNode->ToElement())->Attribute("Key", &key);
|
||||||
if (!str)
|
if (!str)
|
||||||
continue;
|
continue;
|
||||||
kc._key = static_cast<unsigned char>(key);
|
kc._key = static_cast<unsigned char>(key);
|
||||||
@ -2962,56 +2906,38 @@ void NppParameters::feedScintKeys(TiXmlNode *node)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
bool NppParameters::feedBlacklist(TiXmlNode *node)
|
bool NppParameters::getShortcuts(TiXmlNodeA *node, Shortcut & sc, string* folderName)
|
||||||
{
|
|
||||||
TiXmlNode *blackListRoot = node->FirstChildElement(TEXT("PluginBlackList"));
|
|
||||||
if (!blackListRoot) return false;
|
|
||||||
|
|
||||||
for (TiXmlNode *childNode = blackListRoot->FirstChildElement(TEXT("Plugin"));
|
|
||||||
childNode ;
|
|
||||||
childNode = childNode->NextSibling(TEXT("Plugin")) )
|
|
||||||
{
|
|
||||||
const TCHAR *name = (childNode->ToElement())->Attribute(TEXT("name"));
|
|
||||||
if (name)
|
|
||||||
{
|
|
||||||
_blacklist.push_back(name);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
bool NppParameters::getShortcuts(TiXmlNode *node, Shortcut & sc, generic_string* folderName)
|
|
||||||
{
|
{
|
||||||
if (!node) return false;
|
if (!node) return false;
|
||||||
|
|
||||||
const TCHAR *name = (node->ToElement())->Attribute(TEXT("name"));
|
const char* name = (node->ToElement())->Attribute("name");
|
||||||
if (!name)
|
if (!name)
|
||||||
name = TEXT("");
|
name = "";
|
||||||
|
|
||||||
bool isCtrl = false;
|
bool isCtrl = false;
|
||||||
const TCHAR *isCtrlStr = (node->ToElement())->Attribute(TEXT("Ctrl"));
|
const char* isCtrlStr = (node->ToElement())->Attribute("Ctrl");
|
||||||
if (isCtrlStr)
|
if (isCtrlStr)
|
||||||
isCtrl = (lstrcmp(TEXT("yes"), isCtrlStr) == 0);
|
isCtrl = (strcmp("yes", isCtrlStr) == 0);
|
||||||
|
|
||||||
bool isAlt = false;
|
bool isAlt = false;
|
||||||
const TCHAR *isAltStr = (node->ToElement())->Attribute(TEXT("Alt"));
|
const char* isAltStr = (node->ToElement())->Attribute("Alt");
|
||||||
if (isAltStr)
|
if (isAltStr)
|
||||||
isAlt = (lstrcmp(TEXT("yes"), isAltStr) == 0);
|
isAlt = (strcmp("yes", isAltStr) == 0);
|
||||||
|
|
||||||
bool isShift = false;
|
bool isShift = false;
|
||||||
const TCHAR *isShiftStr = (node->ToElement())->Attribute(TEXT("Shift"));
|
const char* isShiftStr = (node->ToElement())->Attribute("Shift");
|
||||||
if (isShiftStr)
|
if (isShiftStr)
|
||||||
isShift = (lstrcmp(TEXT("yes"), isShiftStr) == 0);
|
isShift = (strcmp("yes", isShiftStr) == 0);
|
||||||
|
|
||||||
int key;
|
int key;
|
||||||
const TCHAR *keyStr = (node->ToElement())->Attribute(TEXT("Key"), &key);
|
const char* keyStr = (node->ToElement())->Attribute("Key", &key);
|
||||||
if (!keyStr)
|
if (!keyStr)
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
if (folderName)
|
if (folderName)
|
||||||
{
|
{
|
||||||
const TCHAR* fn = (node->ToElement())->Attribute(TEXT("FolderName"));
|
const char* fn = (node->ToElement())->Attribute("FolderName");
|
||||||
*folderName = fn ? fn : L"";
|
*folderName = fn ? fn : "";
|
||||||
}
|
}
|
||||||
|
|
||||||
sc = Shortcut(name, isCtrl, isAlt, isShift, static_cast<unsigned char>(key));
|
sc = Shortcut(name, isCtrl, isAlt, isShift, static_cast<unsigned char>(key));
|
||||||
@ -3261,9 +3187,9 @@ bool NppParameters::writeSettingsFilesOnCloudForThe1stTime(const generic_string
|
|||||||
// shortcuts.xml
|
// shortcuts.xml
|
||||||
generic_string cloudShortcutsPath = cloudSettingsPath;
|
generic_string cloudShortcutsPath = cloudSettingsPath;
|
||||||
pathAppend(cloudShortcutsPath, TEXT("shortcuts.xml"));
|
pathAppend(cloudShortcutsPath, TEXT("shortcuts.xml"));
|
||||||
if (!::PathFileExists(cloudShortcutsPath.c_str()) && _pXmlShortcutDoc)
|
if (!::PathFileExists(cloudShortcutsPath.c_str()) && _pXmlShortcutDocA)
|
||||||
{
|
{
|
||||||
isOK = _pXmlShortcutDoc->SaveFile(cloudShortcutsPath.c_str());
|
isOK = _pXmlShortcutDocA->SaveUnicodeFilePath(cloudShortcutsPath.c_str());
|
||||||
if (!isOK)
|
if (!isOK)
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
@ -3398,115 +3324,87 @@ void NppParameters::writeNeed2SaveUDL()
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void NppParameters::insertCmd(TiXmlNode *shortcutsRoot, const CommandShortcut & cmd)
|
void NppParameters::insertCmd(TiXmlNodeA *shortcutsRoot, const CommandShortcut & cmd)
|
||||||
{
|
{
|
||||||
const KeyCombo & key = cmd.getKeyCombo();
|
const KeyCombo & key = cmd.getKeyCombo();
|
||||||
TiXmlNode *sc = shortcutsRoot->InsertEndChild(TiXmlElement(TEXT("Shortcut")));
|
TiXmlNodeA *sc = shortcutsRoot->InsertEndChild(TiXmlElementA("Shortcut"));
|
||||||
sc->ToElement()->SetAttribute(TEXT("id"), cmd.getID());
|
sc->ToElement()->SetAttribute("id", cmd.getID());
|
||||||
sc->ToElement()->SetAttribute(TEXT("Ctrl"), key._isCtrl?TEXT("yes"):TEXT("no"));
|
sc->ToElement()->SetAttribute("Ctrl", key._isCtrl?"yes":"no");
|
||||||
sc->ToElement()->SetAttribute(TEXT("Alt"), key._isAlt?TEXT("yes"):TEXT("no"));
|
sc->ToElement()->SetAttribute("Alt", key._isAlt?"yes":"no");
|
||||||
sc->ToElement()->SetAttribute(TEXT("Shift"), key._isShift?TEXT("yes"):TEXT("no"));
|
sc->ToElement()->SetAttribute("Shift", key._isShift?"yes":"no");
|
||||||
sc->ToElement()->SetAttribute(TEXT("Key"), key._key);
|
sc->ToElement()->SetAttribute("Key", key._key);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void NppParameters::insertMacro(TiXmlNode *macrosRoot, const MacroShortcut & macro, const generic_string& folderName)
|
void NppParameters::insertMacro(TiXmlNodeA *macrosRoot, const MacroShortcut & macro, const string& folderName)
|
||||||
{
|
{
|
||||||
const KeyCombo & key = macro.getKeyCombo();
|
const KeyCombo & key = macro.getKeyCombo();
|
||||||
TiXmlNode *macroRoot = macrosRoot->InsertEndChild(TiXmlElement(TEXT("Macro")));
|
TiXmlNodeA *macroRoot = macrosRoot->InsertEndChild(TiXmlElementA("Macro"));
|
||||||
macroRoot->ToElement()->SetAttribute(TEXT("name"), macro.getMenuName());
|
macroRoot->ToElement()->SetAttribute("name", macro.getMenuName());
|
||||||
macroRoot->ToElement()->SetAttribute(TEXT("Ctrl"), key._isCtrl?TEXT("yes"):TEXT("no"));
|
macroRoot->ToElement()->SetAttribute("Ctrl", key._isCtrl?"yes":"no");
|
||||||
macroRoot->ToElement()->SetAttribute(TEXT("Alt"), key._isAlt?TEXT("yes"):TEXT("no"));
|
macroRoot->ToElement()->SetAttribute("Alt", key._isAlt?"yes":"no");
|
||||||
macroRoot->ToElement()->SetAttribute(TEXT("Shift"), key._isShift?TEXT("yes"):TEXT("no"));
|
macroRoot->ToElement()->SetAttribute("Shift", key._isShift?"yes":"no");
|
||||||
macroRoot->ToElement()->SetAttribute(TEXT("Key"), key._key);
|
macroRoot->ToElement()->SetAttribute("Key", key._key);
|
||||||
if (!folderName.empty())
|
if (!folderName.empty())
|
||||||
{
|
{
|
||||||
// W -> A -> W
|
macroRoot->ToElement()->SetAttribute("FolderName", folderName);
|
||||||
WcharMbcsConvertor& wmc = WcharMbcsConvertor::getInstance();
|
|
||||||
const char* folderNameA = wmc.wchar2char(folderName.c_str(), SC_CP_UTF8);
|
|
||||||
|
|
||||||
size_t len = strlen(folderNameA);
|
|
||||||
wchar_t* folderNameW = new wchar_t[len+1];
|
|
||||||
|
|
||||||
for (size_t i = 0; i < len; ++i)
|
|
||||||
{
|
|
||||||
folderNameW[i] = folderNameA[i];
|
|
||||||
}
|
|
||||||
folderNameW[len] = '\0';
|
|
||||||
|
|
||||||
macroRoot->ToElement()->SetAttribute(TEXT("FolderName"), folderNameW);
|
|
||||||
delete[] folderNameW;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
for (size_t i = 0, len = macro._macro.size(); i < len ; ++i)
|
for (size_t i = 0, len = macro._macro.size(); i < len ; ++i)
|
||||||
{
|
{
|
||||||
TiXmlNode *actionNode = macroRoot->InsertEndChild(TiXmlElement(TEXT("Action")));
|
TiXmlNodeA *actionNode = macroRoot->InsertEndChild(TiXmlElementA("Action"));
|
||||||
const recordedMacroStep & action = macro._macro[i];
|
const recordedMacroStep & action = macro._macro[i];
|
||||||
actionNode->ToElement()->SetAttribute(TEXT("type"), action._macroType);
|
actionNode->ToElement()->SetAttribute("type", action._macroType);
|
||||||
actionNode->ToElement()->SetAttribute(TEXT("message"), action._message);
|
actionNode->ToElement()->SetAttribute("message", action._message);
|
||||||
actionNode->ToElement()->SetAttribute(TEXT("wParam"), static_cast<int>(action._wParameter));
|
actionNode->ToElement()->SetAttribute("wParam", static_cast<int>(action._wParameter));
|
||||||
actionNode->ToElement()->SetAttribute(TEXT("lParam"), static_cast<int>(action._lParameter));
|
actionNode->ToElement()->SetAttribute("lParam", static_cast<int>(action._lParameter));
|
||||||
actionNode->ToElement()->SetAttribute(TEXT("sParam"), action._sParameter.c_str());
|
actionNode->ToElement()->SetAttribute("sParam", action._sParameter.c_str());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void NppParameters::insertUserCmd(TiXmlNode *userCmdRoot, const UserCommand & userCmd, const generic_string& folderName)
|
void NppParameters::insertUserCmd(TiXmlNodeA *userCmdRoot, const UserCommand & userCmd, const string& folderName)
|
||||||
{
|
{
|
||||||
const KeyCombo & key = userCmd.getKeyCombo();
|
const KeyCombo & key = userCmd.getKeyCombo();
|
||||||
TiXmlNode *cmdRoot = userCmdRoot->InsertEndChild(TiXmlElement(TEXT("Command")));
|
TiXmlNodeA *cmdRoot = userCmdRoot->InsertEndChild(TiXmlElementA("Command"));
|
||||||
cmdRoot->ToElement()->SetAttribute(TEXT("name"), userCmd.getMenuName());
|
cmdRoot->ToElement()->SetAttribute("name", userCmd.getMenuName());
|
||||||
cmdRoot->ToElement()->SetAttribute(TEXT("Ctrl"), key._isCtrl?TEXT("yes"):TEXT("no"));
|
cmdRoot->ToElement()->SetAttribute("Ctrl", key._isCtrl?"yes":"no");
|
||||||
cmdRoot->ToElement()->SetAttribute(TEXT("Alt"), key._isAlt?TEXT("yes"):TEXT("no"));
|
cmdRoot->ToElement()->SetAttribute("Alt", key._isAlt?"yes":"no");
|
||||||
cmdRoot->ToElement()->SetAttribute(TEXT("Shift"), key._isShift?TEXT("yes"):TEXT("no"));
|
cmdRoot->ToElement()->SetAttribute("Shift", key._isShift?"yes":"no");
|
||||||
cmdRoot->ToElement()->SetAttribute(TEXT("Key"), key._key);
|
cmdRoot->ToElement()->SetAttribute("Key", key._key);
|
||||||
cmdRoot->InsertEndChild(TiXmlText(userCmd._cmd.c_str()));
|
cmdRoot->InsertEndChild(TiXmlTextA(userCmd._cmd.c_str()));
|
||||||
if (!folderName.empty())
|
if (!folderName.empty())
|
||||||
{
|
{
|
||||||
// W -> A -> W
|
cmdRoot->ToElement()->SetAttribute("FolderName", folderName);
|
||||||
WcharMbcsConvertor& wmc = WcharMbcsConvertor::getInstance();
|
|
||||||
const char* folderNameA = wmc.wchar2char(folderName.c_str(), SC_CP_UTF8);
|
|
||||||
|
|
||||||
size_t len = strlen(folderNameA);
|
|
||||||
wchar_t* folderNameW = new wchar_t[len + 1];
|
|
||||||
|
|
||||||
for (size_t i = 0; i < len; ++i)
|
|
||||||
{
|
|
||||||
folderNameW[i] = folderNameA[i];
|
|
||||||
}
|
|
||||||
folderNameW[len] = '\0';
|
|
||||||
|
|
||||||
cmdRoot->ToElement()->SetAttribute(TEXT("FolderName"), folderNameW);
|
|
||||||
delete[] folderNameW;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void NppParameters::insertPluginCmd(TiXmlNode *pluginCmdRoot, const PluginCmdShortcut & pluginCmd)
|
void NppParameters::insertPluginCmd(TiXmlNodeA *pluginCmdRoot, const PluginCmdShortcut & pluginCmd)
|
||||||
{
|
{
|
||||||
const KeyCombo & key = pluginCmd.getKeyCombo();
|
const KeyCombo & key = pluginCmd.getKeyCombo();
|
||||||
TiXmlNode *pluginCmdNode = pluginCmdRoot->InsertEndChild(TiXmlElement(TEXT("PluginCommand")));
|
TiXmlNodeA *pluginCmdNode = pluginCmdRoot->InsertEndChild(TiXmlElementA("PluginCommand"));
|
||||||
pluginCmdNode->ToElement()->SetAttribute(TEXT("moduleName"), pluginCmd.getModuleName());
|
pluginCmdNode->ToElement()->SetAttribute("moduleName", pluginCmd.getModuleName());
|
||||||
pluginCmdNode->ToElement()->SetAttribute(TEXT("internalID"), pluginCmd.getInternalID());
|
pluginCmdNode->ToElement()->SetAttribute("internalID", pluginCmd.getInternalID());
|
||||||
pluginCmdNode->ToElement()->SetAttribute(TEXT("Ctrl"), key._isCtrl?TEXT("yes"):TEXT("no"));
|
pluginCmdNode->ToElement()->SetAttribute("Ctrl", key._isCtrl?"yes":"no");
|
||||||
pluginCmdNode->ToElement()->SetAttribute(TEXT("Alt"), key._isAlt?TEXT("yes"):TEXT("no"));
|
pluginCmdNode->ToElement()->SetAttribute("Alt", key._isAlt?"yes":"no");
|
||||||
pluginCmdNode->ToElement()->SetAttribute(TEXT("Shift"), key._isShift?TEXT("yes"):TEXT("no"));
|
pluginCmdNode->ToElement()->SetAttribute("Shift", key._isShift?"yes":"no");
|
||||||
pluginCmdNode->ToElement()->SetAttribute(TEXT("Key"), key._key);
|
pluginCmdNode->ToElement()->SetAttribute("Key", key._key);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void NppParameters::insertScintKey(TiXmlNode *scintKeyRoot, const ScintillaKeyMap & scintKeyMap)
|
void NppParameters::insertScintKey(TiXmlNodeA *scintKeyRoot, const ScintillaKeyMap & scintKeyMap)
|
||||||
{
|
{
|
||||||
TiXmlNode *keyRoot = scintKeyRoot->InsertEndChild(TiXmlElement(TEXT("ScintKey")));
|
TiXmlNodeA *keyRoot = scintKeyRoot->InsertEndChild(TiXmlElementA("ScintKey"));
|
||||||
keyRoot->ToElement()->SetAttribute(TEXT("ScintID"), scintKeyMap.getScintillaKeyID());
|
keyRoot->ToElement()->SetAttribute("ScintID", scintKeyMap.getScintillaKeyID());
|
||||||
keyRoot->ToElement()->SetAttribute(TEXT("menuCmdID"), scintKeyMap.getMenuCmdID());
|
keyRoot->ToElement()->SetAttribute("menuCmdID", scintKeyMap.getMenuCmdID());
|
||||||
|
|
||||||
//Add main shortcut
|
//Add main shortcut
|
||||||
KeyCombo key = scintKeyMap.getKeyComboByIndex(0);
|
KeyCombo key = scintKeyMap.getKeyComboByIndex(0);
|
||||||
keyRoot->ToElement()->SetAttribute(TEXT("Ctrl"), key._isCtrl?TEXT("yes"):TEXT("no"));
|
keyRoot->ToElement()->SetAttribute("Ctrl", key._isCtrl?"yes":"no");
|
||||||
keyRoot->ToElement()->SetAttribute(TEXT("Alt"), key._isAlt?TEXT("yes"):TEXT("no"));
|
keyRoot->ToElement()->SetAttribute("Alt", key._isAlt?"yes":"no");
|
||||||
keyRoot->ToElement()->SetAttribute(TEXT("Shift"), key._isShift?TEXT("yes"):TEXT("no"));
|
keyRoot->ToElement()->SetAttribute("Shift", key._isShift?"yes":"no");
|
||||||
keyRoot->ToElement()->SetAttribute(TEXT("Key"), key._key);
|
keyRoot->ToElement()->SetAttribute("Key", key._key);
|
||||||
|
|
||||||
//Add additional shortcuts
|
//Add additional shortcuts
|
||||||
size_t size = scintKeyMap.getSize();
|
size_t size = scintKeyMap.getSize();
|
||||||
@ -3514,12 +3412,12 @@ void NppParameters::insertScintKey(TiXmlNode *scintKeyRoot, const ScintillaKeyMa
|
|||||||
{
|
{
|
||||||
for (size_t i = 1; i < size; ++i)
|
for (size_t i = 1; i < size; ++i)
|
||||||
{
|
{
|
||||||
TiXmlNode *keyNext = keyRoot->InsertEndChild(TiXmlElement(TEXT("NextKey")));
|
TiXmlNodeA *keyNext = keyRoot->InsertEndChild(TiXmlElementA("NextKey"));
|
||||||
key = scintKeyMap.getKeyComboByIndex(i);
|
key = scintKeyMap.getKeyComboByIndex(i);
|
||||||
keyNext->ToElement()->SetAttribute(TEXT("Ctrl"), key._isCtrl?TEXT("yes"):TEXT("no"));
|
keyNext->ToElement()->SetAttribute("Ctrl", key._isCtrl?"yes":"no");
|
||||||
keyNext->ToElement()->SetAttribute(TEXT("Alt"), key._isAlt?TEXT("yes"):TEXT("no"));
|
keyNext->ToElement()->SetAttribute("Alt", key._isAlt?"yes":"no");
|
||||||
keyNext->ToElement()->SetAttribute(TEXT("Shift"), key._isShift?TEXT("yes"):TEXT("no"));
|
keyNext->ToElement()->SetAttribute("Shift", key._isShift?"yes":"no");
|
||||||
keyNext->ToElement()->SetAttribute(TEXT("Key"), key._key);
|
keyNext->ToElement()->SetAttribute("Key", key._key);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -3633,25 +3531,25 @@ void NppParameters::writeShortcuts()
|
|||||||
{
|
{
|
||||||
if (!_isAnyShortcutModified) return;
|
if (!_isAnyShortcutModified) return;
|
||||||
|
|
||||||
if (!_pXmlShortcutDoc)
|
if (!_pXmlShortcutDocA)
|
||||||
{
|
{
|
||||||
//do the treatment
|
//do the treatment
|
||||||
_pXmlShortcutDoc = new TiXmlDocument(_shortcutsPath);
|
_pXmlShortcutDocA = new TiXmlDocumentA();
|
||||||
TiXmlDeclaration* decl = new TiXmlDeclaration(TEXT("1.0"), TEXT("UTF-8"), TEXT(""));
|
TiXmlDeclarationA* decl = new TiXmlDeclarationA("1.0", "UTF-8", "");
|
||||||
_pXmlShortcutDoc->LinkEndChild(decl);
|
_pXmlShortcutDocA->LinkEndChild(decl);
|
||||||
}
|
}
|
||||||
|
|
||||||
TiXmlNode *root = _pXmlShortcutDoc->FirstChild(TEXT("NotepadPlus"));
|
TiXmlNodeA *root = _pXmlShortcutDocA->FirstChild("NotepadPlus");
|
||||||
if (!root)
|
if (!root)
|
||||||
{
|
{
|
||||||
root = _pXmlShortcutDoc->InsertEndChild(TiXmlElement(TEXT("NotepadPlus")));
|
root = _pXmlShortcutDocA->InsertEndChild(TiXmlElementA("NotepadPlus"));
|
||||||
}
|
}
|
||||||
|
|
||||||
TiXmlNode *cmdRoot = root->FirstChild(TEXT("InternalCommands"));
|
TiXmlNodeA *cmdRoot = root->FirstChild("InternalCommands");
|
||||||
if (cmdRoot)
|
if (cmdRoot)
|
||||||
root->RemoveChild(cmdRoot);
|
root->RemoveChild(cmdRoot);
|
||||||
|
|
||||||
cmdRoot = root->InsertEndChild(TiXmlElement(TEXT("InternalCommands")));
|
cmdRoot = root->InsertEndChild(TiXmlElementA("InternalCommands"));
|
||||||
for (size_t i = 0, len = _customizedShortcuts.size(); i < len ; ++i)
|
for (size_t i = 0, len = _customizedShortcuts.size(); i < len ; ++i)
|
||||||
{
|
{
|
||||||
size_t index = _customizedShortcuts[i];
|
size_t index = _customizedShortcuts[i];
|
||||||
@ -3659,48 +3557,48 @@ void NppParameters::writeShortcuts()
|
|||||||
insertCmd(cmdRoot, csc);
|
insertCmd(cmdRoot, csc);
|
||||||
}
|
}
|
||||||
|
|
||||||
TiXmlNode *macrosRoot = root->FirstChild(TEXT("Macros"));
|
TiXmlNodeA *macrosRoot = root->FirstChild("Macros");
|
||||||
if (macrosRoot)
|
if (macrosRoot)
|
||||||
root->RemoveChild(macrosRoot);
|
root->RemoveChild(macrosRoot);
|
||||||
|
|
||||||
macrosRoot = root->InsertEndChild(TiXmlElement(TEXT("Macros")));
|
macrosRoot = root->InsertEndChild(TiXmlElementA("Macros"));
|
||||||
|
|
||||||
for (size_t i = 0, len = _macros.size(); i < len ; ++i)
|
for (size_t i = 0, len = _macros.size(); i < len ; ++i)
|
||||||
{
|
{
|
||||||
insertMacro(macrosRoot, _macros[i], _macroMenuItems.getItemFromIndex(i)._parentFolderName);
|
insertMacro(macrosRoot, _macros[i], wstring2string(_macroMenuItems.getItemFromIndex(i)._parentFolderName, CP_UTF8));
|
||||||
}
|
}
|
||||||
|
|
||||||
TiXmlNode *userCmdRoot = root->FirstChild(TEXT("UserDefinedCommands"));
|
TiXmlNodeA *userCmdRoot = root->FirstChild("UserDefinedCommands");
|
||||||
if (userCmdRoot)
|
if (userCmdRoot)
|
||||||
root->RemoveChild(userCmdRoot);
|
root->RemoveChild(userCmdRoot);
|
||||||
|
|
||||||
userCmdRoot = root->InsertEndChild(TiXmlElement(TEXT("UserDefinedCommands")));
|
userCmdRoot = root->InsertEndChild(TiXmlElementA("UserDefinedCommands"));
|
||||||
|
|
||||||
for (size_t i = 0, len = _userCommands.size(); i < len ; ++i)
|
for (size_t i = 0, len = _userCommands.size(); i < len ; ++i)
|
||||||
{
|
{
|
||||||
insertUserCmd(userCmdRoot, _userCommands[i], _runMenuItems.getItemFromIndex(i)._parentFolderName);
|
insertUserCmd(userCmdRoot, _userCommands[i], wstring2string(_runMenuItems.getItemFromIndex(i)._parentFolderName, CP_UTF8));
|
||||||
}
|
}
|
||||||
|
|
||||||
TiXmlNode *pluginCmdRoot = root->FirstChild(TEXT("PluginCommands"));
|
TiXmlNodeA *pluginCmdRoot = root->FirstChild("PluginCommands");
|
||||||
if (pluginCmdRoot)
|
if (pluginCmdRoot)
|
||||||
root->RemoveChild(pluginCmdRoot);
|
root->RemoveChild(pluginCmdRoot);
|
||||||
|
|
||||||
pluginCmdRoot = root->InsertEndChild(TiXmlElement(TEXT("PluginCommands")));
|
pluginCmdRoot = root->InsertEndChild(TiXmlElementA("PluginCommands"));
|
||||||
for (size_t i = 0, len = _pluginCustomizedCmds.size(); i < len ; ++i)
|
for (size_t i = 0, len = _pluginCustomizedCmds.size(); i < len ; ++i)
|
||||||
{
|
{
|
||||||
insertPluginCmd(pluginCmdRoot, _pluginCommands[_pluginCustomizedCmds[i]]);
|
insertPluginCmd(pluginCmdRoot, _pluginCommands[_pluginCustomizedCmds[i]]);
|
||||||
}
|
}
|
||||||
|
|
||||||
TiXmlNode *scitillaKeyRoot = root->FirstChild(TEXT("ScintillaKeys"));
|
TiXmlNodeA *scitillaKeyRoot = root->FirstChild("ScintillaKeys");
|
||||||
if (scitillaKeyRoot)
|
if (scitillaKeyRoot)
|
||||||
root->RemoveChild(scitillaKeyRoot);
|
root->RemoveChild(scitillaKeyRoot);
|
||||||
|
|
||||||
scitillaKeyRoot = root->InsertEndChild(TiXmlElement(TEXT("ScintillaKeys")));
|
scitillaKeyRoot = root->InsertEndChild(TiXmlElementA("ScintillaKeys"));
|
||||||
for (size_t i = 0, len = _scintillaModifiedKeyIndices.size(); i < len ; ++i)
|
for (size_t i = 0, len = _scintillaModifiedKeyIndices.size(); i < len ; ++i)
|
||||||
{
|
{
|
||||||
insertScintKey(scitillaKeyRoot, _scintillaKeyCommands[_scintillaModifiedKeyIndices[i]]);
|
insertScintKey(scitillaKeyRoot, _scintillaKeyCommands[_scintillaModifiedKeyIndices[i]]);
|
||||||
}
|
}
|
||||||
_pXmlShortcutDoc->SaveFile();
|
_pXmlShortcutDocA->SaveUnicodeFilePath(_shortcutsPath.c_str());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -1814,8 +1814,8 @@ private:
|
|||||||
TiXmlDocument *_pXmlUserLangDoc = nullptr; // userDefineLang.xml
|
TiXmlDocument *_pXmlUserLangDoc = nullptr; // userDefineLang.xml
|
||||||
std::vector<UdlXmlFileState> _pXmlUserLangsDoc; // userDefineLang customized XMLs
|
std::vector<UdlXmlFileState> _pXmlUserLangsDoc; // userDefineLang customized XMLs
|
||||||
TiXmlDocument *_pXmlToolIconsDoc = nullptr; // toolbarIcons.xml
|
TiXmlDocument *_pXmlToolIconsDoc = nullptr; // toolbarIcons.xml
|
||||||
TiXmlDocument *_pXmlShortcutDoc = nullptr; // shortcuts.xml
|
|
||||||
TiXmlDocument *_pXmlBlacklistDoc = nullptr; // not implemented
|
TiXmlDocumentA *_pXmlShortcutDocA = nullptr; // shortcuts.xml
|
||||||
|
|
||||||
TiXmlDocumentA *_pXmlNativeLangDocA = nullptr; // nativeLang.xml
|
TiXmlDocumentA *_pXmlNativeLangDocA = nullptr; // nativeLang.xml
|
||||||
TiXmlDocumentA *_pXmlContextMenuDocA = nullptr; // contextMenu.xml
|
TiXmlDocumentA *_pXmlContextMenuDocA = nullptr; // contextMenu.xml
|
||||||
@ -1976,7 +1976,6 @@ private:
|
|||||||
bool getPluginCmdsFromXmlTree();
|
bool getPluginCmdsFromXmlTree();
|
||||||
bool getScintKeysFromXmlTree();
|
bool getScintKeysFromXmlTree();
|
||||||
bool getSessionFromXmlTree(TiXmlDocument *pSessionDoc, Session& session);
|
bool getSessionFromXmlTree(TiXmlDocument *pSessionDoc, Session& session);
|
||||||
bool getBlackListFromXmlTree();
|
|
||||||
|
|
||||||
void feedGUIParameters(TiXmlNode *node);
|
void feedGUIParameters(TiXmlNode *node);
|
||||||
void feedKeyWordsParameters(TiXmlNode *node);
|
void feedKeyWordsParameters(TiXmlNode *node);
|
||||||
@ -1993,23 +1992,22 @@ private:
|
|||||||
void feedUserStyles(TiXmlNode *node);
|
void feedUserStyles(TiXmlNode *node);
|
||||||
void feedUserKeywordList(TiXmlNode *node);
|
void feedUserKeywordList(TiXmlNode *node);
|
||||||
void feedUserSettings(TiXmlNode *node);
|
void feedUserSettings(TiXmlNode *node);
|
||||||
void feedShortcut(TiXmlNode *node);
|
void feedShortcut(TiXmlNodeA *node);
|
||||||
void feedMacros(TiXmlNode *node);
|
void feedMacros(TiXmlNodeA *node);
|
||||||
void feedUserCmds(TiXmlNode *node);
|
void feedUserCmds(TiXmlNodeA *node);
|
||||||
void feedPluginCustomizedCmds(TiXmlNode *node);
|
void feedPluginCustomizedCmds(TiXmlNodeA *node);
|
||||||
void feedScintKeys(TiXmlNode *node);
|
void feedScintKeys(TiXmlNodeA *node);
|
||||||
bool feedBlacklist(TiXmlNode *node);
|
|
||||||
|
|
||||||
void getActions(TiXmlNode *node, Macro & macro);
|
void getActions(TiXmlNodeA *node, Macro & macro);
|
||||||
bool getShortcuts(TiXmlNode *node, Shortcut & sc, generic_string* folderName = nullptr);
|
bool getShortcuts(TiXmlNodeA *node, Shortcut & sc, std::string* folderName = nullptr);
|
||||||
|
|
||||||
void writeStyle2Element(const Style & style2Write, Style & style2Sync, TiXmlElement *element);
|
void writeStyle2Element(const Style & style2Write, Style & style2Sync, TiXmlElement *element);
|
||||||
void insertUserLang2Tree(TiXmlNode *node, UserLangContainer *userLang);
|
void insertUserLang2Tree(TiXmlNode *node, UserLangContainer *userLang);
|
||||||
void insertCmd(TiXmlNode *cmdRoot, const CommandShortcut & cmd);
|
void insertCmd(TiXmlNodeA *cmdRoot, const CommandShortcut & cmd);
|
||||||
void insertMacro(TiXmlNode *macrosRoot, const MacroShortcut & macro, const generic_string& folderName);
|
void insertMacro(TiXmlNodeA *macrosRoot, const MacroShortcut & macro, const std::string& folderName);
|
||||||
void insertUserCmd(TiXmlNode *userCmdRoot, const UserCommand & userCmd, const generic_string& folderName);
|
void insertUserCmd(TiXmlNodeA *userCmdRoot, const UserCommand & userCmd, const std::string& folderName);
|
||||||
void insertScintKey(TiXmlNode *scintKeyRoot, const ScintillaKeyMap & scintKeyMap);
|
void insertScintKey(TiXmlNodeA *scintKeyRoot, const ScintillaKeyMap & scintKeyMap);
|
||||||
void insertPluginCmd(TiXmlNode *pluginCmdRoot, const PluginCmdShortcut & pluginCmd);
|
void insertPluginCmd(TiXmlNodeA *pluginCmdRoot, const PluginCmdShortcut & pluginCmd);
|
||||||
TiXmlElement * insertGUIConfigBoolNode(TiXmlNode *r2w, const TCHAR *name, bool bVal);
|
TiXmlElement * insertGUIConfigBoolNode(TiXmlNode *r2w, const TCHAR *name, bool bVal);
|
||||||
void insertDockingParamNode(TiXmlNode *GUIRoot);
|
void insertDockingParamNode(TiXmlNode *GUIRoot);
|
||||||
void writeExcludedLangList(TiXmlElement *element);
|
void writeExcludedLangList(TiXmlElement *element);
|
||||||
|
@ -87,6 +87,8 @@ void TiXmlBaseA::PutString( const TIXMLA_STRING& str, TIXMLA_STRING* outString )
|
|||||||
outString->append( entity[4].str, entity[4].strLength );
|
outString->append( entity[4].str, entity[4].strLength );
|
||||||
++i;
|
++i;
|
||||||
}
|
}
|
||||||
|
// Remove the following code for that attribute value can be human readable if it contains Unicode characters
|
||||||
|
/*
|
||||||
else if ( c < 32 || c > 126 )
|
else if ( c < 32 || c > 126 )
|
||||||
{
|
{
|
||||||
// Easy pass at non-alpha/numeric/symbol
|
// Easy pass at non-alpha/numeric/symbol
|
||||||
@ -96,6 +98,7 @@ void TiXmlBaseA::PutString( const TIXMLA_STRING& str, TIXMLA_STRING* outString )
|
|||||||
outString->append( buf, strlen( buf ) );
|
outString->append( buf, strlen( buf ) );
|
||||||
++i;
|
++i;
|
||||||
}
|
}
|
||||||
|
*/
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
char realc = static_cast<char>(c);
|
char realc = static_cast<char>(c);
|
||||||
|
@ -197,8 +197,8 @@ bool ShortcutMapper::isFilterValid(Shortcut sc)
|
|||||||
if (_shortcutFilter.empty())
|
if (_shortcutFilter.empty())
|
||||||
return true;
|
return true;
|
||||||
|
|
||||||
generic_string shortcut_name = stringToLower(generic_string(sc.getName()));
|
wstring shortcut_name = stringToLower(string2wstring(sc.getName(), CP_UTF8));
|
||||||
generic_string shortcut_value = stringToLower(sc.toString());
|
wstring shortcut_value = stringToLower(string2wstring(sc.toString(), CP_UTF8));
|
||||||
|
|
||||||
// test the filter on the shortcut name and value
|
// test the filter on the shortcut name and value
|
||||||
return (shortcut_name.find(_shortcutFilter) != std::string::npos) ||
|
return (shortcut_name.find(_shortcutFilter) != std::string::npos) ||
|
||||||
@ -210,7 +210,7 @@ bool ShortcutMapper::isFilterValid(PluginCmdShortcut sc)
|
|||||||
// Do like a classic search on shortcut name, then search on the plugin name.
|
// Do like a classic search on shortcut name, then search on the plugin name.
|
||||||
Shortcut shortcut = sc;
|
Shortcut shortcut = sc;
|
||||||
bool match = false;
|
bool match = false;
|
||||||
generic_string module_name = stringToLower(generic_string(sc.getModuleName()));
|
wstring module_name = stringToLower(string2wstring(sc.getModuleName(), CP_UTF8));
|
||||||
if (isFilterValid(shortcut)){
|
if (isFilterValid(shortcut)){
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
@ -296,9 +296,9 @@ void ShortcutMapper::fillOutBabyGrid()
|
|||||||
if (findKeyConflicts(nullptr, cshortcuts[i].getKeyCombo(), i))
|
if (findKeyConflicts(nullptr, cshortcuts[i].getKeyCombo(), i))
|
||||||
isMarker = _babygrid.setMarker(true);
|
isMarker = _babygrid.setMarker(true);
|
||||||
|
|
||||||
_babygrid.setText(cs_index, 1, cshortcuts[i].getName());
|
_babygrid.setText(cs_index, 1, string2wstring(cshortcuts[i].getName(), CP_UTF8).c_str());
|
||||||
if (cshortcuts[i].isEnabled()) //avoid empty strings for better performance
|
if (cshortcuts[i].isEnabled()) //avoid empty strings for better performance
|
||||||
_babygrid.setText(cs_index, 2, cshortcuts[i].toString().c_str());
|
_babygrid.setText(cs_index, 2, string2wstring(cshortcuts[i].toString(), CP_UTF8).c_str());
|
||||||
|
|
||||||
const TCHAR* category = cshortcuts[i].getCategory();
|
const TCHAR* category = cshortcuts[i].getCategory();
|
||||||
generic_string categoryStr = nativeLangSpeaker->getShortcutMapperLangStr((std::string(wstring2string(category, CP_UTF8)) + "Category").c_str(), category);
|
generic_string categoryStr = nativeLangSpeaker->getShortcutMapperLangStr((std::string(wstring2string(category, CP_UTF8)) + "Category").c_str(), category);
|
||||||
@ -328,9 +328,9 @@ void ShortcutMapper::fillOutBabyGrid()
|
|||||||
if (findKeyConflicts(nullptr, cshortcuts[i].getKeyCombo(), i))
|
if (findKeyConflicts(nullptr, cshortcuts[i].getKeyCombo(), i))
|
||||||
isMarker = _babygrid.setMarker(true);
|
isMarker = _babygrid.setMarker(true);
|
||||||
|
|
||||||
_babygrid.setText(cs_index, 1, cshortcuts[i].getName());
|
_babygrid.setText(cs_index, 1, string2wstring(cshortcuts[i].getName(), CP_UTF8).c_str());
|
||||||
if (cshortcuts[i].isEnabled()) //avoid empty strings for better performance
|
if (cshortcuts[i].isEnabled()) //avoid empty strings for better performance
|
||||||
_babygrid.setText(cs_index, 2, cshortcuts[i].toString().c_str());
|
_babygrid.setText(cs_index, 2, string2wstring(cshortcuts[i].toString(), CP_UTF8).c_str());
|
||||||
|
|
||||||
if (isMarker)
|
if (isMarker)
|
||||||
isMarker = _babygrid.setMarker(false);
|
isMarker = _babygrid.setMarker(false);
|
||||||
@ -357,9 +357,9 @@ void ShortcutMapper::fillOutBabyGrid()
|
|||||||
if (findKeyConflicts(nullptr, cshortcuts[i].getKeyCombo(), i))
|
if (findKeyConflicts(nullptr, cshortcuts[i].getKeyCombo(), i))
|
||||||
isMarker = _babygrid.setMarker(true);
|
isMarker = _babygrid.setMarker(true);
|
||||||
|
|
||||||
_babygrid.setText(cs_index, 1, cshortcuts[i].getName());
|
_babygrid.setText(cs_index, 1, string2wstring(cshortcuts[i].getName(), CP_UTF8).c_str());
|
||||||
if (cshortcuts[i].isEnabled()) //avoid empty strings for better performance
|
if (cshortcuts[i].isEnabled()) //avoid empty strings for better performance
|
||||||
_babygrid.setText(cs_index, 2, cshortcuts[i].toString().c_str());
|
_babygrid.setText(cs_index, 2, string2wstring(cshortcuts[i].toString(), CP_UTF8).c_str());
|
||||||
|
|
||||||
if (isMarker)
|
if (isMarker)
|
||||||
isMarker = _babygrid.setMarker(false);
|
isMarker = _babygrid.setMarker(false);
|
||||||
@ -387,10 +387,10 @@ void ShortcutMapper::fillOutBabyGrid()
|
|||||||
if (findKeyConflicts(nullptr, cshortcuts[i].getKeyCombo(), i))
|
if (findKeyConflicts(nullptr, cshortcuts[i].getKeyCombo(), i))
|
||||||
isMarker = _babygrid.setMarker(true);
|
isMarker = _babygrid.setMarker(true);
|
||||||
|
|
||||||
_babygrid.setText(cs_index, 1, cshortcuts[i].getName());
|
_babygrid.setText(cs_index, 1, string2wstring(cshortcuts[i].getName(), CP_UTF8).c_str());
|
||||||
if (cshortcuts[i].isEnabled()) //avoid empty strings for better performance
|
if (cshortcuts[i].isEnabled()) //avoid empty strings for better performance
|
||||||
_babygrid.setText(cs_index, 2, cshortcuts[i].toString().c_str());
|
_babygrid.setText(cs_index, 2, string2wstring(cshortcuts[i].toString(), CP_UTF8).c_str());
|
||||||
_babygrid.setText(cs_index, 3, cshortcuts[i].getModuleName());
|
_babygrid.setText(cs_index, 3, string2wstring(cshortcuts[i].getModuleName(), CP_UTF8).c_str());
|
||||||
|
|
||||||
if (isMarker)
|
if (isMarker)
|
||||||
isMarker = _babygrid.setMarker(false);
|
isMarker = _babygrid.setMarker(false);
|
||||||
@ -427,9 +427,9 @@ void ShortcutMapper::fillOutBabyGrid()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
_babygrid.setText(cs_index, 1, cshortcuts[i].getName());
|
_babygrid.setText(cs_index, 1, string2wstring(cshortcuts[i].getName(), CP_UTF8).c_str());
|
||||||
if (cshortcuts[i].isEnabled()) //avoid empty strings for better performance
|
if (cshortcuts[i].isEnabled()) //avoid empty strings for better performance
|
||||||
_babygrid.setText(cs_index, 2, cshortcuts[i].toString().c_str());
|
_babygrid.setText(cs_index, 2, string2wstring(cshortcuts[i].toString(), CP_UTF8).c_str());
|
||||||
|
|
||||||
if (isMarker)
|
if (isMarker)
|
||||||
isMarker = _babygrid.setMarker(false);
|
isMarker = _babygrid.setMarker(false);
|
||||||
@ -1285,9 +1285,9 @@ bool ShortcutMapper::findKeyConflicts(__inout_opt generic_string * const keyConf
|
|||||||
*keyConflictLocation += TEXT(" | ");
|
*keyConflictLocation += TEXT(" | ");
|
||||||
*keyConflictLocation += std::to_wstring(itemIndex + 1);
|
*keyConflictLocation += std::to_wstring(itemIndex + 1);
|
||||||
*keyConflictLocation += TEXT(" ");
|
*keyConflictLocation += TEXT(" ");
|
||||||
*keyConflictLocation += vShortcuts[itemIndex].getName();
|
*keyConflictLocation += string2wstring(vShortcuts[itemIndex].getName(), CP_UTF8);
|
||||||
*keyConflictLocation += TEXT(" ( ");
|
*keyConflictLocation += TEXT(" ( ");
|
||||||
*keyConflictLocation += vShortcuts[itemIndex].toString();
|
*keyConflictLocation += string2wstring(vShortcuts[itemIndex].toString(), CP_UTF8);
|
||||||
*keyConflictLocation += TEXT(" )");
|
*keyConflictLocation += TEXT(" )");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1319,9 +1319,9 @@ bool ShortcutMapper::findKeyConflicts(__inout_opt generic_string * const keyConf
|
|||||||
*keyConflictLocation += TEXT(" | ");
|
*keyConflictLocation += TEXT(" | ");
|
||||||
*keyConflictLocation += std::to_wstring(itemIndex + 1);
|
*keyConflictLocation += std::to_wstring(itemIndex + 1);
|
||||||
*keyConflictLocation += TEXT(" ");
|
*keyConflictLocation += TEXT(" ");
|
||||||
*keyConflictLocation += vShortcuts[itemIndex].getName();
|
*keyConflictLocation += string2wstring(vShortcuts[itemIndex].getName(), CP_UTF8);
|
||||||
*keyConflictLocation += TEXT(" ( ");
|
*keyConflictLocation += TEXT(" ( ");
|
||||||
*keyConflictLocation += vShortcuts[itemIndex].toString();
|
*keyConflictLocation += string2wstring(vShortcuts[itemIndex].toString(), CP_UTF8);
|
||||||
*keyConflictLocation += TEXT(" )");
|
*keyConflictLocation += TEXT(" )");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1353,9 +1353,9 @@ bool ShortcutMapper::findKeyConflicts(__inout_opt generic_string * const keyConf
|
|||||||
*keyConflictLocation += TEXT(" | ");
|
*keyConflictLocation += TEXT(" | ");
|
||||||
*keyConflictLocation += std::to_wstring(itemIndex + 1);
|
*keyConflictLocation += std::to_wstring(itemIndex + 1);
|
||||||
*keyConflictLocation += TEXT(" ");
|
*keyConflictLocation += TEXT(" ");
|
||||||
*keyConflictLocation += vShortcuts[itemIndex].getName();
|
*keyConflictLocation += string2wstring(vShortcuts[itemIndex].getName(), CP_UTF8);
|
||||||
*keyConflictLocation += TEXT(" ( ");
|
*keyConflictLocation += TEXT(" ( ");
|
||||||
*keyConflictLocation += vShortcuts[itemIndex].toString();
|
*keyConflictLocation += string2wstring(vShortcuts[itemIndex].toString(), CP_UTF8);
|
||||||
*keyConflictLocation += TEXT(" )");
|
*keyConflictLocation += TEXT(" )");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1387,9 +1387,9 @@ bool ShortcutMapper::findKeyConflicts(__inout_opt generic_string * const keyConf
|
|||||||
*keyConflictLocation += TEXT(" | ");
|
*keyConflictLocation += TEXT(" | ");
|
||||||
*keyConflictLocation += std::to_wstring(itemIndex + 1);
|
*keyConflictLocation += std::to_wstring(itemIndex + 1);
|
||||||
*keyConflictLocation += TEXT(" ");
|
*keyConflictLocation += TEXT(" ");
|
||||||
*keyConflictLocation += vShortcuts[itemIndex].getName();
|
*keyConflictLocation += string2wstring(vShortcuts[itemIndex].getName(), CP_UTF8);;
|
||||||
*keyConflictLocation += TEXT(" ( ");
|
*keyConflictLocation += TEXT(" ( ");
|
||||||
*keyConflictLocation += vShortcuts[itemIndex].toString();
|
*keyConflictLocation += string2wstring(vShortcuts[itemIndex].toString(), CP_UTF8);
|
||||||
*keyConflictLocation += TEXT(" )");
|
*keyConflictLocation += TEXT(" )");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1427,9 +1427,9 @@ bool ShortcutMapper::findKeyConflicts(__inout_opt generic_string * const keyConf
|
|||||||
*keyConflictLocation += TEXT("* ");
|
*keyConflictLocation += TEXT("* ");
|
||||||
else
|
else
|
||||||
*keyConflictLocation += TEXT(" ");
|
*keyConflictLocation += TEXT(" ");
|
||||||
*keyConflictLocation += vShortcuts[itemIndex].getName();
|
*keyConflictLocation += string2wstring(vShortcuts[itemIndex].getName(), CP_UTF8);
|
||||||
*keyConflictLocation += TEXT(" ( ");
|
*keyConflictLocation += TEXT(" ( ");
|
||||||
*keyConflictLocation += vShortcuts[itemIndex].toString(sciIndex);
|
*keyConflictLocation += string2wstring(vShortcuts[itemIndex].toString(sciIndex), CP_UTF8);
|
||||||
*keyConflictLocation += TEXT(" )");
|
*keyConflictLocation += TEXT(" )");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -338,7 +338,7 @@ intptr_t CALLBACK RunDlg::run_dlgProc(UINT message, WPARAM wParam, LPARAM lParam
|
|||||||
|
|
||||||
TCHAR cmd[MAX_PATH];
|
TCHAR cmd[MAX_PATH];
|
||||||
::GetDlgItemText(_hSelf, IDC_COMBO_RUN_PATH, cmd, MAX_PATH);
|
::GetDlgItemText(_hSelf, IDC_COMBO_RUN_PATH, cmd, MAX_PATH);
|
||||||
UserCommand uc(Shortcut(), cmd, cmdID);
|
UserCommand uc(Shortcut(), wstring2string(cmd, CP_UTF8).c_str(), cmdID);
|
||||||
uc.init(_hInst, _hSelf);
|
uc.init(_hInst, _hSelf);
|
||||||
|
|
||||||
if (uc.doDialog() != -1)
|
if (uc.doDialog() != -1)
|
||||||
@ -351,8 +351,8 @@ intptr_t CALLBACK RunDlg::run_dlgProc(UINT message, WPARAM wParam, LPARAM lParam
|
|||||||
::InsertMenu(hRunMenu, posBase - 1, MF_BYPOSITION, static_cast<unsigned int>(-1), 0);
|
::InsertMenu(hRunMenu, posBase - 1, MF_BYPOSITION, static_cast<unsigned int>(-1), 0);
|
||||||
|
|
||||||
theUserCmds.push_back(uc);
|
theUserCmds.push_back(uc);
|
||||||
runMenu.push_back(MenuItemUnit(cmdID, uc.getName()));
|
runMenu.push_back(MenuItemUnit(cmdID, string2wstring(uc.getName(), CP_UTF8)));
|
||||||
::InsertMenu(hRunMenu, posBase + nbTopLevelItem, MF_BYPOSITION, cmdID, uc.toMenuItemString().c_str());
|
::InsertMenu(hRunMenu, posBase + nbTopLevelItem, MF_BYPOSITION, cmdID, string2wstring(uc.toMenuItemString(), CP_UTF8).c_str());
|
||||||
|
|
||||||
NppParameters& nppParams = NppParameters::getInstance();
|
NppParameters& nppParams = NppParameters::getInstance();
|
||||||
if (nbTopLevelItem == 0)
|
if (nbTopLevelItem == 0)
|
||||||
|
@ -28,137 +28,137 @@
|
|||||||
using namespace std;
|
using namespace std;
|
||||||
|
|
||||||
struct KeyIDNAME {
|
struct KeyIDNAME {
|
||||||
const TCHAR * name = nullptr;
|
const char * name = nullptr;
|
||||||
UCHAR id = 0;
|
UCHAR id = 0;
|
||||||
};
|
};
|
||||||
|
|
||||||
KeyIDNAME namedKeyArray[] = {
|
KeyIDNAME namedKeyArray[] = {
|
||||||
{TEXT("None"), VK_NULL},
|
{"None", VK_NULL},
|
||||||
|
|
||||||
{TEXT("Backspace"), VK_BACK},
|
{"Backspace", VK_BACK},
|
||||||
{TEXT("Tab"), VK_TAB},
|
{"Tab", VK_TAB},
|
||||||
{TEXT("Enter"), VK_RETURN},
|
{"Enter", VK_RETURN},
|
||||||
{TEXT("Esc"), VK_ESCAPE},
|
{"Esc", VK_ESCAPE},
|
||||||
{TEXT("Spacebar"), VK_SPACE},
|
{"Spacebar", VK_SPACE},
|
||||||
|
|
||||||
{TEXT("Page up"), VK_PRIOR},
|
{"Page up", VK_PRIOR},
|
||||||
{TEXT("Page down"), VK_NEXT},
|
{"Page down", VK_NEXT},
|
||||||
{TEXT("End"), VK_END},
|
{"End", VK_END},
|
||||||
{TEXT("Home"), VK_HOME},
|
{"Home", VK_HOME},
|
||||||
{TEXT("Left"), VK_LEFT},
|
{"Left", VK_LEFT},
|
||||||
{TEXT("Up"), VK_UP},
|
{"Up", VK_UP},
|
||||||
{TEXT("Right"), VK_RIGHT},
|
{"Right", VK_RIGHT},
|
||||||
{TEXT("Down"), VK_DOWN},
|
{"Down", VK_DOWN},
|
||||||
|
|
||||||
{TEXT("INS"), VK_INSERT},
|
{"INS", VK_INSERT},
|
||||||
{TEXT("DEL"), VK_DELETE},
|
{"DEL", VK_DELETE},
|
||||||
|
|
||||||
{TEXT("0"), VK_0},
|
{"0", VK_0},
|
||||||
{TEXT("1"), VK_1},
|
{"1", VK_1},
|
||||||
{TEXT("2"), VK_2},
|
{"2", VK_2},
|
||||||
{TEXT("3"), VK_3},
|
{"3", VK_3},
|
||||||
{TEXT("4"), VK_4},
|
{"4", VK_4},
|
||||||
{TEXT("5"), VK_5},
|
{"5", VK_5},
|
||||||
{TEXT("6"), VK_6},
|
{"6", VK_6},
|
||||||
{TEXT("7"), VK_7},
|
{"7", VK_7},
|
||||||
{TEXT("8"), VK_8},
|
{"8", VK_8},
|
||||||
{TEXT("9"), VK_9},
|
{"9", VK_9},
|
||||||
{TEXT("A"), VK_A},
|
{"A", VK_A},
|
||||||
{TEXT("B"), VK_B},
|
{"B", VK_B},
|
||||||
{TEXT("C"), VK_C},
|
{"C", VK_C},
|
||||||
{TEXT("D"), VK_D},
|
{"D", VK_D},
|
||||||
{TEXT("E"), VK_E},
|
{"E", VK_E},
|
||||||
{TEXT("F"), VK_F},
|
{"F", VK_F},
|
||||||
{TEXT("G"), VK_G},
|
{"G", VK_G},
|
||||||
{TEXT("H"), VK_H},
|
{"H", VK_H},
|
||||||
{TEXT("I"), VK_I},
|
{"I", VK_I},
|
||||||
{TEXT("J"), VK_J},
|
{"J", VK_J},
|
||||||
{TEXT("K"), VK_K},
|
{"K", VK_K},
|
||||||
{TEXT("L"), VK_L},
|
{"L", VK_L},
|
||||||
{TEXT("M"), VK_M},
|
{"M", VK_M},
|
||||||
{TEXT("N"), VK_N},
|
{"N", VK_N},
|
||||||
{TEXT("O"), VK_O},
|
{"O", VK_O},
|
||||||
{TEXT("P"), VK_P},
|
{"P", VK_P},
|
||||||
{TEXT("Q"), VK_Q},
|
{"Q", VK_Q},
|
||||||
{TEXT("R"), VK_R},
|
{"R", VK_R},
|
||||||
{TEXT("S"), VK_S},
|
{"S", VK_S},
|
||||||
{TEXT("T"), VK_T},
|
{"T", VK_T},
|
||||||
{TEXT("U"), VK_U},
|
{"U", VK_U},
|
||||||
{TEXT("V"), VK_V},
|
{"V", VK_V},
|
||||||
{TEXT("W"), VK_W},
|
{"W", VK_W},
|
||||||
{TEXT("X"), VK_X},
|
{"X", VK_X},
|
||||||
{TEXT("Y"), VK_Y},
|
{"Y", VK_Y},
|
||||||
{TEXT("Z"), VK_Z},
|
{"Z", VK_Z},
|
||||||
|
|
||||||
{TEXT("Numpad 0"), VK_NUMPAD0},
|
{"Numpad 0", VK_NUMPAD0},
|
||||||
{TEXT("Numpad 1"), VK_NUMPAD1},
|
{"Numpad 1", VK_NUMPAD1},
|
||||||
{TEXT("Numpad 2"), VK_NUMPAD2},
|
{"Numpad 2", VK_NUMPAD2},
|
||||||
{TEXT("Numpad 3"), VK_NUMPAD3},
|
{"Numpad 3", VK_NUMPAD3},
|
||||||
{TEXT("Numpad 4"), VK_NUMPAD4},
|
{"Numpad 4", VK_NUMPAD4},
|
||||||
{TEXT("Numpad 5"), VK_NUMPAD5},
|
{"Numpad 5", VK_NUMPAD5},
|
||||||
{TEXT("Numpad 6"), VK_NUMPAD6},
|
{"Numpad 6", VK_NUMPAD6},
|
||||||
{TEXT("Numpad 7"), VK_NUMPAD7},
|
{"Numpad 7", VK_NUMPAD7},
|
||||||
{TEXT("Numpad 8"), VK_NUMPAD8},
|
{"Numpad 8", VK_NUMPAD8},
|
||||||
{TEXT("Numpad 9"), VK_NUMPAD9},
|
{"Numpad 9", VK_NUMPAD9},
|
||||||
{TEXT("Num *"), VK_MULTIPLY},
|
{"Num *", VK_MULTIPLY},
|
||||||
{TEXT("Num +"), VK_ADD},
|
{"Num +", VK_ADD},
|
||||||
//{TEXT("Num Enter"), VK_SEPARATOR}, //this one doesnt seem to work
|
// {"Num Enter"), VK_SEPARATOR}, //this one doesnt seem to work
|
||||||
{TEXT("Num -"), VK_SUBTRACT},
|
{"Num -", VK_SUBTRACT},
|
||||||
{TEXT("Num ."), VK_DECIMAL},
|
{"Num .", VK_DECIMAL},
|
||||||
{TEXT("Num /"), VK_DIVIDE},
|
{"Num /", VK_DIVIDE},
|
||||||
{TEXT("F1"), VK_F1},
|
{"F1", VK_F1},
|
||||||
{TEXT("F2"), VK_F2},
|
{"F2", VK_F2},
|
||||||
{TEXT("F3"), VK_F3},
|
{"F3", VK_F3},
|
||||||
{TEXT("F4"), VK_F4},
|
{"F4", VK_F4},
|
||||||
{TEXT("F5"), VK_F5},
|
{"F5", VK_F5},
|
||||||
{TEXT("F6"), VK_F6},
|
{"F6", VK_F6},
|
||||||
{TEXT("F7"), VK_F7},
|
{"F7", VK_F7},
|
||||||
{TEXT("F8"), VK_F8},
|
{"F8", VK_F8},
|
||||||
{TEXT("F9"), VK_F9},
|
{"F9", VK_F9},
|
||||||
{TEXT("F10"), VK_F10},
|
{"F10", VK_F10},
|
||||||
{TEXT("F11"), VK_F11},
|
{"F11", VK_F11},
|
||||||
{TEXT("F12"), VK_F12},
|
{"F12", VK_F12},
|
||||||
|
|
||||||
{TEXT("~"), VK_OEM_3},
|
{"~", VK_OEM_3},
|
||||||
{TEXT("-"), VK_OEM_MINUS},
|
{"-", VK_OEM_MINUS},
|
||||||
{TEXT("="), VK_OEM_PLUS},
|
{"=", VK_OEM_PLUS},
|
||||||
{TEXT("["), VK_OEM_4},
|
{"[", VK_OEM_4},
|
||||||
{TEXT("]"), VK_OEM_6},
|
{"]", VK_OEM_6},
|
||||||
{TEXT(";"), VK_OEM_1},
|
{";", VK_OEM_1},
|
||||||
{TEXT("'"), VK_OEM_7},
|
{"'", VK_OEM_7},
|
||||||
{TEXT("\\"), VK_OEM_5},
|
{"\\", VK_OEM_5},
|
||||||
{TEXT(","), VK_OEM_COMMA},
|
{",", VK_OEM_COMMA},
|
||||||
{TEXT("."), VK_OEM_PERIOD},
|
{".", VK_OEM_PERIOD},
|
||||||
{TEXT("/"), VK_OEM_2},
|
{"/", VK_OEM_2},
|
||||||
|
|
||||||
{TEXT("<>"), VK_OEM_102},
|
{"<>", VK_OEM_102},
|
||||||
};
|
};
|
||||||
|
|
||||||
#define nbKeys sizeof(namedKeyArray)/sizeof(KeyIDNAME)
|
#define nbKeys sizeof(namedKeyArray)/sizeof(KeyIDNAME)
|
||||||
|
|
||||||
generic_string Shortcut::toString() const
|
string Shortcut::toString() const
|
||||||
{
|
{
|
||||||
generic_string sc = TEXT("");
|
string sc;
|
||||||
if (!isEnabled())
|
if (!isEnabled())
|
||||||
return sc;
|
return sc;
|
||||||
|
|
||||||
if (_keyCombo._isCtrl)
|
if (_keyCombo._isCtrl)
|
||||||
sc += TEXT("Ctrl+");
|
sc += "Ctrl+";
|
||||||
if (_keyCombo._isAlt)
|
if (_keyCombo._isAlt)
|
||||||
sc += TEXT("Alt+");
|
sc += "Alt+";
|
||||||
if (_keyCombo._isShift)
|
if (_keyCombo._isShift)
|
||||||
sc += TEXT("Shift+");
|
sc += "Shift+";
|
||||||
|
|
||||||
generic_string keyString;
|
string keyString;
|
||||||
getKeyStrFromVal(_keyCombo._key, keyString);
|
getKeyStrFromVal(_keyCombo._key, keyString);
|
||||||
sc += keyString;
|
sc += keyString;
|
||||||
return sc;
|
return sc;
|
||||||
}
|
}
|
||||||
|
|
||||||
void Shortcut::setName(const TCHAR * menuName, const TCHAR * shortcutName)
|
void Shortcut::setName(const char* menuName, const char* shortcutName)
|
||||||
{
|
{
|
||||||
lstrcpyn(_menuName, menuName, nameLenMax);
|
lstrcpynA(_menuName, menuName, nameLenMax);
|
||||||
TCHAR const * name = shortcutName ? shortcutName : menuName;
|
char const * name = shortcutName ? shortcutName : menuName;
|
||||||
size_t i = 0, j = 0;
|
size_t i = 0, j = 0;
|
||||||
while (name[j] != 0 && i < (nameLenMax - 1))
|
while (name[j] != 0 && i < (nameLenMax - 1))
|
||||||
{
|
{
|
||||||
@ -181,34 +181,34 @@ void Shortcut::setName(const TCHAR * menuName, const TCHAR * shortcutName)
|
|||||||
_name[i] = 0;
|
_name[i] = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
generic_string ScintillaKeyMap::toString() const
|
string ScintillaKeyMap::toString() const
|
||||||
{
|
{
|
||||||
generic_string sc = TEXT("");
|
string sc;
|
||||||
size_t nbCombos = getSize();
|
size_t nbCombos = getSize();
|
||||||
for (size_t combo = 0; combo < nbCombos; ++combo)
|
for (size_t combo = 0; combo < nbCombos; ++combo)
|
||||||
{
|
{
|
||||||
sc += toString(combo);
|
sc += toString(combo);
|
||||||
if (combo < nbCombos - 1)
|
if (combo < nbCombos - 1)
|
||||||
sc += TEXT(" or ");
|
sc += " or ";
|
||||||
}
|
}
|
||||||
return sc;
|
return sc;
|
||||||
}
|
}
|
||||||
|
|
||||||
generic_string ScintillaKeyMap::toString(size_t index) const
|
string ScintillaKeyMap::toString(size_t index) const
|
||||||
{
|
{
|
||||||
generic_string sc = TEXT("");
|
string sc = "";
|
||||||
if (!isEnabled())
|
if (!isEnabled())
|
||||||
return sc;
|
return sc;
|
||||||
|
|
||||||
KeyCombo kc = _keyCombos[index];
|
KeyCombo kc = _keyCombos[index];
|
||||||
if (kc._isCtrl)
|
if (kc._isCtrl)
|
||||||
sc += TEXT("Ctrl+");
|
sc += "Ctrl+";
|
||||||
if (kc._isAlt)
|
if (kc._isAlt)
|
||||||
sc += TEXT("Alt+");
|
sc += "Alt+";
|
||||||
if (kc._isShift)
|
if (kc._isShift)
|
||||||
sc += TEXT("Shift+");
|
sc += "Shift+";
|
||||||
|
|
||||||
generic_string keyString;
|
string keyString;
|
||||||
getKeyStrFromVal(kc._key, keyString);
|
getKeyStrFromVal(kc._key, keyString);
|
||||||
sc += keyString;
|
sc += keyString;
|
||||||
return sc;
|
return sc;
|
||||||
@ -268,9 +268,9 @@ size_t ScintillaKeyMap::getSize() const
|
|||||||
return _size;
|
return _size;
|
||||||
}
|
}
|
||||||
|
|
||||||
void getKeyStrFromVal(UCHAR keyVal, generic_string & str)
|
void getKeyStrFromVal(UCHAR keyVal, string & str)
|
||||||
{
|
{
|
||||||
str = TEXT("");
|
str = "";
|
||||||
bool found = false;
|
bool found = false;
|
||||||
size_t i;
|
size_t i;
|
||||||
for (i = 0; i < nbKeys; ++i)
|
for (i = 0; i < nbKeys; ++i)
|
||||||
@ -284,22 +284,22 @@ void getKeyStrFromVal(UCHAR keyVal, generic_string & str)
|
|||||||
if (found)
|
if (found)
|
||||||
str = namedKeyArray[i].name;
|
str = namedKeyArray[i].name;
|
||||||
else
|
else
|
||||||
str = TEXT("Unlisted");
|
str = "Unlisted";
|
||||||
}
|
}
|
||||||
|
|
||||||
void getNameStrFromCmd(DWORD cmd, generic_string & str)
|
void getNameStrFromCmd(DWORD cmd, wstring & str)
|
||||||
{
|
{
|
||||||
if ((cmd >= ID_MACRO) && (cmd < ID_MACRO_LIMIT))
|
if ((cmd >= ID_MACRO) && (cmd < ID_MACRO_LIMIT))
|
||||||
{
|
{
|
||||||
vector<MacroShortcut> & theMacros = (NppParameters::getInstance()).getMacroList();
|
vector<MacroShortcut> & theMacros = (NppParameters::getInstance()).getMacroList();
|
||||||
int i = cmd - ID_MACRO;
|
int i = cmd - ID_MACRO;
|
||||||
str = theMacros[i].getName();
|
str = string2wstring(theMacros[i].getName(), CP_UTF8);
|
||||||
}
|
}
|
||||||
else if ((cmd >= ID_USER_CMD) && (cmd < ID_USER_CMD_LIMIT))
|
else if ((cmd >= ID_USER_CMD) && (cmd < ID_USER_CMD_LIMIT))
|
||||||
{
|
{
|
||||||
vector<UserCommand> & userCommands = (NppParameters::getInstance()).getUserCommandList();
|
vector<UserCommand> & userCommands = (NppParameters::getInstance()).getUserCommandList();
|
||||||
int i = cmd - ID_USER_CMD;
|
int i = cmd - ID_USER_CMD;
|
||||||
str = userCommands[i].getName();
|
str = string2wstring(userCommands[i].getName(), CP_UTF8);
|
||||||
}
|
}
|
||||||
else if ((cmd >= ID_PLUGINS_CMD) && (cmd < ID_PLUGINS_CMD_LIMIT))
|
else if ((cmd >= ID_PLUGINS_CMD) && (cmd < ID_PLUGINS_CMD_LIMIT))
|
||||||
{
|
{
|
||||||
@ -313,7 +313,7 @@ void getNameStrFromCmd(DWORD cmd, generic_string & str)
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
str = pluginCmds[i].getName();
|
str = string2wstring(pluginCmds[i].getName(), CP_UTF8);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@ -375,7 +375,7 @@ intptr_t CALLBACK Shortcut::run_dlgProc(UINT Message, WPARAM wParam, LPARAM lPar
|
|||||||
{
|
{
|
||||||
NppDarkMode::autoSubclassAndThemeChildControls(_hSelf);
|
NppDarkMode::autoSubclassAndThemeChildControls(_hSelf);
|
||||||
|
|
||||||
::SetDlgItemText(_hSelf, IDC_NAME_EDIT, _canModifyName ? getMenuName() : getName()); //display the menu name, with ampersands, for macros
|
::SetDlgItemText(_hSelf, IDC_NAME_EDIT, _canModifyName ? string2wstring(getMenuName(), CP_UTF8).c_str() : string2wstring(getName(), CP_UTF8).c_str()); //display the menu name, with ampersands, for macros
|
||||||
if (!_canModifyName)
|
if (!_canModifyName)
|
||||||
::SendDlgItemMessage(_hSelf, IDC_NAME_EDIT, EM_SETREADONLY, TRUE, 0);
|
::SendDlgItemMessage(_hSelf, IDC_NAME_EDIT, EM_SETREADONLY, TRUE, 0);
|
||||||
auto textlen = ::SendDlgItemMessage(_hSelf, IDC_NAME_EDIT, WM_GETTEXTLENGTH, 0, 0);
|
auto textlen = ::SendDlgItemMessage(_hSelf, IDC_NAME_EDIT, WM_GETTEXTLENGTH, 0, 0);
|
||||||
@ -387,7 +387,7 @@ intptr_t CALLBACK Shortcut::run_dlgProc(UINT Message, WPARAM wParam, LPARAM lPar
|
|||||||
int iFound = -1;
|
int iFound = -1;
|
||||||
for (size_t i = 0 ; i < nbKeys ; ++i)
|
for (size_t i = 0 ; i < nbKeys ; ++i)
|
||||||
{
|
{
|
||||||
::SendDlgItemMessage(_hSelf, IDC_KEY_COMBO, CB_ADDSTRING, 0, reinterpret_cast<LPARAM>(namedKeyArray[i].name));
|
::SendDlgItemMessage(_hSelf, IDC_KEY_COMBO, CB_ADDSTRING, 0, reinterpret_cast<LPARAM>(string2wstring(namedKeyArray[i].name, CP_UTF8).c_str()));
|
||||||
|
|
||||||
if (_keyCombo._key == namedKeyArray[i].id)
|
if (_keyCombo._key == namedKeyArray[i].id)
|
||||||
iFound = static_cast<int32_t>(i);
|
iFound = static_cast<int32_t>(i);
|
||||||
@ -485,9 +485,9 @@ intptr_t CALLBACK Shortcut::run_dlgProc(UINT Message, WPARAM wParam, LPARAM lPar
|
|||||||
|
|
||||||
if (_canModifyName)
|
if (_canModifyName)
|
||||||
{
|
{
|
||||||
TCHAR editName[nameLenMax];
|
TCHAR editName[nameLenMax]{};
|
||||||
::SendDlgItemMessage(_hSelf, IDC_NAME_EDIT, WM_GETTEXT, nameLenMax, reinterpret_cast<LPARAM>(editName));
|
::SendDlgItemMessage(_hSelf, IDC_NAME_EDIT, WM_GETTEXT, nameLenMax, reinterpret_cast<LPARAM>(editName));
|
||||||
setName(editName);
|
setName(wstring2string(editName, CP_UTF8).c_str());
|
||||||
}
|
}
|
||||||
::EndDialog(_hSelf, 0);
|
::EndDialog(_hSelf, 0);
|
||||||
updateConflictState(true);
|
updateConflictState(true);
|
||||||
@ -683,10 +683,10 @@ void Accelerator::updateMenuItemByCommand(const CommandShortcut& csc)
|
|||||||
// Ensure that the menu item state is also maintained
|
// Ensure that the menu item state is also maintained
|
||||||
UINT cmdFlags = GetMenuState(_hAccelMenu, cmdID, MF_BYCOMMAND );
|
UINT cmdFlags = GetMenuState(_hAccelMenu, cmdID, MF_BYCOMMAND );
|
||||||
cmdFlags = MF_BYCOMMAND | ((cmdFlags&MF_CHECKED) ? MF_CHECKED : MF_UNCHECKED) | ((cmdFlags&MF_DISABLED) ? MF_DISABLED : MF_ENABLED);
|
cmdFlags = MF_BYCOMMAND | ((cmdFlags&MF_CHECKED) ? MF_CHECKED : MF_UNCHECKED) | ((cmdFlags&MF_DISABLED) ? MF_DISABLED : MF_ENABLED);
|
||||||
::ModifyMenu(_hAccelMenu, cmdID, cmdFlags, cmdID, csc.toMenuItemString().c_str());
|
::ModifyMenu(_hAccelMenu, cmdID, cmdFlags, cmdID, string2wstring(csc.toMenuItemString(), CP_UTF8).c_str());
|
||||||
}
|
}
|
||||||
|
|
||||||
recordedMacroStep::recordedMacroStep(int iMessage, uptr_t wParam, uptr_t lParam, int codepage)
|
recordedMacroStep::recordedMacroStep(int iMessage, uptr_t wParam, uptr_t lParam)
|
||||||
: _message(iMessage), _wParameter(wParam), _lParameter(lParam), _macroType(mtUseLParameter)
|
: _message(iMessage), _wParameter(wParam), _lParameter(lParam), _macroType(mtUseLParameter)
|
||||||
{
|
{
|
||||||
if (_lParameter)
|
if (_lParameter)
|
||||||
@ -715,9 +715,7 @@ recordedMacroStep::recordedMacroStep(int iMessage, uptr_t wParam, uptr_t lParam,
|
|||||||
case IDD_FINDINFILES_FILTERS_COMBO:
|
case IDD_FINDINFILES_FILTERS_COMBO:
|
||||||
{
|
{
|
||||||
char *ch = reinterpret_cast<char *>(_lParameter);
|
char *ch = reinterpret_cast<char *>(_lParameter);
|
||||||
TCHAR tch[2];
|
_sParameter = *ch;
|
||||||
::MultiByteToWideChar(codepage, 0, ch, -1, tch, 2);
|
|
||||||
_sParameter = *tch;
|
|
||||||
_macroType = mtUseSParameter;
|
_macroType = mtUseSParameter;
|
||||||
_lParameter = 0;
|
_lParameter = 0;
|
||||||
}
|
}
|
||||||
@ -881,11 +879,14 @@ void recordedMacroStep::PlayBack(Window* pNotepad, ScintillaEditView *pEditView)
|
|||||||
|
|
||||||
if (_macroType == mtUseSParameter)
|
if (_macroType == mtUseSParameter)
|
||||||
{
|
{
|
||||||
|
/*
|
||||||
int byteBufferLength = ::WideCharToMultiByte(static_cast<UINT>(pEditView->execute(SCI_GETCODEPAGE)), 0, _sParameter.c_str(), -1, NULL, 0, NULL, NULL);
|
int byteBufferLength = ::WideCharToMultiByte(static_cast<UINT>(pEditView->execute(SCI_GETCODEPAGE)), 0, _sParameter.c_str(), -1, NULL, 0, NULL, NULL);
|
||||||
auto byteBuffer = std::make_unique< char[] >(byteBufferLength);
|
auto byteBuffer = std::make_unique< char[] >(byteBufferLength);
|
||||||
::WideCharToMultiByte(static_cast<UINT>(pEditView->execute(SCI_GETCODEPAGE)), 0, _sParameter.c_str(), -1, byteBuffer.get(), byteBufferLength, NULL, NULL);
|
::WideCharToMultiByte(static_cast<UINT>(pEditView->execute(SCI_GETCODEPAGE)), 0, _sParameter.c_str(), -1, byteBuffer.get(), byteBufferLength, NULL, NULL);
|
||||||
auto lParam = reinterpret_cast<LPARAM>(byteBuffer.get());
|
auto lParam = reinterpret_cast<LPARAM>(byteBuffer.get());
|
||||||
pEditView->execute(_message, _wParameter, lParam);
|
pEditView->execute(_message, _wParameter, lParam);
|
||||||
|
*/
|
||||||
|
pEditView->execute(_message, _wParameter, (LPARAM)_sParameter.c_str());
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@ -974,8 +975,7 @@ void ScintillaAccelerator::updateMenuItemByID(const ScintillaKeyMap& skm, int id
|
|||||||
if (skm.isEnabled())
|
if (skm.isEnabled())
|
||||||
{
|
{
|
||||||
menuItem += TEXT("\t");
|
menuItem += TEXT("\t");
|
||||||
//menuItem += TEXT("Sc:"); //sc: scintilla shortcut
|
menuItem += string2wstring(skm.toString(), CP_UTF8);
|
||||||
menuItem += skm.toString();
|
|
||||||
}
|
}
|
||||||
::ModifyMenu(_hAccelMenu, id, MF_BYCOMMAND, id, menuItem.c_str());
|
::ModifyMenu(_hAccelMenu, id, MF_BYCOMMAND, id, menuItem.c_str());
|
||||||
::DrawMenuBar(_hMenuParent);
|
::DrawMenuBar(_hMenuParent);
|
||||||
@ -1049,12 +1049,12 @@ intptr_t CALLBACK ScintillaKeyMap::run_dlgProc(UINT Message, WPARAM wParam, LPAR
|
|||||||
{
|
{
|
||||||
NppDarkMode::autoSubclassAndThemeChildControls(_hSelf);
|
NppDarkMode::autoSubclassAndThemeChildControls(_hSelf);
|
||||||
|
|
||||||
::SetDlgItemText(_hSelf, IDC_NAME_EDIT, _name);
|
::SetDlgItemText(_hSelf, IDC_NAME_EDIT, string2wstring(_name, CP_UTF8).c_str());
|
||||||
_keyCombo = _keyCombos[0];
|
_keyCombo = _keyCombos[0];
|
||||||
|
|
||||||
for (size_t i = 0 ; i < nbKeys ; ++i)
|
for (size_t i = 0 ; i < nbKeys ; ++i)
|
||||||
{
|
{
|
||||||
::SendDlgItemMessage(_hSelf, IDC_KEY_COMBO, CB_ADDSTRING, 0, reinterpret_cast<LPARAM>(namedKeyArray[i].name));
|
::SendDlgItemMessage(_hSelf, IDC_KEY_COMBO, CB_ADDSTRING, 0, reinterpret_cast<LPARAM>(string2wstring(namedKeyArray[i].name, CP_UTF8).c_str()));
|
||||||
}
|
}
|
||||||
|
|
||||||
for (size_t i = 0; i < _size; ++i)
|
for (size_t i = 0; i < _size; ++i)
|
||||||
@ -1228,7 +1228,7 @@ intptr_t CALLBACK ScintillaKeyMap::run_dlgProc(UINT Message, WPARAM wParam, LPAR
|
|||||||
|
|
||||||
CommandShortcut::CommandShortcut(const Shortcut& sc, long id) : Shortcut(sc), _id(id)
|
CommandShortcut::CommandShortcut(const Shortcut& sc, long id) : Shortcut(sc), _id(id)
|
||||||
{
|
{
|
||||||
_shortcutName = sc.getName();
|
_shortcutName = string2wstring(sc.getName(), CP_UTF8);
|
||||||
if ( _id >= IDM_WINDOW_SORT_FN_ASC and _id <= IDM_WINDOW_SORT_FS_DSC)
|
if ( _id >= IDM_WINDOW_SORT_FN_ASC and _id <= IDM_WINDOW_SORT_FS_DSC)
|
||||||
_category = TEXT("Window");
|
_category = TEXT("Window");
|
||||||
else if ( _id < IDM_EDIT)
|
else if ( _id < IDM_EDIT)
|
||||||
|
@ -27,8 +27,8 @@ const size_t nameLenMax = 64;
|
|||||||
|
|
||||||
class NppParameters;
|
class NppParameters;
|
||||||
|
|
||||||
void getKeyStrFromVal(UCHAR keyVal, generic_string & str);
|
void getKeyStrFromVal(UCHAR keyVal, std::string & str);
|
||||||
void getNameStrFromCmd(DWORD cmd, generic_string & str);
|
void getNameStrFromCmd(DWORD cmd, std::wstring & str);
|
||||||
static size_t keyTranslate(size_t keyIn) {
|
static size_t keyTranslate(size_t keyIn) {
|
||||||
switch (keyIn) {
|
switch (keyIn) {
|
||||||
case VK_DOWN: return SCK_DOWN;
|
case VK_DOWN: return SCK_DOWN;
|
||||||
@ -64,22 +64,22 @@ struct KeyCombo {
|
|||||||
UCHAR _key = 0;
|
UCHAR _key = 0;
|
||||||
};
|
};
|
||||||
|
|
||||||
class Shortcut : public StaticDialog {
|
class Shortcut : public StaticDialog {
|
||||||
public:
|
public:
|
||||||
Shortcut(): _canModifyName(false) {
|
Shortcut(): _canModifyName(false) {
|
||||||
setName(TEXT(""));
|
setName("");
|
||||||
_keyCombo._isCtrl = false;
|
_keyCombo._isCtrl = false;
|
||||||
_keyCombo._isAlt = false;
|
_keyCombo._isAlt = false;
|
||||||
_keyCombo._isShift = false;
|
_keyCombo._isShift = false;
|
||||||
_keyCombo._key = 0;
|
_keyCombo._key = 0;
|
||||||
};
|
};
|
||||||
|
|
||||||
Shortcut(const TCHAR *name, bool isCtrl, bool isAlt, bool isShift, UCHAR key) : _canModifyName(false) {
|
Shortcut(const char* name, bool isCtrl, bool isAlt, bool isShift, UCHAR key) : _canModifyName(false) {
|
||||||
_name[0] = '\0';
|
_name[0] = '\0';
|
||||||
if (name) {
|
if (name) {
|
||||||
setName(name);
|
setName(name);
|
||||||
} else {
|
} else {
|
||||||
setName(TEXT(""));
|
setName("");
|
||||||
}
|
}
|
||||||
_keyCombo._isCtrl = isCtrl;
|
_keyCombo._isCtrl = isCtrl;
|
||||||
_keyCombo._isAlt = isAlt;
|
_keyCombo._isAlt = isAlt;
|
||||||
@ -108,7 +108,7 @@ public:
|
|||||||
return *this;
|
return *this;
|
||||||
}
|
}
|
||||||
friend inline bool operator==(const Shortcut & a, const Shortcut & b) {
|
friend inline bool operator==(const Shortcut & a, const Shortcut & b) {
|
||||||
return ((lstrcmp(a.getMenuName(), b.getMenuName()) == 0) &&
|
return ((strcmp(a.getMenuName(), b.getMenuName()) == 0) &&
|
||||||
(a._keyCombo._isCtrl == b._keyCombo._isCtrl) &&
|
(a._keyCombo._isCtrl == b._keyCombo._isCtrl) &&
|
||||||
(a._keyCombo._isAlt == b._keyCombo._isAlt) &&
|
(a._keyCombo._isAlt == b._keyCombo._isAlt) &&
|
||||||
(a._keyCombo._isShift == b._keyCombo._isShift) &&
|
(a._keyCombo._isShift == b._keyCombo._isShift) &&
|
||||||
@ -140,12 +140,12 @@ public:
|
|||||||
return (_keyCombo._key != 0);
|
return (_keyCombo._key != 0);
|
||||||
};
|
};
|
||||||
|
|
||||||
virtual generic_string toString() const; //the hotkey part
|
virtual std::string toString() const; //the hotkey part
|
||||||
generic_string toMenuItemString() const { //generic_string suitable for menu
|
std::string toMenuItemString() const { //generic_string suitable for menu
|
||||||
generic_string str = _menuName;
|
std::string str = _menuName;
|
||||||
if (isEnabled())
|
if (isEnabled())
|
||||||
{
|
{
|
||||||
str += TEXT("\t");
|
str += "\t";
|
||||||
str += toString();
|
str += toString();
|
||||||
}
|
}
|
||||||
return str;
|
return str;
|
||||||
@ -154,15 +154,15 @@ public:
|
|||||||
return _keyCombo;
|
return _keyCombo;
|
||||||
};
|
};
|
||||||
|
|
||||||
const TCHAR * getName() const {
|
const char* getName() const {
|
||||||
return _name;
|
return _name;
|
||||||
};
|
};
|
||||||
|
|
||||||
const TCHAR * getMenuName() const {
|
const char* getMenuName() const {
|
||||||
return _menuName;
|
return _menuName;
|
||||||
}
|
}
|
||||||
|
|
||||||
void setName(const TCHAR * menuName, const TCHAR * shortcutName = NULL);
|
void setName(const char* menuName, const char* shortcutName = NULL);
|
||||||
|
|
||||||
void clear(){
|
void clear(){
|
||||||
_keyCombo._isCtrl = false;
|
_keyCombo._isCtrl = false;
|
||||||
@ -176,8 +176,8 @@ protected :
|
|||||||
KeyCombo _keyCombo;
|
KeyCombo _keyCombo;
|
||||||
virtual intptr_t CALLBACK run_dlgProc(UINT Message, WPARAM wParam, LPARAM lParam);
|
virtual intptr_t CALLBACK run_dlgProc(UINT Message, WPARAM wParam, LPARAM lParam);
|
||||||
bool _canModifyName = false;
|
bool _canModifyName = false;
|
||||||
TCHAR _name[nameLenMax] = {'\0'}; //normal name is plain text (for display purposes)
|
char _name[nameLenMax] = {'\0'}; //normal name is plain text (for display purposes)
|
||||||
TCHAR _menuName[nameLenMax] = { '\0' }; //menu name has ampersands for quick keys
|
char _menuName[nameLenMax] = { '\0' }; //menu name has ampersands for quick keys
|
||||||
void updateConflictState(const bool endSession = false) const;
|
void updateConflictState(const bool endSession = false) const;
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -224,8 +224,8 @@ public:
|
|||||||
bool isEnabled() const;
|
bool isEnabled() const;
|
||||||
size_t getSize() const;
|
size_t getSize() const;
|
||||||
|
|
||||||
generic_string toString() const;
|
std::string toString() const;
|
||||||
generic_string toString(size_t index) const;
|
std::string toString(size_t index) const;
|
||||||
|
|
||||||
intptr_t doDialog()
|
intptr_t doDialog()
|
||||||
{
|
{
|
||||||
@ -277,15 +277,15 @@ struct recordedMacroStep {
|
|||||||
int _message = 0;
|
int _message = 0;
|
||||||
uptr_t _wParameter = 0;
|
uptr_t _wParameter = 0;
|
||||||
uptr_t _lParameter = 0;
|
uptr_t _lParameter = 0;
|
||||||
generic_string _sParameter;
|
std::string _sParameter;
|
||||||
MacroTypeIndex _macroType = mtMenuCommand;
|
MacroTypeIndex _macroType = mtMenuCommand;
|
||||||
|
|
||||||
recordedMacroStep(int iMessage, uptr_t wParam, uptr_t lParam, int codepage);
|
recordedMacroStep(int iMessage, uptr_t wParam, uptr_t lParam);
|
||||||
explicit recordedMacroStep(int iCommandID): _wParameter(iCommandID) {};
|
explicit recordedMacroStep(int iCommandID): _wParameter(iCommandID) {};
|
||||||
|
|
||||||
recordedMacroStep(int iMessage, uptr_t wParam, uptr_t lParam, const TCHAR *sParam, int type)
|
recordedMacroStep(int iMessage, uptr_t wParam, uptr_t lParam, const char *sParam, int type)
|
||||||
: _message(iMessage), _wParameter(wParam), _lParameter(lParam), _macroType(MacroTypeIndex(type)){
|
: _message(iMessage), _wParameter(wParam), _lParameter(lParam), _macroType(MacroTypeIndex(type)){
|
||||||
_sParameter = (sParam)?generic_string(sParam):TEXT("");
|
_sParameter = (sParam) ? std::string(sParam) : "";
|
||||||
};
|
};
|
||||||
|
|
||||||
bool isValid() const {
|
bool isValid() const {
|
||||||
@ -312,16 +312,16 @@ private:
|
|||||||
class UserCommand : public CommandShortcut {
|
class UserCommand : public CommandShortcut {
|
||||||
friend class NppParameters;
|
friend class NppParameters;
|
||||||
public:
|
public:
|
||||||
UserCommand(const Shortcut& sc, const TCHAR *cmd, int id) : CommandShortcut(sc, id), _cmd(cmd) {_canModifyName = true;};
|
UserCommand(const Shortcut& sc, const char *cmd, int id) : CommandShortcut(sc, id), _cmd(cmd) {_canModifyName = true;};
|
||||||
const TCHAR* getCmd() const {return _cmd.c_str();};
|
const char* getCmd() const {return _cmd.c_str();};
|
||||||
private:
|
private:
|
||||||
generic_string _cmd;
|
std::string _cmd;
|
||||||
};
|
};
|
||||||
|
|
||||||
class PluginCmdShortcut : public CommandShortcut {
|
class PluginCmdShortcut : public CommandShortcut {
|
||||||
//friend class NppParameters;
|
//friend class NppParameters;
|
||||||
public:
|
public:
|
||||||
PluginCmdShortcut(const Shortcut& sc, int id, const TCHAR *moduleName, unsigned short internalID) :\
|
PluginCmdShortcut(const Shortcut& sc, int id, const char*moduleName, unsigned short internalID) :\
|
||||||
CommandShortcut(sc, id), _id(id), _moduleName(moduleName), _internalID(internalID) {};
|
CommandShortcut(sc, id), _id(id), _moduleName(moduleName), _internalID(internalID) {};
|
||||||
bool isValid() const {
|
bool isValid() const {
|
||||||
if (!Shortcut::isValid())
|
if (!Shortcut::isValid())
|
||||||
@ -330,13 +330,13 @@ public:
|
|||||||
return false;
|
return false;
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
const TCHAR * getModuleName() const {return _moduleName.c_str();};
|
const char* getModuleName() const {return _moduleName.c_str();};
|
||||||
int getInternalID() const {return _internalID;};
|
int getInternalID() const {return _internalID;};
|
||||||
unsigned long getID() const {return _id;};
|
unsigned long getID() const {return _id;};
|
||||||
|
|
||||||
private :
|
private :
|
||||||
unsigned long _id;
|
unsigned long _id;
|
||||||
generic_string _moduleName;
|
std::string _moduleName;
|
||||||
int _internalID;
|
int _internalID;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -1043,9 +1043,7 @@ void NativeLangSpeaker::changeShortcutLang()
|
|||||||
CommandShortcut & csc = mainshortcuts[index];
|
CommandShortcut & csc = mainshortcuts[index];
|
||||||
if (csc.getID() == (unsigned long)id)
|
if (csc.getID() == (unsigned long)id)
|
||||||
{
|
{
|
||||||
WcharMbcsConvertor& wmc = WcharMbcsConvertor::getInstance();
|
csc.setName(name);
|
||||||
const wchar_t * nameW = wmc.char2wchar(name, _nativeLangEncoding);
|
|
||||||
csc.setName(nameW);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1073,10 +1071,7 @@ void NativeLangSpeaker::changeShortcutLang()
|
|||||||
{
|
{
|
||||||
const char *name = element->Attribute("name");
|
const char *name = element->Attribute("name");
|
||||||
ScintillaKeyMap & skm = scinshortcuts[index];
|
ScintillaKeyMap & skm = scinshortcuts[index];
|
||||||
|
skm.setName(name);
|
||||||
WcharMbcsConvertor& wmc = WcharMbcsConvertor::getInstance();
|
|
||||||
const wchar_t * nameW = wmc.char2wchar(name, _nativeLangEncoding);
|
|
||||||
skm.setName(nameW);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user