#define  PUSH        1
#define  TOGGLE      2
#define  SCALEX      3
#define  SCALEY      4
#define  DIALOG      5
#define  MENU        6
#define  NEW_MENU    7
#define  FILE_SELECT 8
#define  BOARD       9
#define  BULLETIN   10
#define  SELECTION  11
#define  MESSAGE    12
#define  RADIO      13
#define  ROWCOL     14
#define  SCALEX11   15
#define  SCALEY11   16
#define  STRING     17
#define  INTEGER    18
#define  FLOAT      19
#define  SCALEX00   20
#define  SCALEY00   21
#define  SELBOXGAD  201
#define  FSELBOXGAD 202
#define  FSELSTRING 203
#define  SPECIALPRO 204
#define  SPECIALPAR 205
#define  SPECIALOK  206
#define  SPECIALCAN 207

#ifdef UNIX
#include <X11/Intrinsic.h>
#include <X11/IntrinsicP.h>
#include <X11/CoreP.h>
#include <X11/Shell.h>
#include <Xm/Xm.h>
#include <Xm/BulletinB.h>
#include <Xm/CascadeB.h>
#include <Xm/Frame.h>
#include <Xm/Label.h>
#include <Xm/MainW.h>
#include <Xm/MessageB.h>
#include <Xm/PushB.h>
#include <Xm/PushBG.h>
#include <Xm/RowColumn.h>
#include <Xm/ScrollBar.h>
#include <Xm/ScrolledW.h>
#include <Xm/ToggleBG.h>
#include <Xm/Scale.h>
#include <Xm/SelectioB.h>

extern Display *display; /*  display */
extern XtAppContext app_context; /*  Application Context */
extern Widget app_shell; /*  shell widget */
extern Widget main_window; /*  MainWindow */
extern Widget menu_bar; /*  MenuBar */
extern Widget menu_pane; /*  MenuPane */
extern Widget cascade; /*  CascadeButton */
extern Widget frame; /*  Frame */
extern Widget swindow; /*  ScrolledWindow */
extern Widget row_column; /*  RowColumn */
extern Widget button; /*  PushButtonGadget */
extern Widget hsb;
extern Widget vsb; /*  ScrollBars */
extern Widget radio; /*  Radio button Widget */
extern Widget dialog_box;
#endif

#ifdef AMIGA
extern struct IntuitionBase *IntuitionBase;
extern struct GfxBase *GfxBase;
extern struct Screen *WBScreen;
extern struct Window *my_window;
extern struct Window *prop_window;
extern struct Gadget *prop_gadget;
extern struct NewWindow *my_new_window;
extern struct Menu *menu_bar;

extern struct RastPort *rp;                  /* RastPort - Zeiger */
extern struct IntuiMessage *message;         /* IntuiMessage - Zeiger */
extern struct TmpRas tmp;

extern struct Preferences *oldprefs, *newprefs;
extern int   lenprefs;
#endif

extern int   propdwn;
extern int   last_gadgetid;
extern int    menu_line;
extern int    menu_column;
extern int    fn_number;
extern int    top_slider;
extern void   (*fn_command[160])();
extern int    *var_value[160];
extern int    var_funct[160];
extern int    scale_var0[160];
extern int    scale_var1[160];
extern int    selector[160];
extern int    acc_x;                 /* accumulated x   */
extern int    acc_y;                 /* accumulated y   */
extern int    bas_y;                 /* base scale for y-increment */
extern int    fin_flg;               /* tells the MainLoop to termitate */
extern char   menu_name[80];         /* store menu bar name */
extern char   return_string[80];     /* string returned from dialog box */

#ifdef AMIGA
extern Refresh1Gadget(struct Gadget *g, struct Window *w);
struct NewWindow *init_window(int x, int y, char *title, int pen1, int pen2);
struct Window *open_win(int x, int y, char *title, int pen1, int pen2);
extern struct Gadget *init_gadget(int x, int y, 
                                  USHORT flg, USHORT act,USHORT type,
                                  struct IntuiText *my_text,
                                  struct NewWindow *window);
extern struct IntuiText *init_textstruct(int left, int top);
extern struct IntuiText *init_text(char *title, int left, int top);
extern add_border(struct Gadget *gadget, int x, int y);
extern add_yprop(char *title, int min, int max, struct NewWindow *window, int flag);
extern add_xprop(char *title, int min, int max, struct NewWindow *window, int flag);
extern add_toggle(char *title, struct NewWindow *window);
extern add_integer(char *title, struct NewWindow *window);
extern add_float(char *title, struct NewWindow *window);
extern add_string(char *title, struct NewWindow *window);
extern add_push(char *title, struct NewWindow *window);
extern add_new_menu(char * title);
extern add_menu(char * title);
extern struct Gadget *create_selector(int x, int y, int b,
                                      char *title,
                                      struct NewWindow *window,
                                      char **items,
                                      int fn);
extern struct Gadget *create_fselect(int x, int y, int b,
                                      char *title,
                                      struct NewWindow *window,
                                      char **items,
                                      int fn);
extern add_selector(char *title, struct NewWindow *window);
extern add_fselect(char *title, struct NewWindow *window);
extern MainLoop(struct Window *window);
extern read_gadgets(struct IntuiMessage *message, struct Window *window);
extern UpdateGadgets(struct Window *w);
extern CallBack_menu(ULONG code);
extern CallBack_prop(struct Gadget *prop_gadget, struct Window *prop_window);
extern CallBack_disp_prop(struct Gadget *prop_gadget, struct Window *window);
extern DrawPropBorder(struct Gadget *prop_gadget, struct Window *window);
extern DrawAllPropBorders(struct Window *window);
extern set_new_pointer();
extern set_old_pointer();
extern RequestYesNo(char *text);
extern close_gfx(struct Window *w);
#endif

#ifdef AMIGA
extern read_dir(char *s1, char **s2);
extern Help(char *message);
extern StringBox(char *message, char *rtstr);
extern FileSelect(char *message, char *rtstr);
extern add_item(int x, int y, int type, char *text, int p1, int p2);
extern dummy();
#endif

