[RELEASE_V42]

1. Fix User Define Language extension recognition problem for sensitive case (now it's insensitive). 
2. Add a menu entry to access to notepad++ plugins project page. 
3. Enhance file open dialog (add all supported extensions in the filters list). 
4. Fix bug of Run macro until EOF. 

git-svn-id: svn://svn.tuxfamily.org/svnroot/notepadplus/repository@5 f5eea248-9336-0410-98b8-ebc06183d4e3
This commit is contained in:
donho 2007-08-12 23:21:25 +00:00
parent 98e9f1f971
commit 2322694649
14 changed files with 402 additions and 260 deletions

View File

@ -8,13 +8,15 @@ v4.2 fixed bugs and added features (from v4.1.2) :
6. Fix TeX syntax highlighting corruption problem while switching off then switching back to current document. 6. Fix TeX syntax highlighting corruption problem while switching off then switching back to current document.
7. Fix User Define Language extension recognition problem for sensitive case (now it's insensitive). 7. Fix User Define Language extension recognition problem for sensitive case (now it's insensitive).
8. Add a menu entry to access to notepad++ plugins project page. 8. Add a menu entry to access to notepad++ plugins project page.
9. Enhance file open dialog (add all supported extensions in the filters list).
10. Fix bug of Run macro until EOF.
Plugins included in v4.2 : Plugins included in v4.2 :
1. TexFX v0.24a 1. TexFX v0.24a
2. Function list v1.2 2. Function list v1.2
3. ConvertExt v1.1 3. ConvertExt v1.1
4. NppExec v0.2 beta 3 4. NppExec v0.2 beta 4
5. Spell checker v1.1 5. Spell checker v1.1
6. Quick text v0.02 6. Quick text v0.02
7. Explorer v1.4 7. Explorer v1.4

View File

@ -17,13 +17,13 @@
; Define the application name ; Define the application name
!define APPNAME "Notepad++" !define APPNAME "Notepad++"
!define APPNAMEANDVERSION "Notepad++ v4.1.2" !define APPNAMEANDVERSION "Notepad++ v4.2"
; Main Install settings ; Main Install settings
Name "${APPNAMEANDVERSION}" Name "${APPNAMEANDVERSION}"
InstallDir "$PROGRAMFILES\Notepad++" InstallDir "$PROGRAMFILES\Notepad++"
InstallDirRegKey HKLM "Software\${APPNAME}" "" InstallDirRegKey HKLM "Software\${APPNAME}" ""
OutFile "..\bin\npp.4.1.2.Installer.exe" OutFile "..\bin\npp.4.2.Installer.exe"
@ -175,7 +175,7 @@ OutFile "..\bin\npp.4.1.2.Installer.exe"
!insertmacro MUI_LANGUAGE "PortugueseBR" !insertmacro MUI_LANGUAGE "PortugueseBR"
!insertmacro MUI_LANGUAGE "Ukrainian" !insertmacro MUI_LANGUAGE "Ukrainian"
!insertmacro MUI_LANGUAGE "Turkish" !insertmacro MUI_LANGUAGE "Turkish"
!insertmacro MUI_LANGUAGE "Catalan" ;!insertmacro MUI_LANGUAGE "Catalan"
!insertmacro MUI_LANGUAGE "Arabic" !insertmacro MUI_LANGUAGE "Arabic"
!insertmacro MUI_LANGUAGE "Lithuanian" !insertmacro MUI_LANGUAGE "Lithuanian"
!insertmacro MUI_LANGUAGE "Finnish" !insertmacro MUI_LANGUAGE "Finnish"
@ -642,7 +642,7 @@ SubSection "Plugins" Plugins
SetOutPath "$INSTDIR\plugins" SetOutPath "$INSTDIR\plugins"
File "..\bin\plugins\FunctionList.dll" File "..\bin\plugins\FunctionList.dll"
SectionEnd SectionEnd
/*
Section "File Browser" FileBrowser Section "File Browser" FileBrowser
Delete "$INSTDIR\plugins\ExplorerPlugin.dll" Delete "$INSTDIR\plugins\ExplorerPlugin.dll"
SetOutPath "$INSTDIR\plugins" SetOutPath "$INSTDIR\plugins"
@ -654,7 +654,7 @@ SubSection "Plugins" Plugins
SetOutPath "$INSTDIR\plugins" SetOutPath "$INSTDIR\plugins"
File "..\bin\plugins\HexEditor.dll" File "..\bin\plugins\HexEditor.dll"
SectionEnd SectionEnd
*/
Section "ConvertExt" ConvertExt Section "ConvertExt" ConvertExt
SetOutPath "$INSTDIR\plugins" SetOutPath "$INSTDIR\plugins"
File "..\bin\plugins\ConvertExt.dll" File "..\bin\plugins\ConvertExt.dll"
@ -842,7 +842,7 @@ SubSection un.Plugins
Delete "$INSTDIR\plugins\FunctionList.dll" Delete "$INSTDIR\plugins\FunctionList.dll"
RMDir "$INSTDIR\plugins\" RMDir "$INSTDIR\plugins\"
SectionEnd SectionEnd
/*
Section un.FileBrowser Section un.FileBrowser
Delete "$INSTDIR\plugins\Explorer.dll" Delete "$INSTDIR\plugins\Explorer.dll"
Delete "$INSTDIR\plugins\Config\Explorer.ini" Delete "$INSTDIR\plugins\Config\Explorer.ini"
@ -854,7 +854,7 @@ SubSection un.Plugins
Delete "$INSTDIR\plugins\HexEditor.dll" Delete "$INSTDIR\plugins\HexEditor.dll"
RMDir "$INSTDIR\plugins\" RMDir "$INSTDIR\plugins\"
SectionEnd SectionEnd
*/
Section un.ConvertExt Section un.ConvertExt
Delete "$INSTDIR\plugins\ConvertExt.dll" Delete "$INSTDIR\plugins\ConvertExt.dll"

View File

@ -486,26 +486,110 @@ bool Notepad_plus::doOpen(const char *fileName, bool isReadOnly)
return false; return false;
} }
} }
string exts2Filters(string exts) {
const char *extStr = exts.c_str();
char aExt[MAX_PATH];
string filters("");
int j = 0;
bool stop = false;
for (size_t i = 0 ; i < exts.length() ; i++)
{
if (extStr[i] == ' ')
{
if (!stop)
{
aExt[j] = '\0';
stop = true;
if (aExt[0])
{
filters += "*.";
filters += aExt;
filters += ";";
}
j = 0;
}
}
else
{
aExt[j] = extStr[i];
stop = false;
j++;
}
}
if (j > 0)
{
aExt[j] = '\0';
if (aExt[0])
{
filters += "*.";
filters += aExt;
filters += ";";
}
}
// remove the last ';'
filters = filters.substr(0, filters.length()-1);
return filters;
};
void Notepad_plus::fileOpen() void Notepad_plus::fileOpen()
{ {
FileDialog fDlg(_hSelf, _hInst); FileDialog fDlg(_hSelf, _hInst);
fDlg.setExtFilter("All types", ".*", NULL);
fDlg.setExtFilter("All types", ".*", NULL);
fDlg.setExtFilter("c/c++ src file", ".c", ".cpp", ".cxx", ".cc", ".h", NULL); NppParameters *pNppParam = NppParameters::getInstance();
fDlg.setExtFilter("Window Resource File", ".rc", NULL); NppGUI & nppGUI = (NppGUI & )pNppParam->getNppGUI();
int i = 0;
Lang *l = NppParameters::getInstance()->getLangFromIndex(i++);
while (l)
{
LangType lid = l->getLangID();
bool inExcludedList = false;
for (size_t j = 0 ; j < nppGUI._excludedLangList.size() ; j++)
{
if (lid == nppGUI._excludedLangList[j]._langType)
{
inExcludedList = true;
break;
}
}
if (!inExcludedList)
{
const char *defList = l->getDefaultExtList();
const char *userList = NULL;
LexerStylerArray &lsa = (NppParameters::getInstance())->getLStylerArray();
const char *lName = l->getLangName();
LexerStyler *pLS = lsa.getLexerStylerByName(lName);
if (pLS)
userList = pLS->getLexerUserExt();
std::string list("");
if (defList)
list += defList;
if (userList)
{
list += " ";
list += userList;
}
string stringFilters = exts2Filters(list);
const char *filters = stringFilters.c_str();
if (filters[0])
fDlg.setExtsFilter(getLangDesc(lid, true).c_str(), filters);
}
l = (NppParameters::getInstance())->getLangFromIndex(i++);
}
fDlg.setExtFilter("Java src file", ".java", NULL);
fDlg.setExtFilter("HTML file", ".html", ".htm", NULL);
fDlg.setExtFilter("XML file", ".xml", NULL);
fDlg.setExtFilter("Makefile", "makefile", "GNUmakefile", ".makefile", NULL);
fDlg.setExtFilter("php file", ".php", ".php3", ".phtml", NULL);
fDlg.setExtFilter("asp file", ".asp", NULL);
fDlg.setExtFilter("ini file", ".ini", NULL);
fDlg.setExtFilter("nfo file", ".nfo", NULL);
fDlg.setExtFilter("VB/VBS file", ".vb", ".vbs", NULL);
fDlg.setExtFilter("SQL file", ".sql", NULL);
fDlg.setExtFilter("Objective C file", ".m", ".h", NULL);
if (stringVector *pfns = fDlg.doOpenMultiFilesDlg()) if (stringVector *pfns = fDlg.doOpenMultiFilesDlg())
{ {
int sz = int(pfns->size()); int sz = int(pfns->size());
@ -1123,166 +1207,167 @@ void Notepad_plus::checkLangsMenu(int id) const
} }
::CheckMenuRadioItem(::GetMenu(_hSelf), IDM_LANG_C, IDM_LANG_USER_LIMIT, id, MF_BYCOMMAND); ::CheckMenuRadioItem(::GetMenu(_hSelf), IDM_LANG_C, IDM_LANG_USER_LIMIT, id, MF_BYCOMMAND);
} }
void Notepad_plus::setLangStatus(LangType langType) string Notepad_plus::getLangDesc(LangType langType, bool shortDesc)
{ {
string str2Show; string str2Show;
switch (langType) switch (langType)
{ {
case L_C: case L_C:
str2Show = "c source file"; break; str2Show = (shortDesc)?"C":"C source file"; break;
case L_CPP: case L_CPP:
str2Show = "c++ source file"; break; str2Show = (shortDesc)?"C++":"C++ source file"; break;
case L_OBJC: case L_OBJC:
str2Show = "Objective C source file"; break; str2Show = (shortDesc)?"Objective-C":"Objective-C source file"; break;
case L_JAVA: case L_JAVA:
str2Show = "Java source file"; break; str2Show = (shortDesc)?"Java":"Java source file"; break;
case L_CS: case L_CS:
str2Show = "C# source file"; break; str2Show = (shortDesc)?"C#":"C# source file"; break;
case L_RC : case L_RC :
str2Show = "Windows Resource file"; break; str2Show = (shortDesc)?"RC":"Windows Resource file"; break;
case L_MAKEFILE: case L_MAKEFILE:
str2Show = "Makefile"; break; str2Show = "Makefile"; break;
case L_HTML: case L_HTML:
str2Show = "Hyper Text Markup Language file"; break; str2Show = (shortDesc)?"HTML":"Hyper Text Markup Language file"; break;
case L_XML: case L_XML:
str2Show = "eXtensible Markup Language file"; break; str2Show = (shortDesc)?"XML":"eXtensible Markup Language file"; break;
case L_JS: case L_JS:
str2Show = "Javascript file"; break; str2Show = (shortDesc)?"JavaScript":"JavaScript file"; break;
case L_PHP: case L_PHP:
str2Show = "PHP Hypertext Preprocessor file"; break; str2Show = (shortDesc)?"PHP":"PHP Hypertext Preprocessor file"; break;
case L_ASP: case L_ASP:
str2Show = "Active Server Pages script file"; break; str2Show = (shortDesc)?"ASP":"Active Server Pages script file"; break;
case L_CSS: case L_CSS:
str2Show = "Cascade Style Sheets File"; break; str2Show = (shortDesc)?"CSS":"Cascade Style Sheets File"; break;
case L_LUA: case L_LUA:
str2Show = "Lua source File"; break; str2Show = (shortDesc)?"Lua":"Lua source File"; break;
case L_NFO: case L_NFO:
str2Show = "MSDOS Style"; break; str2Show = (shortDesc)?"NFO":"MSDOS Style"; break;
case L_SQL: case L_SQL:
str2Show = "Structure Query Language file"; break; str2Show = (shortDesc)?"SQL":"Structure Query Language file"; break;
case L_VB: case L_VB:
str2Show = "Visual Basic file"; break; str2Show =(shortDesc)?"VB": "Visual Basic file"; break;
case L_BATCH : case L_BATCH :
str2Show = "Batch file"; break; str2Show = (shortDesc)?"Batch":"Batch file"; break;
case L_PASCAL : case L_PASCAL :
str2Show = "Pascal source file"; break; str2Show = (shortDesc)?"Pascal":"Pascal source file"; break;
case L_PERL : case L_PERL :
str2Show = "Perl source file"; break; str2Show = (shortDesc)?"Perl":"Perl source file"; break;
case L_PYTHON : case L_PYTHON :
str2Show = "Python file"; break; str2Show = (shortDesc)?"Python":"Python file"; break;
case L_TEX : case L_TEX :
str2Show = "TeX file"; break; str2Show = (shortDesc)?"TeX":"TeX file"; break;
case L_FORTRAN : case L_FORTRAN :
str2Show = "Fortran source file"; break; str2Show = (shortDesc)?"Fortran":"Fortran source file"; break;
case L_BASH : case L_BASH :
str2Show = "Unix script file"; break; str2Show = (shortDesc)?"Shell":"Unix script file"; break;
case L_FLASH : case L_FLASH :
str2Show = "Flash Action script file"; break; str2Show = (shortDesc)?"Flash Action":"Flash Action script file"; break;
case L_NSIS : case L_NSIS :
str2Show = "Nullsoft Scriptable Install System script file"; break; str2Show = (shortDesc)?"NSIS":"Nullsoft Scriptable Install System script file"; break;
case L_TCL : case L_TCL :
str2Show = "Tool Command Language file"; break; str2Show = (shortDesc)?"TCL":"Tool Command Language file"; break;
case L_LISP : case L_LISP :
str2Show = "List Processing language file"; break; str2Show = (shortDesc)?"Lisp":"List Processing language file"; break;
case L_SCHEME : case L_SCHEME :
str2Show = "Sheme file"; break; str2Show = (shortDesc)?"Scheme":"Scheme file"; break;
case L_ASM : case L_ASM :
str2Show = "Assembler file"; break; str2Show = (shortDesc)?"Assembler":"Assembler file"; break;
case L_DIFF : case L_DIFF :
str2Show = "Diff file"; break; str2Show = (shortDesc)?"Diff":"Diff file"; break;
case L_PROPS : case L_PROPS :
str2Show = "Properties file"; break; str2Show = "Properties file"; break;
case L_PS : case L_PS :
str2Show = "Postscript file"; break; str2Show = (shortDesc)?"Postscript":"Postscript file"; break;
case L_RUBY : case L_RUBY :
str2Show = "Ruby file"; break; str2Show = (shortDesc)?"Ruby":"Ruby file"; break;
case L_SMALLTALK : case L_SMALLTALK :
str2Show = "Smalltalk file"; break; str2Show = (shortDesc)?"Smalltalk":"Smalltalk file"; break;
case L_VHDL : case L_VHDL :
str2Show = "VHSIC Hardware Description Language file"; break; str2Show = (shortDesc)?"VHDL":"VHSIC Hardware Description Language file"; break;
case L_VERILOG : case L_VERILOG :
str2Show = "Verilog file"; break; str2Show = (shortDesc)?"Verilog":"Verilog file"; break;
case L_KIX : case L_KIX :
str2Show = "KiXtart file"; break; str2Show = (shortDesc)?"KiXtart":"KiXtart file"; break;
case L_ADA : case L_ADA :
str2Show = "Ada file"; break; str2Show = (shortDesc)?"Ada":"Ada file"; break;
case L_CAML : case L_CAML :
str2Show = "Categorical Abstract Machine Language"; break; str2Show = (shortDesc)?"CAML":"Categorical Abstract Machine Language"; break;
case L_AU3 : case L_AU3 :
str2Show = "AutoIt"; break; str2Show = (shortDesc)?"AutoIt":"AutoIt"; break;
case L_MATLAB : case L_MATLAB :
str2Show = "MATrix LABoratory"; break; str2Show = (shortDesc)?"MATLAB":"MATrix LABoratory"; break;
case L_HASKELL : case L_HASKELL :
str2Show = "Haskell"; break; str2Show = "Haskell"; break;
case L_INNO : case L_INNO :
str2Show = "Inno Setup script"; break; str2Show = (shortDesc)?"Inno":"Inno Setup script"; break;
case L_CMAKE : case L_CMAKE :
str2Show = "CMAKEFILE"; break; str2Show = "CMAKEFILE"; break;
case L_USER: case L_USER:
{
str2Show = "User Define File";
Buffer & currentBuf = _pEditView->getCurrentBuffer();
if (currentBuf.isUserDefineLangExt())
{ {
str2Show += " - "; str2Show = "User Define File";
str2Show += currentBuf.getUserDefineLangName(); Buffer & currentBuf = _pEditView->getCurrentBuffer();
if (currentBuf.isUserDefineLangExt())
{
str2Show += " - ";
str2Show += currentBuf.getUserDefineLangName();
}
break;
} }
break;
}
default: default:
str2Show = "Normal text file"; str2Show = "Normal text file";
} }
_statusBar.setText(str2Show.c_str(), STATUSBAR_DOC_TYPE); return str2Show;
} }
void Notepad_plus::getApiFileName(LangType langType, string &fn) void Notepad_plus::getApiFileName(LangType langType, string &fn)
{ {
@ -5760,6 +5845,7 @@ LRESULT Notepad_plus::runProc(HWND hwnd, UINT Message, WPARAM wParam, LPARAM lPa
const char *dir = NULL; const char *dir = NULL;
char currentDir[MAX_PATH]; char currentDir[MAX_PATH];
const char *fltr;
if (wParam) if (wParam)
dir = (const char *)wParam; dir = (const char *)wParam;
@ -5768,10 +5854,10 @@ LRESULT Notepad_plus::runProc(HWND hwnd, UINT Message, WPARAM wParam, LPARAM lPa
::GetCurrentDirectory(MAX_PATH, currentDir); ::GetCurrentDirectory(MAX_PATH, currentDir);
dir = currentDir; dir = currentDir;
} }
if (lParam) if (lParam)
{ {
const char *filtre = (const char *)lParam; fltr = (const char *)lParam;
_findReplaceDlg.setFindInFilesDirFilter(dir, filtre);
} }
else else
{ {
@ -5788,12 +5874,12 @@ LRESULT Notepad_plus::runProc(HWND hwnd, UINT Message, WPARAM wParam, LPARAM lPa
filtres += "*."; filtres += "*.";
filtres += vStr[i] + " "; filtres += vStr[i] + " ";
} }
//::SetDlgItemText(_hSelf, IDD_FINDINFILES_FILTERS_COMBO, filtres.c_str()); fltr = filtres.c_str();
_findReplaceDlg.setFindInFilesDirFilter(currentDir, filtres.c_str());
} }
else else
_findReplaceDlg.setFindInFilesDirFilter(currentDir, "*.*"); fltr = "*.*";
} }
_findReplaceDlg.setFindInFilesDirFilter(dir, fltr);
return TRUE; return TRUE;
} }
@ -6256,6 +6342,8 @@ LRESULT Notepad_plus::runProc(HWND hwnd, UINT Message, WPARAM wParam, LPARAM lPa
int lastLine = int(_pEditView->execute(SCI_GETLINECOUNT)) - 1; int lastLine = int(_pEditView->execute(SCI_GETLINECOUNT)) - 1;
int currLine = _pEditView->getCurrentLineNumber(); int currLine = _pEditView->getCurrentLineNumber();
int indexMacro = _runMacroDlg.getMacro2Exec(); int indexMacro = _runMacroDlg.getMacro2Exec();
int deltaLastLine = 0;
int deltaCurrLine = 0;
Macro m = _macro; Macro m = _macro;
@ -6278,14 +6366,25 @@ LRESULT Notepad_plus::runProc(HWND hwnd, UINT Message, WPARAM wParam, LPARAM lPa
} }
else // run until eof else // run until eof
{ {
if ( currLine == _pEditView->getCurrentLineNumber() ) // line no. not changed? bool cursorMovedUp = deltaCurrLine < 0;
deltaLastLine = int(_pEditView->execute(SCI_GETLINECOUNT)) - 1 - lastLine;
deltaCurrLine = _pEditView->getCurrentLineNumber() - currLine;
if (( deltaCurrLine == 0 ) // line no. not changed?
&& (deltaLastLine >= 0)) // and no lines removed?
break; // exit break; // exit
// Update the line count, but only if the number of lines is shrinking.
// Otherwise, the macro playback may never end.
if (deltaLastLine < 0)
lastLine += deltaLastLine;
// save current line // save current line
currLine = _pEditView->getCurrentLineNumber(); currLine += deltaCurrLine;
// eof? // eof?
if ((currLine >= lastLine) || (currLine <= 0)) if ((currLine >= lastLine) || (currLine < 0)
|| ((deltaCurrLine == 0) && (currLine == 0) && ((deltaLastLine >= 0) || cursorMovedUp)))
break; break;
} }
} }

View File

@ -613,7 +613,11 @@ private:
void synchronise(); void synchronise();
void setLangStatus(LangType langType); string getLangDesc(LangType langType, bool shortDesc = false);
void setLangStatus(LangType langType){
_statusBar.setText(getLangDesc(langType).c_str(), STATUSBAR_DOC_TYPE);
};
void setDisplayFormat(formatType f) { void setDisplayFormat(formatType f) {
std::string str; std::string str;

View File

@ -2760,6 +2760,9 @@ int NppParameters::langTypeToCommandID(LangType lt) const
case L_CMAKE : case L_CMAKE :
id = IDM_LANG_CMAKE; break; id = IDM_LANG_CMAKE; break;
case L_SEARCHRESULT :
id = -1; break;
case L_TXT : case L_TXT :
id = IDM_LANG_TEXT; break; id = IDM_LANG_TEXT; break;
default : default :

View File

@ -338,6 +338,10 @@ BOOL CALLBACK FindReplaceDlg::run_dlgProc(UINT message, WPARAM wParam, LPARAM lP
addText2Combo(str2Search.c_str(), hFindCombo, isUnicode); addText2Combo(str2Search.c_str(), hFindCombo, isUnicode);
processFindNext(str2Search.c_str()); processFindNext(str2Search.c_str());
} }
else if (_currentStatus == FINDINFILES_DLG)
{
::SendMessage(_hSelf, WM_COMMAND, IDD_FINDINFILES_FIND_BUTTON, (LPARAM)_hSelf);
}
} }
return TRUE; return TRUE;
@ -1077,7 +1081,7 @@ void FindReplaceDlg::enableReplaceFunc(bool isEnable)
RECT *pClosePos = isEnable?&_replaceClosePos:&_findClosePos; RECT *pClosePos = isEnable?&_replaceClosePos:&_findClosePos;
//::EnableWindow(::GetDlgItem(_hSelf, IDD_FINDINFILES_FIND_BUTTON), FALSE); //::EnableWindow(::GetDlgItem(_hSelf, IDD_FINDINFILES_FIND_BUTTON), FALSE);
::EnableWindow(::GetDlgItem(_hSelf, IDOK), TRUE); //::EnableWindow(::GetDlgItem(_hSelf, IDOK), TRUE);
enableFindInFilesControls(false); enableFindInFilesControls(false);
// replce controls // replce controls

View File

@ -331,7 +331,7 @@ private :
void enableFindInFilesFunc() { void enableFindInFilesFunc() {
enableFindInFilesControls(); enableFindInFilesControls();
::EnableWindow(::GetDlgItem(_hSelf, IDOK), FALSE); //::EnableWindow(::GetDlgItem(_hSelf, IDOK), FALSE);
_currentStatus = FINDINFILES_DLG; _currentStatus = FINDINFILES_DLG;
gotoCorrectTab(); gotoCorrectTab();

View File

@ -73,7 +73,7 @@ BOOL CALLBACK WordStyleDlg::run_dlgProc(UINT Message, WPARAM wParam, LPARAM lPar
::SendDlgItemMessage(_hSelf, IDC_LANGUAGES_LIST, LB_ADDSTRING, 0, (LPARAM)_lsArray.getLexerDescFromIndex(i)); ::SendDlgItemMessage(_hSelf, IDC_LANGUAGES_LIST, LB_ADDSTRING, 0, (LPARAM)_lsArray.getLexerDescFromIndex(i));
} }
_hStyleList = ::GetDlgItem(_hSelf, IDC_STYLES_LIST); //_hStyleList = ::GetDlgItem(_hSelf, IDC_STYLES_LIST);
_hCheckBold = ::GetDlgItem(_hSelf, IDC_BOLD_CHECK); _hCheckBold = ::GetDlgItem(_hSelf, IDC_BOLD_CHECK);
_hCheckItalic = ::GetDlgItem(_hSelf, IDC_ITALIC_CHECK); _hCheckItalic = ::GetDlgItem(_hSelf, IDC_ITALIC_CHECK);
_hCheckUnderline = ::GetDlgItem(_hSelf, IDC_UNDERLINE_CHECK); _hCheckUnderline = ::GetDlgItem(_hSelf, IDC_UNDERLINE_CHECK);
@ -407,7 +407,7 @@ void WordStyleDlg::setStyleListFromLexer(int index)
// Fill out Styles listbox // Fill out Styles listbox
// Before filling out, we clean it // Before filling out, we clean it
::SendMessage(_hStyleList, LB_RESETCONTENT, 0, 0); ::SendDlgItemMessage(_hSelf, IDC_STYLES_LIST, LB_RESETCONTENT, 0, 0);
if (index) if (index)
{ {
@ -416,7 +416,6 @@ void WordStyleDlg::setStyleListFromLexer(int index)
const char *userExt = (_lsArray.getLexerStylerByName(langName))->getLexerUserExt(); const char *userExt = (_lsArray.getLexerStylerByName(langName))->getLexerUserExt();
::SendDlgItemMessage(_hSelf, IDC_DEF_EXT_EDIT, WM_SETTEXT, 0, (LPARAM)(ext)); ::SendDlgItemMessage(_hSelf, IDC_DEF_EXT_EDIT, WM_SETTEXT, 0, (LPARAM)(ext));
::SendDlgItemMessage(_hSelf, IDC_USER_EXT_EDIT, WM_SETTEXT, 0, (LPARAM)(userExt)); ::SendDlgItemMessage(_hSelf, IDC_USER_EXT_EDIT, WM_SETTEXT, 0, (LPARAM)(userExt));
//::SetWindowText(::GetDlgItem(_hSelf, IDC_USER_EXT_EDIT), userExt);
} }
::ShowWindow(::GetDlgItem(_hSelf, IDC_DEF_EXT_EDIT), index?SW_SHOW:SW_HIDE); ::ShowWindow(::GetDlgItem(_hSelf, IDC_DEF_EXT_EDIT), index?SW_SHOW:SW_HIDE);
::ShowWindow(::GetDlgItem(_hSelf, IDC_DEF_EXT_STATIC), index?SW_SHOW:SW_HIDE); ::ShowWindow(::GetDlgItem(_hSelf, IDC_DEF_EXT_STATIC), index?SW_SHOW:SW_HIDE);
@ -429,9 +428,9 @@ void WordStyleDlg::setStyleListFromLexer(int index)
for (int i = 0 ; i < lexerStyler.getNbStyler() ; i++) for (int i = 0 ; i < lexerStyler.getNbStyler() ; i++)
{ {
Style & style = lexerStyler.getStyler(i); Style & style = lexerStyler.getStyler(i);
::SendMessage(_hStyleList, LB_ADDSTRING, 0, (LPARAM)style._styleDesc); ::SendDlgItemMessage(_hSelf, IDC_STYLES_LIST, LB_ADDSTRING, 0, (LPARAM)style._styleDesc);
} }
::SendMessage(_hStyleList, LB_SETCURSEL, 0, 0); ::SendDlgItemMessage(_hSelf, IDC_STYLES_LIST, LB_SETCURSEL, 0, 0);
setVisualFromStyleList(); setVisualFromStyleList();
} }

View File

@ -53,7 +53,6 @@ public :
private : private :
COLORREF _colour; COLORREF _colour;
WNDPROC _oldProc; WNDPROC _oldProc;
//HFONT _hFont;
static BOOL CALLBACK staticProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam){ static BOOL CALLBACK staticProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam){
ColourStaticTextHooker *pColourStaticTextHooker = reinterpret_cast<ColourStaticTextHooker *>(::GetWindowLong(hwnd, GWL_USERDATA)); ColourStaticTextHooker *pColourStaticTextHooker = reinterpret_cast<ColourStaticTextHooker *>(::GetWindowLong(hwnd, GWL_USERDATA));
@ -95,7 +94,6 @@ private :
int _currentLexerIndex; int _currentLexerIndex;
HWND _hStyleList;
HWND _hCheckBold; HWND _hCheckBold;
HWND _hCheckItalic; HWND _hCheckItalic;
HWND _hCheckUnderline; HWND _hCheckUnderline;
@ -121,7 +119,7 @@ private :
Style & getCurrentStyler() { Style & getCurrentStyler() {
int styleIndex = int(::SendMessage(_hStyleList, LB_GETCURSEL, 0, 0)); int styleIndex = ::SendDlgItemMessage(_hSelf, IDC_STYLES_LIST, LB_GETCURSEL, 0, 0);
if (_currentLexerIndex == 0) if (_currentLexerIndex == 0)
return _globalStyles.getStyler(styleIndex); return _globalStyles.getStyler(styleIndex);
else else

View File

@ -100,6 +100,27 @@ void FileDialog::setExtFilter(const char *extText, const char *ext, ...)
_nbCharFileExt += exts.length() + 1; _nbCharFileExt += exts.length() + 1;
} }
void FileDialog::setExtsFilter(const char *extText, const char *exts)
{
// fill out the ext array for save as file dialog
if (_nbExt < nbExtMax)
strcpy(_extArray[_nbExt++], exts);
//
std::string extFilter = extText;
extFilter += " (";
extFilter += exts;
extFilter += ")";
char *pFileExt = _fileExt + _nbCharFileExt;
memcpy(pFileExt, extFilter.c_str(), extFilter.length() + 1);
_nbCharFileExt += extFilter.length() + 1;
pFileExt = _fileExt + _nbCharFileExt;
memcpy(pFileExt, exts, strlen(exts) + 1);
_nbCharFileExt += strlen(exts) + 1;
}
char * FileDialog::doOpenSingleFileDlg() char * FileDialog::doOpenSingleFileDlg()
{ {
char dir[MAX_PATH]; char dir[MAX_PATH];

View File

@ -37,6 +37,8 @@ class FileDialog
public: public:
FileDialog(HWND hwnd, HINSTANCE hInst); FileDialog(HWND hwnd, HINSTANCE hInst);
void setExtFilter(const char *, const char *, ...); void setExtFilter(const char *, const char *, ...);
void setExtsFilter(const char *extText, const char *exts);
void setDefFileName(const char *fn){strcpy(_fileName, fn);} void setDefFileName(const char *fn){strcpy(_fileName, fn);}
char * doSaveDlg(); char * doSaveDlg();
@ -76,9 +78,8 @@ protected :
private: private:
char _fileName[MAX_PATH*8]; char _fileName[MAX_PATH*8];
char _fileExt[MAX_PATH*2]; char _fileExt[MAX_PATH*10];
int _nbCharFileExt; int _nbCharFileExt;
//bool _isMultiSel;
stringVector _fileNames; stringVector _fileNames;
OPENFILENAME _ofn; OPENFILENAME _ofn;

View File

@ -627,7 +627,7 @@ BOOL CALLBACK DefaultNewDocDlg::run_dlgProc(UINT Message, WPARAM wParam, LPARAM
//if ((LangType)i != L_END) //if ((LangType)i != L_END)
{ {
int cmdID = pNppParam->langTypeToCommandID((LangType)i); int cmdID = pNppParam->langTypeToCommandID((LangType)i);
if (getNameStrFromCmd(cmdID, str) == TYPE_CMD) if ((cmdID != -1) && (getNameStrFromCmd(cmdID, str) == TYPE_CMD))
{ {
_langList.push_back(LangID_Name((LangType)i, str)); _langList.push_back(LangID_Name((LangType)i, str));
::SendDlgItemMessage(_hSelf, IDC_COMBO_DEFAULTLANG, CB_ADDSTRING, 0, (LPARAM)str.c_str()); ::SendDlgItemMessage(_hSelf, IDC_COMBO_DEFAULTLANG, CB_ADDSTRING, 0, (LPARAM)str.c_str());

View File

@ -1,117 +1,115 @@
//this file is part of notepad++ //this file is part of notepad++
//Copyright (C)2003 Don HO ( donho@altern.org ) //Copyright (C)2003 Don HO ( donho@altern.org )
// //
//This program is free software; you can redistribute it and/or //This program is free software; you can redistribute it and/or
//modify it under the terms of the GNU General Public License //modify it under the terms of the GNU General Public License
//as published by the Free Software Foundation; either //as published by the Free Software Foundation; either
//version 2 of the License, or (at your option) any later version. //version 2 of the License, or (at your option) any later version.
// //
//This program is distributed in the hope that it will be useful, //This program is distributed in the hope that it will be useful,
//but WITHOUT ANY WARRANTY; without even the implied warranty of //but WITHOUT ANY WARRANTY; without even the implied warranty of
//MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the //MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
//GNU General Public License for more details. //GNU General Public License for more details.
// //
//You should have received a copy of the GNU General Public License //You should have received a copy of the GNU General Public License
//along with this program; if not, write to the Free Software //along with this program; if not, write to the Free Software
//Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. //Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
// created by Daniel Volk mordorpost@volkarts.com // created by Daniel Volk mordorpost@volkarts.com
#include "RunMacroDlg.h" #include "RunMacroDlg.h"
#include "ScintillaEditView.h" #include "ScintillaEditView.h"
#include "Notepad_plus_msgs.h" #include "Notepad_plus_msgs.h"
#include "constant.h" #include "constant.h"
BOOL CALLBACK RunMacroDlg::run_dlgProc(UINT message, WPARAM wParam, LPARAM lParam) BOOL CALLBACK RunMacroDlg::run_dlgProc(UINT message, WPARAM wParam, LPARAM lParam)
{ {
switch (message) switch (message)
{ {
case WM_INITDIALOG : case WM_INITDIALOG :
{ {
initMacroList(); initMacroList();
char str[512]; char str[512];
ltoa(m_Times, str, 10); ltoa(m_Times, str, 10);
::SetDlgItemText(_hSelf, IDC_M_RUN_TIMES, str); ::SetDlgItemText(_hSelf, IDC_M_RUN_TIMES, str);
switch ( m_Mode ) switch ( m_Mode )
{ {
case RM_RUN_MULTI: case RM_RUN_MULTI:
check(IDC_M_RUN_MULTI); check(IDC_M_RUN_MULTI);
break; break;
case RM_RUN_EOF: case RM_RUN_EOF:
check(IDC_M_RUN_EOF); check(IDC_M_RUN_EOF);
break; break;
} }
::SendDlgItemMessage(_hSelf, IDC_M_RUN_TIMES, EM_LIMITTEXT, 4, 0); ::SendDlgItemMessage(_hSelf, IDC_M_RUN_TIMES, EM_LIMITTEXT, 4, 0);
goToCenter(); goToCenter();
return TRUE; return TRUE;
} }
case WM_COMMAND : case WM_COMMAND :
{ {
if (HIWORD(wParam) == EN_CHANGE) if (HIWORD(wParam) == EN_CHANGE)
{ {
switch (LOWORD(wParam)) switch (LOWORD(wParam))
{ {
case IDC_M_RUN_TIMES: case IDC_M_RUN_TIMES:
check(IDC_M_RUN_MULTI); check(IDC_M_RUN_MULTI);
return TRUE; return TRUE;
default: default:
return FALSE; return FALSE;
} }
} }
switch (wParam) switch (wParam)
{ {
case IDCANCEL : case IDCANCEL :
::ShowWindow(_hSelf, SW_HIDE); ::ShowWindow(_hSelf, SW_HIDE);
return TRUE; return TRUE;
case IDOK : case IDOK :
if ( isCheckedOrNot(IDC_M_RUN_MULTI) ) if ( isCheckedOrNot(IDC_M_RUN_MULTI) )
{ {
//char str[512]; m_Mode = RM_RUN_MULTI;
m_Times = ::GetDlgItemInt(_hSelf, IDC_M_RUN_TIMES, NULL, FALSE);
m_Mode = RM_RUN_MULTI; }
m_Times = ::GetDlgItemInt(_hSelf, IDC_M_RUN_TIMES, NULL, FALSE); else if ( isCheckedOrNot(IDC_M_RUN_EOF) )
} {
else if ( isCheckedOrNot(IDC_M_RUN_EOF) ) m_Mode = RM_RUN_EOF;
{ }
m_Mode = RM_RUN_EOF;
} if (::SendDlgItemMessage(_hSelf, IDC_MACRO_COMBO, CB_GETCOUNT, 0, 0))
::SendMessage(_hParent, WM_MACRODLGRUNMACRO, 0, 0);
if (::SendDlgItemMessage(_hSelf, IDC_MACRO_COMBO, CB_GETCOUNT, 0, 0))
::SendMessage(_hParent, WM_MACRODLGRUNMACRO, 0, 0); return TRUE;
return TRUE;
default: default:
if ((HIWORD(wParam) == CBN_SELCHANGE) && (LOWORD(wParam) == IDC_MACRO_COMBO)) if ((HIWORD(wParam) == CBN_SELCHANGE) && (LOWORD(wParam) == IDC_MACRO_COMBO))
{ {
m_macroIndex = ::SendDlgItemMessage(_hSelf, IDC_MACRO_COMBO, CB_GETCURSEL, 0, 0); m_macroIndex = ::SendDlgItemMessage(_hSelf, IDC_MACRO_COMBO, CB_GETCURSEL, 0, 0);
return TRUE; return TRUE;
} }
} }
} }
} }
return FALSE; return FALSE;
} }
void RunMacroDlg::check(int id) void RunMacroDlg::check(int id)
{ {
// IDC_M_RUN_MULTI // IDC_M_RUN_MULTI
if ( id == IDC_M_RUN_MULTI ) if ( id == IDC_M_RUN_MULTI )
::SendDlgItemMessage(_hSelf, IDC_M_RUN_MULTI, BM_SETCHECK, BST_CHECKED, 0); ::SendDlgItemMessage(_hSelf, IDC_M_RUN_MULTI, BM_SETCHECK, BST_CHECKED, 0);
else else
::SendDlgItemMessage(_hSelf, IDC_M_RUN_MULTI, BM_SETCHECK, BST_UNCHECKED, 0); ::SendDlgItemMessage(_hSelf, IDC_M_RUN_MULTI, BM_SETCHECK, BST_UNCHECKED, 0);
// IDC_M_RUN_EOF // IDC_M_RUN_EOF
if ( id == IDC_M_RUN_EOF ) if ( id == IDC_M_RUN_EOF )
::SendDlgItemMessage(_hSelf, IDC_M_RUN_EOF, BM_SETCHECK, BST_CHECKED, 0); ::SendDlgItemMessage(_hSelf, IDC_M_RUN_EOF, BM_SETCHECK, BST_CHECKED, 0);
else else
::SendDlgItemMessage(_hSelf, IDC_M_RUN_EOF, BM_SETCHECK, BST_UNCHECKED, 0); ::SendDlgItemMessage(_hSelf, IDC_M_RUN_EOF, BM_SETCHECK, BST_UNCHECKED, 0);
} }

View File

@ -382,5 +382,18 @@ void recordedMacroStep::PlayBack(Window* pNotepad, ScintillaEditView *pEditView)
if (MacroType == mtUseSParameter) if (MacroType == mtUseSParameter)
lParam = reinterpret_cast<long>(sParameter.c_str()); lParam = reinterpret_cast<long>(sParameter.c_str());
pEditView->execute(message, wParameter, lParam); pEditView->execute(message, wParameter, lParam);
if ( (message == SCI_SETTEXT)
|| (message == SCI_REPLACESEL)
|| (message == SCI_ADDTEXT)
|| (message == SCI_ADDSTYLEDTEXT)
|| (message == SCI_INSERTTEXT)
|| (message == SCI_APPENDTEXT) ) {
SCNotification scnN;
scnN.nmhdr.code = SCN_CHARADDED;
scnN.nmhdr.hwndFrom = pEditView->getHSelf();
scnN.nmhdr.idFrom = 0;
scnN.ch = sParameter.at(0);
::SendMessage(pNotepad->getHSelf(), WM_NOTIFY, 0, reinterpret_cast<LPARAM>(&scnN));
}
} }
} }