int WRRelinkDir( WResDir dest, WResDir src ) { WResLangType lt; WResTypeNode *dtnode; WResResNode *drnode; WResLangNode *dlnode; WResTypeNode *stnode; WResResNode *srnode; WResLangNode *slnode; if( dest == NULL || src == NULL ) { return( FALSE ); } if( dest->NumTypes != src->NumTypes || dest->NumResources != src->NumResources ) { return( FALSE ); } dtnode = dest->Head; if( dtnode != NULL ) { stnode = WRFindTypeNodeFromWResID( src, &dtnode->Info.TypeName ); } while( dtnode != NULL && stnode != NULL ) { drnode = dtnode->Head; if( drnode != NULL ) { srnode = WRFindResNodeFromWResID( stnode, &drnode->Info.ResName ); } while( drnode != NULL && srnode != NULL ) { dlnode = drnode->Head; if( dlnode != NULL ) { lt = dlnode->Info.lang; slnode = WRFindLangNodeFromLangType( srnode, < ); } while( dlnode != NULL && slnode != NULL ) { if( dlnode->data == NULL ) { dlnode->Info.Offset = slnode->Info.Offset; } dlnode = dlnode->Next; if( dlnode != NULL ) { lt = dlnode->Info.lang; slnode = WRFindLangNodeFromLangType( srnode, < ); } } drnode = drnode->Next; if( drnode != NULL ) { srnode = WRFindResNodeFromWResID( stnode, &drnode->Info.ResName ); } } dtnode = dtnode->Next; if( dtnode != NULL ) { stnode = WRFindTypeNodeFromWResID( src, &dtnode->Info.TypeName ); } } return( TRUE ); }
static char *WREFindDLGInclude( WRInfo *info ) { WResTypeNode *tnode; WResResNode *rnode; WResLangNode *lnode; WResLangType lang; char *include; bool ok; include = NULL; ok = (info != NULL); if( ok ) { tnode = WRFindTypeNode( info->dir, (uint_16)(pointer_int)RT_RCDATA, NULL ); ok = (tnode != NULL); } if( ok ) { rnode = WRFindResNode( tnode, 0, "DLGINCLUDE" ); ok = (rnode != NULL); } if( ok ) { lang.lang = DEF_LANG; lang.sublang = DEF_SUBLANG; lnode = WRFindLangNodeFromLangType( rnode, &lang ); ok = (lnode != NULL); } if( ok ) { include = (char *)WRCopyResData( info, lnode ); } return( include ); }
int WRSaveIconResource( WRInfo *info, int backup ) { WResTypeNode *tnode; WResResNode *rnode; WResLangNode *lnode; WResLangType lang; BYTE *data; uint_32 size; int use_rename; int ok; data = NULL; lang.lang = DEF_LANG; lang.sublang = DEF_SUBLANG; ok = ( info && info->dir ); if( ok ) { if( backup && WRFileExists ( info->save_name ) ) { use_rename = ( info->file_name && stricmp( info->file_name, info->save_name ) ); ok = WRBackupFile( info->save_name, use_rename ); } } if( ok ) { tnode = WRFindTypeNode( info->dir, (uint_16)RT_GROUP_ICON, NULL ); ok = ( tnode != NULL ); if( !ok ) { WRDisplayErrorMsg( WR_PRJNOICON ); } } if( ok ) { rnode = tnode->Head; ok = ( rnode != NULL ); } if( ok ) { lnode = WRFindLangNodeFromLangType( rnode, &lang ); ok = ( lnode != NULL ); } if( ok ) { ok = WRCreateIconData( info, lnode, &data, &size ); } if( ok ) { ok = WRSaveDataToFile( info->save_name, data, size ); } if( data ) { WRMemFree( data ); } return( ok ); }
bool WRAPI WRFindImageId( WRInfo *info, WResTypeNode **otnode, WResResNode **ornode, WResLangNode **lnode, uint_16 type, uint_16 id, WResLangType *ltype ) { WResTypeNode *tnode; WResResNode *rnode; WResLangType lang; bool ok; ok = (info != NULL && lnode != NULL && (type == RESOURCE2INT( RT_ICON ) || type == RESOURCE2INT( RT_CURSOR ))); if( ok ) { tnode = WRFindTypeNode( info->dir, type, NULL ); ok = (tnode != NULL); } if( ok ) { if( otnode != NULL ) { *otnode = tnode; } rnode = WRFindResNode( tnode, id, NULL ); ok = (rnode != NULL); } if( ok ) { if( ornode != NULL ) { *ornode = rnode; } if( ltype != NULL ) { lang = *ltype; } else { lang.lang = DEF_LANG; lang.sublang = DEF_SUBLANG; } *lnode = WRFindLangNodeFromLangType( rnode, &lang ); ok = (*lnode != NULL); } if( !ok ) { *lnode = NULL; } return( ok ); }