mirror of
git://source.winehq.org/git/wine.git
synced 2024-10-31 12:54:13 +00:00
33072e1f2c
Thu Jun 26 02:14:03 1997 Slaven Rezic <eserte@cs.tu-berlin.de> * [Makefile.in] New target install_includes. * [rc/parser.h] [rc/parser.y] [rc/winerc.c] Some bug fixes. Wed Jun 25 14:43:41 1997 Victor Schneider <vischne@ibm.net> * [controls/edit.c] Fixed WM_GETTEXT return value. Tue Jun 24 23:46:04 1997 Michiel van Loon <mfvl@xs4all.nl> * [multimedia/*.c] [include/mmsystem.h] Added more callback code, including (I hope) function callback. Changed some linear pointers into segmented. * [multimedia/audio.c] Removed some bugs. Sat Jun 28 11:37:56 1997 Marcus Meissner <msmeissn@cip.informatik.uni-erlangen.de> * [if1632/commdlg.spec][if1632/comdlg32.spec][misc/commdlg.c] [include/commdlg.h] Implemented parts of comdlg32: GetOpenFileName32*, GetSaveFileName32*, GetFileTitle32* using the 16 bit equivalents. * [windows/event.c] EVENT_QueryZOrder: check for children !=NULL (happens when using -managed). * [BUGS][DEVELOPER-HINTS] Updated. * [objects/text.c] Added GetTextCharset... (stub mostly). Sat Jun 21 08:47:58 1997 Philippe De Muyter <phdm@info.ucl.ac.be> * [if1632/kernel.spec] [if1632/gdi.spec] [include/windows.h] [loader/resource.c] [graphics/x11drv/xfont.c] SetResourceHandler & RemoveFontResource prototypes fixed. * [if1632/relay.c] [if1632/kernel.spec] [if1632/user.spec] [if1632/olesvr.spec] [if1632/commdlg.spec] [if1632/ddeml.spec] [if1632/gdi.spec] [if1632/lzexpand.spec] [if1632/shell.spec] [include/windows.h] [memory/string.c] [tools/build.c] New type of parameter allowed in .spec files : str, printed as a string with -debugmsg +relay. .spec files updated. * [objects/dc.c] In DC_SetupGCForPen, call BlackPixelOfScreen, not BlackPixel. Likewise for WhitePixel. * [objects/gdiobj.c] [graphics/x11drv/brush.c] Use BS_HATCHED with an added entry in HatchBrushes for DkGrayBrush, instead of BS_SOLID. Fri May 30 17:58:00 1997 Chris Faherty <chrisf@america.com> * [windows/keyboard.c] Added vkey to scancode translation table. This was primarily to fix Citrix WinFrame client which always needs scancodes in WM_KEYDOWN. Tested with Exceed 5.1.0.1 & XFree86 3.1.2.
228 lines
7.9 KiB
Text
228 lines
7.9 KiB
Text
%{
|
|
/*
|
|
*
|
|
* Copyright Martin von Loewis, 1994
|
|
*/
|
|
|
|
#include <stdio.h>
|
|
#include <stdlib.h>
|
|
#include "parser.h"
|
|
#include "windows.h"
|
|
|
|
int yylex(void);
|
|
int yyerror(const char *s);
|
|
|
|
%}
|
|
%union{
|
|
gen_res *res;
|
|
char *str;
|
|
int num;
|
|
struct rc_style *style;
|
|
}
|
|
%token <num> NUMBER
|
|
%token <str> tSTRING SINGLE_QUOTED IDENT
|
|
%token ACCELERATORS ALT ASCII tBEGIN tBITMAP CAPTION CHECKBOX CHECKED
|
|
%token CLASS COMBOBOX CONTROL CTEXT CURSOR DEFPUSHBUTTON DIALOG
|
|
%token DISCARDABLE EDITTEXT tEND tFIXED FONT GRAYED GROUPBOX HELP ICON
|
|
%token IDENT INACTIVE LISTBOX LTEXT MENU MENUBARBREAK MENUBREAK MENUITEM
|
|
%token MOVEABLE LOADONCALL NOINVERT NOT NOT_SUPPORTED POPUP PRELOAD
|
|
%token PURE PUSHBUTTON RADIOBUTTON RCDATA RTEXT SCROLLBAR SHIFT SEPARATOR
|
|
%token SINGLE_QUOTED tSTRING STRINGTABLE STYLE VERSIONINFO VIRTKEY
|
|
%type <res> resource_file resource resources resource_definition accelerators
|
|
%type <res> events bitmap cursor dialog dlg_attributes controls
|
|
%type <res> generic_control labeled_control control_desc font icon
|
|
%type <res> iconinfo menu menu_body item_definitions rcdata raw_data raw_elements
|
|
%type <res> stringtable strings versioninfo
|
|
%type <num> acc_options item_options
|
|
%type <style> style style_elm optional_style
|
|
%%
|
|
|
|
resource_file: resources {create_output($1);}
|
|
|
|
/*resources are put into a linked list*/
|
|
resources: {$$=0;}
|
|
|resource resources {$$=add_resource($1,$2);}
|
|
;
|
|
|
|
/* get the name for a single resource*/
|
|
resource: NUMBER resource_definition
|
|
{$$=$2;$$->n.i_name=$1;$$->n_type=0;
|
|
if(verbose)fprintf(stderr,"Got %s %d\n",get_typename($2),$1);
|
|
}
|
|
| IDENT resource_definition
|
|
{$$=$2;$$->n.s_name=$1;$$->n_type=1;
|
|
if(verbose)fprintf(stderr,"Got %s %s\n",get_typename($2),$1);
|
|
}
|
|
| stringtable
|
|
{$$=$1; /* <-- should be NULL */
|
|
if(verbose)fprintf(stderr,"Got STRINGTABLE\n");
|
|
}
|
|
;
|
|
|
|
/* get the value for a single resource*/
|
|
resource_definition: accelerators {$$=$1;}
|
|
| bitmap {$$=$1;}
|
|
| cursor {$$=$1;}
|
|
| dialog {$$=$1;}
|
|
| font {$$=$1;}
|
|
| icon {$$=$1;}
|
|
| menu {$$=$1;}
|
|
| rcdata {$$=$1;}
|
|
| versioninfo {$$=$1;}
|
|
;
|
|
|
|
/* have to use tBEGIN because BEGIN is predefined */
|
|
accelerators: ACCELERATORS load_and_memoption tBEGIN events tEND {$$=$4;$$->type=acc;}
|
|
/* the events are collected in a gen_res, as the accelerator resource is just
|
|
an array of events */
|
|
events: {$$=new_res();}
|
|
| tSTRING ',' NUMBER acc_options events
|
|
{$$=add_string_accelerator($1,$3,$4,$5);}
|
|
| NUMBER ',' NUMBER ',' ASCII acc_options events
|
|
{$$=add_ascii_accelerator($1,$3,$6,$7);}
|
|
| NUMBER ',' NUMBER ',' VIRTKEY acc_options events
|
|
{$$=add_vk_accelerator($1,$3,$6,$7);}
|
|
acc_options: {$$=0;}
|
|
| ',' NOINVERT acc_options {$$=$3|2;}
|
|
| ',' ALT acc_options {$$=$3|16;}
|
|
| ',' SHIFT acc_options {$$=$3|4;}
|
|
| ',' CONTROL acc_options {$$=$3|8;}
|
|
|
|
bitmap: tBITMAP load_and_memoption tSTRING {$$=make_bitmap(load_file($3));}
|
|
| tBITMAP load_and_memoption raw_data {$$=make_bitmap($3);}
|
|
|
|
/* load and memory options are ignored */
|
|
load_and_memoption: | lamo load_and_memoption
|
|
lamo: PRELOAD | LOADONCALL | tFIXED | MOVEABLE | DISCARDABLE | PURE
|
|
|
|
cursor: CURSOR load_and_memoption tSTRING {$$=make_cursor(load_file($3));}
|
|
|CURSOR load_and_memoption raw_data {$$=make_cursor($3);}
|
|
|
|
dialog: DIALOG load_and_memoption NUMBER ',' NUMBER ',' NUMBER ',' NUMBER
|
|
dlg_attributes
|
|
tBEGIN controls tEND
|
|
{$$=make_dialog($10,$3,$5,$7,$9,$12);}
|
|
|
|
dlg_attributes: {$$=new_dialog();}
|
|
| STYLE style dlg_attributes
|
|
{$$=dialog_style($2,$3);}
|
|
| CAPTION tSTRING dlg_attributes
|
|
{$$=dialog_caption($2,$3);}
|
|
| FONT NUMBER ',' tSTRING dlg_attributes
|
|
{$$=dialog_font($2,$4,$5);}
|
|
| CLASS tSTRING dlg_attributes
|
|
{$$=dialog_class($2,$3);}
|
|
| MENU tSTRING dlg_attributes
|
|
{$$=dialog_menu_str($2,$3);}
|
|
| MENU NUMBER dlg_attributes
|
|
{$$=dialog_menu_id($2,$3);}
|
|
|
|
/* the controls are collected into a gen_res, and finally the dialog header
|
|
is put at the beginning */
|
|
controls: {$$=new_res();}
|
|
| CHECKBOX labeled_control controls
|
|
{$$=add_control(CT_BUTTON, BS_CHECKBOX, $2, $3);}
|
|
| COMBOBOX control_desc controls
|
|
{$$=add_control(CT_COMBOBOX, 0, $2, $3);}
|
|
| CONTROL generic_control controls
|
|
{$$=add_generic_control($2, $3);}
|
|
| CTEXT labeled_control controls
|
|
{$$=add_control(CT_STATIC, SS_CENTER, $2, $3);}
|
|
| DEFPUSHBUTTON labeled_control controls
|
|
{$$=add_control(CT_BUTTON, BS_DEFPUSHBUTTON, $2, $3);}
|
|
| EDITTEXT control_desc controls
|
|
{$$=add_control(CT_EDIT, 0, $2, $3);}
|
|
| GROUPBOX labeled_control controls
|
|
{$$=add_control(CT_BUTTON, BS_GROUPBOX, $2, $3);}
|
|
/*special treatment for icons, as the extent is optional*/
|
|
| ICON tSTRING ',' NUMBER ',' NUMBER ',' NUMBER iconinfo controls
|
|
{$$=add_icon($2, $4, $6, $8, $9, $10);}
|
|
| LISTBOX control_desc controls
|
|
{$$=add_control(CT_LISTBOX, 0, $2, $3);}
|
|
| LTEXT labeled_control controls
|
|
{$$=add_control(CT_STATIC, SS_LEFT, $2, $3);}
|
|
| PUSHBUTTON labeled_control controls
|
|
{$$=add_control(CT_BUTTON, BS_PUSHBUTTON, $2, $3);}
|
|
| RADIOBUTTON labeled_control controls
|
|
{$$=add_control(CT_BUTTON, BS_RADIOBUTTON, $2, $3);}
|
|
| RTEXT labeled_control controls
|
|
{$$=add_control(CT_STATIC, SS_RIGHT, $2, $3);}
|
|
| SCROLLBAR control_desc controls
|
|
{$$=add_control(CT_SCROLLBAR, 0, $2, $3);}
|
|
|
|
|
|
labeled_control: tSTRING ',' control_desc {$$=label_control_desc($1,$3);}
|
|
control_desc: NUMBER ',' NUMBER ',' NUMBER ',' NUMBER ',' NUMBER optional_style
|
|
{$$=create_control_desc($1,$3,$5,$7,$9,$10);}
|
|
|
|
optional_style: {$$=0;}|
|
|
',' style {$$=$2;}
|
|
|
|
iconinfo: /*set extent and style to 0 if they are not provided */
|
|
{$$=create_control_desc(0,0,0,0,0,0);}
|
|
/* x and y are overwritten later */
|
|
| ',' NUMBER ',' NUMBER optional_style
|
|
{$$=create_control_desc(0,0,0,$2,$4,$5);}
|
|
|
|
generic_control: tSTRING ',' NUMBER ',' tSTRING ',' style ',' NUMBER
|
|
',' NUMBER ',' NUMBER ',' NUMBER
|
|
{$$=create_generic_control($1,$3,$5,$7,$9,$11,$13,$15);}
|
|
|
|
font: FONT load_and_memoption tSTRING {$$=make_font(load_file($3));}
|
|
|
|
icon: ICON load_and_memoption tSTRING {$$=make_icon(load_file($3));}
|
|
| ICON load_and_memoption raw_data {$$=make_icon($3);}
|
|
|
|
menu: MENU load_and_memoption menu_body {$$=make_menu($3);}
|
|
/* menu items are collected in a gen_res and prefixed with the menu header*/
|
|
menu_body: tBEGIN item_definitions tEND {$$=$2;}
|
|
item_definitions: {$$=new_res();}
|
|
| MENUITEM tSTRING ',' NUMBER item_options item_definitions
|
|
{$$=add_menuitem($2,$4,$5,$6);}
|
|
| MENUITEM SEPARATOR item_definitions
|
|
{$$=add_menuitem("",0,0,$3);}
|
|
| POPUP tSTRING item_options menu_body item_definitions
|
|
{$$=add_popup($2,$3,$4,$5);}
|
|
item_options: {$$=0;}
|
|
| ',' CHECKED item_options {$$=$3|MF_CHECKED;}
|
|
| ',' GRAYED item_options {$$=$3|MF_GRAYED;}
|
|
| ',' HELP item_options {$$=$3|MF_HELP;}
|
|
| ',' INACTIVE item_options {$$=$3|MF_DISABLED;}
|
|
| ',' MENUBARBREAK item_options {$$=$3|MF_MENUBARBREAK;}
|
|
| ',' MENUBREAK item_options {$$=$3|MF_MENUBREAK;}
|
|
|
|
rcdata: RCDATA load_and_memoption raw_data {$$=make_raw($3);}
|
|
|
|
raw_data: tBEGIN raw_elements tEND {$$=$2;}
|
|
raw_elements: SINGLE_QUOTED {$$=hex_to_raw($1,new_res());}
|
|
| NUMBER {$$=int_to_raw($1,new_res());}
|
|
| SINGLE_QUOTED raw_elements {$$=hex_to_raw($1,$2);}
|
|
| NUMBER ',' raw_elements {$$=int_to_raw($1,$3);}
|
|
|
|
stringtable: STRINGTABLE load_and_memoption tBEGIN strings tEND
|
|
{$$=$4;}
|
|
strings: {$$=0;}|
|
|
NUMBER tSTRING strings {$$=0;add_str_tbl_elm($1,$2);}
|
|
|
|
versioninfo: VERSIONINFO NOT_SUPPORTED {$$=0;}
|
|
|
|
/* NOT x | NOT y | a | b means (a|b)& ~x & ~y
|
|
NOT is used to disable default styles */
|
|
style: {$$=new_style();}
|
|
| style_elm {$$=$1;}
|
|
| style_elm '|' style
|
|
{$$=$1;$$->or|=$3->or;$$->and&=$3->and;free($3);}
|
|
|
|
style_elm: NUMBER {$$=new_style();$$->or=$1;}
|
|
| NOT NUMBER {$$=new_style();$$->and=~($2);}
|
|
| '(' style ')' {$$=$2;}
|
|
%%
|
|
extern int line_number;
|
|
extern char* yytext;
|
|
|
|
int yyerror( const char *s )
|
|
{
|
|
fprintf(stderr,"stdin:%d: %s before '%s'\n",line_number,s,yytext);
|
|
return 0;
|
|
}
|
|
|