📄 notepad_plus.cpp.svn-base
字号:
_findReplaceDlg.setFindInFilesDirFilter(NULL, "*.*");
_findReplaceDlg.getPatterns(patterns2Match);
vector<string> fileNames;
getMatchedFileNames(dir2Search, patterns2Match, fileNames, isRecursive);
for (size_t i = 0 ; i < fileNames.size() ; i++)
{
const char *fn = fileNames[i].c_str();
if (doSimpleOpen(fn))
nbTotal += _findReplaceDlg.processAll(FIND_ALL, true, fn);
}
_findReplaceDlg.setFinderReadOnly();
_findReplaceDlg.putFindResult(nbTotal);
_pEditView = pOldView;
return true;
}
bool Notepad_plus::findInOpenedFiles() {
int iCurrent = _pEditView->getCurrentDocIndex();
int nbTotal = 0;
const bool isEntireDoc = true;
_findReplaceDlg.setFinderReadOnly(false);
//_findReplaceDlg.setFinderStyle();
//_pFinder->defineDocType(L_TXT);
//_pFinder->execute(SCI_STYLESETSIZE, STYLE_DEFAULT, 8);
if (!_findReplaceDlg.isFinderEmpty())
_findReplaceDlg.clearFinder();
_findReplaceDlg.setSearchWord2Finder();
if (_mainWindowStatus & TWO_VIEWS_MASK)
{
switchEditViewTo((getCurrentView() == MAIN_VIEW)?SUB_VIEW:MAIN_VIEW);
int iCur = _pEditView->getCurrentDocIndex();
for (size_t i = 0 ; i < _pEditView->getNbDoc() ; i++)
{
_pDocTab->activate(i);
_pEditView->execute(SCI_BEGINUNDOACTION);
nbTotal += _findReplaceDlg.processAll(FIND_ALL, isEntireDoc, _pEditView->getCurrentTitle());
_pEditView->execute(SCI_ENDUNDOACTION);
}
_pDocTab->activate(iCur);
switchEditViewTo((getCurrentView() == MAIN_VIEW)?SUB_VIEW:MAIN_VIEW);
}
for (size_t i = 0 ; i < _pEditView->getNbDoc() ; i++)
{
_pDocTab->activate(i);
_pEditView->execute(SCI_BEGINUNDOACTION);
nbTotal += _findReplaceDlg.processAll(FIND_ALL, isEntireDoc, _pEditView->getCurrentTitle());
_pEditView->execute(SCI_ENDUNDOACTION);
}
_pDocTab->activate(iCurrent);
_findReplaceDlg.setFinderReadOnly();
_findReplaceDlg.putFindResult(nbTotal);
return true;
}
bool Notepad_plus::fileSaveAs()
{
FileDialog fDlg(_hSelf, _hInst);
fDlg.setExtFilter("All types", ".*", NULL);
fDlg.setExtFilter("c src file", ".c", NULL);
fDlg.setExtFilter("c++ src file", ".cpp", NULL);
fDlg.setExtFilter("Window Resource File", ".rc", NULL);
fDlg.setExtFilter("c/c++ header file", ".h", NULL);
fDlg.setExtFilter("Java src file", ".java", NULL);
fDlg.setExtFilter("HTML file", ".html", NULL);
fDlg.setExtFilter("XML file", ".xml", NULL);
fDlg.setExtFilter("php file", ".php",NULL);
fDlg.setExtFilter("ini file", ".ini", NULL);
fDlg.setExtFilter("bat file", ".bat", NULL);
fDlg.setExtFilter("Normal text file", ".txt", NULL);
char str[MAX_PATH];
strcpy(str, _pEditView->getCurrentTitle());
fDlg.setDefFileName(PathFindFileName(str));
if (char *pfn = fDlg.doSaveDlg())
{
int i = _pEditView->findDocIndexByName(pfn);
if ((i == -1) || (i == _pEditView->getCurrentDocIndex()))
{
doSave(pfn, _pEditView->getCurrentBuffer().getUnicodeMode());
_pEditView->setCurrentTitle(pfn);
_pEditView->setCurrentDocReadOnly(false);
_pDocTab->updateCurrentTabItem(PathFindFileName(pfn));
setTitleWith(pfn);
setLangStatus(_pEditView->getCurrentDocType());
checkLangsMenu(-1);
return true;
}
else
{
::MessageBox(_hSelf, "The file is already opened in the Notepad++.", "ERROR", MB_OK | MB_ICONSTOP);
_pDocTab->activate(i);
return false;
}
checkModifiedDocument();
}
else // cancel button is pressed
{
checkModifiedDocument();
return false;
}
}
void Notepad_plus::filePrint(bool showDialog)
{
Printer printer;
int startPos = int(_pEditView->execute(SCI_GETSELECTIONSTART));
int endPos = int(_pEditView->execute(SCI_GETSELECTIONEND));
printer.init(_hInst, _hSelf, _pEditView, showDialog, startPos, endPos);
printer.doPrint();
}
void Notepad_plus::enableCommand(int cmdID, bool doEnable, int which) const
{
if (which & MENU)
{
enableMenu(cmdID, doEnable);
}
if (which & TOOLBAR)
{
_toolBar.enable(cmdID, doEnable);
}
}
void Notepad_plus::checkClipboard()
{
bool hasSelection = _pEditView->execute(SCI_GETSELECTIONSTART) != _pEditView->execute(SCI_GETSELECTIONEND);
bool canPaste = (_pEditView->execute(SCI_CANPASTE) != 0);
enableCommand(IDM_EDIT_CUT, hasSelection, MENU | TOOLBAR);
enableCommand(IDM_EDIT_COPY, hasSelection, MENU | TOOLBAR);
enableCommand(IDM_EDIT_PASTE, canPaste, MENU | TOOLBAR);
enableCommand(IDM_EDIT_DELETE, hasSelection, MENU | TOOLBAR);
enableCommand(IDM_EDIT_UPPERCASE, hasSelection, MENU);
enableCommand(IDM_EDIT_LOWERCASE, hasSelection, MENU);
enableCommand(IDM_EDIT_BLOCK_COMMENT, hasSelection, MENU);
enableCommand(IDM_EDIT_STREAM_COMMENT, hasSelection, MENU);
}
void Notepad_plus::checkDocState()
{
bool isCurrentDirty = _pEditView->isCurrentDocDirty();
bool isSeveralDirty = (!_pEditView->isAllDocsClean()) || (!getNonCurrentEditView()->isAllDocsClean());
enableCommand(IDM_FILE_SAVE, isCurrentDirty, MENU | TOOLBAR);
enableCommand(IDM_FILE_SAVEALL, isSeveralDirty, MENU | TOOLBAR);
bool isSysReadOnly = _pEditView->isCurrentBufSysReadOnly();
if (isSysReadOnly)
{
HMENU hMenu = ::GetMenu(_hSelf);
::CheckMenuItem(hMenu, IDM_EDIT_SETREADONLY, MF_BYCOMMAND | MF_UNCHECKED);
enableCommand(IDM_EDIT_SETREADONLY, false, MENU);
enableCommand(IDM_EDIT_CLEARREADONLY, true, MENU);
}
else
{
enableCommand(IDM_EDIT_SETREADONLY, true, MENU);
enableCommand(IDM_EDIT_CLEARREADONLY, false, MENU);
bool isUserReadOnly = _pEditView->isCurrentBufUserReadOnly();
HMENU hMenu = ::GetMenu(_hSelf);
::CheckMenuItem(hMenu, IDM_EDIT_SETREADONLY, MF_BYCOMMAND | (isUserReadOnly?MF_CHECKED:MF_UNCHECKED));
}
enableConvertMenuItems((_pEditView->getCurrentBuffer()).getFormat());
checkLangsMenu(-1);
}
void Notepad_plus::checkUndoState()
{
enableCommand(IDM_EDIT_UNDO, _pEditView->execute(SCI_CANUNDO) != 0, MENU | TOOLBAR);
enableCommand(IDM_EDIT_REDO, _pEditView->execute(SCI_CANREDO) != 0, MENU | TOOLBAR);
}
void Notepad_plus::checkMacroState()
{
enableCommand(IDM_EDIT_STARTRECORDINGMACRO, !_recordingMacro, MENU | TOOLBAR);
enableCommand(IDM_EDIT_STOPRECORDINGMACRO, _recordingMacro, MENU | TOOLBAR);
enableCommand(IDM_EDIT_PLAYBACKRECORDEDMACRO, !_macro.empty() && !_recordingMacro, MENU | TOOLBAR);
enableCommand(IDM_EDIT_SAVECURRENTMACRO, !_macro.empty() && !_recordingMacro, MENU | TOOLBAR);
enableCommand(IDM_EDIT_RUNMULTIMACRODLG, (!_macro.empty() && !_recordingMacro) || !((NppParameters::getInstance())->getMacroList()).empty(), MENU | TOOLBAR);
}
void Notepad_plus::checkSyncState()
{
bool canDoSync = _mainDocTab.isVisible() && _subDocTab.isVisible();
if (!canDoSync)
{
_syncInfo._isSynScollV = false;
_syncInfo._isSynScollH = false;
checkMenuItem(IDM_VIEW_SYNSCROLLV, false);
checkMenuItem(IDM_VIEW_SYNSCROLLH, false);
_toolBar.setCheck(IDM_VIEW_SYNSCROLLV, false);
_toolBar.setCheck(IDM_VIEW_SYNSCROLLH, false);
}
enableCommand(IDM_VIEW_SYNSCROLLV, canDoSync, MENU | TOOLBAR);
enableCommand(IDM_VIEW_SYNSCROLLH, canDoSync, MENU | TOOLBAR);
}
void Notepad_plus::synchronise()
{
Buffer & bufSrc = _pEditView->getCurrentBuffer();
const char *fn = bufSrc.getFileName();
int i = getNonCurrentDocTab()->find(fn);
if (i != -1)
{
Buffer & bufDest = getNonCurrentEditView()->getBufferAt(i);
bufDest.synchroniseWith(bufSrc);
getNonCurrentDocTab()->updateTabItem(i);
}
}
void Notepad_plus::checkLangsMenu(int id) const
{
if (id == -1)
{
id = (NppParameters::getInstance())->langTypeToCommandID(_pEditView->getCurrentDocType());
if (id == IDM_LANG_USER)
{
if (_pEditView->getCurrentBuffer().isUserDefineLangExt())
{
const char *userLangName = _pEditView->getCurrentBuffer().getUserDefineLangName();
char menuLangName[16];
for (int i = IDM_LANG_USER + 1 ; i <= IDM_LANG_USER_LIMIT ; i++)
{
if (::GetMenuString(::GetMenu(_hSelf), i, menuLangName, sizeof(menuLangName), MF_BYCOMMAND))
if (!strcmp(userLangName, menuLangName))
{
::CheckMenuRadioItem(::GetMenu(_hSelf), IDM_LANG_C, IDM_LANG_USER_LIMIT, i, MF_BYCOMMAND);
return;
}
}
}
}
}
::CheckMenuRadioItem(::GetMenu(_hSelf), IDM_LANG_C, IDM_LANG_USER_LIMIT, id, MF_BYCOMMAND);
}
string Notepad_plus::getLangDesc(LangType langType, bool shortDesc)
{
string str2Show;
switch (langType)
{
case L_C:
str2Show = (shortDesc)?"C":"C source file"; break;
case L_CPP:
str2Show = (shortDesc)?"C++":"C++ source file"; break;
case L_OBJC:
str2Show = (shortDesc)?"Objective-C":"Objective-C source file"; break;
case L_JAVA:
str2Show = (shortDesc)?"Java":"Java source file"; break;
case L_CS:
str2Show = (shortDesc)?"C#":"C# source file"; break;
case L_RC :
str2Show = (shortDesc)?"RC":"Windows Resource file"; break;
case L_MAKEFILE:
str2Show = "Makefile"; break;
case L_HTML:
str2Show = (shortDesc)?"HTML":"Hyper Text Markup Language file"; break;
case L_XML:
str2Show = (shortDesc)?"XML":"eXtensible Markup Language file"; break;
case L_JS:
str2Show = (shortDesc)?"JavaScript":"JavaScript file"; break;
case L_PHP:
str2Show = (shortDesc)?"PHP":"PHP Hypertext Preprocessor file"; break;
case L_ASP:
str2Show = (shortDesc)?"ASP":"Active Server Pages script file"; break;
case L_CSS:
str2Show = (shortDesc)?"CSS":"Cascade Style Sheets File"; break;
case L_LUA:
str2Show = (shortDesc)?"Lua":"Lua source File"; break;
case L_NFO:
str2Show = (shortDesc)?"NFO":"MSDOS Style"; break;
case L_SQL:
str2Show = (shortDesc)?"SQL":"Structure Query Language file"; break;
case L_VB:
str2Show =(shortDesc)?"VB": "Visual Basic file"; break;
case L_BATCH :
str2Show = (shortDesc)?"Batch":"Batch file"; break;
case L_PASCAL :
str2Show = (shortDesc)?"Pascal":"Pascal source file"; break;
case L_PERL :
str2Show = (shortDesc)?"Perl":"Perl source file"; break;
case L_PYTHON :
str2Show = (shortDesc)?"Python":"Python file"; break;
case L_TEX :
str2Show = (shortDesc)?"TeX":"TeX file"; break;
case L_FORTRAN :
str2Show = (shortDesc)?"Fortran":"Fortran source file"; break;
case L_BASH :
str2Show = (shortDesc)?"Shell":"Unix script file"; break;
case L_FLASH :
str2Show = (shortDesc)?"Flash Action":"Flash Action script file"; break;
case L_NSIS :
str2Show = (shortDesc)?"NSIS":"Nullsoft Scriptable Install System script file"; break;
case L_TCL :
str2Show = (shortDesc)?"TCL":"Tool Command Language file"; break;
case L_LISP :
str2Show = (shortDesc)?"Lisp":"List Processing language file"; break;
case L_SCHEME :
str2Show = (shortDesc)?"Scheme":"Scheme file"; break;
case L_ASM :
str2Show = (shortDesc)?"Assembler":"Assembler file"; break;
case L_DIFF :
str2Show = (shortDesc)?"Diff":"Diff file"; break;
case L_PROPS :
str2Show = "Properties file"; break;
case L_PS :
str2Show = (shortDesc)?"Postscript":"Postscript file"; break;
case L_RUBY :
str2Show = (shortDesc)?"Ruby":"Ruby file"; break;
case L_SMALLTALK :
str2Show = (shortDesc)?"Smalltalk":"Smalltalk file"; break;
case L_VHDL :
str2Show = (shortDesc)?"VHDL":"VHSIC Hardware Description Language file"; break;
case L_VERILOG :
str2Show = (shortDesc)?"Verilog":"Verilog file"; break;
case L_KIX :
str2Show = (shortDesc)?"KiXtart":"KiXtart file"; break;
case L_ADA :
str2Show = (shortDesc)?"Ada":"Ada file"; break;
case L_CAML :
str2Show = (shortDesc)?"CAML":"Categorical Abstract Machine Language"; break;
case L_AU3 :
str2Show = (shortDesc)?"AutoIt":"AutoIt"; break;
case L_MATLAB :
str2Show = (shortDesc)?"MATLAB":"MATrix LABoratory"; break;
case L_HASKELL :
str2Show = "Haskell"; break;
case L_INNO :
str2Show = (shortDesc)?"Inno":"Inno Setup script"; break;
case L_CMAKE :
str2Show = "CMAKEFILE"; break;
case L_USER:
{
str2Show = "User Define File";
Buffer & currentBuf = _pEditView->getCurrentBuffer();
if (currentBuf.isUserDefineLangExt())
{
str2Show += " - ";
str2Show += currentBuf.getUserDefineLangName();
}
break;
}
default:
str2Show = "Normal text file";
}
return str2Show;
}
void Notepad_plus::getApiFileName(LangType langType, string &fn)
{
switch (langType)
{
case L_C: fn = "c"; break;
case L_CPP: fn = "cpp"; break;
case L_OBJC: fn = "objC"; break;
case L_JAVA: fn = "java"; break;
case L_CS : fn = "cs"; break;
case L_XML: fn = "xml"; break;
case L_JS: fn = "javascript"; break;
case L_PHP: fn = "php"; break;
case L_VB:
case L_ASP: fn = "vb"; break;
case L_CSS: fn = "css"; break;
case L_LUA: fn = "lua"; break;
case L_PERL: fn = "perl"; break;
case L_PASCAL: fn = "pascal"; break;
case L_PYTHON: fn = "python"; break;
case L_TEX : fn = "tex"; break;
case L_FORTRAN : fn = "fortran"; break;
case L_BASH : fn = "bash"; break;
case L_FLASH : fn = "flash"; break;
case L_NSIS : fn = "nsis"; break;
case L_TCL : fn = "tcl"; break;
case L_LISP : fn = "lisp"; break;
case L_SCHEME : fn = "sheme"; break;
case L_ASM :
fn = "asm"; break;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -