bool WdeRemoveResource( WdeResInfo *res_info ) { LIST *node; if( WdeResList == NULL ) { return( FALSE ); } if( (node = ListFindElt( WdeResList, res_info )) != NULL ) { ListRemoveElt( &WdeResList, (void *)ListElement( node ) ); } else { WdeWriteTrail( "WdeRemoveResource: res_info not found!" ); return( FALSE ); } if( WdeGetNumRes() == 1 ) { WdeOldStickyMode = WdeSetStickyMode( FALSE ); WdeSetBaseObject( IDM_SELECT_MODE ); } WdeFreeResInfo( res_info ); if( WdeGetNumRes() == 1 ) { WdeSetAppMenuToRes( FALSE ); } WdeDecNumRes(); return( TRUE ); }
WdeResInfo *WdeLoadResource( const char *file_name ) { WdeResInfo *res_info; WRFileType file_type; bool ok; WdeSetWaitCursor( TRUE ); ok = ((res_info = WdeAllocResInfo()) != NULL); if( ok ) { file_type = WRIdentifyFile( file_name ); ok = (file_type != WR_INVALID_FILE); } if( ok ) { res_info->info = WRLoadResource( file_name, file_type ); ok = (res_info->info != NULL); } if( ok ) { res_info->dlg_entry = WdeFindTypeNode( res_info->info->dir, RESOURCE2INT( RT_DIALOG ), "DIALOG" ); } if( !ok ) { if( res_info != NULL ) { WdeFreeResInfo( res_info ); res_info = NULL; } } WdeSetWaitCursor( FALSE ); return( res_info ); }
void WdeFreeResList( void ) { LIST *rlist; WdeResInfo *res_info; if( WdeResList != NULL ) { for( rlist = WdeResList; rlist != NULL; rlist = ListNext( rlist ) ) { res_info = (WdeResInfo *)ListElement( rlist ); WdeSetCurrentRes( res_info ); WdeFreeResInfo( res_info ); } ListFree( WdeResList ); WdeResList = NULL; } }
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 WdeStartDDEEditSession( void ) { WdeResInfo *rinfo; WdeResDlgItem *ditem; char *filename; HDDEDATA hData; void *data; DWORD ret; uint_32 size; OBJPTR object; bool ok; object = NULL; ditem = WdeAllocResDlgItem(); ok = (ditem != NULL); if( ok ) { hData = DdeClientTransaction( NULL, 0, WdeClientConv, hFileItem, WdeDataClipbdFormat, XTYP_REQUEST, TIME_OUT, &ret ); ok = (hData != (HDDEDATA)NULL); } if( ok ) { filename = (char *)WdeHData2Mem( hData ); DdeFreeDataHandle( hData ); ok = (filename != NULL); } if( ok ) { hData = DdeClientTransaction( NULL, 0, WdeClientConv, hIs32BitItem, WdeDataClipbdFormat, XTYP_REQUEST, TIME_OUT, &ret ); if( hData != (HDDEDATA)NULL ) { ditem->is32bit = TRUE; DdeFreeDataHandle( hData ); } } if( ok ) { hData = DdeClientTransaction( NULL, 0, WdeClientConv, hNameItem, WdeDataClipbdFormat, XTYP_REQUEST, TIME_OUT, &ret ); ok = (hData != (HDDEDATA)NULL); } if( ok ) { data = WdeHData2Mem( hData ); DdeFreeDataHandle( hData ); ok = (data != NULL); } if( ok ) { ditem->dialog_name = WRMem2WResID( data, ditem->is32bit ); ok = (ditem->dialog_name != NULL); WRMemFree( data ); } if( ok ) { hData = DdeClientTransaction( NULL, 0, WdeClientConv, hDataItem, WdeDataClipbdFormat, XTYP_REQUEST, TIME_OUT, &ret ); if( hData != (HDDEDATA)NULL ) { data = WdeHData2Mem( hData ); size = (int)DdeGetData( hData, NULL, 0, 0 ); DdeFreeDataHandle( hData ); if( data != NULL ) { ditem->dialog_info = WdeMem2DBI( (uint_8 *)data, size, ditem->is32bit ); ok = (ditem->dialog_info != NULL); WRMemFree( data ); } else { ok = false; } } } if( ok ) { rinfo = WdeCreateNewResource( filename ); ok = (rinfo != NULL); } if( ok ) { if( ditem->dialog_info != NULL ) { ok = WdeOpenDialogFromResInfo( rinfo, ditem ); if( ok ) { WdeAddResDlgItemToResInfo( rinfo, ditem ); object = ditem->object; } } else { object = WdeCreateNewDialog( ditem->dialog_name, ditem->is32bit ); if( ditem != NULL ) { WdeFreeResDlgItem( &ditem, TRUE ); } ditem = NULL; } ok = ok && (object != NULL); } if( ok ) { MakeObjectCurrent( object ); } if( !ok ) { if( ditem != NULL ) { WdeFreeResDlgItem( &ditem, TRUE ); } if( rinfo != NULL ) { WdeFreeResInfo( rinfo ); } } if( filename != NULL ) { WRMemFree( filename ); } return( ok ); }