/* * CmdDlgProc - callback routine for command dialog */ BOOL WINEXP CmdDlgProc( HWND hwnd, UINT msg, UINT wparam, LONG lparam ) { int curr; int i; int cmd; DWORD index; char str[MAX_INPUT_LINE]; history_data *h; char *ptr; lparam = lparam; switch( msg ) { case WM_INITDIALOG: CenterWindowInRoot( hwnd ); EditSubClass( hwnd, CMD_EDIT, &CLHist ); SetDlgItemText( hwnd, CMD_EDIT, cmdStr ); curr = CLHist.curr + CLHist.max - 1; for( i = 0; i < CLHist.max; i++ ) { if( CLHist.data[curr % CLHist.max] != NULL ) { SendDlgItemMessage( hwnd, CMD_LISTBOX, LB_ADDSTRING, 0, (LONG) CLHist.data[curr % CLHist.max] ); } curr--; if( curr < 0 ) { break; } } return( TRUE ); case WM_CLOSE: PostMessage( hwnd, WM_COMMAND, IDCANCEL, 0L ); return( TRUE ); case WM_COMMAND: switch( LOWORD( wparam ) ) { case CMD_LISTBOX: cmd = GET_WM_COMMAND_CMD( wparam, lparam ); if( cmd == LBN_SELCHANGE || cmd == LBN_DBLCLK ) { index = SendDlgItemMessage( hwnd, CMD_LISTBOX, LB_GETCURSEL, 0, 0L ); if( index == LB_ERR ) { break; } SendDlgItemMessage( hwnd, CMD_LISTBOX, LB_GETTEXT, index, (LONG) str ); SetDlgItemText( hwnd, CMD_EDIT, str ); if( cmd == LBN_DBLCLK ) { PostMessage( hwnd, WM_COMMAND, IDOK, 0L ); } } break; case IDCANCEL: RemoveEditSubClass( hwnd, CMD_EDIT ); EndDialog( hwnd, FALSE ); break; case IDOK: GetDlgItemText( hwnd, CMD_EDIT, cmdStr, cmdLen ); h = &CLHist; curr = h->curr + h->max - 1; ptr = NULL; if( curr >= 0 ) { ptr = h->data[curr % h->max]; } if( ptr == NULL || strcmp( ptr, cmdStr ) ) { AddString2( &(h->data[h->curr % h->max]), cmdStr ); h->curr += 1; } RemoveEditSubClass( hwnd, CMD_EDIT ); EndDialog( hwnd, TRUE ); break; default: return( FALSE ); } return( TRUE ); } return( FALSE ); } /* CmdDlgProc */
/* * RepDlgProc - callback routine for find & replace dialog */ BOOL WINEXP RepDlgProc( HWND hwnd, UINT msg, UINT wparam, LONG lparam ) { int curr; int i; int cmd; DWORD index; char find[MAX_INPUT_LINE]; history_data *h; char *ptr; RECT pos; lparam = lparam; switch( msg ) { case WM_INITDIALOG: if( findData.posx == -1 && findData.posy == -1 ) { CenterWindowInRoot( hwnd ); } else { SetWindowPos( hwnd, (HWND)NULLHANDLE, findData.posx, findData.posy, 0, 0, SWP_NOACTIVATE | SWP_NOSIZE | SWP_NOREDRAW | SWP_NOZORDER ); } EditSubClass( hwnd, REP_FIND, &FindHist ); CheckDlgButton( hwnd, REP_IGNORE_CASE, findData.case_ignore ); CheckDlgButton( hwnd, REP_REGULAR_EXPRESSIONS, findData.use_regexp ); // CheckDlgButton( hwnd, REP_SEARCH_BACKWARDS, !findData.search_forward ); CheckDlgButton( hwnd, REP_SEARCH_WRAP, findData.search_wrap ); CheckDlgButton( hwnd, REP_PROMPT_ON_REPLACE, findData.prompt ); // CheckDlgButton( hwnd, REP_SELECTION_ONLY, findData.selection ); SetDlgItemText( hwnd, REP_FIND, findData.find ); SetDlgItemText( hwnd, REP_REPLACE, findData.replace ); curr = FindHist.curr + FindHist.max - 1; for( i = 0; i < FindHist.max; i++ ) { if( FindHist.data[curr % FindHist.max] != NULL ) { SendDlgItemMessage( hwnd, REP_LISTBOX, LB_ADDSTRING, 0, (LONG) FindHist.data[curr % FindHist.max] ); } curr--; if( curr < 0 ) { break; } } return( TRUE ); case WM_CLOSE: GetWindowRect( hwnd, &pos ); findData.posx = pos.left; findData.posy = pos.top; PostMessage( hwnd, WM_COMMAND, GET_WM_COMMAND_MPS( IDCANCEL, 0, 0 ) ); return( TRUE ); case WM_COMMAND: switch( LOWORD( wparam ) ) { case REP_LISTBOX: cmd = GET_WM_COMMAND_CMD( wparam, lparam ); if( cmd == LBN_SELCHANGE || cmd == LBN_DBLCLK ) { index = SendDlgItemMessage( hwnd, REP_LISTBOX, LB_GETCURSEL, 0, 0L ); if( index == LB_ERR ) { break; } SendDlgItemMessage( hwnd, REP_LISTBOX, LB_GETTEXT, index, (LONG) find ); SetDlgItemText( hwnd, REP_FIND, find ); if( cmd == LBN_DBLCLK ) { PostMessage( hwnd, WM_COMMAND, GET_WM_COMMAND_MPS( IDOK, 0, 0 ) ); } } break; case IDCANCEL: GetWindowRect( hwnd, &pos ); findData.posx = pos.left; findData.posy = pos.top; RemoveEditSubClass( hwnd, REP_FIND ); EndDialog( hwnd, FALSE ); break; case IDOK: GetDlgItemText( hwnd, REP_FIND, findData.find, findData.findlen ); GetDlgItemText( hwnd, REP_REPLACE, findData.replace, findData.replacelen ); findData.case_ignore = IsDlgButtonChecked( hwnd, REP_IGNORE_CASE ); findData.use_regexp = IsDlgButtonChecked( hwnd, REP_REGULAR_EXPRESSIONS ); // findData.search_forward = !IsDlgButtonChecked( hwnd, REP_SEARCH_BACKWARDS ); findData.search_wrap = IsDlgButtonChecked( hwnd, REP_SEARCH_WRAP ); findData.prompt = IsDlgButtonChecked( hwnd, REP_PROMPT_ON_REPLACE ); // findData.selection = IsDlgButtonChecked( hwnd, REP_SELECTION_ONLY ); h = &FindHist; curr = h->curr + h->max - 1; ptr = NULL; if( curr >= 0 ) { ptr = h->data[curr % h->max]; } if( ptr == NULL || strcmp( ptr, findData.find ) ) { AddString2( &(h->data[h->curr % h->max]), findData.find ); h->curr += 1; } GetWindowRect( hwnd, &pos ); findData.posx = pos.left; findData.posy = pos.top; RemoveEditSubClass( hwnd, REP_FIND ); EndDialog( hwnd, TRUE ); break; default: return( FALSE ); } return( TRUE ); } return( FALSE ); } /* RepDlgProc */