wrc: Merge the menuitem and menuitemex structures.
This commit is contained in:
parent
0fb8203654
commit
1b305dd2df
@ -607,7 +607,7 @@ static void dump_dialog(const dialog_t *dlg)
|
||||
/*
|
||||
*****************************************************************************
|
||||
* Function : dump_menu_item
|
||||
* Syntax : void dump_menu_item(const menu_item_t *item)
|
||||
* Syntax : void dump_menu_item(const menuex_item_t *item)
|
||||
* Input :
|
||||
* Output :
|
||||
* Description :
|
||||
@ -622,6 +622,14 @@ static void dump_menu_item(const menu_item_t *item)
|
||||
{
|
||||
printf("POPUP ");
|
||||
print_string(item->name);
|
||||
if(item->gotid)
|
||||
printf(", Id=%d", item->id);
|
||||
if(item->gottype)
|
||||
printf(", Type=%d", item->type);
|
||||
if(item->gotstate)
|
||||
printf(", State=%08x", item->state);
|
||||
if(item->gothelpid)
|
||||
printf(", HelpId=%d", item->helpid);
|
||||
printf("\n");
|
||||
dump_menu_item(item->popup);
|
||||
}
|
||||
@ -631,7 +639,14 @@ static void dump_menu_item(const menu_item_t *item)
|
||||
if(item->name)
|
||||
{
|
||||
print_string(item->name);
|
||||
printf(", %d, %08x", item->id, item->state);
|
||||
if(item->gotid)
|
||||
printf(", Id=%d", item->id);
|
||||
if(item->gottype)
|
||||
printf(", Type=%d", item->type);
|
||||
if(item->gotstate)
|
||||
printf(", State=%08x", item->state);
|
||||
if(item->gothelpid)
|
||||
printf(", HelpId=%d", item->helpid);
|
||||
}
|
||||
else
|
||||
printf("SEPARATOR");
|
||||
@ -659,58 +674,6 @@ static void dump_menu(const menu_t *men)
|
||||
dump_menu_item(men->items);
|
||||
}
|
||||
|
||||
/*
|
||||
*****************************************************************************
|
||||
* Function : dump_menuex_item
|
||||
* Syntax : void dump_menuex_item(const menuex_item_t *item)
|
||||
* Input :
|
||||
* Output :
|
||||
* Description :
|
||||
* Remarks :
|
||||
*****************************************************************************
|
||||
*/
|
||||
static void dump_menuex_item(const menuex_item_t *item)
|
||||
{
|
||||
while(item)
|
||||
{
|
||||
if(item->popup)
|
||||
{
|
||||
printf("POPUP ");
|
||||
print_string(item->name);
|
||||
if(item->gotid)
|
||||
printf(", Id=%d", item->id);
|
||||
if(item->gottype)
|
||||
printf(", Type=%d", item->type);
|
||||
if(item->gotstate)
|
||||
printf(", State=%08x", item->state);
|
||||
if(item->gothelpid)
|
||||
printf(", HelpId=%d", item->helpid);
|
||||
printf("\n");
|
||||
dump_menuex_item(item->popup);
|
||||
}
|
||||
else
|
||||
{
|
||||
printf("MENUITEM ");
|
||||
if(item->name)
|
||||
{
|
||||
print_string(item->name);
|
||||
if(item->gotid)
|
||||
printf(", Id=%d", item->id);
|
||||
if(item->gottype)
|
||||
printf(", Type=%d", item->type);
|
||||
if(item->gotstate)
|
||||
printf(", State=%08x", item->state);
|
||||
if(item->gothelpid)
|
||||
printf(", HelpId=%d", item->helpid);
|
||||
}
|
||||
else
|
||||
printf("SEPARATOR");
|
||||
printf("\n");
|
||||
}
|
||||
item = item->next;
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
*****************************************************************************
|
||||
* Function : dump_menuex
|
||||
@ -726,7 +689,7 @@ static void dump_menuex(const menuex_t *menex)
|
||||
{
|
||||
dump_memopt(menex->memopt);
|
||||
dump_lvc(&(menex->lvc));
|
||||
dump_menuex_item(menex->items);
|
||||
dump_menu_item(menex->items);
|
||||
}
|
||||
|
||||
/*
|
||||
|
@ -819,9 +819,9 @@ static res_t *menu2res(name_id_t *name, menu_t *men)
|
||||
* Remarks : Self recursive
|
||||
*****************************************************************************
|
||||
*/
|
||||
static void menuexitem2res(res_t *res, menuex_item_t *menitem, const language_t *lang)
|
||||
static void menuexitem2res(res_t *res, menu_item_t *menitem, const language_t *lang)
|
||||
{
|
||||
menuex_item_t *itm = menitem;
|
||||
menu_item_t *itm = menitem;
|
||||
assert(win32 != 0);
|
||||
while(itm)
|
||||
{
|
||||
|
@ -51,7 +51,6 @@ __NEW_STRUCT_FUNC(name_id)
|
||||
__NEW_STRUCT_FUNC(menu)
|
||||
__NEW_STRUCT_FUNC(menuex)
|
||||
__NEW_STRUCT_FUNC(menu_item)
|
||||
__NEW_STRUCT_FUNC(menuex_item)
|
||||
__NEW_STRUCT_FUNC(control)
|
||||
__NEW_STRUCT_FUNC(icon)
|
||||
__NEW_STRUCT_FUNC(cursor)
|
||||
|
@ -38,7 +38,6 @@ __NEW_STRUCT_PROTO(name_id);
|
||||
__NEW_STRUCT_PROTO(menu);
|
||||
__NEW_STRUCT_PROTO(menuex);
|
||||
__NEW_STRUCT_PROTO(menu_item);
|
||||
__NEW_STRUCT_PROTO(menuex_item);
|
||||
__NEW_STRUCT_PROTO(control);
|
||||
__NEW_STRUCT_PROTO(icon);
|
||||
__NEW_STRUCT_PROTO(cursor);
|
||||
|
@ -192,7 +192,6 @@ static control_t *get_control_head(control_t *p);
|
||||
static ver_value_t *get_ver_value_head(ver_value_t *p);
|
||||
static ver_block_t *get_ver_block_head(ver_block_t *p);
|
||||
static resource_t *get_resource_head(resource_t *p);
|
||||
static menuex_item_t *get_itemex_head(menuex_item_t *p);
|
||||
static menu_item_t *get_item_head(menu_item_t *p);
|
||||
static raw_data_t *merge_raw_data_str(raw_data_t *r1, string_t *str);
|
||||
static raw_data_t *merge_raw_data_int(raw_data_t *r1, int i);
|
||||
@ -254,7 +253,6 @@ static int rsrcid_to_token(int lookahead);
|
||||
characts_t *chars;
|
||||
event_t *event;
|
||||
menu_item_t *menitm;
|
||||
menuex_item_t *menexitm;
|
||||
itemex_opt_t *exopt;
|
||||
raw_data_t *raw;
|
||||
lvc_t *lvc;
|
||||
@ -318,9 +316,8 @@ static int rsrcid_to_token(int lookahead);
|
||||
%type <blk> ver_blocks ver_block
|
||||
%type <val> ver_values ver_value
|
||||
%type <men> menu
|
||||
%type <menitm> item_definitions menu_body
|
||||
%type <menitm> item_definitions menu_body itemex_definitions menuex_body
|
||||
%type <menex> menuex
|
||||
%type <menexitm> itemex_definitions menuex_body
|
||||
%type <exopt> itemex_p_options itemex_options
|
||||
%type <msg> messagetable
|
||||
%type <usr> userres
|
||||
@ -1306,7 +1303,7 @@ menuex : tMENUEX loadmemopts opt_lvc menuex_body {
|
||||
}
|
||||
else
|
||||
$$->memopt = WRC_MO_MOVEABLE | WRC_MO_PURE | WRC_MO_DISCARDABLE;
|
||||
$$->items = get_itemex_head($4);
|
||||
$$->items = get_item_head($4);
|
||||
if($3)
|
||||
{
|
||||
$$->lvc = *($3);
|
||||
@ -1324,7 +1321,7 @@ menuex_body
|
||||
itemex_definitions
|
||||
: /* Empty */ {$$ = NULL; }
|
||||
| itemex_definitions tMENUITEM tSTRING itemex_options {
|
||||
$$ = new_menuex_item();
|
||||
$$ = new_menu_item();
|
||||
$$->prev = $1;
|
||||
if($1)
|
||||
$1->next = $$;
|
||||
@ -1340,17 +1337,17 @@ itemex_definitions
|
||||
free($4);
|
||||
}
|
||||
| itemex_definitions tMENUITEM tSEPARATOR {
|
||||
$$ = new_menuex_item();
|
||||
$$ = new_menu_item();
|
||||
$$->prev = $1;
|
||||
if($1)
|
||||
$1->next = $$;
|
||||
}
|
||||
| itemex_definitions tPOPUP tSTRING itemex_p_options menuex_body {
|
||||
$$ = new_menuex_item();
|
||||
$$ = new_menu_item();
|
||||
$$->prev = $1;
|
||||
if($1)
|
||||
$1->next = $$;
|
||||
$$->popup = get_itemex_head($5);
|
||||
$$->popup = get_item_head($5);
|
||||
$$->name = $3;
|
||||
$$->id = $4->id;
|
||||
$$->type = $4->type;
|
||||
@ -2414,15 +2411,6 @@ static menu_item_t *get_item_head(menu_item_t *p)
|
||||
return p;
|
||||
}
|
||||
|
||||
static menuex_item_t *get_itemex_head(menuex_item_t *p)
|
||||
{
|
||||
if(!p)
|
||||
return NULL;
|
||||
while(p->prev)
|
||||
p = p->prev;
|
||||
return p;
|
||||
}
|
||||
|
||||
static resource_t *get_resource_head(resource_t *p)
|
||||
{
|
||||
if(!p)
|
||||
|
@ -447,13 +447,67 @@ static int compare_icon_group(icon_group_t *icon_group1, icon_group_t *icon_grou
|
||||
static int compare_menu_item(menu_item_t *menu_item1, menu_item_t *menu_item2) {
|
||||
int different = 0;
|
||||
while(!different && menu_item1 && menu_item2) {
|
||||
if(menu_item1->popup && menu_item2->popup)
|
||||
different = compare_menu_item(menu_item1->popup, menu_item2->popup);
|
||||
else if(!menu_item1->popup && !menu_item2->popup) {
|
||||
if(menu_item1->name && menu_item2->name) {
|
||||
if((menu_item1->id != menu_item2->id) ||
|
||||
(menu_item1->state != menu_item2->state))
|
||||
if(menu_item1->popup && menu_item2->popup) {
|
||||
if(!different && menu_item1->gotid && menu_item2->gotid) {
|
||||
if(menu_item1->id != menu_item2->id)
|
||||
different = 1;
|
||||
} else if(!different &&
|
||||
((menu_item1->gotid && !menu_item2->gotid) ||
|
||||
(!menu_item1->gotid && menu_item2->gotid)))
|
||||
different = 1;
|
||||
if(!different && menu_item1->gottype && menu_item2->gottype) {
|
||||
if(menu_item1->type != menu_item2->type)
|
||||
different = 1;
|
||||
} else if(!different &&
|
||||
((menu_item1->gottype && !menu_item2->gottype) ||
|
||||
(!menu_item1->gottype && menu_item2->gottype)))
|
||||
different = 1;
|
||||
if(!different && menu_item1->gotstate && menu_item2->gotstate) {
|
||||
if(menu_item1->state != menu_item2->state)
|
||||
different = 1;
|
||||
} else if(!different &&
|
||||
((menu_item1->gotstate && !menu_item2->gotstate) ||
|
||||
(!menu_item1->gotstate && menu_item2->gotstate)))
|
||||
different = 1;
|
||||
if(!different && menu_item1->gothelpid && menu_item2->gothelpid) {
|
||||
if(menu_item1->helpid != menu_item2->helpid)
|
||||
different = 1;
|
||||
} else if(!different &&
|
||||
((menu_item1->gothelpid && !menu_item2->gothelpid) ||
|
||||
(!menu_item1->gothelpid && menu_item2->gothelpid)))
|
||||
different = 1;
|
||||
if(!different)
|
||||
different = compare_menu_item(menu_item1->popup, menu_item2->popup);
|
||||
} else if(!menu_item1->popup && !menu_item2->popup) {
|
||||
if(menu_item1->name && menu_item2->name) {
|
||||
if(!different && menu_item1->gotid && menu_item2->gotid) {
|
||||
if(menu_item1->id != menu_item2->id)
|
||||
different = 1;
|
||||
} else if(!different &&
|
||||
((menu_item1->gotid && !menu_item2->gotid) ||
|
||||
(!menu_item1->gotid && menu_item2->gotid)))
|
||||
different = 1;
|
||||
if(!different && menu_item1->gottype && menu_item2->gottype) {
|
||||
if(menu_item1->type != menu_item2->type)
|
||||
different = 1;
|
||||
} else if(!different &&
|
||||
((menu_item1->gottype && !menu_item2->gottype) ||
|
||||
(!menu_item1->gottype && menu_item2->gottype)))
|
||||
different = 1;
|
||||
if(!different && menu_item1->gotstate && menu_item2->gotstate) {
|
||||
if(menu_item1->state != menu_item2->state)
|
||||
different = 1;
|
||||
} else if(!different &&
|
||||
((menu_item1->gotstate && !menu_item2->gotstate) ||
|
||||
(!menu_item1->gotstate && menu_item2->gotstate)))
|
||||
different = 1;
|
||||
if(!different && menu_item1->gothelpid && menu_item2->gothelpid) {
|
||||
if(menu_item1->helpid != menu_item2->helpid)
|
||||
different = 1;
|
||||
} else if(!different &&
|
||||
((menu_item1->gothelpid && !menu_item2->gothelpid) ||
|
||||
(!menu_item1->gothelpid && menu_item2->gothelpid)))
|
||||
different = 1;
|
||||
} else if((menu_item1->name && !menu_item2->name) ||
|
||||
(!menu_item1->name && menu_item2->name))
|
||||
different = 1;
|
||||
@ -481,85 +535,6 @@ static int compare_menu(menu_t *menu1, menu_t *menu2) {
|
||||
return different;
|
||||
}
|
||||
|
||||
static int compare_menuex_item(menuex_item_t *menuex_item1, menuex_item_t *menuex_item2) {
|
||||
int different = 0;
|
||||
while(!different && menuex_item1 && menuex_item2) {
|
||||
if(menuex_item1->popup && menuex_item2->popup) {
|
||||
if(!different && menuex_item1->gotid && menuex_item2->gotid) {
|
||||
if(menuex_item1->id != menuex_item2->id)
|
||||
different = 1;
|
||||
} else if(!different &&
|
||||
((menuex_item1->gotid && !menuex_item2->gotid) ||
|
||||
(!menuex_item1->gotid && menuex_item2->gotid)))
|
||||
different = 1;
|
||||
if(!different && menuex_item1->gottype && menuex_item2->gottype) {
|
||||
if(menuex_item1->type != menuex_item2->type)
|
||||
different = 1;
|
||||
} else if(!different &&
|
||||
((menuex_item1->gottype && !menuex_item2->gottype) ||
|
||||
(!menuex_item1->gottype && menuex_item2->gottype)))
|
||||
different = 1;
|
||||
if(!different && menuex_item1->gotstate && menuex_item2->gotstate) {
|
||||
if(menuex_item1->state != menuex_item2->state)
|
||||
different = 1;
|
||||
} else if(!different &&
|
||||
((menuex_item1->gotstate && !menuex_item2->gotstate) ||
|
||||
(!menuex_item1->gotstate && menuex_item2->gotstate)))
|
||||
different = 1;
|
||||
if(!different && menuex_item1->gothelpid && menuex_item2->gothelpid) {
|
||||
if(menuex_item1->helpid != menuex_item2->helpid)
|
||||
different = 1;
|
||||
} else if(!different &&
|
||||
((menuex_item1->gothelpid && !menuex_item2->gothelpid) ||
|
||||
(!menuex_item1->gothelpid && menuex_item2->gothelpid)))
|
||||
different = 1;
|
||||
if(!different)
|
||||
different = compare_menuex_item(menuex_item1->popup, menuex_item2->popup);
|
||||
} else if(!menuex_item1->popup && !menuex_item2->popup) {
|
||||
if(menuex_item1->name && menuex_item2->name) {
|
||||
if(!different && menuex_item1->gotid && menuex_item2->gotid) {
|
||||
if(menuex_item1->id != menuex_item2->id)
|
||||
different = 1;
|
||||
} else if(!different &&
|
||||
((menuex_item1->gotid && !menuex_item2->gotid) ||
|
||||
(!menuex_item1->gotid && menuex_item2->gotid)))
|
||||
different = 1;
|
||||
if(!different && menuex_item1->gottype && menuex_item2->gottype) {
|
||||
if(menuex_item1->type != menuex_item2->type)
|
||||
different = 1;
|
||||
} else if(!different &&
|
||||
((menuex_item1->gottype && !menuex_item2->gottype) ||
|
||||
(!menuex_item1->gottype && menuex_item2->gottype)))
|
||||
different = 1;
|
||||
if(!different && menuex_item1->gotstate && menuex_item2->gotstate) {
|
||||
if(menuex_item1->state != menuex_item2->state)
|
||||
different = 1;
|
||||
} else if(!different &&
|
||||
((menuex_item1->gotstate && !menuex_item2->gotstate) ||
|
||||
(!menuex_item1->gotstate && menuex_item2->gotstate)))
|
||||
different = 1;
|
||||
if(!different && menuex_item1->gothelpid && menuex_item2->gothelpid) {
|
||||
if(menuex_item1->helpid != menuex_item2->helpid)
|
||||
different = 1;
|
||||
} else if(!different &&
|
||||
((menuex_item1->gothelpid && !menuex_item2->gothelpid) ||
|
||||
(!menuex_item1->gothelpid && menuex_item2->gothelpid)))
|
||||
different = 1;
|
||||
} else if((menuex_item1->name && !menuex_item2->name) ||
|
||||
(!menuex_item1->name && menuex_item2->name))
|
||||
different = 1;
|
||||
} else
|
||||
different = 1;
|
||||
menuex_item1 = menuex_item1->next;
|
||||
menuex_item2 = menuex_item2->next;
|
||||
}
|
||||
if(!different &&
|
||||
((menuex_item1 && !menuex_item2) ||
|
||||
(!menuex_item1 && menuex_item2)))
|
||||
different = 1;
|
||||
return different;
|
||||
}
|
||||
|
||||
static int compare_menuex(menuex_t *menuex1, menuex_t *menuex2) {
|
||||
int different = 0;
|
||||
if(!different &&
|
||||
@ -568,7 +543,7 @@ static int compare_menuex(menuex_t *menuex1, menuex_t *menuex2) {
|
||||
(menuex1->lvc.characts != menuex2->lvc.characts)))
|
||||
different = 1;
|
||||
if(!different)
|
||||
different = compare_menuex_item(menuex1->items, menuex2->items);
|
||||
different = compare_menu_item(menuex1->items, menuex2->items);
|
||||
return different;
|
||||
}
|
||||
|
||||
|
@ -241,22 +241,6 @@ typedef struct menu_item {
|
||||
struct menu_item *prev;
|
||||
struct menu_item *popup;
|
||||
int id;
|
||||
DWORD state;
|
||||
string_t *name;
|
||||
} menu_item_t;
|
||||
|
||||
typedef struct menu {
|
||||
DWORD memopt;
|
||||
lvc_t lvc;
|
||||
menu_item_t *items;
|
||||
} menu_t;
|
||||
|
||||
/* MenuEx structures */
|
||||
typedef struct menuex_item {
|
||||
struct menuex_item *next;
|
||||
struct menuex_item *prev;
|
||||
struct menuex_item *popup;
|
||||
int id;
|
||||
DWORD type;
|
||||
DWORD state;
|
||||
int helpid;
|
||||
@ -265,12 +249,18 @@ typedef struct menuex_item {
|
||||
int gottype;
|
||||
int gotstate;
|
||||
int gothelpid;
|
||||
} menuex_item_t;
|
||||
} menu_item_t;
|
||||
|
||||
typedef struct menu {
|
||||
DWORD memopt;
|
||||
lvc_t lvc;
|
||||
menu_item_t *items;
|
||||
} menu_t;
|
||||
|
||||
typedef struct menuex {
|
||||
DWORD memopt;
|
||||
lvc_t lvc;
|
||||
menuex_item_t *items;
|
||||
menu_item_t *items;
|
||||
} menuex_t;
|
||||
|
||||
typedef struct itemex_opt
|
||||
|
Loading…
x
Reference in New Issue
Block a user