bool WRESaveSymbols( WRHashTable *table, char **file_name, bool prompt ) { char *name; WREGetFileStruct gf; bool ok; if( table == NULL || file_name == NULL ) { return( FALSE ); } if( WRIsDefaultHashTable( table ) ) { return( TRUE ); } ok = true; WRESetStatusText( NULL, "", FALSE ); WRESetStatusByID( WRE_SAVEINGSYMBOLS, -1 ); if( prompt || *file_name == NULL ) { gf.file_name = *file_name; gf.title = WRESymSaveTitle; gf.filter = WRESymSaveFilter; gf.save_ext = FALSE; name = WREGetSaveFileName( &gf ); ok = (name != NULL); if( ok ) { if( *file_name != NULL ) { WRMemFree( *file_name ); } *file_name = name; } } else { name = *file_name; } if( ok ) { ok = WRWriteSymbolsToFile( table, name ); } if( ok ) { WRMakeHashTableClean( table ); } WRESetStatusReadyText(); return( ok ); }
bool SaveObjectAs( WRECurrentResInfo *curr, void *rdata ) { bool ok; char *fname; WRFileType ftype; WREGetFileStruct gf; WRSaveIntoData idata; uint_32 size; fname = NULL; ok = (curr != NULL && rdata != NULL); if( ok ) { gf.file_name = NULL; gf.title = WREResSaveAsTitle; gf.filter = WREResFilter; gf.save_ext = TRUE; fname = WREGetSaveFileName( &gf ); ok = (fname != NULL && *fname != '\0'); } if( ok ) { ftype = WRESelectFileType( fname, curr->info->is32bit ); ok = (ftype != WR_DONT_KNOW); } if( ok ) { size = curr->lang->Info.Length; idata.info = curr->info->info; idata.next = NULL; idata.type = &curr->type->Info.TypeName; idata.name = &curr->res->Info.ResName; idata.data = rdata; idata.lang = curr->lang->Info.lang; idata.size = size; idata.MemFlags = curr->lang->Info.MemoryFlags; ok = WRSaveObjectAs( fname, ftype, &idata ); } if( fname != NULL ) { WRMemFree( fname ); } return( ok ); }
Bool WRESaveResource( WREResInfo *res_info, Bool get_name ) { char *fn; WREGetFileStruct gf; int fn_offset; Bool got_name; Bool ok; fn_offset = 0; got_name = FALSE; ok = (res_info != NULL && res_info->info != NULL); if( ok ) { ok = (WRCountZeroLengthResources( res_info->info->dir ) == 0); if( !ok ) { WREDisplayErrorMsg( WRE_UPDATEBEFORESAVE ); } } if( ok ) { if( res_info->info->save_name != NULL ) { fn = res_info->info->save_name; } else { res_info->info->save_type = res_info->info->file_type; fn = WREStrDup( res_info->info->file_name ); got_name = TRUE; } if( get_name || fn == NULL || *fn == '\0' ) { gf.file_name = fn; gf.title = WREResSaveTitle; gf.filter = WREResFilter; gf.save_ext = TRUE; fn = WREGetSaveFileName( &gf ); got_name = TRUE; res_info->info->save_type = WR_DONT_KNOW; } ok = (fn != NULL && *fn != '\0'); } if( ok ) { if( got_name && res_info->info->save_name != NULL ) { WREMemFree( res_info->info->save_name ); } res_info->info->save_name = fn; if( res_info->info->save_type == WR_DONT_KNOW ) { res_info->info->save_type = WRESelectFileType( fn, res_info->is32bit ); } ok = (res_info->info->save_type != WR_DONT_KNOW); } if( ok ) { if( WRIsHashTableDirty( res_info->symbol_table ) ) { if( res_info->symbol_file == NULL ) { res_info->symbol_file = WRECreateSymName( fn ); } } } if( ok ) { WRECreateDLGInclude( &res_info->info->dir, res_info->symbol_file ); ok = WRESaveResourceToFile( res_info ); if( !ok ) { WREDisplayErrorMsg( WRE_SAVEFAILED ); } } if( ok ) { if( get_name || WRIsHashTableDirty( res_info->symbol_table ) ) { ok = WRESaveSymbols( res_info->symbol_table, &res_info->symbol_file, get_name ); } } if( ok ) { //fn_offset = WRFindFnOffset( fn ); SendMessage( res_info->res_win, WM_SETTEXT, 0, (LPARAM)(LPSTR)&fn[fn_offset] ); } return( ok ); }