mirror of
https://github.com/notepad-plus-plus/notepad-plus-plus.git
synced 2025-07-21 12:54:42 +02:00
[NEW_FEATURE] Add the session file ext association feature (not yet finish).
git-svn-id: svn://svn.tuxfamily.org/svnroot/notepadplus/repository@60 f5eea248-9336-0410-98b8-ebc06183d4e3
This commit is contained in:
parent
0ea22b1a1e
commit
27d6d9b280
@ -401,7 +401,6 @@ bool Notepad_plus::doOpen(const char *fileName, bool isReadOnly)
|
||||
char longFileName[MAX_PATH];
|
||||
::GetFullPathName(fileName, MAX_PATH, longFileName, NULL);
|
||||
|
||||
//printInt(getCurrentView());
|
||||
if (switchToFile(longFileName))
|
||||
{
|
||||
if (_pTrayIco)
|
||||
@ -433,6 +432,15 @@ bool Notepad_plus::doOpen(const char *fileName, bool isReadOnly)
|
||||
}
|
||||
}
|
||||
|
||||
// if file2open matches the ext of user defined session file ext, then it'll be opened as a session
|
||||
char fncp[MAX_PATH];
|
||||
strcpy(fncp, longFileName);
|
||||
char *pExt = PathFindExtension(fncp);
|
||||
const char *definedSessionExt = NppParameters::getInstance()->getNppGUI()._definedSessionExt.c_str();
|
||||
if (strcmp(pExt, definedSessionExt))
|
||||
{
|
||||
return fileLoadSession(longFileName);
|
||||
}
|
||||
|
||||
Utf8_16_Read UnicodeConvertor;
|
||||
|
||||
@ -7272,8 +7280,9 @@ void Notepad_plus::getCurrentOpenedFiles(Session & session)
|
||||
_subEditView.activateDocAt(currentDocIndex);
|
||||
}
|
||||
|
||||
void Notepad_plus::fileLoadSession(const char *fn)
|
||||
bool Notepad_plus::fileLoadSession(const char *fn)
|
||||
{
|
||||
bool result = false;
|
||||
const char *sessionFileName = NULL;
|
||||
if (fn == NULL)
|
||||
{
|
||||
@ -7297,10 +7306,12 @@ void Notepad_plus::fileLoadSession(const char *fn)
|
||||
if ((NppParameters::getInstance())->loadSession(session2Load, sessionFileName))
|
||||
{
|
||||
isAllSuccessful = loadSession(session2Load);
|
||||
result = true;
|
||||
}
|
||||
if (!isAllSuccessful)
|
||||
(NppParameters::getInstance())->writeSession(session2Load, sessionFileName);
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
|
||||
|
@ -312,7 +312,7 @@ public:
|
||||
|
||||
void getCurrentOpenedFiles(Session & session);
|
||||
|
||||
void fileLoadSession(const char *fn = NULL);
|
||||
bool fileLoadSession(const char *fn = NULL);
|
||||
const char * fileSaveSession(size_t nbFile, char ** fileNames, const char *sessionFile2save);
|
||||
const char * fileSaveSession(size_t nbFile = 0, char ** fileNames = NULL);
|
||||
|
||||
|
@ -2151,7 +2151,18 @@ void NppParameters::feedGUIParameters(TiXmlNode *node)
|
||||
if (element->Attribute("autoCAction", &i))
|
||||
_nppGUI._autocStatus = (NppGUI::AutocStatus)i;
|
||||
}
|
||||
else if (!strcmp(nm, "sessionExt"))
|
||||
{
|
||||
TiXmlNode *n = childNode->FirstChild();
|
||||
if (n)
|
||||
{
|
||||
val = n->Value();
|
||||
if (val)
|
||||
_nppGUI._definedSessionExt = val;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
void NppParameters::feedScintillaParam(bool whichOne, TiXmlNode *node)
|
||||
@ -2424,6 +2435,7 @@ void NppParameters::writeGUIParams()
|
||||
bool URLExist = false;
|
||||
bool globalOverrideExist = false;
|
||||
bool autocExist = false;
|
||||
bool sessionExtExist = false;
|
||||
|
||||
TiXmlNode *dockingParamNode = NULL;
|
||||
|
||||
@ -2606,12 +2618,20 @@ void NppParameters::writeGUIParams()
|
||||
pStr = _nppGUI._globalOverride.enableUnderLine?"yes":"no";
|
||||
element->SetAttribute("underline", pStr);
|
||||
}
|
||||
|
||||
if (!strcmp(nm, "auto-completion"))
|
||||
else if (!strcmp(nm, "auto-completion"))
|
||||
{
|
||||
autocExist = true;
|
||||
element->SetAttribute("autoCAction", _nppGUI._autocStatus);
|
||||
}
|
||||
else if (!strcmp(nm, "sessionExt"))
|
||||
{
|
||||
sessionExtExist = true;
|
||||
TiXmlNode *n = childNode->FirstChild();
|
||||
if (n)
|
||||
n->SetValue(_nppGUI._definedSessionExt.c_str());
|
||||
else
|
||||
childNode->InsertEndChild(TiXmlText(_nppGUI._definedSessionExt.c_str()));
|
||||
}
|
||||
}
|
||||
|
||||
if (!autoDetectionExist)
|
||||
@ -2656,6 +2676,7 @@ void NppParameters::writeGUIParams()
|
||||
GUIConfigElement->SetAttribute("name", "langsExcluded");
|
||||
writeExcludedLangList(GUIConfigElement);
|
||||
}
|
||||
|
||||
if (!printSettingExist)
|
||||
{
|
||||
TiXmlElement *GUIConfigElement = (GUIRoot->InsertEndChild(TiXmlElement("GUIConfig")))->ToElement();
|
||||
@ -2724,6 +2745,15 @@ void NppParameters::writeGUIParams()
|
||||
// Rase tout
|
||||
GUIRoot->RemoveChild(dockingParamNode);
|
||||
}
|
||||
|
||||
if (!sessionExtExist)
|
||||
{
|
||||
//const char *pStr = bVal?"yes":"no";
|
||||
TiXmlElement *GUIConfigElement = (GUIRoot->InsertEndChild(TiXmlElement("GUIConfig")))->ToElement();
|
||||
GUIConfigElement->SetAttribute("name", "sessionExt");
|
||||
GUIConfigElement->InsertEndChild(TiXmlText(_nppGUI._definedSessionExt.c_str()));
|
||||
}
|
||||
|
||||
insertDockingParamNode(GUIRoot);
|
||||
|
||||
}
|
||||
|
@ -510,7 +510,8 @@ struct NppGUI
|
||||
_splitterPos(POS_HORIZOTAL), _userDefineDlgStatus(UDD_DOCKED), _tabSize(8),\
|
||||
_tabReplacedBySpace(false), _fileAutoDetection(cdEnabled), _checkHistoryFiles(true),\
|
||||
_isMaximized(false), _isMinimizedToTray(false), _rememberLastSession(true), _backup(bak_none), _useDir(false),\
|
||||
_doTaskList(true), _maitainIndent(true), _saveOpenKeepInSameDir(false), _styleMRU(true), _styleURL(0), _autocStatus(autoc_none) {
|
||||
_doTaskList(true), _maitainIndent(true), _saveOpenKeepInSameDir(false), _styleMRU(true), _styleURL(0),
|
||||
_autocStatus(autoc_none), _definedSessionExt("") {
|
||||
_appPos.left = 0;
|
||||
_appPos.top = 0;
|
||||
_appPos.right = 700;
|
||||
@ -564,6 +565,7 @@ struct NppGUI
|
||||
GlobalOverride _globalOverride;
|
||||
enum AutocStatus{autoc_none, autoc_func, autoc_word};
|
||||
AutocStatus _autocStatus;
|
||||
string _definedSessionExt;
|
||||
};
|
||||
|
||||
struct ScintillaViewParams
|
||||
|
Loading…
x
Reference in New Issue
Block a user