/* $Id: data.c,v 1.18 92/12/10 04:21:23 tf Exp $ © Tobias Ferber */

#include <intuition/intuition.h>
#include <workbench/workbench.h>

#include "info.c"

/*
 * We need this since we can't be sure that we will open on
 * a screen that uses a fitting font for our digests
 */

struct TextAttr TextAttr =
{ (STRPTR) "topaz.font",  /* ta_Name  */
  8,                      /* ta_YSize */
  FS_NORMAL,              /* ta_Style */
  FPF_ROMFONT,            /* ta_Flags */
};

#include "menus.c"

/*
 * These texts are not multilingual (yet) because they are dependant on
 * length and position of the underlined character.  Possible translations
 * for future revisions:
 *
 * +-----------------+-----------------+-----------------+-----------------+
 * | English         | Deutsch         | Français        | Italiano        |
 * +-----------------+-----------------+-----------------+-----------------+
 * | Verify Tracks   | Tracks prüfen   | Verifiér TRKs   |                 |
 * | Logfile         | LogFile         | Logfile         |                 |
 * | Begin Operation | DCMP starten    |                 |                 |
 * | Stop !          | Stop !          | Stop !          |                 |
 * | Equal:  Yes  No |                 |                 |                 |
 * | Start/End:      |                 |                 |                 |
 * | Att/Err:        |                 |                 |                 |
 * +-----------------+-----------------+-----------------+-----------------+
 *
 */

struct IntuiText gadget_text[]= {
  { 1, 0, JAM1, 36,  2, &TextAttr, "Verify Tracks",   &gadget_text[ 8] }, /* 0 */
  { 1, 0, JAM2, 12,  4, &TextAttr, "_      ",         &gadget_text[ 9] }, /* 1 */
  { 1, 0, JAM1, 20,  3, &TextAttr, "Logfile",         &gadget_text[10] }, /* 2 */
  { 1, 0, JAM1,  7,  3, &TextAttr, "DF0:",            &gadget_text[11] }, /* 3 */
  { 1, 0, JAM1,  7,  3, &TextAttr, "DF1:",            &gadget_text[11] }, /* 4 */
  { 1, 0, JAM1,  7,  3, &TextAttr, "DF2:",            &gadget_text[11] }, /* 5 */
  { 1, 0, JAM1,  7,  3, &TextAttr, "DF3:",            &gadget_text[11] }, /* 6 */
  { 1, 0, JAM2, 12,  4, &TextAttr, "      _",         &gadget_text[12] }, /* 7 */
  { 1, 0, JAM1, 36,  3, &TextAttr, "_",               NULL }, /*  8 */
  { 1, 0, JAM2, 12,  3, &TextAttr, "Begin Operation", NULL }, /*  9 */
  { 1, 0, JAM1, 20,  4, &TextAttr, "   _",            NULL }, /* 10 */
  { 1, 0, JAM1,  7,  4, &TextAttr, "  _",             NULL }, /* 11 */
  { 1, 0, JAM2, 12,  3, &TextAttr, "     Stop !    ", NULL }, /* 12 */
};

struct IntuiText info_text[] = {
  { 1, 0, JAM1,  0,-10, &TextAttr, "Equal:   Yes    No",&info_text[1] }, /* 0 */
  { 1, 0, JAM1, 10,  5, &TextAttr, "Start/End: 00/79",  &info_text[2] }, /* 1 */
  { 1, 0, JAM1, 10,  6, &TextAttr, "_     _",           &info_text[3] }, /* 2 */
  { 1, 0, JAM1, 10, 16, &TextAttr, "Att/Err..:  00/i",  &info_text[4] }, /* 3 */
  { 1, 0, JAM1, 10, 17, &TextAttr, "_    _",            &info_text[5] }, /* 4 */
  { 1, 0, JAM1, 10, 27, &TextAttr, "Track....:   000",  NULL          }, /* 5 */
};

#define HOOK_ID    0L
#define BEGIN_ID   1L
#define LOGFILE_ID 2L
#define DRIVE0_ID  3L
#define DRIVE1_ID  4L
#define DRIVE2_ID  5L
#define DRIVE3_ID  6L
#define OVERLAY_ID 7L
#define STRING_ID  8L

char logfile_name[256], undo_buffer[256];

struct StringInfo string_info =
{ logfile_name,     /* Buffer (NULL is *NOT* allowed!) */
  undo_buffer,      /* UndoBuffer */
  0,                /* BufferPos */
  255,              /* MaxChars */
  0                 /* DispPos */
};

struct Gadget string_gadget =
{ NULL,             /* NextGadget */
  117-4,            /* LeftEdge */
  103-11,           /* TopEdge */
  198,              /* Width */
  10,               /* Height */
  GADGHCOMP,        /* Flags */
  GADGIMMEDIATE|    /* Activation */
  RELVERIFY,
  STRGADGET,        /* GadgetType */
  NULL,             /* GadgetRender */
  NULL,             /* SelectRender */
  NULL,             /* GadgetText */
  NULL,             /* MutualExclude */
  &string_info,     /* SpecialInfo */
  STRING_ID,        /* GadgetID */
  NULL              /* UserData */
};

struct Gadget overlay_gadget =
{ NULL,             /* NextGadget */
  117-4,            /* LeftEdge */
  103-11,           /* TopEdge */
  198,              /* Width */
  10,               /* Height */
  GADGHNONE,        /* Flags */
  GADGIMMEDIATE,    /* Activation */
  BOOLGADGET,       /* GadgetType */
  NULL,             /* GadgetRender */
  NULL,             /* SelectRender */
  NULL,             /* GadgetText */
  NULL,             /* MutualExclude */
  NULL,             /* SpecialInfo */
  OVERLAY_ID,       /* GadgetID */
  NULL              /* UserData */
};

struct Gadget drive_gadget[4] =
{
  { &drive_gadget[1], /* NextGadget */
    323-4,          /* LeftEdge */
    100-11,         /* TopEdge */
    44,             /* Width */
    14,             /* Height */
    GADGHCOMP,      /* Flags */
    RELVERIFY|      /* Activation */
    GADGIMMEDIATE|
    TOGGLESELECT,
    BOOLGADGET,     /* GadgetType */
    NULL,           /* GadgetRender */
    NULL,           /* SelectRender */
    &gadget_text[3],/* GadgetText */
    NULL,           /* MutualExclude */
    NULL,           /* SpecialInfo */
    DRIVE0_ID,      /* GadgetID */
    NULL            /* UserData */
  },

  { &drive_gadget[2], /* NextGadget */
    323+48-4,       /* LeftEdge */
    100-11,         /* TopEdge */
    44,             /* Width */
    14,             /* Height */
    GADGHCOMP,      /* Flags */
    RELVERIFY|      /* Activation */
    GADGIMMEDIATE|
    TOGGLESELECT,
    BOOLGADGET,     /* GadgetType */
    NULL,           /* GadgetRender */
    NULL,           /* SelectRender */
    &gadget_text[4],/* GadgetText */
    NULL,           /* MutualExclude */
    NULL,           /* SpecialInfo */
    DRIVE1_ID,      /* GadgetID */
    NULL            /* UserData */
  },

  { &drive_gadget[3], /* NextGadget */
    323+2*48-4,     /* LeftEdge */
    100-11,         /* TopEdge */
    44,             /* Width */
    14,             /* Height */
    GADGHCOMP,      /* Flags */
    RELVERIFY|      /* Activation */
    GADGIMMEDIATE|
    TOGGLESELECT,
    BOOLGADGET,     /* GadgetType */
    NULL,           /* GadgetRender */
    NULL,           /* SelectRender */
    &gadget_text[5],/* GadgetText */
    NULL,           /* MutualExclude */
    NULL,           /* SpecialInfo */
    DRIVE2_ID,      /* GadgetID */
    NULL            /* UserData */
  },

  { &string_gadget, /* NextGadget */
    323+3*48-4,     /* LeftEdge */
    100-11,         /* TopEdge */
    44,             /* Width */
    14,             /* Height */
    GADGHCOMP,      /* Flags */
    RELVERIFY|      /* Activation */
    GADGIMMEDIATE|
    TOGGLESELECT,
    BOOLGADGET,     /* GadgetType */
    NULL,           /* GadgetRender */
    NULL,           /* SelectRender */
    &gadget_text[6],/* GadgetText */
    NULL,           /* MutualExclude */
    NULL,           /* SpecialInfo */
    DRIVE3_ID,      /* GadgetID */
    NULL            /* UserData */
  }

};

struct Gadget logfile_gadget =
{ &drive_gadget[0], /* NextGadget */
  7-4,              /* LeftEdge */            /* TFRAME0_X ??? */
  100-11,           /* TopEdge */
  100,              /* Width */
  14,               /* Height */
  GADGHCOMP,        /* Flags */
  GADGIMMEDIATE|    /* Activation */
  RELVERIFY,
  BOOLGADGET,       /* GadgetType */
  NULL,             /* GadgetRender */
  NULL,             /* SelectRender */
  &gadget_text[2],  /* GadgetText */
  NULL,             /* MutualExclude */
  NULL,             /* SpecialInfo */
  LOGFILE_ID,       /* GadgetID */
  NULL              /* UserData */
};

struct Gadget begin_gadget =
{ &logfile_gadget,  /* NextGadget */
  366-4,            /* LeftEdge */            /* INFOBOX_X */
  82-11,            /* TopEdge */
  145,              /* Width */               /* INFOBOX_W */
  14,               /* Height */
  GADGHCOMP,        /* Flags */
  GADGIMMEDIATE|    /* Activation */
  RELVERIFY,
  BOOLGADGET,       /* GadgetType */
  NULL,             /* GadgetRender */
  NULL,             /* SelectRender */
  &gadget_text[1],  /* GadgetText */
  NULL,             /* MutualExclude */
  NULL,             /* SpecialInfo */
  BEGIN_ID,         /* GadgetID */
  NULL              /* UserData */
};

SHORT hook_pairs[] =
{ 7,5,    /*.......................*/
  10,8,   /*................***....*/
  12,8,   /*...............**......*/
  18,2,   /*..............**.......*/
  19,2,   /*......***....**........*/
  17,2,   /*.......***..**.........*/
  11,8,   /*........*****..........*/
  8,5,    /*.........***...........*/
  9,5,    /*.......................*/
  11,7    /*.......................*/
};

struct Border hook_on_border =
{ 0,0,              /* LeftEdge, TopEdge */
  1,                /* FrontPen */
  0,                /* BackPen */
  JAM1,             /* DrawMode */
  10,               /* Count */
  hook_pairs,       /* XY */
  NULL              /* NextBorder */
};

struct Border hook_off_border =
{ 0,0,              /* LeftEdge, TopEdge */
  0,                /* FrontPen */
  0,                /* BackPen */
  JAM2,             /* DrawMode */
  10,               /* Count */
  hook_pairs,       /* XY */
  NULL              /* NextBorder */
};

struct Gadget hook_gadget =
{ &begin_gadget,    /* NextGadget */
  366-4,            /* LeftEdge */      /* INFOBOX_X */
  68-11,            /* TopEdge */
  26,               /* Width */
  11,               /* Height */
  GADGHIMAGE,       /* Flags */
  GADGIMMEDIATE|    /* Activation */
  RELVERIFY|
  TOGGLESELECT,
  BOOLGADGET,       /* GadgetType */
  &hook_off_border, /* GadgetRender */
  &hook_on_border,  /* SelectRender */
  &gadget_text[0],  /* GadgetText */
  NULL,             /* MutualExclude */
  NULL,             /* SpecialInfo */
  HOOK_ID,          /* GadgetID */
  NULL              /* UserData */
};

extern static char rcs_id[];

/*
 * The NewWindow stucture's Width and Height are suitable for our graphics
 * under versions of Kickstart 1.3 with  BorderLeft   = 4
 *                                       BorderRight  = 4
 *                                       BorderTop    = 11  (topaz.font,8)
 *                                       BorderBottom = 2
 * If we find differences to these values after OpenWindow() we'll re-size
 * our Window accordingly. (I don't know how to find it out else...)
 *
 * See also: open_window_stuff() in dcmp.c !
 */

struct NewWindow NewWindow =
{ 50,50,            /* LeftEdge, TopEdge */
  520,119,          /* Width, Height */
  0,1,              /* DetailPen, BlockPen */
  CLOSEWINDOW|      /* IDCMPFlags */
  GADGETDOWN|
  GADGETUP|
  MOUSEBUTTONS|
  RAWKEY|
  MENUPICK|
  NEWSIZE,
  WINDOWCLOSE|      /* Flags */
  WINDOWDEPTH|
  WINDOWDRAG|
  RMBTRAP|          /* => No menu selection possible when coming up ! */
  NOCAREREFRESH|    /* ??? */
  GIMMEZEROZERO|    /* added on Thu Dec 10 02:42:36 1992 */
  ACTIVATE,
  &hook_gadget,     /* FirstGadget */
  NULL,             /* CheckMark */
  (UBYTE *)NULL,    /* Title - will be added in open_window_stuff() */
  NULL,NULL,        /* Screen, BitMap */
  0,0,0,0,          /* MinWidth, MinHeight, MaxWidth, MaxHeight */
  WBENCHSCREEN      /* Type */
};

/* the logfile icon */

USHORT Image1Data[] = {
/* plane 0 */  0x0000, 0x0000, 0x0000, 0x0000,
               0x0000, 0x0000, 0x0000, 0x1000,
               0x0000, 0x0000, 0x0000, 0x1000,
               0x0000, 0x0000, 0x0000, 0x1000,
               0x0000, 0xA801, 0x0000, 0x1000,
               0x0001, 0x5401, 0x0000, 0x1000,
               0x0000, 0x0001, 0x0000, 0x1000,
               0x0000, 0x0001, 0xFE80, 0x1000,
               0x0001, 0x5554, 0x0080, 0x1000,
               0x0000, 0x0000, 0x0080, 0x1000,
               0x0001, 0x5555, 0x5080, 0x1000,
               0x0000, 0x0000, 0x0080, 0x1000,
               0x0001, 0x5555, 0x4080, 0x1000,
               0x0000, 0x0000, 0x0080, 0x1000,
               0x0001, 0x5554, 0x0080, 0x1000,
               0x0000, 0x0000, 0x0080, 0x1000,
               0x0000, 0x0000, 0x0080, 0x1000,
               0x0000, 0x0000, 0x0080, 0x1000,
               0x0001, 0xFFFF, 0xFF80, 0x1000,
               0x0000, 0x0000, 0x0000, 0x1000,
               0x0000, 0x0000, 0x0000, 0x1000,
               0x7FFF, 0xFFFF, 0xFFFF, 0xF000,

/* plane 1 */  0xFFFF, 0xFFFF, 0xFFFF, 0xF000,
               0x9249, 0x2492, 0x4924, 0x8000,
               0xA492, 0x4924, 0x9249, 0x2000,
               0xC927, 0xFFFF, 0x2492, 0x4000,
               0x924F, 0x57FE, 0xC924, 0x8000,
               0xA496, 0xABFE, 0xFA49, 0x2000,
               0xC927, 0xFFFE, 0xFE92, 0x4000,
               0x924F, 0xFFFE, 0x0124, 0x8000,
               0xA496, 0xAAAB, 0x8149, 0x2000,
               0xC927, 0xFFFF, 0xFF12, 0x4000,
               0x924E, 0xAAAA, 0xAF24, 0x8000,
               0xA497, 0xFFFF, 0xFF49, 0x2000,
               0xC926, 0xAAAA, 0xBF12, 0x4000,
               0x924F, 0xFFFF, 0xFF24, 0x8000,
               0xA496, 0xAAAB, 0xFF49, 0x2000,
               0xC927, 0xFFFF, 0xFF12, 0x4000,
               0x924F, 0xFFFF, 0xFF24, 0x8000,
               0xA497, 0xFFFF, 0xFF49, 0x2000,
               0xC924, 0x0000, 0x0012, 0x4000,
               0x9249, 0x2492, 0x4924, 0x8000,
               0xA492, 0x4924, 0x9249, 0x2000,
               0x8000, 0x0000, 0x0000, 0x0000
};

struct Image Image1 = {
  0,                 /* LeftEdge */
  0,                 /* TopEdge */
  52,                /* Width */
  22,                /* Height */
  2,                 /* Depth */
  &Image1Data[0],    /* ImageData */
  3,                 /* PlanePick */
  0,                 /* PlaneOnOff */
  NULL               /* NextImage */
};

/* image when activated */

USHORT Image2Data[] = {
/* plane 0 */  0xFFFF, 0xFFFF, 0xFFFF, 0xF000,
               0x8000, 0x0000, 0x0000, 0x0000,
               0x8000, 0x0000, 0x0000, 0x0000,
               0x8000, 0x0000, 0x0080, 0x0000,
               0x8000, 0xA800, 0x0080, 0x0000,
               0x8001, 0x5400, 0x0080, 0x0000,
               0x8000, 0x0000, 0x0080, 0x0000,
               0x8000, 0x0000, 0x0080, 0x0000,
               0x8001, 0x5555, 0x4080, 0x0000,
               0x8000, 0x0000, 0x0080, 0x0000,
               0x8001, 0x5555, 0x5080, 0x0000,
               0x8000, 0x0000, 0x0080, 0x0000,
               0x8001, 0x5555, 0x4080, 0x0000,
               0x8000, 0x0000, 0x0080, 0x0000,
               0x8001, 0x5554, 0x0080, 0x0000,
               0x8000, 0x0000, 0x0080, 0x0000,
               0x8000, 0x0000, 0x0080, 0x0000,
               0x8000, 0x0000, 0x0080, 0x0000,
               0x8001, 0xFFFF, 0xFF80, 0x0000,
               0x8000, 0x0000, 0x0000, 0x0000,
               0x8000, 0x0000, 0x0000, 0x0000,
               0x8000, 0x0000, 0x0000, 0x0000,

/* plane 1 */  0x0000, 0x0000, 0x0000, 0x0000,
               0x1249, 0x2492, 0x4924, 0x9000,
               0x2492, 0x4924, 0x9249, 0x3000,
               0x4927, 0xFFFF, 0xFF12, 0x5000,
               0x124F, 0x57FF, 0xFF24, 0x9000,
               0x2496, 0xABFF, 0xFF49, 0x3000,
               0x4927, 0xFFFF, 0xFF12, 0x5000,
               0x124F, 0xFFFF, 0xFF24, 0x9000,
               0x2496, 0xAAAA, 0xBF49, 0x3000,
               0x4927, 0xFFFF, 0xFF12, 0x5000,
               0x124E, 0xAAAA, 0xAF24, 0x9000,
               0x2497, 0xFFFF, 0xFF49, 0x3000,
               0x4926, 0xAAAA, 0xBF12, 0x5000,
               0x124F, 0xFFFF, 0xFF24, 0x9000,
               0x2496, 0xAAAB, 0xFF49, 0x3000,
               0x4927, 0xFFFF, 0xFF12, 0x5000,
               0x124F, 0xFFFF, 0xFF24, 0x9000,
               0x2497, 0xFFFF, 0xFF49, 0x3000,
               0x4924, 0x0000, 0x0012, 0x5000,
               0x1249, 0x2492, 0x4924, 0x9000,
               0x2492, 0x4924, 0x9249, 0x3000,
               0x7FFF, 0xFFFF, 0xFFFF, 0xF000,
};

struct Image Image2 = {
  0,                 /* LeftEdge */
  0,                 /* TopEdge */
  52,                /* Width */
  22,                /* Height */
  2,                 /* Depth */
  &Image2Data[0],    /* ImageData */
  3,                 /* PlanePick */
  0,                 /* PlaneOnOff */
  NULL               /* NextImage */
};

char DefaultTool[256] = {
  "c:MuchMore"
};

/* char *ToolTypes[] = { NULL }; */

/* <workbench/workbench.h> */

struct DiskObject LogIcon = {
  WB_DISKMAGIC,               /* do_Magic = 0xE310 */
  WB_DISKVERSION,             /* do_Version = 1 */

  /* struct Gadget do_Gadget <intuition/intuition.h> */
  (struct Gadget *)NULL,      /* NextGadget */
  249,                        /* LeftEdge */
  21,                         /* TopEdge */
  52,                         /* Width */
  23,                         /* Height */
  GADGIMAGE | GADGHIMAGE,     /* Flags */
  RELVERIFY | GADGIMMEDIATE,  /* Activation */
  BOOLGADGET,                 /* GadgetType */
  (APTR) &Image1,             /* GadgetRender */
  (APTR) &Image2,             /* SelectRender */
  (struct IntuiText *)NULL,   /* GadgetText */
  NULL,                       /* MutualExclude */
  NULL,                       /* SpecialInfo */
  NULL,                       /* GadgetID */
  NULL,                       /* UserData */

  WBPROJECT,                  /* do_Type */
  (char *)&DefaultTool[0],    /* do_DefaultTool */
  NULL,                       /* do_ToolTypes */
  NO_ICON_POSITION,           /* do_CurrentX */
  NO_ICON_POSITION,           /* do_CurrentY */
  (struct DrawerData *)NULL,  /* do_DrawerData */
  (char *)NULL,               /* do_ToolWindow */
  (LONG)4096                  /* do_StackSize */
};

/* dcmp logo */

extern unsigned short LogoData[];   /* see logo.S */

struct Image LogoImage = {
  0,                 /* LeftEdge */
  0,                 /* TopEdge */
  158,               /* Width */
  33,                /* Height */
  2,                 /* Depth */
  &LogoData[0],      /* ImageData */
  0xFF,              /* PlanePick */
  0x00,              /* PlaneOnOff */
  NULL               /* NextImage */
};
