Exemplo n.º 1
0
bool WREDeleteCurrResource( bool force )
{
    WRECurrentResInfo   curr;
    bool                ok;

    WREGetCurrentResource( &curr );

    ok = WREDeleteResource( &curr, force );

    return( ok );
}
Exemplo n.º 2
0
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 );
}
Exemplo n.º 3
0
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 );
}
Exemplo n.º 4
0
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 );
}
Exemplo n.º 5
0
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 );
}
Exemplo n.º 6
0
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 );
}
Exemplo n.º 7
0
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 );
}
Exemplo n.º 8
0
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 );
}
Exemplo n.º 9
0
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 );
}
Exemplo n.º 10
0
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 );
}