mirror of
https://github.com/notepad-plus-plus/notepad-plus-plus.git
synced 2025-07-20 20:34:41 +02:00
[NEW_FEATURE] Add plugin Black list.
git-svn-id: svn://svn.tuxfamily.org/svnroot/notepadplus/repository/trunk@547 f5eea248-9336-0410-98b8-ebc06183d4e3
This commit is contained in:
parent
2478059b5d
commit
b45df0db24
@ -232,12 +232,21 @@ bool PluginsManager::loadPlugins(const TCHAR *dir)
|
|||||||
plugins1stFullPath += foundData.cFileName;
|
plugins1stFullPath += foundData.cFileName;
|
||||||
dllNames.push_back(plugins1stFullPath);
|
dllNames.push_back(plugins1stFullPath);
|
||||||
|
|
||||||
|
NppParameters * nppParams = NppParameters::getInstance();
|
||||||
|
|
||||||
while (::FindNextFile(hFindFile, &foundData))
|
while (::FindNextFile(hFindFile, &foundData))
|
||||||
{
|
{
|
||||||
generic_string fullPath = (dir && dir[0])?dir:nppPath;
|
bool isInBlackList = nppParams->isInBlackList(foundData.cFileName);
|
||||||
fullPath += TEXT("\\plugins\\");
|
if (!isInBlackList)
|
||||||
fullPath += foundData.cFileName;
|
{
|
||||||
dllNames.push_back(fullPath);
|
generic_string fullPath = (dir && dir[0])?dir:nppPath;
|
||||||
|
fullPath += TEXT("\\plugins\\");
|
||||||
|
|
||||||
|
fullPath += foundData.cFileName;
|
||||||
|
dllNames.push_back(fullPath);
|
||||||
|
}
|
||||||
|
PluginList & pl = nppParams->getPluginList();
|
||||||
|
pl.add(foundData.cFileName, isInBlackList);
|
||||||
}
|
}
|
||||||
::FindClose(hFindFile);
|
::FindClose(hFindFile);
|
||||||
|
|
||||||
|
@ -515,7 +515,7 @@ int FileDialog::_dialogFileBoxId = (NppParameters::getInstance())->getWinVersion
|
|||||||
NppParameters::NppParameters() : _pXmlDoc(NULL),_pXmlUserDoc(NULL), _pXmlUserStylerDoc(NULL),\
|
NppParameters::NppParameters() : _pXmlDoc(NULL),_pXmlUserDoc(NULL), _pXmlUserStylerDoc(NULL),\
|
||||||
_pXmlUserLangDoc(NULL), /*_pXmlNativeLangDoc(NULL), */_pXmlNativeLangDocA(NULL),\
|
_pXmlUserLangDoc(NULL), /*_pXmlNativeLangDoc(NULL), */_pXmlNativeLangDocA(NULL),\
|
||||||
_nbLang(0), _nbFile(0), _nbMaxFile(10), _pXmlToolIconsDoc(NULL),\
|
_nbLang(0), _nbFile(0), _nbMaxFile(10), _pXmlToolIconsDoc(NULL),\
|
||||||
_pXmlShortcutDoc(NULL), _pXmlContextMenuDoc(NULL), _pXmlSessionDoc(NULL),\
|
_pXmlShortcutDoc(NULL), _pXmlContextMenuDoc(NULL), _pXmlSessionDoc(NULL), _pXmlBlacklistDoc(NULL),\
|
||||||
_nbUserLang(0), _nbExternalLang(0), _hUser32(NULL), _hUXTheme(NULL),\
|
_nbUserLang(0), _nbExternalLang(0), _hUser32(NULL), _hUXTheme(NULL),\
|
||||||
_transparentFuncAddr(NULL), _enableThemeDialogTextureFuncAddr(NULL),\
|
_transparentFuncAddr(NULL), _enableThemeDialogTextureFuncAddr(NULL),\
|
||||||
_isTaskListRBUTTONUP_Active(false), _fileSaveDlgFilterIndex(-1), _asNotepadStyle(false), _isFindReplacing(false)
|
_isTaskListRBUTTONUP_Active(false), _fileSaveDlgFilterIndex(-1), _asNotepadStyle(false), _isFindReplacing(false)
|
||||||
@ -950,6 +950,22 @@ bool NppParameters::load()
|
|||||||
|
|
||||||
_pXmlSessionDoc = NULL;
|
_pXmlSessionDoc = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//------------------------------//
|
||||||
|
// blacklist.xml : for per user //
|
||||||
|
//------------------------------//
|
||||||
|
_blacklistPath = _userPath;
|
||||||
|
PathAppend(_blacklistPath, TEXT("blacklist.xml"));
|
||||||
|
|
||||||
|
if (PathFileExists(_blacklistPath.c_str()))
|
||||||
|
{
|
||||||
|
_pXmlBlacklistDoc = new TiXmlDocument(_blacklistPath);
|
||||||
|
loadOkay = _pXmlBlacklistDoc->LoadFile();
|
||||||
|
if (loadOkay)
|
||||||
|
{
|
||||||
|
getBlackListFromXmlTree();
|
||||||
|
}
|
||||||
|
}
|
||||||
return isAllLaoded;
|
return isAllLaoded;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -989,6 +1005,9 @@ void NppParameters::destroyInstance()
|
|||||||
if (_pXmlSessionDoc)
|
if (_pXmlSessionDoc)
|
||||||
delete _pXmlSessionDoc;
|
delete _pXmlSessionDoc;
|
||||||
|
|
||||||
|
if (_pXmlBlacklistDoc)
|
||||||
|
delete _pXmlBlacklistDoc;
|
||||||
|
|
||||||
delete _pSelf;
|
delete _pSelf;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1152,6 +1171,18 @@ 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 nrCommands = sizeof(winKeyDefs)/sizeof(WinMenuKeyDefinition);
|
int nrCommands = sizeof(winKeyDefs)/sizeof(WinMenuKeyDefinition);
|
||||||
@ -1819,6 +1850,24 @@ void NppParameters::feedScintKeys(TiXmlNode *node)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool NppParameters::feedBlacklist(TiXmlNode *node)
|
||||||
|
{
|
||||||
|
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)
|
bool NppParameters::getShortcuts(TiXmlNode *node, Shortcut & sc)
|
||||||
{
|
{
|
||||||
if (!node) return false;
|
if (!node) return false;
|
||||||
|
@ -1063,8 +1063,16 @@ private :
|
|||||||
generic_string _stylesXmlPath;
|
generic_string _stylesXmlPath;
|
||||||
};
|
};
|
||||||
|
|
||||||
const int NB_LANG = 80;
|
class PluginList {
|
||||||
|
public :
|
||||||
|
void add(generic_string fn, bool isInBL){
|
||||||
|
_list.push_back(pair<generic_string, bool>(fn, isInBL));
|
||||||
|
};
|
||||||
|
private :
|
||||||
|
vector<pair<generic_string, bool>>_list;
|
||||||
|
};
|
||||||
|
|
||||||
|
const int NB_LANG = 80;
|
||||||
const bool DUP = true;
|
const bool DUP = true;
|
||||||
const bool FREE = false;
|
const bool FREE = false;
|
||||||
|
|
||||||
@ -1393,6 +1401,17 @@ public:
|
|||||||
return _themeSwitcher;
|
return _themeSwitcher;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
vector<generic_string> & getBlackList() {return _blacklist;};
|
||||||
|
bool isInBlackList(TCHAR *fn) {
|
||||||
|
for (size_t i = 0 ; i < _blacklist.size() ; i++)
|
||||||
|
if (_blacklist[i] == fn)
|
||||||
|
return true;
|
||||||
|
return false;
|
||||||
|
};
|
||||||
|
|
||||||
|
PluginList & getPluginList() {return _pluginList;};
|
||||||
|
|
||||||
private:
|
private:
|
||||||
NppParameters();
|
NppParameters();
|
||||||
~NppParameters();
|
~NppParameters();
|
||||||
@ -1400,7 +1419,8 @@ private:
|
|||||||
static NppParameters *_pSelf;
|
static NppParameters *_pSelf;
|
||||||
|
|
||||||
TiXmlDocument *_pXmlDoc, *_pXmlUserDoc, *_pXmlUserStylerDoc, *_pXmlUserLangDoc,\
|
TiXmlDocument *_pXmlDoc, *_pXmlUserDoc, *_pXmlUserStylerDoc, *_pXmlUserLangDoc,\
|
||||||
*_pXmlToolIconsDoc, *_pXmlShortcutDoc, *_pXmlContextMenuDoc, *_pXmlSessionDoc;
|
*_pXmlToolIconsDoc, *_pXmlShortcutDoc, *_pXmlContextMenuDoc, *_pXmlSessionDoc,\
|
||||||
|
*_pXmlBlacklistDoc;
|
||||||
|
|
||||||
TiXmlDocumentA *_pXmlNativeLangDocA;
|
TiXmlDocumentA *_pXmlNativeLangDocA;
|
||||||
|
|
||||||
@ -1432,6 +1452,8 @@ private:
|
|||||||
StyleArray _widgetStyleArray;
|
StyleArray _widgetStyleArray;
|
||||||
|
|
||||||
vector<generic_string> _fontlist;
|
vector<generic_string> _fontlist;
|
||||||
|
vector<generic_string> _blacklist;
|
||||||
|
PluginList _pluginList;
|
||||||
|
|
||||||
HMODULE _hUser32;
|
HMODULE _hUser32;
|
||||||
HMODULE _hUXTheme;
|
HMODULE _hUXTheme;
|
||||||
@ -1461,6 +1483,7 @@ private:
|
|||||||
generic_string _shortcutsPath;
|
generic_string _shortcutsPath;
|
||||||
generic_string _contextMenuPath;
|
generic_string _contextMenuPath;
|
||||||
generic_string _sessionPath;
|
generic_string _sessionPath;
|
||||||
|
generic_string _blacklistPath;
|
||||||
generic_string _nppPath;
|
generic_string _nppPath;
|
||||||
generic_string _userPath;
|
generic_string _userPath;
|
||||||
generic_string _stylerPath;
|
generic_string _stylerPath;
|
||||||
@ -1502,6 +1525,7 @@ private:
|
|||||||
bool getPluginCmdsFromXmlTree();
|
bool getPluginCmdsFromXmlTree();
|
||||||
bool getScintKeysFromXmlTree();
|
bool getScintKeysFromXmlTree();
|
||||||
bool getSessionFromXmlTree(TiXmlDocument *pSessionDoc = NULL, Session *session = NULL);
|
bool getSessionFromXmlTree(TiXmlDocument *pSessionDoc = NULL, Session *session = NULL);
|
||||||
|
bool getBlackListFromXmlTree();
|
||||||
|
|
||||||
void feedGUIParameters(TiXmlNode *node);
|
void feedGUIParameters(TiXmlNode *node);
|
||||||
void feedKeyWordsParameters(TiXmlNode *node);
|
void feedKeyWordsParameters(TiXmlNode *node);
|
||||||
@ -1524,6 +1548,7 @@ private:
|
|||||||
void feedUserCmds(TiXmlNode *node);
|
void feedUserCmds(TiXmlNode *node);
|
||||||
void feedPluginCustomizedCmds(TiXmlNode *node);
|
void feedPluginCustomizedCmds(TiXmlNode *node);
|
||||||
void feedScintKeys(TiXmlNode *node);
|
void feedScintKeys(TiXmlNode *node);
|
||||||
|
bool feedBlacklist(TiXmlNode *node);
|
||||||
|
|
||||||
void getActions(TiXmlNode *node, Macro & macro);
|
void getActions(TiXmlNode *node, Macro & macro);
|
||||||
bool getShortcuts(TiXmlNode *node, Shortcut & sc);
|
bool getShortcuts(TiXmlNode *node, Shortcut & sc);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user