mirror of
git://source.winehq.org/git/wine.git
synced 2024-07-20 14:22:06 +00:00
d2e1c1a43a
Fri Mar 8 19:07:18 1996 Alexandre Julliard <julliard@lrc.epfl.ch> * [configure.in] Quote '[' and ']' in the test program for the strength-reduce bug. This should work much better... * [files/file.c] Augmented DOS_FILE structure. Most internal functions now return a DOS_FILE* instead of a Unix handle. Added a local file array to replace the PDB list upon startup, to allow using file I/O functions before the first task is created. Added FILE_SetDateTime() and FILE_Sync() functions. * [loader/module.c] Use the DOS file I/O functions in MODULE_LoadExeHeader(). * [objects/bitblt.c] Use visible region instead of GC clip region to clip source area. This fixes the card drawing bug in freecell. * [objects/region.c] Fixed CombineRgn() to allow src and dest regions to be the same. Fri Mar 8 16:32:23 1996 Frans van Dorsselaer <dorssel@rulhm1.leidenuniv.nl> * [controls/EDIT.TODO] Updated so it reflects the current status. * [controls/edit.c] Implemented internal EDIT_WordBreakProc(). Implemented ES_READONLY. Implemented WM_LBUTTONDBLCLK to select whole words. Fixed a lot of types in the function definitions. Wed Mar 6 19:55:00 1996 Alex Korobka <alex@phm30.pharm.sunysb.edu> * [debugger/info.c] Added "walk window" command to walk window list. * [windows/mdi.c] Added proper(?) WM_MDISETMENU message handling. Wed Mar 6 09:27:12 1996 Martin von Loewis <loewis@informatik.hu-berlin.de> * [if1632/callback.c][if1632/relay32.c] RELAY32_CallWindowProcConvStruct: new function. * [win32/struct32.c][win32/Makefile.in][win32/param.c][win32/user32.c] struct32.c: new file. Moved all structure conversions into that file PARAM32_POINT32to16,MSG16to32,USER32_RECT32to16: renamed to STRUCT32_POINT32to16, ... WIN32_POINT,WIN32_MSG,WIN32_RECT,WIN32_PAINTSTRUCT: renamed to POINT32, ... New conversion functions for NCCALCSIZE_PARAMS, WINDOWPOS, CREATESTRUCT. * [include/windows.h][misc/exec.c] WINHELP, MULTIKEYHELP, HELPWININFO: new structures WinHelp: Reimplemented. Thanks to Peter Balch (100710.2566@compuserve.com) for his valuable research. * [win32/winprocs.c] WIN32_CallWindowProcTo16: new function, call in USER32_DefWindowProcA,... Mon Mar 4 23:22:40 1996 Jim Peterson <jspeter@birch.ee.vt.edu> * [include/wintypes.h] Added "#define __export". * [objects/bitblt.c] Put in a few hacks to make bitblt-ing work when upside-down and/or mirrored. BITBLT_StretchImage should really be checked over thoroughly. * [programs/progman/main.c] Added "#include <resource.h>" for definition of HAVE_WINE_CONSTRUCTOR. * [rc/parser.h] [rc/parser.l] [rc/parser.y] [rc/winerc.c] Eliminated shift/reduce conflict in style definition. Added crude error message support: "stdin:%d: parse error before '%s'". Implemented string table support to the best of my ability (it works with LoadString() calls). * [windows/nonclient.c] Fixed bug in NC_DoSizeMove() that made system menu pop up when title bar of non-iconized window was clicked (checked for iconization). Mon Mar 04 20:55:19 1996 Marcus Meissner <msmeissn@cip.informatik.uni-erlangen.de> * [if1632/lzexpand.spec] [if1632/relay.c] [include/lzexpand.h][misc/lzexpand.c] LZEXPAND.DLL added. Sun Mar 03 18:10:22 1996 Albrecht Kleine <kleine@ak.sax.de> * [windows/win.c] Prevent usage of invalid HWNDs in WIN_EnumChildWin(), this prevents too early termination of EnumChildWindows().
223 lines
7.7 KiB
Plaintext
223 lines
7.7 KiB
Plaintext
%{
|
|
/*
|
|
*
|
|
* Copyright Martin von Loewis, 1994
|
|
*/
|
|
|
|
#include <stdio.h>
|
|
#include <stdlib.h>
|
|
#include "parser.h"
|
|
#include "windows.h"
|
|
%}
|
|
%union{
|
|
gen_res *res;
|
|
char *str;
|
|
int num;
|
|
struct rc_style *style;
|
|
}
|
|
%token <num> NUMBER
|
|
%token <str> STRING SINGLE_QUOTED IDENT
|
|
%token ACCELERATORS ALT ASCII tBEGIN tBITMAP CAPTION CHECKBOX CHECKED
|
|
%token CLASS COMBOBOX CONTROL CTEXT CURSOR DEFPUSHBUTTON DIALOG
|
|
%token DISCARDABLE EDITTEXT tEND FIXED 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 STRING 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 tBEGIN events tEND {$$=$3;$$->type=acc;}
|
|
/* the events are collected in a gen_res, as the accelerator resource is just
|
|
an array of events */
|
|
events: {$$=new_res();}
|
|
| STRING ',' 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 STRING {$$=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 | FIXED | MOVEABLE | DISCARDABLE | PURE
|
|
|
|
cursor: CURSOR load_and_memoption STRING {$$=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 STRING dlg_attributes
|
|
{$$=dialog_caption($2,$3);}
|
|
| FONT NUMBER ',' STRING dlg_attributes
|
|
{$$=dialog_font($2,$4,$5);}
|
|
| CLASS STRING dlg_attributes
|
|
{$$=dialog_class($2,$3);}
|
|
| MENU STRING dlg_attributes
|
|
{$$=dialog_menu($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 STRING ',' 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: STRING ',' 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: STRING ',' NUMBER ',' STRING ',' style ',' NUMBER
|
|
',' NUMBER ',' NUMBER ',' NUMBER
|
|
{$$=create_generic_control($1,$3,$5,$7,$9,$11,$13,$15);}
|
|
|
|
font: FONT load_and_memoption STRING {$$=make_font(load_file($3));}
|
|
|
|
icon: ICON load_and_memoption STRING {$$=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 STRING ',' NUMBER item_options item_definitions
|
|
{$$=add_menuitem($2,$4,$5,$6);}
|
|
| MENUITEM SEPARATOR item_definitions
|
|
{$$=add_menuitem("",0,0,$3);}
|
|
| POPUP STRING 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 STRING 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(char *s)
|
|
{
|
|
fprintf(stderr,"stdin:%d: %s before '%s'\n",line_number,s,yytext);
|
|
return 0;
|
|
}
|
|
|