mirror of
git://source.winehq.org/git/wine.git
synced 2024-08-31 11:54:06 +00:00
notepad: Implement replace.
This commit is contained in:
parent
4d4819d8c4
commit
3137600651
|
@ -53,6 +53,7 @@ POPUP "&Bearbeiten" {
|
||||||
POPUP "&Suchen" {
|
POPUP "&Suchen" {
|
||||||
MENUITEM "Suchen...\tStrg+F", CMD_SEARCH
|
MENUITEM "Suchen...\tStrg+F", CMD_SEARCH
|
||||||
MENUITEM "&Weitersuchen\tF3", CMD_SEARCH_NEXT
|
MENUITEM "&Weitersuchen\tF3", CMD_SEARCH_NEXT
|
||||||
|
MENUITEM "&Ersetzen...\tStrg+H", CMD_REPLACE
|
||||||
}
|
}
|
||||||
POPUP "&Hilfe" {
|
POPUP "&Hilfe" {
|
||||||
MENUITEM "&Inhalt", CMD_HELP_CONTENTS
|
MENUITEM "&Inhalt", CMD_HELP_CONTENTS
|
||||||
|
|
|
@ -53,6 +53,7 @@ POPUP "&Edit" {
|
||||||
POPUP "&Search" {
|
POPUP "&Search" {
|
||||||
MENUITEM "&Search...\tCtrl+F", CMD_SEARCH
|
MENUITEM "&Search...\tCtrl+F", CMD_SEARCH
|
||||||
MENUITEM "&Search next\tF3", CMD_SEARCH_NEXT
|
MENUITEM "&Search next\tF3", CMD_SEARCH_NEXT
|
||||||
|
MENUITEM "&Replace...\tCtrl+H", CMD_REPLACE
|
||||||
}
|
}
|
||||||
POPUP "&Help" {
|
POPUP "&Help" {
|
||||||
MENUITEM "&Contents", CMD_HELP_CONTENTS
|
MENUITEM "&Contents", CMD_HELP_CONTENTS
|
||||||
|
|
|
@ -747,6 +747,25 @@ VOID DIALOG_SearchNext(VOID)
|
||||||
NOTEPAD_DoFind(&Globals.lastFind);
|
NOTEPAD_DoFind(&Globals.lastFind);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
VOID DIALOG_Replace(VOID)
|
||||||
|
{
|
||||||
|
ZeroMemory(&Globals.find, sizeof(Globals.find));
|
||||||
|
Globals.find.lStructSize = sizeof(Globals.find);
|
||||||
|
Globals.find.hwndOwner = Globals.hMainWnd;
|
||||||
|
Globals.find.hInstance = Globals.hInstance;
|
||||||
|
Globals.find.lpstrFindWhat = Globals.szFindText;
|
||||||
|
Globals.find.wFindWhatLen = SIZEOF(Globals.szFindText);
|
||||||
|
Globals.find.lpstrReplaceWith = Globals.szReplaceText;
|
||||||
|
Globals.find.wReplaceWithLen = SIZEOF(Globals.szReplaceText);
|
||||||
|
Globals.find.Flags = FR_DOWN|FR_HIDEWHOLEWORD;
|
||||||
|
|
||||||
|
/* We only need to create the modal FindReplace dialog which will */
|
||||||
|
/* notify us of incoming events using hMainWnd Window Messages */
|
||||||
|
|
||||||
|
Globals.hFindReplaceDlg = ReplaceText(&Globals.find);
|
||||||
|
assert(Globals.hFindReplaceDlg !=0);
|
||||||
|
}
|
||||||
|
|
||||||
VOID DIALOG_HelpContents(VOID)
|
VOID DIALOG_HelpContents(VOID)
|
||||||
{
|
{
|
||||||
WinHelp(Globals.hMainWnd, helpfileW, HELP_INDEX, 0);
|
WinHelp(Globals.hMainWnd, helpfileW, HELP_INDEX, 0);
|
||||||
|
|
|
@ -38,6 +38,7 @@ VOID DIALOG_EditWrap(VOID);
|
||||||
|
|
||||||
VOID DIALOG_Search(VOID);
|
VOID DIALOG_Search(VOID);
|
||||||
VOID DIALOG_SearchNext(VOID);
|
VOID DIALOG_SearchNext(VOID);
|
||||||
|
VOID DIALOG_Replace(VOID);
|
||||||
|
|
||||||
VOID DIALOG_SelectFont(VOID);
|
VOID DIALOG_SelectFont(VOID);
|
||||||
|
|
||||||
|
|
|
@ -294,6 +294,7 @@ static int NOTEPAD_MenuCommand(WPARAM wParam)
|
||||||
|
|
||||||
case CMD_SEARCH: DIALOG_Search(); break;
|
case CMD_SEARCH: DIALOG_Search(); break;
|
||||||
case CMD_SEARCH_NEXT: DIALOG_SearchNext(); break;
|
case CMD_SEARCH_NEXT: DIALOG_SearchNext(); break;
|
||||||
|
case CMD_REPLACE: DIALOG_Replace(); break;
|
||||||
|
|
||||||
case CMD_WRAP: DIALOG_EditWrap(); break;
|
case CMD_WRAP: DIALOG_EditWrap(); break;
|
||||||
case CMD_FONT: DIALOG_SelectFont(); break;
|
case CMD_FONT: DIALOG_SelectFont(); break;
|
||||||
|
@ -414,6 +415,77 @@ void NOTEPAD_DoFind(FINDREPLACE *fr)
|
||||||
SendMessage(Globals.hEdit, EM_SETSEL, found - content, found - content + len);
|
SendMessage(Globals.hEdit, EM_SETSEL, found - content, found - content + len);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void NOTEPAD_DoReplace(FINDREPLACE *fr)
|
||||||
|
{
|
||||||
|
LPTSTR content;
|
||||||
|
int len = lstrlen(fr->lpstrFindWhat);
|
||||||
|
int fileLen;
|
||||||
|
DWORD pos;
|
||||||
|
DWORD pos_start;
|
||||||
|
|
||||||
|
fileLen = GetWindowTextLength(Globals.hEdit) + 1;
|
||||||
|
content = HeapAlloc(GetProcessHeap(), 0, fileLen * sizeof(TCHAR));
|
||||||
|
if (!content) return;
|
||||||
|
GetWindowText(Globals.hEdit, content, fileLen);
|
||||||
|
|
||||||
|
SendMessage(Globals.hEdit, EM_GETSEL, (WPARAM)&pos_start, (LPARAM)&pos);
|
||||||
|
switch (fr->Flags & (FR_DOWN|FR_MATCHCASE))
|
||||||
|
{
|
||||||
|
case FR_DOWN:
|
||||||
|
if ( pos-pos_start == len && StrCmpNI(fr->lpstrFindWhat, content+pos_start, len) == 0)
|
||||||
|
SendMessage(Globals.hEdit, EM_REPLACESEL, TRUE, (LPARAM)fr->lpstrReplaceWith);
|
||||||
|
break;
|
||||||
|
case FR_DOWN|FR_MATCHCASE:
|
||||||
|
if ( pos-pos_start == len && StrCmpN(fr->lpstrFindWhat, content+pos_start, len) == 0)
|
||||||
|
SendMessage(Globals.hEdit, EM_REPLACESEL, TRUE, (LPARAM)fr->lpstrReplaceWith);
|
||||||
|
break;
|
||||||
|
default: /* shouldn't happen */
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
HeapFree(GetProcessHeap(), 0, content);
|
||||||
|
|
||||||
|
NOTEPAD_DoFind(fr);
|
||||||
|
}
|
||||||
|
|
||||||
|
void NOTEPAD_DoReplaceAll(FINDREPLACE *fr)
|
||||||
|
{
|
||||||
|
LPTSTR content;
|
||||||
|
LPTSTR found;
|
||||||
|
int len = lstrlen(fr->lpstrFindWhat);
|
||||||
|
int fileLen;
|
||||||
|
DWORD pos;
|
||||||
|
|
||||||
|
SendMessage(Globals.hEdit, EM_SETSEL, 0, 0);
|
||||||
|
while(TRUE){
|
||||||
|
fileLen = GetWindowTextLength(Globals.hEdit) + 1;
|
||||||
|
content = HeapAlloc(GetProcessHeap(), 0, fileLen * sizeof(TCHAR));
|
||||||
|
if (!content) return;
|
||||||
|
GetWindowText(Globals.hEdit, content, fileLen);
|
||||||
|
|
||||||
|
SendMessage(Globals.hEdit, EM_GETSEL, 0, (LPARAM)&pos);
|
||||||
|
switch (fr->Flags & (FR_DOWN|FR_MATCHCASE))
|
||||||
|
{
|
||||||
|
case FR_DOWN:
|
||||||
|
found = StrStrI(content+pos, fr->lpstrFindWhat);
|
||||||
|
break;
|
||||||
|
case FR_DOWN|FR_MATCHCASE:
|
||||||
|
found = StrStr(content+pos, fr->lpstrFindWhat);
|
||||||
|
break;
|
||||||
|
default: /* shouldn't happen */
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
HeapFree(GetProcessHeap(), 0, content);
|
||||||
|
|
||||||
|
if(found == NULL)
|
||||||
|
{
|
||||||
|
SendMessage(Globals.hEdit, EM_SETSEL, 0, 0);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
SendMessage(Globals.hEdit, EM_SETSEL, found - content, found - content + len);
|
||||||
|
SendMessage(Globals.hEdit, EM_REPLACESEL, TRUE, (LPARAM)fr->lpstrReplaceWith);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/***********************************************************************
|
/***********************************************************************
|
||||||
*
|
*
|
||||||
* NOTEPAD_WndProc
|
* NOTEPAD_WndProc
|
||||||
|
@ -432,6 +504,16 @@ static LRESULT WINAPI NOTEPAD_WndProc(HWND hWnd, UINT msg, WPARAM wParam,
|
||||||
Globals.lastFind = *fr;
|
Globals.lastFind = *fr;
|
||||||
NOTEPAD_DoFind(fr);
|
NOTEPAD_DoFind(fr);
|
||||||
}
|
}
|
||||||
|
if (fr->Flags & FR_REPLACE)
|
||||||
|
{
|
||||||
|
Globals.lastFind = *fr;
|
||||||
|
NOTEPAD_DoReplace(fr);
|
||||||
|
}
|
||||||
|
if (fr->Flags & FR_REPLACEALL)
|
||||||
|
{
|
||||||
|
Globals.lastFind = *fr;
|
||||||
|
NOTEPAD_DoReplaceAll(fr);
|
||||||
|
}
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -35,6 +35,7 @@ typedef struct
|
||||||
LOGFONT lfFont;
|
LOGFONT lfFont;
|
||||||
BOOL bWrapLongLines;
|
BOOL bWrapLongLines;
|
||||||
WCHAR szFindText[MAX_PATH];
|
WCHAR szFindText[MAX_PATH];
|
||||||
|
WCHAR szReplaceText[MAX_PATH];
|
||||||
WCHAR szFileName[MAX_PATH];
|
WCHAR szFileName[MAX_PATH];
|
||||||
WCHAR szFileTitle[MAX_PATH];
|
WCHAR szFileTitle[MAX_PATH];
|
||||||
WCHAR szFilter[2 * MAX_STRING_LEN + 100];
|
WCHAR szFilter[2 * MAX_STRING_LEN + 100];
|
||||||
|
|
|
@ -45,6 +45,7 @@
|
||||||
|
|
||||||
#define CMD_SEARCH 0x120
|
#define CMD_SEARCH 0x120
|
||||||
#define CMD_SEARCH_NEXT 0x121
|
#define CMD_SEARCH_NEXT 0x121
|
||||||
|
#define CMD_REPLACE 0x122
|
||||||
|
|
||||||
#define CMD_WRAP 0x119
|
#define CMD_WRAP 0x119
|
||||||
#define CMD_FONT 0x140
|
#define CMD_FONT 0x140
|
||||||
|
|
|
@ -30,6 +30,7 @@ ID_ACCEL ACCELERATORS
|
||||||
"^A", CMD_SELECT_ALL
|
"^A", CMD_SELECT_ALL
|
||||||
"^C", CMD_COPY
|
"^C", CMD_COPY
|
||||||
"^F", CMD_SEARCH
|
"^F", CMD_SEARCH
|
||||||
|
"H", CMD_REPLACE, VIRTKEY, CONTROL
|
||||||
"^N", CMD_NEW
|
"^N", CMD_NEW
|
||||||
"^O", CMD_OPEN
|
"^O", CMD_OPEN
|
||||||
"^P", CMD_PRINT
|
"^P", CMD_PRINT
|
||||||
|
|
Loading…
Reference in a new issue