示例#1
0
/*
 * GUIGetFileName - get a file name from the user
 */
int GUIGetFileName( gui_window *gui, open_file_name *ofn )
{
    char        olddir[_MAX_PATH];
    dlg_info    dlg;

    if( !ControlsInitialized ) {
        InitDlgControls();
        ControlsInitialized = true;
    }

    dlg.currOFN = ofn;
    dlg.currExt = NULL;
    dlg.currExtIndex = ofn->filter_index;
    dlg.dialogRC = OFN_RC_NO_FILE_SELECTED;

#if !defined( __UNIX__ ) && !defined( __NETWARE__ )
    dlgControls[DRIVE_LIST_INDEX].text = buildDriveList();
    if( dlgControls[DRIVE_LIST_INDEX].text == NULL ) {
        return( OFN_RC_FAILED_TO_INITIALIZE );
    }
#endif
    dlgControls[FILE_TYPES_INDEX].text =
        buildFileTypes( &dlg, ofn->filter_list );
    if( dlgControls[FILE_TYPES_INDEX].text == NULL || dlg.fileExtensions == NULL ) {
        return( OFN_RC_FAILED_TO_INITIALIZE );
    }

    getcwd( olddir, sizeof( olddir ) );
    goToDir( gui, ofn->initial_dir );

    GUIModalDlgOpen( gui, ofn->title, DLG_FILE_ROWS, DLG_FILE_COLS,
                dlgControls, NUM_CONTROLS, &GetFileNameEvent, &dlg );

    if( !(ofn->flags & OFN_CHANGEDIR) ) {
        goToDir( gui, olddir );
    }

#if !defined( __UNIX__ ) && !defined( __NETWARE__ )
    freeStringList( &dlgControls[DRIVE_LIST_INDEX].text );
#endif
    freeStringList( &dlgControls[FILE_TYPES_INDEX].text );
    freeStringList( &dlg.fileExtensions );
    GUIMemFree( dlg.currExt );
    return( dlg.dialogRC );

} /* GUIGetFileName */
示例#2
0
/*
 * GUIGetFileName - get a file name from the user
 */
int GUIGetFileName( gui_window *gui, open_file_name *ofn )
{
    char        olddir[_MAX_PATH];
    dlg_info    dlg;
    bool        ok;

    if( !ControlsInitialized ) {
        InitDlgControls();
        ControlsInitialized = true;
    }
#if !defined( __UNIX__ ) && !defined( __NETWARE__ )
    if( !buildDriveList() ) {
        return( OFN_RC_FAILED_TO_INITIALIZE );
    }
#endif
    ok = buildFileTypesExts( &dlg, ofn->filter_list );
    if( !ok ) {
        dlg.currExt = NULL;
        dlg.dialogRC = OFN_RC_FAILED_TO_INITIALIZE;
    } else {
        dlg.currOFN = ofn;
        dlg.currExt = NULL;
        dlg.currExtIndex = ofn->filter_index;
        dlg.dialogRC = OFN_RC_NO_FILE_SELECTED;

        getcwd( olddir, sizeof( olddir ) );
        goToDir( gui, ofn->initial_dir );

        GUIModalDlgOpen( gui, ofn->title, DLG_FILE_ROWS, DLG_FILE_COLS,
                    dlgControls, NUM_CONTROLS, &GetFileNameEvent, &dlg );

        if( !(ofn->flags & OFN_CHANGEDIR) ) {
            goToDir( gui, olddir );
        }
    }
#if !defined( __UNIX__ ) && !defined( __NETWARE__ )
    freeDriveTextList();
#endif
    freeFileTypesTextList();
    freeFileExtsTextList();
    GUIMemFree( dlg.currExt );
    return( dlg.dialogRC );

} /* GUIGetFileName */