Example #1
0
/*
 * 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 */
Example #2
0
/*
 * 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 */