bool WdeOpenResource( char *fn ) { char *name; WdeResInfo *res_info; WdeGetFileStruct gf; bool ok, got_name; WdeSetWaitCursor( TRUE ); res_info = NULL; name = NULL; got_name = FALSE; if( fn != NULL ) { if( WdeFileExists( fn ) ) { name = WdeStrDup( fn ); gf.fn_offset = WRFindFnOffset( name ); } else { return( FALSE ); } } else { gf.file_name = NULL; gf.title = WdeResOpenTitle; gf.filter = WdeResOpenFilter; ok = ((name = WdeGetOpenFileName( &gf )) != NULL); } if( ok ) { got_name = TRUE; ok = ((res_info = WdeLoadResource( name )) != NULL); } if( ok ) { res_info->hash_table = WRInitHashTable(); ok = (res_info->hash_table != NULL); } if( ok ) { if( res_info->info->internal_type != WR_DONT_KNOW ) { res_info->is32bit = WRIs32Bit( res_info->info->internal_type ); } else { res_info->is32bit = WRIs32Bit( res_info->info->file_type ); } ok = WdeAddDlgItems( res_info ); } if( ok ) { WdeFindAndLoadSymbols( res_info ); ok = WdeCreateResourceWindow( res_info, gf.fn_offset, NULL ); } if( ok ) { if( WdeResInfoHasDialogs( res_info ) ) { WdeSelectDialog( res_info ); } else { WdeDisplayErrorMsg( WDE_PRJHASNODIALOGS ); } ListAddElt( &WdeResList, (void *)res_info ); WdeSetResModified( res_info, FALSE ); WdeCheckBaseScrollbars( FALSE ); } if( !ok ) { if( res_info != NULL ) { WdeFreeResInfo( res_info ); res_info = NULL; } if( got_name ) { WdeDisplayErrorMsg( WDE_RESOURCESNOTLOADED ); } } if( name != NULL ) { WRMemFree( name ); } WdeSetWaitCursor( FALSE ); return( ok ); }
Bool WdeLoadCustomLib ( Bool ms_lib, Bool load_only ) { char *name; HINSTANCE inst; WdeCustLib *lib; BOOL ret; WdeGetFileStruct gf; gf.file_name = NULL; gf.title = WdeCustOpenTitle; gf.filter = WdeCustFilter; name = WdeGetOpenFileName ( &gf ); if ( !name ) { return ( FALSE ); } inst = LoadLibrary ( name ); if ( inst <= HINSTANCE_ERROR ) { WdeWriteTrail("WdeLoadCustomLib: LoadLibrary call failed!"); WdeMemFree ( name ); return ( FALSE ); } lib = WdeAllocCustLib (); if ( lib == NULL ) { WdeWriteTrail("WdeLoadCustomLib: WdeAllocCustLib failed!"); WdeMemFree ( name ); FreeLibrary ( inst ); return ( FALSE ); } lib->inst = inst; lib->ms_lib = ms_lib; lib->load_only = load_only; lib->file_name = name; if( load_only ) { WdeSetStatusByID( -1, WDE_LIBRARYLOADED ); ret = TRUE; } else { if( ms_lib ) { ret = WdeLoadMSCustomControls( lib ); } else { ret = WdeLoadBorCustomControls( lib ); } } if ( !ret ) { WdeFreeCustLib ( lib ); return ( FALSE ); } if ( load_only ) { WdeInsertObject ( &WdeLibList, (void *) lib ); } else { WdeInsertObject ( &WdeCustomLibList, (void *) lib ); } return( TRUE ); }
bool WdeSaveObjectInto( WdeResInfo *rinfo, WdeDialogBoxInfo *dbi, WResID *name, void *data, uint_32 size, WResLangType *lang ) { char *fname; WdeGetFileStruct gf; bool dup; WRSaveIntoData idata; WdeResDlgItem ditem; bool is_rc; bool ok; idata.type = NULL; fname = NULL; dup = false; ok = (rinfo != NULL && dbi != NULL && name != NULL && data != NULL); if( ok ) { gf.file_name = NULL; gf.title = WdeDlgSaveIntoTitle; gf.filter = WdeResSaveFilter; fname = WdeGetOpenFileName( &gf ); ok = (fname != NULL && *fname != '\0'); } if( ok ) { is_rc = WdeIsFileAnRCFile( fname ); if( !is_rc ) { ok = ((idata.type = WResIDFromNum( RESOURCE2INT( RT_DIALOG ) )) != NULL); } } if( ok ) { if( is_rc ) { memset( &ditem, 0, sizeof( WdeResDlgItem ) ); ditem.dialog_info = dbi; ditem.dialog_name = name; ok = WdeSaveObjectToRC( fname, rinfo, &ditem, TRUE ); } else { idata.next = NULL; idata.name = name; idata.data = data; idata.lang = *lang; idata.size = size; idata.MemFlags = dbi->MemoryFlags; ok = WRSaveObjectInto( fname, &idata, &dup ) && !dup; } } if( dup ) { WdeDisplayErrorMsg( WDE_DUPRESNAMEINFILE ); } if( fname != NULL ) { WRMemFree( fname ); } if( idata.type != NULL ) { WResIDFree( idata.type ); } return( ok ); }