%token BEDIT HEDIT IEDIT
%token FONT
%token ICON
-%token LANGUAGE CHARACTERISTICS VERSION
+%token LANGUAGE CHARACTERISTICS VERSIONK
%token MENU MENUEX MENUITEM SEPARATOR POPUP CHECKED GRAYED HELP INACTIVE
%token MENUBARBREAK MENUBREAK
%token MESSAGETABLE
$$ = $1;
$$.id = $2;
$$.flags |= $4;
+ if (($$.flags & ACC_VIRTKEY) == 0
+ && ($$.flags & (ACC_SHIFT | ACC_CONTROL | ACC_ALT)) != 0)
+ rcparse_warning (_("inappropriate modifiers for non-VIRTKEY"));
}
;
QUOTEDSTRING
{
const char *s = $1;
+ char ch;
+ $$.next = NULL;
$$.id = 0;
- if (*s != '^')
+ ch = *s;
+ if (ch != '^')
$$.flags = 0;
else
{
- $$.flags = ACC_CONTROL;
+ $$.flags = ACC_CONTROL | ACC_VIRTKEY;
++s;
+ ch = *s;
+ ch = toupper ((unsigned char) ch);
}
- $$.key = *s;
+ $$.key = ch;
if (s[1] != '\0')
- rcparse_warning ("accelerator should only be one character");
+ rcparse_warning (_("accelerator should only be one character"));
}
| posnumexpr
{
+ $$.next = NULL;
$$.flags = 0;
$$.id = 0;
$$.key = $1;
{
$$ = $1 | $3;
}
+ /* I've had one report that the comma is optional. */
+ | acc_options acc_option
+ {
+ $$ = $1 | $2;
+ }
;
acc_option:
dialog.height = $8;
dialog.style = WS_POPUP | WS_BORDER | WS_SYSMENU;
dialog.exstyle = $4;
+ dialog.menu.named = 1;
+ dialog.class.named = 1;
dialog.font = NULL;
dialog.ex = NULL;
dialog.controls = NULL;
dialog.height = $8;
dialog.style = WS_POPUP | WS_BORDER | WS_SYSMENU;
dialog.exstyle = $4;
+ dialog.menu.named = 1;
+ dialog.class.named = 1;
dialog.font = NULL;
dialog.ex = ((struct dialog_ex *)
res_alloc (sizeof (struct dialog_ex)));
dialog.height = $8;
dialog.style = WS_POPUP | WS_BORDER | WS_SYSMENU;
dialog.exstyle = $4;
+ dialog.menu.named = 1;
+ dialog.class.named = 1;
dialog.font = NULL;
dialog.ex = ((struct dialog_ex *)
res_alloc (sizeof (struct dialog_ex)));
dialog.class = $3;
}
| styles STYLE
- { style = dialog.style }
+ { style = dialog.style; }
styleexpr
{
dialog.style = style;
}
| styles FONT numexpr ',' QUOTEDSTRING
{
+ dialog.style |= DS_SETFONT;
dialog.pointsize = $3;
unicode_from_ascii ((int *) NULL, &dialog.font, $5);
}
| styles FONT numexpr ',' QUOTEDSTRING cnumexpr cnumexpr
{
+ dialog.style |= DS_SETFONT;
dialog.pointsize = $3;
unicode_from_ascii ((int *) NULL, &dialog.font, $5);
if (dialog.ex == NULL)
- rcparse_warning ("extended FONT requires DIALOGEX");
+ rcparse_warning (_("extended FONT requires DIALOGEX"));
else
{
dialog.ex->weight = $6;
{
sub_res_info.language = $3 | ($4 << 8);
}
- | styles VERSION numexpr
+ | styles VERSIONK numexpr
{
sub_res_info.version = $3;
}
{
$$ = $3;
if (dialog.ex == NULL)
- rcparse_warning ("IEDIT requires DIALOGEX");
+ rcparse_warning (_("IEDIT requires DIALOGEX"));
res_string_to_id (&$$->class, "BEDIT");
}
| CHECKBOX
if ($11 != NULL)
{
if (dialog.ex == NULL)
- rcparse_warning ("control data requires DIALOGEX");
+ rcparse_warning (_("control data requires DIALOGEX"));
$$->data = $11;
}
}
{
$$ = define_control ($2, $3, $6, $7, $8, $9, $4, style, $10);
if (dialog.ex == NULL)
- rcparse_warning ("help ID requires DIALOGEX");
+ rcparse_warning (_("help ID requires DIALOGEX"));
$$->help = $11;
$$->data = $12;
}
{
$$ = $3;
if (dialog.ex == NULL)
- rcparse_warning ("IEDIT requires DIALOGEX");
+ rcparse_warning (_("IEDIT requires DIALOGEX"));
res_string_to_id (&$$->class, "HEDIT");
}
| ICON optstringc numexpr cnumexpr cnumexpr opt_control_data
if ($6 != NULL)
{
if (dialog.ex == NULL)
- rcparse_warning ("control data requires DIALOGEX");
+ rcparse_warning (_("control data requires DIALOGEX"));
$$->data = $6;
}
}
if ($10 != NULL)
{
if (dialog.ex == NULL)
- rcparse_warning ("control data requires DIALOGEX");
+ rcparse_warning (_("control data requires DIALOGEX"));
$$->data = $10;
}
}
$$ = define_control ($2, $3, $4, $5, $6, $7, CTL_STATIC,
style, $9);
if (dialog.ex == NULL)
- rcparse_warning ("help ID requires DIALOGEX");
+ rcparse_warning (_("help ID requires DIALOGEX"));
$$->help = $10;
$$->data = $11;
}
{
$$ = $3;
if (dialog.ex == NULL)
- rcparse_warning ("IEDIT requires DIALOGEX");
+ rcparse_warning (_("IEDIT requires DIALOGEX"));
res_string_to_id (&$$->class, "IEDIT");
}
| LISTBOX
}
| USERBUTTON QUOTEDSTRING ',' numexpr ',' numexpr ',' numexpr ','
numexpr ',' numexpr ','
- { style = WS_CHILD | WS_VISIBLE }
+ { style = WS_CHILD | WS_VISIBLE; }
styleexpr optcnumexpr
{
$$ = define_control ($2, $4, $6, $8, $10, $12, CTL_BUTTON,
if ($7 != NULL)
{
if (dialog.ex == NULL)
- rcparse_warning ("control data requires DIALOGEX");
+ rcparse_warning (_("control data requires DIALOGEX"));
$$->data = $7;
}
}
if ($9 != NULL)
{
if (dialog.ex == NULL)
- rcparse_warning ("control data requires DIALOGEX");
+ rcparse_warning (_("control data requires DIALOGEX"));
$$->data = $9;
}
}
{
$$ = define_control ($1, $2, $3, $4, $5, $6, class, style, $8);
if (dialog.ex == NULL)
- rcparse_warning ("help ID requires DIALOGEX");
+ rcparse_warning (_("help ID requires DIALOGEX"));
$$->help = $9;
$$->data = $10;
}
/* It seems that resource ID's are forced to upper case. */
copy = xstrdup ($1);
for (s = copy; *s != '\0'; s++)
- if (islower (*s))
- *s = toupper (*s);
+ if (islower ((unsigned char) *s))
+ *s = toupper ((unsigned char) *s);
res_string_to_id (&$$, copy);
free (copy);
}
$$ = $1;
$$.language = $3 | ($4 << 8);
}
- | suboptions VERSION numexpr
+ | suboptions VERSIONK numexpr
{
$$ = $1;
$$.version = $3;