bool WREDeleteCurrResource( bool force ) { WRECurrentResInfo curr; bool ok; WREGetCurrentResource( &curr ); ok = WREDeleteResource( &curr, force ); return( ok ); }
Bool WREChangeMemFlags( void ) { WRECurrentResInfo curr; HWND parent; char *name; int type; uint_16 mflags; FARPROC cb; Bool ok; cb = NULL; name = NULL; mflags = 0; ok = WREGetCurrentResource( &curr ); if( ok ) { if( curr.type->Info.TypeName.IsName ) { type = 0; } else { type = curr.type->Info.TypeName.ID.Num; } name = WREGetResName( curr.res, type ); parent = WREGetMainWindowHandle(); } if( ok ) { cb = MakeProcInstance( (FARPROC)WREHelpRoutine, WREGetAppInstance() ); ok = (cb != (FARPROC)NULL); } if( ok ) { mflags = curr.lang->Info.MemoryFlags; ok = WRChangeMemFlags( parent, name, &mflags, cb ); } if( ok ) { curr.lang->Info.MemoryFlags = mflags; } if( cb != (FARPROC)NULL ) { FreeProcInstance( (FARPROC)cb ); } if( name != NULL ) { WREMemFree( name ); } return( ok ); }
bool WREChangeMemFlags( void ) { WRECurrentResInfo curr; HWND parent; char *type_name; uint_16 type_id; uint_16 mflags; HELP_CALLBACK hcb; bool ok; hcb = (HELP_CALLBACK)NULL; type_name = NULL; mflags = 0; type_id = 0; ok = WREGetCurrentResource( &curr ); if( ok ) { if( !curr.type->Info.TypeName.IsName ) { type_id = curr.type->Info.TypeName.ID.Num; } type_name = WREGetResName( curr.res, type_id ); parent = WREGetMainWindowHandle(); } if( ok ) { hcb = (HELP_CALLBACK)MakeProcInstance( (FARPROC)WREHelpRoutine, WREGetAppInstance() ); ok = (hcb != (HELP_CALLBACK)NULL); } if( ok ) { mflags = curr.lang->Info.MemoryFlags; ok = WRChangeMemFlags( parent, type_name, &mflags, hcb ); } if( ok ) { curr.lang->Info.MemoryFlags = mflags; } if( hcb != (HELP_CALLBACK)NULL ) { FreeProcInstance( (FARPROC)hcb ); } if( type_name != NULL ) { WRMemFree( type_name ); } return( ok ); }
void WRESetCopyMenuItem( HWND main ) { int enable; WRECurrentResInfo curr; HMENU hmenu; hmenu = GetMenu( main ); WREGetCurrentResource( &curr ); enable = MF_GRAYED; if( curr.info != NULL ) { if( curr.info->current_type != 0 && curr.info->current_type != RESOURCE2INT( RT_STRING ) ) { enable = MF_ENABLED; } } EnableMenuItem( hmenu, IDM_CUT, enable ); EnableMenuItem( hmenu, IDM_COPY, enable ); }
bool WREClipCurrentResource( HWND main, bool cut ) { WRECurrentResInfo curr; WREClipFormat *fmt; uint_16 type; bool ok; WREGetCurrentResource( &curr ); ok = (curr.info != NULL && curr.type != NULL); if( ok ) { type = 0; if( !curr.type->Info.TypeName.IsName ) { type = curr.type->Info.TypeName.ID.Num; } ok = (type != 0); } if( ok ) { fmt = WREFindClipFormatFromType( type ); ok = (fmt != NULL); } if( ok ) { if( curr.info->current_type == RESOURCE2INT( RT_BITMAP ) ) { ok = WREClipBitmap( &curr, main ); } else if( curr.info->current_type == RESOURCE2INT( RT_STRING ) || curr.info->current_type == 0 ) { ok = false; } else { ok = WREClipResource( &curr, main, fmt->fmt ); } } if( ok ) { if( cut ) { ok = WREDeleteCurrResource( TRUE ); } } return( ok ); }
Bool WREHandleResEdit( void ) { WRECurrentResInfo curr; Bool ok; if( WREGetPendingService() != NoServicePending ) { WRESetStatusByID( 0, WRE_EDITSESSIONPENDING ); return( TRUE ); } ok = WREGetCurrentResource( &curr ); // correct ok if this the 'All Strings' entry if( !ok ) { ok = (curr.info != NULL && curr.type != NULL && curr.info->current_type == (uint_16)RT_STRING); } if( ok ) { ok = FALSE; if( curr.info->current_type == (uint_16)RT_ACCELERATOR ) { ok = WREEditAccelResource( &curr ); } else if( curr.info->current_type == (uint_16)RT_MENU ) { ok = WREEditMenuResource( &curr ); } else if( curr.info->current_type == (uint_16)RT_STRING ) { ok = WREEditStringResource( &curr ); } else if( curr.info->current_type == (uint_16)RT_DIALOG ) { ok = WREEditDialogResource( &curr ); } else if( curr.info->current_type == (uint_16)RT_GROUP_CURSOR ) { ok = WREEditImageResource( &curr ); } else if( curr.info->current_type == (uint_16)RT_GROUP_ICON ) { ok = WREEditImageResource( &curr ); } else if( curr.info->current_type == (uint_16)RT_BITMAP ) { ok = WREEditImageResource( &curr ); } } return( ok ); }
bool SaveObject( bool save_into ) { WRECurrentResInfo curr; void *rdata; bool ok; WRESetWaitCursor( TRUE ); rdata = NULL; ok = WREGetCurrentResource( &curr ); if( ok ) { ok = (curr.lang->Info.Length != 0); if( !ok ) { WREDisplayErrorMsg( WRE_UPDATEBEFORESAVE1 ); } } if( ok ) { ok = ((rdata = WREGetCurrentResData( &curr )) != NULL); } if( ok ) { if( save_into ) { ok = SaveObjectInto( &curr, rdata ); } else { ok = SaveObjectAs( &curr, rdata ); } } if( rdata != NULL ) { WRMemFree( rdata ); } WRESetWaitCursor( FALSE ); return( ok ); }
bool WREAddAccelToDir( WRECurrentResInfo *curr ) { WResLangType lang; bool dup; int num_retries; WResID *rname, *tname; bool ok, tname_alloc; ok = true; tname_alloc = false; WREGetCurrentResource( curr ); if( curr->info == NULL ) { curr->info = WRECreateNewResource( NULL ); ok = (curr->info != NULL); } if( ok ) { if( curr->info->current_type == RESOURCE2INT( RT_ACCELERATOR ) ) { tname = &curr->type->Info.TypeName; } else { tname = WResIDFromNum( RESOURCE2INT( RT_ACCELERATOR ) ); tname_alloc = true; } lang.lang = DEF_LANG; lang.sublang = DEF_SUBLANG; } if( ok ) { dup = true; num_retries = 0; rname = NULL; while( ok && dup && num_retries <= MAX_RETRIES ) { rname = WRECreateAccTitle(); ok = (rname != NULL); if( ok ) { ok = WRENewResource( curr, tname, rname, DEF_MEMFLAGS, 0, 0, &lang, &dup, RESOURCE2INT( RT_ACCELERATOR ), tname_alloc ); if( !ok && dup ) { ok = true; } num_retries++; } if( rname != NULL ) { WRMemFree( rname ); } } if( dup ) { WREDisplayErrorMsg( WRE_CANTFINDUNUSEDNAME ); } } if( ok ) { curr->info->modified = true; } if( tname_alloc ) { WRMemFree( tname ); } return( ok ); }
static bool WREGetAndPasteBitmap( WREClipFormat *fmt, void *data, uint_32 dsize ) { WRECurrentResInfo curr; WResLangType lang; WResID *ctype; WResID *cname; bool dup; bool new_type; bool replace; bool ok; cname = NULL; ctype = NULL; new_type = TRUE; lang.lang = DEF_LANG; lang.sublang = DEF_SUBLANG; ok = (fmt != NULL && data != NULL && dsize != 0); if( ok ) { ctype = WResIDFromNum( fmt->type ); ok = (ctype != NULL); } if( ok ) { cname = WRRecallBitmapName(); if( cname == NULL ) { cname = WRECreateImageTitle( RESOURCE2INT( RT_BITMAP ) ); } ok = (cname != NULL); } if( ok ) { WREGetCurrentResource( &curr ); if( curr.info == NULL ) { curr.info = WRECreateNewResource( NULL ); ok = (curr.info != NULL); } } if( ok ) { ok = WREHandleClipDataNames( curr.info, ctype, &cname, &replace ); } if( ok ) { if( curr.info != NULL ) { if( curr.info->info->dir ) { new_type = (WREFindTypeNodeFromWResID( curr.info->info->dir, ctype ) == NULL ); } } ok = WRENewResource( &curr, ctype, cname, DEF_MEMFLAGS, 0, dsize, &lang, &dup, RESOURCE2INT( RT_BITMAP ), new_type ) && !dup; } if( ok ) { curr.lang->data = data; WRESetResModified( curr.info, TRUE ); } if( cname != NULL ) { WRMemFree( cname ); } if( ctype != NULL ) { WRMemFree( ctype ); } return( ok ); }
static bool WREGetAndPasteIconOrCursor( WREClipFormat *fmt ) { WRECurrentResInfo curr; WREClipData *cdata; WResLangType lang; WResID *ctype; WResID *cname; void *data; uint_32 dsize; bool dup; bool new_type; bool replace; bool ok; cdata = NULL; cname = NULL; ctype = NULL; new_type = TRUE; lang.lang = DEF_LANG; lang.sublang = DEF_SUBLANG; ok = (fmt != NULL); if( ok ) { ctype = WResIDFromNum( fmt->type ); ok = (ctype != NULL); } if( ok ) { ok = WREGetClipData( fmt, &data, &dsize ); } if( ok ) { cdata = (WREClipData *)data; data = NULL; ok = (cdata != NULL); } if( ok ) { data = WRMemAlloc( cdata->data_size ); ok = (data != NULL); } if( ok ) { memcpy( data, (BYTE *)cdata + cdata->data_offset, cdata->data_size ); cname = WREGetClipDataName( cdata ); ok = (cname != NULL); } if( ok ) { WREGetCurrentResource( &curr ); if( curr.info == NULL ) { curr.info = WRECreateNewResource( NULL ); ok = (curr.info != NULL); } } if( ok ) { ok = WREHandleClipDataNames( curr.info, ctype, &cname, &replace ); } if( ok ) { if( curr.info != NULL ) { if( curr.info->info->dir ) { new_type = (WREFindTypeNodeFromWResID( curr.info->info->dir, ctype ) == NULL ); } } ok = WRENewResource( &curr, ctype, cname, cdata->memflags, 0, (uint_32)cdata->data_size, &lang, &dup, fmt->type, new_type ) && !dup; } if( ok ) { if( fmt->type == RESOURCE2INT( RT_GROUP_ICON ) ) { ok = WRECreateIconEntries( &curr, data, dsize ); } else if( fmt->type == RESOURCE2INT( RT_GROUP_CURSOR ) ) { ok = WRECreateCursorEntries( &curr, data, dsize ); } else { ok = false; } } if( ok ) { WRESetResModified( curr.info, TRUE ); } if( data != NULL ) { WRMemFree( data ); } if( cdata != NULL ) { WRMemFree( cdata ); } if( cname != NULL ) { WRMemFree( cname ); } if( ctype != NULL ) { WRMemFree( ctype ); } if( !ok ) { if( data != NULL ) { WRMemFree( data ); } } return( ok ); }