/*******************************************************************/
/* This is Enlightenment's definition macro file                   */
/* This file determines keyword values and conveience macros for E */
/* This file is sourced for every file E has to parse              */
/*******************************************************************/
#ifndef __E16_DEFINITIONS__
#define __E16_DEFINITIONS__

/* section begin/end stuff */
#define __BGN 999
#define __END 1000

#define __E_CFG_VERSION 1001

/* booleans */
#define __OFF 0
#define __ON 1
#define __NO 0
#define __YES 1

/* focus mode options */
#define __POINTER 0
#define __SLOPPY 1
#define __CLICK_TO_FOCUS 2

/* move and resize mode */
#define __OPAQUE 0
#define __LINES 1
#define __BOX 2
#define __SHADE 3
#define __BOXSHADE 4
/* for move mode only */
#define __TRANSLUCENT 5
/* move and resize geometry display modes */
#define __NO_GEOMINFO     0
#define __CENTER_GEOMINFO 1
#define __CORNER_GEOMINFO 2


/* positioning and direction */
#define __LEFT 0
#define __RIGHT 1
#define __TOP 2
#define __BOTTOM 3
#define __UP 2
#define __DOWN 3

/* attributes */
#define __FLAG_TITLE            1
#define __FLAG_MINI_ICON        2
#define __FLAG_TITLE_AND_ICON   3

/* fill rules for imageclasses */
#define __SCALE             0
#define __STRETCH           0
#define __TILE_H            1
#define __TILE_V            2
#define __TILE              3
#define __INTEGER_TILE_H    4
#define __INTEGER_TILE_V    8
#define __INTEGER_TILE     12

/* major sections in the config */
#define __CONTROL 0
#define __TCLASS 1
#define __MENU 2
#define __BORDER 3
#define __BUTTON 4
#define __DESKTOP 5
#define __SOUND 9
#define __ACLASS 11
#define __ICLASS 12
#define __MATCH_WINDOW 14
#define __COLOR_MODIFIER 15
#define __SLIDEOUT 16
#define __FX 18
#define __ICONBOX 19
#define __EXTRAS 20
#define __FONTS 21

#define __MENU_STYLE 699
#define __BORDER_PART 505

#define __TOOLTIP_TEXT 17
#define __TOOLTIP 17

#define __NAME 100

#define __ORIENTATION 200
#define __JUSTIFICATION 201
#define __DRAWING_EFFECT 204
#define __FORGROUND_COLOR 205
#define __BACKGROUND_COLOR 206
#define __FONT_TO_RIGHT 0
#define __FONT_TO_DOWN  1
#define __FONT_TO_UP    2
#define __FONT_TO_LEFT  3

#define __EFFECT_NONE    0
#define __EFFECT_NORMAL  0
#define __EFFECT_SHADOW  1
#define __EFFECT_OUTLINE 2

#define __FOCUS_MODE 307
#define __MOVE_MODE 311
#define __RESIZE_MODE 312
#define __GEOMINFO_MODE 1371
#define __SLIDE_MODE 313
#define __SLIDE_ON_CLEANUP 314
#define __SLIDE_ON_MAP 315
#define __SPEED_OF_MAPPING_SLIDING 316
#define __SPEED_OF_CLEANUP_SLIDING 317
#define __TIMEOUT_FOR_DESKTOP_BACKGROUNDS 320
#define __RESISTANCE_TO_MOVE_A_BUTTON 321
#define __AUTOMATICALLY_SAVE_CONFIG 324
#define __DOCK_DIRECTION 325
#define __SHADING_SPEED 326
#define __TOOLTIPS 327
#define __TOOLTIP_TIMEOUT 328
#define __START_POSITION_OF_DOCK 330
#define __USE_SAVEUNDERS 331
#define __MENUS_SLIDE_OUT 332
#define __NUMBER_OF_DESKTOPS 333
#define __BE_PARANOID_ABOUT_SAVING_MEMORY 334
#define __TRANSIENTS_FOLLOW_GROUP_LEADER 335
#define __SWITCH_TO_DESKTOP_WHERE_TRANSIENT_MAPS 336
#define __SHOW_ICONIFIED_ICONS 337
#define __AUTORAISE 338
#define __AUTORAISE_TIMEOUT 339
#define __ALL_NEW_WINDOWS_GET_FOCUS 340
#define __NEW_TRANSIENTS_GET_FOCUS 341
#define __NEW_TRANSIENTS_GET_FOCUS_IF_GROUP_IS_FOCUSED 342
#define __MANUAL_WINDOW_PLACEMENT 343
#define __WARP_POINTER_ON_NEXT_FOCUS 345
#define __EDGE_FLIP_RESISTANCE 346
#define __SHOW_PAGERS 347
#define __PAGER_DISPLAY_HIQ 348
#define __PAGER_DISPLAY_SNAPSHOTS 349
#define __ANIMATE_WINDOW_SHADING 350
#define __MENUS_ONSCREEN 351
#define __PREFER_USER_BACKGROUNDS 1350
#define __ZOOM_PAGER_WINDOWS 1351
#define __SHOW_PAGER_WINDOW_TITLE 1352
#define __RAISE_WINDOW_ON_NEXT_FOCUS 1353
#define __DISPLAY_WARP 1354
#define __WARP_POINTER_AFTER_FOCUS 1355
#define __PAGER_SCANSPEED 1356
#define __GROUP_BORDER 1358
#define __GROUP_KILL 1359
#define __GROUP_MOVE 1360
#define __GROUP_RAISE 1361
#define __GROUP_ICONIFY 1362
#define __GROUP_STICK 1363
#define __GROUP_SHADE 1364
#define __GROUP_MIRROR 1365
#define __KDE_SUPPORT 1366
#define __CLICKS_ALWAYS_RAISE_WINDOWS 1367
#define __ROOT_WINDOW_TOOLTIP 1368
#define __PAGER_BUTTONS 1369

#define __DIRECTION_OF_DESKTOP_DRAG 400
#define __WIDTH_OF_DRAGBAR 401
#define __ORDER_OF_BUTTONS_ON_DRAGBAR 402
#define __LENGTH_OF_DRAGBAR 403
#define __DESKTOPS_SLIDE_IN 404
#define __SPEED_OF_DESKTOP_SLIDE 405
#define __HIGH_QUALITY_BACKGROUNDS 406
#define __DESKTOP_AREA_SIZE 407

#define __NORMAL 5
#define __CLICKED 352
#define __HILITED 353
#define __NORMAL_ACTIVE 354
#define __CLICKED_ACTIVE 355
#define __HILITED_ACTIVE 356
#define __EDGE_SCALING 357
#define __PADDING 358
#define __NORMAL_STICKY 359
#define __CLICKED_STICKY 360
#define __HILITED_STICKY 361
#define __NORMAL_ACTIVE_STICKY 362
#define __NORMAL_ACTIVE_CLICKED 363
#define __NORMAL_ACTIVE_HILITED 364
#define __CLICKED_ACTIVE_STICKY 363
#define __HILITED_ACTIVE_STICKY 364
#define __MODIFIER 370
#define __FILLRULE 371
#define __TRANSPARENT 372

#define __ROTATE 373
#define __ROTATE_90 1
#define __ROTATE_180 2
#define __ROTATE_270 3
#define __FLIP 373
#define __FLIP_HORIZONTAL 4
#define __FLIP_90 5
#define __FLIP_VERTICAL 6
#define __FLIP_270 7

#define __BEVEL 374
#define __BEVEL_AMIGA 1
#define __BEVEL_MOTIF 2
#define __BEVEL_NEXT 3
#define __BEVEL_DOUBLE 4
#define __BEVEL_WIDEDOUBLE 5
#define __BEVEL_THINPOINT 6
#define __BEVEL_THICKPOINT 7

#define __KEEP_ON_TOP 453
#define __FLAGS 454
#define __IS_A_REGION 455
#define __MIN_WIDTH 456
#define __MAX_WIDTH 457
#define __TOPLEFT_ORIGIN 467
#define __TOPLEFT_X_PERCENTAGE 458
#define __TOPLEFT_X_ABSOLUTE 459
#define __TOPLEFT_Y_PERCENTAGE 460
#define __TOPLEFT_Y_ABSOLUTE 461
#define __BOTTOMRIGHT_ORIGIN 462
#define __BOTTOMRIGHT_X_PERCENTAGE 463
#define __BOTTOMRIGHT_X_ABSOLUTE 464
#define __BOTTOMRIGHT_Y_PERCENTAGE 465
#define __BOTTOMRIGHT_Y_ABSOLUTE 466
#define __MIN_HEIGHT 468
#define __MAX_HEIGHT 469
#define __KEEP_WHEN_SHADED 470
#define __BORDER_SIZE_LEFT 501
#define __BORDER_SIZE_RIGHT 502
#define __BORDER_SIZE_TOP 503
#define __BORDER_SIZE_BOTTOM 504
#define __SHADE_DIRECTION 506
#define __CHANGES_SHAPE 507
#define __BORDER_GROUP_NAME 508

#define __X_ORIGIN 528
#define __Y_ORIGIN 529
#define __X_ABSOLUTE 530
#define __X_PERCENTAGE 531
#define __Y_ABSOLUTE 532
#define __Y_PERCENTAGE 533
#define __X_SIZE_PERCENTAGE 534
#define __Y_SIZE_PERCENTAGE 535
#define __X_SIZE_ABSOLUTE 536
#define __Y_SIZE_ABSOLUTE 537
#define __USE_SIZE_OF_IMAGE 538
#define __PUT_ON_DESKTOP 539
#define __MAKE_STICKY 540
#define __IS_INTERNAL 541
#define __SHOW_BY_DEFAULT 542
#define __LABEL 543

#define __SOLID_COLOR 560
#define __BACKGROUND_LAYER 561
#define __FORGROUND_LAYER 562
#define __USE_ON_DESKTOP 564
#define __DESKTOP_ALL -1

#define __TYPE_NORMAL 5
#define __TYPE_GLOBAL 7

/* possible actions that can be performed */
#define __A_EXEC	exec
#define __A_CMD

#define __A_NONE	nop
#define __A_EXIT	exit
#define __A_ALERT	alert
#define __A_SHOW_MENU	menus show
#define __A_HIDE_MENU	menus hide
#define __A_CLEANUP	desk arrange
#define __A_ABOUT	about

#define __A_MOVE	wop * mo ptr
#define __A_RESIZE	wop * sz ptr
#define __A_RAISE	wop * ra
#define __A_LOWER	wop * lo
#define __A_RESIZE_H	wop * sz ptr-h
#define __A_RESIZE_V	wop * sz ptr-v
#define __A_KILL	wop * close
#define __A_KILL_NASTY	wop * kill
#define __A_STICK	wop * st
#define __A_ICONIFY	wop * ic
#define __A_SHADE	wop * sh
#define __A_MAX_HEIGHT	wop * th
#define __A_MAX_WIDTH	wop * tw
#define __A_MAX_SIZE	wop * ts
#define __A_SET_LAYER	wop * la
#define __A_SNAPSHOT	remember * all
#define __A_ZOOM	wop * zoom
#define __A_FULLSCREEN	wop * fs
#define __A_RAISE_LOWER	wop * raiselower
#define __A_SET_BORDER	wop * bo

#define __A_ICONIFY_NG	wop % ic
#define __A_KILL_NG	wop % close
#define __A_MOVE_NG	wop % mo ptr
#define __A_RAISE_NG	wop % ra
#define __A_LOWER_NG	wop % lo
#define __A_STICK_NG	wop % st
#define __A_SHADE_NG	wop % sh
#define __A_RAISE_LOWER_NG	wop % raiselower
#define __A_SET_BORDER_NG	wop % bo

#define __A_SKIPFOCUS	wop * skipfocus
#define __A_SKIPTASK	wop * skiptask
#define __A_SKIPWINLIST	wop * skipwinlist
#define __A_NEVERFOCUS	wop * no_wm_focus
#define __A_SKIPLISTS	wop * skiplists
#define __A_SWAPMOVE	wop * swapmove

#define __A_SEND_TO_NEXT_DESK	wop * desk next
#define __A_SEND_TO_PREV_DESK	wop * desk prev
#define __A_MOVE_WIN_TO_AREA	wop * area
#define __A_MOVE_WIN_BY_AREA	wop * arel

#define __A_DESKTOP_NEXT	desk next
#define __A_DESKTOP_PREV	desk prev
#define __A_DESKTOP_RAISE	desk raise
#define __A_DESKTOP_LOWER	desk lower
#define __A_DESKTOP_DRAG	desk drag
#define __A_DESKTOP_INPLACE	desk this
#define __A_GOTO_DESK		desk goto

#define __A_AREA_SET		area set
#define __A_AREA_MOVE_BY	area move

#define __A_DRAG_BUTTON		button mo ptr

#define __A_HIDESHOW_BUTTON	button_show
#define __A_SLIDEOUT		slideout
#define __A_FOCUS_NEXT		focus next
#define __A_FOCUS_PREV		focus prev
#define __A_BACKGROUND_SET	bg use

#define __A_START_GROUP		gop * start
#define __A_ADD_TO_GROUP	gop * add
#define __A_REMOVE_FROM_GROUP	gop * del
#define __A_BREAK_GROUP		gop * break
#define __A_SHOWHIDE_GROUP	gop * showhide

#define __A_CREATE_ICONBOX	ibox new

#define __MODIFIER_KEY 101
#define __TYPE 102
#define __ALLOW_ANY_MODIFIER_KEYS 103
#define __ACTION 104
#define __KEY 427
#define __EVENT 428
#define __ALLOW_ANY_BUTTON 930
#define __ALLOW_ANY_KEY 931
#define __NEXT_ACTION 105
#define __TOOLTIP_ACTION_TEXT 107

#define __NONE 0
#define __SHIFT 900
#define __LOCK 901
#define __CTRL 902
#define __ALT 903
#define __META2 904
#define __META3 905
#define __WINDOWS_KEY 906
#define __META5 907
#define __CTRL_ALT 910
#define __CTRL_SHIFT 911
#define __ALT_SHIFT 912
#define __CTRL_ALT_SHIFT 913
#define __CTRL_META4 914
#define __SHIFT_META4 915
#define __CTRL_META4_SHIFT 916
#define __CTRL_META5 917
#define __SHIFT_META5 918
#define __CTRL_META5_SHIFT 919
#define __WINDOWS_SHIFT 920
#define __WINDOWS_CTRL 921
#define __WINDOWS_ALT 922


#define __MOUSE_PRESS 0
#define __MOUSE_RELEASE 1
#define __MOUSE_ENTER 2
#define __MOUSE_LEAVE 3
#define __KEY_PRESS 4
#define __KEY_RELEASE 5
#define __DOUBLE_CLICK 6
#define __FOCUS_IN 7
#define __FOCUS_OUT 8

#define __USE_BORDER 480
#define __HAS_NAME 481
#define __HAS_CLASS 482
#define __HAS_TITLE 483
#define __IS_IN_WIDTH_RANGE 484
#define __IS_IN_HEIGHT_RANGE 485
#define __IS_TRANSIENT 486
#define __CANNOT_RESIZE_HORIZONTALLY 487
#define __CANNOT_RESIZE_VERTICALLY 488
#define __IS_SHAPED 489
#define __USE_ICON 490
#define __MAKE_WINDOW_STICKY 492

#define __RED 600
#define __GREEN 601
#define __BLUE 602

#define __SLIDE_DIRECTION 620

#define __TOOLTIP_ICON 640
#define __BUBBLE1_ICLASS 641
#define __BUBBLE2_ICLASS 642
#define __BUBBLE3_ICLASS 643
#define __BUBBLE4_ICLASS 644
#define __DISTANCE 645
#define __TOOLTIP_HELP_ICON 646

#define __BG_ICLASS 700
#define __ITEM_ICLASS 701
#define __SUBMENU_ICLASS 702
#define __USE_ITEM_BACKGROUNDS 703
#define __MAXIMUM_NUMBER_OF_COLUMNS 704
#define __MAXIMUM_NUMBER_OF_ROWS 705
#define __STYLE 706
#define __MENU_ITEM 707
#define __SUMENU 708
#define __MENU_ACTION 709
#define __MENU_PREBUILT 710
#define __MENU_TITLE 711

#define __CURSOR 800
#define __BG_COLOR 801
#define __FG_COLOR 802
#define __XBM_FILE 803
#define __NATIVE_ID 804

#define __TRANSPARENCY 2001
#define __SHOW_NAMES 2002
#define __ICON_SIZE 2003
#define __ICON_MODE 2004
#define __SCROLLBAR_SIDE 2005
#define __SCROLLBAR_ARROWS 2006
#define __AUTOMATIC_RESIZE 2007
#define __SHOW_ICON_BASE 2008
#define __SCROLLBAR_AUTOHIDE 2009
#define __COVER_HIDE 2010
#define __RESIZE_ANCHOR 2011
#define __ICONBOX_ANIMATE 2012
#define __EXTRA_HEAD 2013

#define __HORIZONTAL 0
#define __VERTICAL 1
#define __BAR_TOP 0
#define __BAR_LEFT 0
#define __BAR_BOTTOM 1
#define __BAR_RIGHT 1
#define __START 0
#define __BOTH 1
#define __FINISH 2
#define __NEITHER 3

/* Native cursor definitions */
#define XC_NONE 999
#define XC_x_CURSOR 0
#define XC_ARROW 2
#define XC_BASED_ARROW_DOWN 4
#define XC_BASED_ARROW_UP 6
#define XC_BOAT 8
#define XC_BOGOSITY 10
#define XC_BOTTOM_LEFT_CORNER 12
#define XC_BOTTOM_RIGHT_CORNER 14
#define XC_BOTTOM_SIDE 16
#define XC_BOTTOM_TEE 18
#define XC_BOX_SPIRAL 20
#define XC_CENTER_PTR 22
#define XC_CIRCLE 24
#define XC_CLOCK 26
#define XC_COFFEE_MUG 28
#define XC_CROSS 30
#define XC_CROSS_REVERSE 32
#define XC_CROSSHAIR 34
#define XC_DIAMOND_CROSS 36
#define XC_DOT 38
#define XC_DOTBOX 40
#define XC_DOUBLE_ARROW 42
#define XC_DRAFT_LARGE 44
#define XC_DRAFT_SMALL 46
#define XC_DRAPED_BOX 48
#define XC_EXCHANGE 50
#define XC_FLEUR 52
#define XC_GOBBLER 54
#define XC_GUMBY 56
#define XC_HAND1 58
#define XC_HAND2 60
#define XC_HEART 62
#define XC_ICON 64
#define XC_IRON_CROSS 66
#define XC_LEFT_PTR 68
#define XC_LEFT_SIDE 70
#define XC_LEFT_TEE 72
#define XC_LEFTBUTTON 74
#define XC_LL_ANGLE 76
#define XC_LR_ANGLE 78
#define XC_MAN 80
#define XC_MIDDLEBUTTON 82
#define XC_MOUSE 84
#define XC_PENCIL 86
#define XC_PIRATE 88
#define XC_PLUS 90
#define XC_QUESTION_ARROW 92
#define XC_RIGHT_PTR 94
#define XC_RIGHT_SIDE 96
#define XC_RIGHT_TEE 98
#define XC_RIGHTBUTTON 100
#define XC_RTL_LOGO 102
#define XC_SAILBOAT 104
#define XC_SB_DOWN_ARROW 106
#define XC_SB_H_DOUBLE_ARROW 108
#define XC_SB_LEFT_ARROW 110
#define XC_SB_RIGHT_ARROW 112
#define XC_SB_UP_ARROW 114
#define XC_SB_V_DOUBLE_ARROW 116
#define XC_SHUTTLE 118
#define XC_SIZING 120
#define XC_SPIDER 122
#define XC_SPRAYCAN 124
#define XC_STAR 126
#define XC_TARGET 128
#define XC_TCROSS 130
#define XC_TOP_LEFT_ARROW 132
#define XC_TOP_LEFT_CORNER 134
#define XC_TOP_RIGHT_CORNER 136
#define XC_TOP_SIDE 138
#define XC_TOP_TEE 140
#define XC_TREK 142
#define XC_UL_ANGLE 144
#define XC_UMBRELLA 146
#define XC_UR_ANGLE 148
#define XC_WATCH 150
#define XC_XTERM 152

/*******************************************************************/
/* Convenience macros to make configuring E SO much simpler        */
/*******************************************************************/

/*********** Window match convenience macros ***********************/
#define USE_BORDER_FOR_CLIENT_WITH_TITLE(title, border) \
__MATCH_WINDOW __BGN;\
  __NAME border"_MATCH";\
  __USE_BORDER border;\
  __HAS_TITLE title;\
__END

#define USE_BORDER_FOR_CLIENT_WITH_NAME(name, border) \
__MATCH_WINDOW __BGN;\
  __NAME border"_MATCH";\
  __USE_BORDER border;\
  __HAS_NAME name;\
__END

#define USE_BORDER_FOR_CLIENT_WITH_CLASS(class, border) \
__MATCH_WINDOW __BGN;\
  __NAME border"_MATCH";\
  __USE_BORDER border;\
  __HAS_CLASS class;\
__END

#define USE_BORDER_FOR_TRANSIENT_CLIENT(border) \
__MATCH_WINDOW __BGN;\
  __NAME border"_MATCH";\
  __USE_BORDER border;\
  __IS_TRANSIENT __ON;\
  __END

#define USE_BORDER_FOR_UNRESIZABLE_CLIENT(border) \
__MATCH_WINDOW __BGN;\
  __NAME border"_MATCH";\
  __USE_BORDER border;\
  __CANNOT_RESIZE_HORIZONTALLY __ON;\
  __CANNOT_RESIZE_VERTICALLY __ON;\
__END

#define USE_BORDER_FOR_SHAPED_CLIENT(border) \
__MATCH_WINDOW __BGN;\
  __NAME border"_MATCH";\
  __USE_BORDER border;\
  __IS_SHAPED __ON;\
__END

#define USE_ICON_IMAGECLASS_FOR_CLIENT_TITLE(title, iclass) \
__MATCH_WINDOW __BGN;\
  __NAME iclass"_MATCH";\
  __USE_ICON iclass;\
  __HAS_TITLE title;\
__END

#define USE_ICON_IMAGECLASS_FOR_CLIENT_NAME(name, iclass) \
__MATCH_WINDOW __BGN;\
  __NAME iclass"_MATCH";\
  __USE_ICON iclass;\
  __HAS_NAME name;\
__END

#define USE_ICON_IMAGECLASS_FOR_CLIENT_CLASS(class, iclass) \
__MATCH_WINDOW __BGN;\
  __NAME iclass"_MATCH";\
  __USE_ICON iclass;\
  __HAS_CLASS class;\
__END

#define USE_ICON_IMAGE_FOR_CLIENT_TITLE(title, image) \
__ICLASS __BGN;\
  __NAME image"_ICLASS";\
  __NORMAL image;\
__END;\
__MATCH_WINDOW __BGN;\
  __NAME image"_MATCH";\
  __USE_ICON image"_ICLASS";\
  __HAS_TITLE title;\
__END

#define USE_ICON_IMAGE_FOR_CLIENT_NAME(name, image) \
__ICLASS __BGN;\
  __NAME image"_ICLASS";\
  __NORMAL image;\
__END;\
__MATCH_WINDOW __BGN;\
  __NAME image"_MATCH";\
  __USE_ICON image"_ICLASS";\
  __HAS_NAME name;\
__END

#define USE_ICON_IMAGE_FOR_CLIENT_CLASS(class, image) \
__ICLASS __BGN;\
  __NAME image"_ICLASS";\
  __NORMAL image;\
__END;\
__MATCH_WINDOW __BGN;\
  __NAME image"_MATCH";\
  __USE_ICON image"_ICLASS";\
  __HAS_CLASS class;\
__END

#define USE_ICON_IMAGES_FOR_CLIENT_TITLE(title, image, image2, image3) \
__ICLASS __BGN;\
  __NAME image"_ICLASS";\
  __NORMAL image;\
  __HILITED image2;\
  __CLICKED image3;\
__END;\
__MATCH_WINDOW __BGN;\
  __NAME image"_MATCH";\
  __USE_ICON image"_ICLASS";\
  __HAS_TITLE title;\
__END

#define USE_ICON_IMAGES_FOR_CLIENT_NAME(name, image, image2, image3) \
__ICLASS __BGN;\
  __NAME image"_ICLASS";\
  __NORMAL image;\
  __HILITED image2;\
  __CLICKED image3;\
__END;\
  __MATCH_WINDOW __BGN;\
  __NAME image"_MATCH";\
  __USE_ICON image"_ICLASS";\
  __HAS_NAME name;\
__END

#define MAKE_WINDOW_STICKY_BY_TITLE(title) \
__MATCH_WINDOW __BGN;\
  __NAME title_"STICKYTITLE";\
  __MAKE_WINDOW_STICKY 1;\
  __HAS_TITLE title;\
__END

#define MAKE_WINDOW_STICKY_BY_CLASS(class) \
__MATCH_WINDOW __BGN;\
  __NAME class"_STICKYCLASS";\
  __MAKE_WINDOW_STICKY 1;\
  __HAS_CLASS class;\
__END

#define MAKE_WINDOW_STICKY_BY_NAME(name) \
__MATCH_WINDOW __BGN;\
  __NAME name"_STICKYNAME";\
  __MAKE_WINDOW_STICKY 1;\
  __HAS_NAME name;\
__END

#define WINDOW_ON_DESK_BY_NAME(name,desk) \
__MATCH_WINDOW __BGN;\
  __NAME name"_DESKNAME";\
  __DESKTOP desk;\
  __HAS_NAME name;\
__END

#define WINDOW_ON_DESK_BY_TITLE(title,desk) \
__MATCH_WINDOW __BGN;\
  __NAME title"_DESKTITLE";\
  __DESKTOP desk;\
  __HAS_TITLE title;\
__END

#define WINDOW_ON_DESK_BY_CLASS(class,desk) \
__MATCH_WINDOW __BGN;\
  __NAME class"_DESKCLASS";\
  __DESKTOP desk;\
  __HAS_TITLE class;\
__END

/*********** Menu creation macros **********************************/
#define BEGIN_NEW_DIRSCAN_MENU(name, style, directory) \
__MENU __BGN;\
  __MENU_PREBUILT name style "dirscan" directory

#define BEGIN_NEW_GNOME_MENU(name, style, directory) \
__MENU __BGN;\
  __MENU_PREBUILT name style "gnome" directory

#define BEGIN_NEW_BORDERS_MENU(name, style) \
__MENU __BGN;\
  __MENU_PREBUILT name style "borders"

#define BEGIN_NEW_THEMES_MENU(name, style) \
__MENU __BGN;\
  __MENU_PREBUILT name style "themes"

#define BEGIN_NEW_WINDOWLIST_MENU(name, style) \
__MENU __BGN;\
  __MENU_PREBUILT name style "windowlist"

#define BEGIN_NEW_DESKTOPWINDOWLIST_MENU(name, style) \
__MENU __BGN;\
  __MENU_PREBUILT name style "desktopwindowlist"

#define ADD_MENU_TITLE(name) \
  __MENU_TITLE name

#define BEGIN_NEW_FILE_MENU(name, style, thefile) \
__MENU __BGN;\
  __MENU_PREBUILT name style "file" thefile

#define NORMAL_MENU_STYLE_VERTICAL(name, border, tclass, bg_iclass, item_iclass, submenu_iclass, max_items) \
__MENU_STYLE __BGN;\
  __NAME name;\
  __BORDER border;\
  __TCLASS tclass;\
  __BG_ICLASS bg_iclass;\
  __ITEM_ICLASS item_iclass;\
  __SUBMENU_ICLASS submenu_iclass;\
  __USE_ITEM_BACKGROUNDS __OFF;\
  __MAXIMUM_NUMBER_OF_ROWS max_items;\
__END

#define NORMAL_MENU_STYLE_HORIZONTAL(name, border, tclass, bg_iclass, item_iclass, submenu_iclass, max_items) \
__MENU_STYLE __BGN;\
  __NAME name;\
  __BORDER border;\
  __TCLASS tclass;\
  __BG_ICLASS bg_iclass;\
  __ITEM_ICLASS item_iclass;\
  __SUBMENU_ICLASS submenu_iclass;\
  __USE_ITEM_BACKGROUNDS __OFF;\
  __MAXIMUM_NUMBER_OF_COLUMNS max_items;\
__END

#define NEXTSTEP_MENU_STYLE_VERTICAL(name, border, tclass, item_iclass, submenu_iclass, max_items) \
__MENU_STYLE __BGN;\
  __NAME name;\
  __BORDER border;\
  __TCLASS tclass;\
  __ITEM_ICLASS item_iclass;\
  __SUBMENU_ICLASS submenu_iclass;\
  __USE_ITEM_BACKGROUNDS __ON;\
  __MAXIMUM_NUMBER_OF_ROWS max_items;\
__END

#define NEXTSTEP_MENU_STYLE_HORIZONTAL(name, border, tclass, item_iclass, submenu_iclass, max_items) \
__MENU_STYLE __BGN;\
  __NAME name;\
  __BORDER border;\
  __TCLASS tclass;\
  __ITEM_ICLASS item_iclass;\
  __SUBMENU_ICLASS submenu_iclass;\
  __USE_ITEM_BACKGROUNDS __ON;\
  __MAXIMUM_NUMBER_OF_COLUMNS max_items;\
__END

#define BEGIN_NEW_MENU(name, style) \
__MENU __BGN;\
  __NAME name;\
  __STYLE style

#define END_MENU \
__END

#define ADD_MENU_ITEM(text, icon_iclass, action, parameters) \
  __MENU_ITEM icon_iclass text;\
  __MENU_ACTION action parameters

#define ADD_MENU_TEXT_ITEM(text, action, parameters) \
  __MENU_ITEM "NULL" text;\
  __MENU_ACTION action parameters

#define ADD_MENU_ICON_ITEM(icon_iclass, action, parameters) \
  __MENU_ITEM icon_iclass;\
  __MENU_ACTION action parameters

#define ADD_MENU_SUBMENU_ITEM(text, icon_iclass, submenu_name) \
  __SUMENU submenu_name icon_iclass text

#define ADD_MENU_SUBMENU_TEXT_ITEM(text, submenu_name) \
  __SUMENU submenu_name "NULL" text

#define ADD_MENU_SUBMENU_ICON_ITEM(icon_iclass, submenu_name) \
  __SUMENU submenu_name icon_iclass

/*********** Tooltip creation macros *******************************/
#define DEFINE_TOOLTIP(name, main_iclass, cloud1_iclass, cloud2_iclass, cloud3_iclass, cloud4_iclass, tclass, distance) \
__TOOLTIP __BGN;\
  __NAME name;\
  __ICLASS main_iclass;\
  __BUBBLE1_ICLASS cloud1_iclass;\
  __BUBBLE2_ICLASS cloud2_iclass;\
  __BUBBLE3_ICLASS cloud3_iclass;\
  __BUBBLE4_ICLASS cloud4_iclass;\
  __TOOLTIP_HELP_ICON "DO_HELP_BUTTON";\
  __TCLASS tclass;\
  __DISTANCE distance;\
__END

#define DEFINE_TOOLTIP_WITH_LOGO(name, main_iclass, cloud1_iclass, cloud2_iclass, cloud3_iclass, cloud4_iclass, tclass, distance, logo) \
__TOOLTIP __BGN;\
  __NAME name;\
  __ICLASS main_iclass;\
  __BUBBLE1_ICLASS cloud1_iclass;\
  __BUBBLE2_ICLASS cloud2_iclass;\
  __BUBBLE3_ICLASS cloud3_iclass;\
  __BUBBLE4_ICLASS cloud4_iclass;\
  __TOOLTIP_HELP_ICON logo;\
  __TCLASS tclass;\
  __DISTANCE distance;\
__END

#define DEFINE_TOOLTIP_SIMPLE(name, iclass, tclass, distance) \
__TOOLTIP __BGN;\
  __NAME name;\
  __ICLASS iclass;\
  __TCLASS tclass;\
  __DISTANCE distance;\
__END

/*********** Sound creation macros *******************************/
#define BEGIN_SOUND \
__SOUND __BGN

#define END_SOUND \
__END

/*********** Sound creation macros *******************************/
#define BEGIN_SLIDEOUT(name, direction) \
__SLIDEOUT __BGN;\
  __NAME name;\
  __SLIDE_DIRECTION direction

#define ADD_BUTTON_TO_SLIDEOUT(name) \
  __BUTTON name

#define END_SLIDEOUT \
__END

/*********** Desktop BG creation macros ***************************/
#define BEGIN_BACKGROUND(name) \
__DESKTOP __BGN;\
  __NAME name

#define END_BACKGROUND \
__END

#define SET_SOLID(color) \
  __SOLID_COLOR color

#define ON_DESKTOP(num) \
  __USE_ON_DESKTOP num

#define DEFAULT_BACKGROUND \
  __USE_ON_DESKTOP __DESKTOP_ALL

#define ADD_BACKGROUND_TILED(file)\
  __BACKGROUND_LAYER file 1 1 0 0 0 0

#define ADD_BACKGROUND_SCALED(file)\
  __BACKGROUND_LAYER file 0 0 0 0 1024 1024

#define ADD_BACKGROUND_TILED_SCALED_VERTICALLY(file)\
  __BACKGROUND_LAYER file 1 0 0 0 0 1024

#define ADD_BACKGROUND_TILED_SCALED_HORIZONTALLY(file)\
  __BACKGROUND_LAYER file 1 0 0 0 1024 0

#define ADD_BACKGROUND_CENTERED(file)\
  __BACKGROUND_LAYER file 0 1 512 512 0 0

#define ADD_BACKGROUND_TILED_CENTER(file)\
  __BACKGROUND_LAYER file 1 1 512 512 0 0

#define ADD_BACKGROUND_SCALED_RETAIN_ASPECT(file)\
  __BACKGROUND_LAYER file 0 1 512 512 1024 1024

#define ADD_BACKGROUND_TILED_SCALED_RETAIN_ASPECT(file)\
  __BACKGROUND_LAYER file 1 1 512 512 1024 1024

#define ADD_OVERLAY_IMAGE_CENTERED(file) \
  __FORGROUND_LAYER file 1 512 512 0 0

#define ADD_OVERLAY_IMAGE_TOP_LEFT(file) \
  __FORGROUND_LAYER file 1 0 0 0 0

#define ADD_OVERLAY_IMAGE_TOP_RIGHT(file) \
  __FORGROUND_LAYER file 1 1024 0 0 0

#define ADD_OVERLAY_IMAGE_BOTTOM_LEFT(file) \
  __FORGROUND_LAYER file 1 0 1024 0 0

#define ADD_OVERLAY_IMAGE_BOTTOM_RIGHT(file) \
  __FORGROUND_LAYER file 1 1024 1024 0 0

#define ADD_OVERLAY_IMAGE_BOTTOM_MIDDLE(file) \
  __FORGROUND_LAYER file 1 512 1024 0 0

#define ADD_OVERLAY_IMAGE_TOP_MIDDLE(file) \
  __FORGROUND_LAYER file 1 512 0 0 0

#define ADD_OVERLAY_IMAGE_LEFT_MIDDLE(file) \
  __FORGROUND_LAYER file 1 0 512 0 0

#define ADD_OVERLAY_IMAGE_RIGHT_MIDDLE(file) \
  __FORGROUND_LAYER file 1 1024 512 0 0

#define ADD_OVERLAY_IMAGE_SCALED(file) \
  __FORGROUND_LAYER file 0 0 0 1024 1024

#define ADD_OVERLAY_IMAGE_ASPECT(file) \
  __FORGROUND_LAYER file 1 512 512 1024 1024

#define ADD_BACKGROUND_SCALED_RETAIN_ASPECT_ALIGN_RIGHT(file)\
  __BACKGROUND_LAYER file 0 1 1024 512 0 1024

#define ADD_BACKGROUND_SCALED_RETAIN_ASPECT_ALIGN_LEFT(file)\
  __BACKGROUND_LAYER file 0 1 0 512 0 1024

#define ADD_BACKGROUND_SCALED_RETAIN_ASPECT_ALIGN_TOP(file)\
  __BACKGROUND_LAYER file 0 1 512 0 1024 0

#define ADD_BACKGROUND_SCALED_RETAIN_ASPECT_ALIGN_BOTTOM(file)\
  __BACKGROUND_LAYER file 0 1 512 1024 1024 0

#endif /* __E16_DEFINITIONS__ */
