/***********************************************************
 *
 *  intuistr.c
 *
 *  Intuition-Strukturen für Window und Menus zu "Calc" (die
 *  Gadgets werden in gadgets.c dynamisch erzeugt). TextAttr
 *  für den kleinen Zeichensatz.
 *
 *  Peter Gober, 06-Oct-88
 *
 ***********************************************************/


#include <exec/types.h>
#include <intuition/intuition.h>
#include "calc.h"


/*
 *  Unser Fenster
 */

struct NewWindow newwind =
{
   400, 14,                             /* LeftEdge, TopEdge */
   SPCHOR + ROWS*(GADWIDTH+SPCHOR),
   GADTOP + LINS*(GADHEIGHT+SPCVER),
                                        /* Width, Height */
   -1, -1,                              /* DetailPen, BlockPen */
   GADGETUP | CLOSEWINDOW | MENUPICK |
   VANILLAKEY,                          /* IDCMPFlags */
   WINDOWDEPTH | WINDOWCLOSE |
   WINDOWDRAG | SMART_REFRESH |
   NOCAREREFRESH,                       /* Flags */
   NULL,                                /* FirstGadget */
   NULL,                                /* CheckMark */
   (UBYTE *) "Calc V1.0",               /* Title */
   NULL,                                /* Screen */
   NULL,                                /* BitMap */
   0, 0,                                /* MinWidth, MinHeight */
   0, 0,                                /* MaxWidth, MaxHeight */
   WBENCHSCREEN                         /* Type */
};


/*
 *  Die Menüs:
 *
 *  Anzeige            Stellen           Zahlensystem      Winkel
 *    Normal             alle              Dezimal           Altgrad
 *    Wissenschaftlich   1                 Hexadezimal       Bogenmaß
 *                       2                 Oktal             Neugrad
 *                       3                 Binär
 *                       4
 *                       5
 *                       6
 *                       7
 *                       8
 *
 *
 *  Los geht es mit dem Winkel-Menü
 */

struct IntuiText itemwinkgrdtext =
{
   2, 1, JAM1,                          /* FrontPen, BackPen, DrawMode */
   CHECKWIDTH, 0,                       /* LeftEdge, TopEdge */
   NULL,                                /* ITextFont */
   (UBYTE *) "Neugrad",                 /* IText */
   NULL                                 /* NextText */
};

struct MenuItem itemwinkgrd =
{
   NULL,                                /* NextItem */
   0, 2 * 10,                           /* LeftEdge, TopEdge */
   CHECKWIDTH + 90 + COMMWIDTH, 9,      /* Width, Height */
   CHECKIT | ITEMTEXT | ITEMENABLED |
   HIGHCOMP,                            /* Flags */
   0xFFFB,                              /* Mutual Exclude */
   (APTR) &itemwinkgrdtext,             /* ItemFill */
   NULL,                                /* SelectFill */
   NULL,                                /* Command */
   NULL,                                /* SubItem */
   NULL                                 /* NextSelect */
};

struct IntuiText itemwinkradtext =
{
   2, 1, JAM1,                          /* FrontPen, BackPen, DrawMode */
   CHECKWIDTH, 0,                       /* LeftEdge, TopEdge */
   NULL,                                /* ITextFont */
   (UBYTE *) "Bogenmaß",                /* IText */
   NULL                                 /* NextText */
};

struct MenuItem itemwinkrad =
{
   &itemwinkgrd,                        /* NextItem */
   0, 1 * 10,                           /* LeftEdge, TopEdge */
   CHECKWIDTH + 90 + COMMWIDTH, 9,      /* Width, Height */
   CHECKIT | ITEMTEXT | ITEMENABLED |
   HIGHCOMP | COMMSEQ,                  /* Flags */
   0xFFFD,                              /* Mutual Exclude */
   (APTR) &itemwinkradtext,             /* ItemFill */
   NULL,                                /* SelectFill */
   'r',                                 /* Command */
   NULL,                                /* SubItem */
   NULL                                 /* NextSelect */
};

struct IntuiText itemwinkdegtext =
{
   2, 1, JAM1,                          /* FrontPen, BackPen, DrawMode */
   CHECKWIDTH, 0,                       /* LeftEdge, TopEdge */
   NULL,                                /* ITextFont */
   (UBYTE *) "Altgrad",                 /* IText */
   NULL                                 /* NextText */
};

struct MenuItem itemwinkdeg =
{
   &itemwinkrad,                        /* NextItem */
   0, 0 * 10,                           /* LeftEdge, TopEdge */
   CHECKWIDTH + 90 + COMMWIDTH, 9,      /* Width, Height */
   CHECKIT | ITEMTEXT | ITEMENABLED |
   HIGHCOMP | CHECKED | COMMSEQ,        /* Flags */
   0xFFFE,                              /* Mutual Exclude */
   (APTR) &itemwinkdegtext,             /* ItemFill */
   NULL,                                /* SelectFill */
   'a',                                 /* Command */
   NULL,                                /* SubItem */
   NULL                                 /* NextSelect */
};

struct Menu menuwink =
{
   NULL,                                /* NextMenu */
   75 + 75 + 125, 0, 6 * 10 + 5, 9,     /* LeftEdge, TopEdge, Width, Height */
   MENUENABLED,                         /* Flags */
   "Winkel",                            /* MenuName */
   &itemwinkdeg                         /* FirstItem */
};

/*
 *  Das Menü für's Zahlensystem
 */

struct IntuiText itemzahlsysbintext =
{
   2, 1, JAM1,                          /* FrontPen, BackPen, DrawMode */
   CHECKWIDTH, 0,                       /* LeftEdge, TopEdge */
   NULL,                                /* ITextFont */
   (UBYTE *) "Binär",                   /* IText */
   NULL                                 /* NextText */
};

struct MenuItem itemzahlsysbin =
{
   NULL,                                /* NextItem */
   0, 3 * 10,                           /* LeftEdge, TopEdge */
   CHECKWIDTH + 120 + COMMWIDTH, 9,     /* Width, Height */
   CHECKIT | ITEMTEXT | ITEMENABLED |
   HIGHCOMP | COMMSEQ,                  /* Flags */
   0xFFF7,                              /* Mutual Exclude */
   (APTR) &itemzahlsysbintext,          /* ItemFill */
   NULL,                                /* SelectFill */
   'b',                                 /* Command */
   NULL,                                /* SubItem */
   NULL                                 /* NextSelect */
};

struct IntuiText itemzahlsysokttext =
{
   2, 1, JAM1,                          /* FrontPen, BackPen, DrawMode */
   CHECKWIDTH, 0,                       /* LeftEdge, TopEdge */
   NULL,                                /* ITextFont */
   (UBYTE *) "Oktal",                   /* IText */
   NULL                                 /* NextText */
};

struct MenuItem itemzahlsysokt =
{
   &itemzahlsysbin,                     /* NextItem */
   0, 2 * 10,                           /* LeftEdge, TopEdge */
   CHECKWIDTH + 120 + COMMWIDTH, 9,     /* Width, Height */
   CHECKIT | ITEMTEXT | ITEMENABLED |
   HIGHCOMP | COMMSEQ,                  /* Flags */
   0xFFFB,                              /* Mutual Exclude */
   (APTR) &itemzahlsysokttext,          /* ItemFill */
   NULL,                                /* SelectFill */
   'o',                                 /* Command */
   NULL,                                /* SubItem */
   NULL                                 /* NextSelect */
};

struct IntuiText itemzahlsyshextext =
{
   2, 1, JAM1,                          /* FrontPen, BackPen, DrawMode */
   CHECKWIDTH, 0,                       /* LeftEdge, TopEdge */
   NULL,                                /* ITextFont */
   (UBYTE *) "Hexadezimal",             /* IText */
   NULL                                 /* NextText */
};

struct MenuItem itemzahlsyshex =
{
   &itemzahlsysokt,                     /* NextItem */
   0, 1 * 10,                           /* LeftEdge, TopEdge */
   CHECKWIDTH + 120 + COMMWIDTH, 9,     /* Width, Height */
   CHECKIT | ITEMTEXT | ITEMENABLED |
   HIGHCOMP | COMMSEQ,                  /* Flags */
   0xFFFD,                              /* Mutual Exclude */
   (APTR) &itemzahlsyshextext,          /* ItemFill */
   NULL,                                /* SelectFill */
   'h',                                 /* Command */
   NULL,                                /* SubItem */
   NULL                                 /* NextSelect */
};

struct IntuiText itemzahlsysdeztext =
{
   2, 1, JAM1,                          /* FrontPen, BackPen, DrawMode */
   CHECKWIDTH, 0,                       /* LeftEdge, TopEdge */
   NULL,                                /* ITextFont */
   (UBYTE *) "Dezimal",                 /* IText */
   NULL                                 /* NextText */
};

struct MenuItem itemzahlsysdez =
{
   &itemzahlsyshex,                     /* NextItem */
   0, 0 * 10,                           /* LeftEdge, TopEdge */
   CHECKWIDTH + 120 + COMMWIDTH, 9,     /* Width, Height */
   CHECKIT | ITEMTEXT | ITEMENABLED |
   HIGHCOMP | CHECKED | COMMSEQ,        /* Flags */
   0xFFFE,                              /* Mutual Exclude */
   (APTR) &itemzahlsysdeztext,          /* ItemFill */
   NULL,                                /* SelectFill */
   'd',                                 /* Command */
   NULL,                                /* SubItem */
   NULL                                 /* NextSelect */
};

struct Menu menuzahlsys =
{
   &menuwink,                           /* NextMenu */
   75 + 75, 0, 12 * 10 + 5 , 9,         /* LeftEdge, TopEdge, Width, Height */
   MENUENABLED,                         /* Flags */
   "Zahlensystem",                      /* MenuName */
   &itemzahlsysdez                      /* FirstItem */
};

/*
 *  Das Menü für die Dezimalstellen (ufff...)
 */

struct IntuiText itemstell8text =
{
   2, 1, JAM1,                          /* FrontPen, BackPen, DrawMode */
   CHECKWIDTH, 0,                       /* LeftEdge, TopEdge */
   NULL,                                /* ITextFont */
   (UBYTE *) "8",                       /* IText */
   NULL                                 /* NextText */
};

struct MenuItem itemstell8 =
{
   NULL,                                /* NextItem */
   0, 9 * 10,                           /* LeftEdge, TopEdge */
   CHECKWIDTH + 50 + COMMWIDTH, 9,      /* Width, Height */
   CHECKIT | ITEMTEXT | ITEMENABLED |
   HIGHCOMP | COMMSEQ,                  /* Flags */
   0xFDFF,                              /* Mutual Exclude */
   (APTR) &itemstell8text,              /* ItemFill */
   NULL,                                /* SelectFill */
   '8',                                 /* Command */
   NULL,                                /* SubItem */
   NULL                                 /* NextSelect */
};

struct IntuiText itemstell7text =
{
   2, 1, JAM1,                          /* FrontPen, BackPen, DrawMode */
   CHECKWIDTH, 0,                       /* LeftEdge, TopEdge */
   NULL,                                /* ITextFont */
   (UBYTE *) "7",                       /* IText */
   NULL                                 /* NextText */
};

struct MenuItem itemstell7 =
{
   &itemstell8,                         /* NextItem */
   0, 8 * 10,                           /* LeftEdge, TopEdge */
   CHECKWIDTH + 50 + COMMWIDTH, 9,      /* Width, Height */
   CHECKIT | ITEMTEXT | ITEMENABLED |
   HIGHCOMP | COMMSEQ,                  /* Flags */
   0xFEFF,                              /* Mutual Exclude */
   (APTR) &itemstell7text,              /* ItemFill */
   NULL,                                /* SelectFill */
   '7',                                 /* Command */
   NULL,                                /* SubItem */
   NULL                                 /* NextSelect */
};

struct IntuiText itemstell6text =
{
   2, 1, JAM1,                          /* FrontPen, BackPen, DrawMode */
   CHECKWIDTH, 0,                       /* LeftEdge, TopEdge */
   NULL,                                /* ITextFont */
   (UBYTE *) "6",                       /* IText */
   NULL                                 /* NextText */
};

struct MenuItem itemstell6 =
{
   &itemstell7,                         /* NextItem */
   0, 7 * 10,                           /* LeftEdge, TopEdge */
   CHECKWIDTH + 50 + COMMWIDTH, 9,        /* Width, Height */
   CHECKIT | ITEMTEXT | ITEMENABLED |
   HIGHCOMP | COMMSEQ,                  /* Flags */
   0xFF7F,                              /* Mutual Exclude */
   (APTR) &itemstell6text,              /* ItemFill */
   NULL,                                /* SelectFill */
   '6',                                 /* Command */
   NULL,                                /* SubItem */
   NULL                                 /* NextSelect */
};

struct IntuiText itemstell5text =
{
   2, 1, JAM1,                          /* FrontPen, BackPen, DrawMode */
   CHECKWIDTH, 0,                       /* LeftEdge, TopEdge */
   NULL,                                /* ITextFont */
   (UBYTE *) "5",                       /* IText */
   NULL                                 /* NextText */
};

struct MenuItem itemstell5 =
{
   &itemstell6,                         /* NextItem */
   0, 6 * 10,                           /* LeftEdge, TopEdge */
   CHECKWIDTH + 50 + COMMWIDTH, 9,      /* Width, Height */
   CHECKIT | ITEMTEXT | ITEMENABLED |
   HIGHCOMP | COMMSEQ,                  /* Flags */
   0xFFBF,                              /* Mutual Exclude */
   (APTR) &itemstell5text,              /* ItemFill */
   NULL,                                /* SelectFill */
   '5',                                 /* Command */
   NULL,                                /* SubItem */
   NULL                                 /* NextSelect */
};

struct IntuiText itemstell4text =
{
   2, 1, JAM1,                          /* FrontPen, BackPen, DrawMode */
   CHECKWIDTH, 0,                       /* LeftEdge, TopEdge */
   NULL,                                /* ITextFont */
   (UBYTE *) "4",                       /* IText */
   NULL                                 /* NextText */
};

struct MenuItem itemstell4 =
{
   &itemstell5,                         /* NextItem */
   0, 5 * 10,                           /* LeftEdge, TopEdge */
   CHECKWIDTH + 50 + COMMWIDTH, 9,      /* Width, Height */
   CHECKIT | ITEMTEXT | ITEMENABLED |
   HIGHCOMP | COMMSEQ,                  /* Flags */
   0xFFDF,                              /* Mutual Exclude */
   (APTR) &itemstell4text,              /* ItemFill */
   NULL,                                /* SelectFill */
   '4',                                 /* Command */
   NULL,                                /* SubItem */
   NULL                                 /* NextSelect */
};

struct IntuiText itemstell3text =
{
   2, 1, JAM1,                          /* FrontPen, BackPen, DrawMode */
   CHECKWIDTH, 0,                       /* LeftEdge, TopEdge */
   NULL,                                /* ITextFont */
   (UBYTE *) "3",                       /* IText */
   NULL                                 /* NextText */
};

struct MenuItem itemstell3 =
{
   &itemstell4,                         /* NextItem */
   0, 4 * 10,                           /* LeftEdge, TopEdge */
   CHECKWIDTH + 50 + COMMWIDTH, 9,      /* Width, Height */
   CHECKIT | ITEMTEXT | ITEMENABLED |
   HIGHCOMP | COMMSEQ,                  /* Flags */
   0xFFEF,                              /* Mutual Exclude */
   (APTR) &itemstell3text,              /* ItemFill */
   NULL,                                /* SelectFill */
   '3',                                 /* Command */
   NULL,                                /* SubItem */
   NULL                                 /* NextSelect */
};

struct IntuiText itemstell2text =
{
   2, 1, JAM1,                          /* FrontPen, BackPen, DrawMode */
   CHECKWIDTH, 0,                       /* LeftEdge, TopEdge */
   NULL,                                /* ITextFont */
   (UBYTE *) "2",                       /* IText */
   NULL                                 /* NextText */
};

struct MenuItem itemstell2 =
{
   &itemstell3,                         /* NextItem */
   0, 3 * 10,                           /* LeftEdge, TopEdge */
   CHECKWIDTH + 50 + COMMWIDTH, 9,      /* Width, Height */
   CHECKIT | ITEMTEXT | ITEMENABLED |
   HIGHCOMP | COMMSEQ,                  /* Flags */
   0xFFF7,                              /* Mutual Exclude */
   (APTR) &itemstell2text,              /* ItemFill */
   NULL,                                /* SelectFill */
   '2',                                 /* Command */
   NULL,                                /* SubItem */
   NULL                                 /* NextSelect */
};

struct IntuiText itemstell1text =
{
   2, 1, JAM1,                          /* FrontPen, BackPen, DrawMode */
   CHECKWIDTH, 0,                       /* LeftEdge, TopEdge */
   NULL,                                /* ITextFont */
   (UBYTE *) "1",                       /* IText */
   NULL                                 /* NextText */
};

struct MenuItem itemstell1 =
{
   &itemstell2,                         /* NextItem */
   0, 2 * 10,                           /* LeftEdge, TopEdge */
   CHECKWIDTH + 50 + COMMWIDTH, 9,      /* Width, Height */
   CHECKIT | ITEMTEXT | ITEMENABLED |
   HIGHCOMP | COMMSEQ,                  /* Flags */
   0xFFFB,                              /* Mutual Exclude */
   (APTR) &itemstell1text,              /* ItemFill */
   NULL,                                /* SelectFill */
   '1',                                 /* Command */
   NULL,                                /* SubItem */
   NULL                                 /* NextSelect */
};

struct IntuiText itemstell0text =
{
   2, 1, JAM1,                          /* FrontPen, BackPen, DrawMode */
   CHECKWIDTH, 0,                       /* LeftEdge, TopEdge */
   NULL,                                /* ITextFont */
   (UBYTE *) "0",                       /* IText */
   NULL                                 /* NextText */
};

struct MenuItem itemstell0 =
{
   &itemstell1,                         /* NextItem */
   0, 1 * 10,                           /* LeftEdge, TopEdge */
   CHECKWIDTH + 50 + COMMWIDTH, 9,      /* Width, Height */
   CHECKIT | ITEMTEXT | ITEMENABLED |
   HIGHCOMP | COMMSEQ,                  /* Flags */
   0xFFFD,                              /* Mutual Exclude */
   (APTR) &itemstell0text,              /* ItemFill */
   NULL,                                /* SelectFill */
   '0',                                 /* Command */
   NULL,                                /* SubItem */
   NULL                                 /* NextSelect */
};

struct IntuiText itemstellalletext =
{
   2, 1, JAM1,                          /* FrontPen, BackPen, DrawMode */
   CHECKWIDTH, 0,                       /* LeftEdge, TopEdge */
   NULL,                                /* ITextFont */
   (UBYTE *) "alle",                    /* IText */
   NULL                                 /* NextText */
};

struct MenuItem itemstellalle =
{
   &itemstell0,                         /* NextItem */
   0, 0 * 10,                           /* LeftEdge, TopEdge */
   CHECKWIDTH + 50 + COMMWIDTH, 9,      /* Width, Height */
   CHECKIT | ITEMTEXT | ITEMENABLED |
   HIGHCOMP | CHECKED | COMMSEQ,        /* Flags */
   0xFFFE,                              /* Mutual Exclude */
   (APTR) &itemstellalletext,           /* ItemFill */
   NULL,                                /* SelectFill */
   '.',                                 /* Command */
   NULL,                                /* SubItem */
   NULL                                 /* NextSelect */
};

struct Menu menustell =
{
   &menuzahlsys,                        /* NextMenu */
   7 * 10 + 5, 0, 7 * 10 + 5, 9,        /* LeftEdge, TopEdge, Width, Height */
   MENUENABLED,                         /* Flags */
   "Stellen",                           /* MenuName */
   &itemstellalle                       /* FirstItem */
};

/*
 *  Schließlich und endlich das Anzeige-Menü
 */

struct IntuiText itemanzwisstext =
{
   2, 1, JAM1,                          /* FrontPen, BackPen, DrawMode */
   CHECKWIDTH, 0,                       /* LeftEdge, TopEdge */
   NULL,                                /* ITextFont */
   (UBYTE *) "Wissenschaftlich",        /* IText */
   NULL                                 /* NextText */
};

struct MenuItem itemanzwiss =
{
   NULL,                                /* NextItem */
   0, 1 * 10,                           /* LeftEdge, TopEdge */
   CHECKWIDTH + 170 + COMMWIDTH, 9,     /* Width, Height */
   CHECKIT | ITEMTEXT | ITEMENABLED |
   HIGHCOMP | COMMSEQ,                  /* Flags */
   0xFFFD,                              /* Mutual Exclude */
   (APTR) &itemanzwisstext,             /* ItemFill */
   NULL,                                /* SelectFill */
   'w',                                 /* Command */
   NULL,                                /* SubItem */
   NULL                                 /* NextSelect */
};

struct IntuiText itemanznormtext =
{
   2, 1, JAM1,                          /* FrontPen, BackPen, DrawMode */
   CHECKWIDTH, 0,                       /* LeftEdge, TopEdge */
   NULL,                                /* ITextFont */
   (UBYTE *) "Normal",                  /* IText */
   NULL                                 /* NextText */
};

struct MenuItem itemanznorm =
{
   &itemanzwiss,                        /* NextItem */
   0, 0 * 10,                           /* LeftEdge, TopEdge */
   CHECKWIDTH + 170 + COMMWIDTH, 9,     /* Width, Height */
   CHECKIT | ITEMTEXT | ITEMENABLED |
   HIGHCOMP | CHECKED | COMMSEQ,        /* Flags */
   0xFFFE,                              /* Mutual Exclude */
   (APTR) &itemanznormtext,             /* ItemFill */
   NULL,                                /* SelectFill */
   'n',                                 /* Command */
   NULL,                                /* SubItem */
   NULL                                 /* NextSelect */
};

struct Menu menuanz =
{
   &menustell,                          /* NextMenu */
   0, 0, 7 * 10 + 5, 9,                 /* LeftEdge, TopEdge, Width, Height */
   MENUENABLED,                         /* Flags */
   "Anzeige",                           /* MenuName */
   &itemanznorm                         /* FirstItem */
};


/*
 *  TextAttr für alle Gadgets und Display (wir können wegen des Designs nur
 *  den kleinen Zeichensatz benutzen!)
 */

struct TextAttr textattr =
{
   (UBYTE *) "topaz.font",
   TOPAZ_EIGHTY,
   FS_NORMAL,
   FPF_ROMFONT
};
