home *** CD-ROM | disk | FTP | other *** search
- /*************************************
- * *
- * Editor v1.0 *
- * by Torsten Jürgeleit in 07/91 *
- * *
- * Requester part *
- * *
- *************************************/
-
- /* Includes */
-
- #include "includes.h"
- #include "defines.h"
- #include "imports.h"
- #include "protos.h"
-
- /* Defines for error requester */
-
- #define ERROR_WINDOW_TITLE " Error "
-
- /* Statics for error requester */
-
- STATIC BYTE *error_text[] = {
- "Can't open arp.library v39+",
- "Can't open intuisup.library",
- "Can't open diskfont.library",
- "Can't open window",
- "Out of memory",
- "Can't open file",
- "Error while saving",
- "Error while reading",
- "Line in load file too long",
- "Missing argument in load file",
- "Different block types for BEGIN and END in load file"
- };
- /* Defines for continue requester */
-
- #define CONTINUE_WINDOW_TITLE (UBYTE *)" Error "
- #define CONTINUE_WINDOW_IDCMP (CLOSEWINDOW | GADGET_IDCMP_FLAGS_BUTTON)
- #define CONTINUE_RENDER_INFO_FLAGS (RENDER_INFO_FLAG_INNER_WINDOW | RENDER_INFO_FLAG_BACK_FILL)
- #define CONTINUE_OPEN_WINDOW_FLAGS 0
-
- #define CONTINUE_GADGET_TYPE GADGET_DATA_TYPE_BUTTON
- #define CONTINUE_GADGET_FLAGS GADGET_DATA_FLAG_HOT_KEY
- #define CONTINUE_GADGET_TEXT "_Continue"
- #define CONTINUE_GADGET_LEFT_EDGE 0
- #define CONTINUE_GADGET_TOP_EDGE 0
- #define CONTINUE_GADGET_WIDTH ((8 + 2) * 8)
- #define CONTINUE_GADGET_HEIGHT 15
- #define CONTINUE_GADGET_TEXT_ATTR &topaz80_attr
-
- /* Statics for continue requester */
-
- STATIC struct NewWindow continue_new_window = {
- 0, 0, 0, 0, 0, 1, CONTINUE_WINDOW_IDCMP, WINDOWCLOSE | WINDOWDRAG |
- WINDOWDEPTH | SMART_REFRESH | NOCAREREFRESH | ACTIVATE, NULL, NULL, NULL,
- NULL, NULL, 0, 0, 0, 0, WBENCHSCREEN
- };
-
- STATIC struct GadgetData continue_gadget_data[] = {
- {
- CONTINUE_GADGET_TYPE, /* gd_Type */
- CONTINUE_GADGET_FLAGS, /* gd_Flags */
- CONTINUE_GADGET_LEFT_EDGE, /* gd_LeftEdge */
- CONTINUE_GADGET_TOP_EDGE, /* gd_TopEdge */
- CONTINUE_GADGET_WIDTH, /* gd_Width */
- CONTINUE_GADGET_HEIGHT, /* gd_Height */
- CONTINUE_GADGET_TEXT, /* *gd_Text */
- CONTINUE_GADGET_TEXT_ATTR, /* *gd_TextAttr */
- { 0, 0, 0 }
- }, {
- INTUISUP_DATA_END /* mark end of gadget data */
- }
- };
- /* Defines for about requester */
-
- #define ABOUT_WINDOW_WIDTH 300
- #define ABOUT_WINDOW_HEIGHT 115
- #define ABOUT_WINDOW_TITLE (UBYTE *)" About "
- #define ABOUT_WINDOW_IDCMP (CLOSEWINDOW | GADGET_IDCMP_FLAGS_BUTTON)
- #define ABOUT_RENDER_INFO_FLAGS (RENDER_INFO_FLAG_INNER_WINDOW | RENDER_INFO_FLAG_BACK_FILL)
- #define ABOUT_OPEN_WINDOW_FLAGS OPEN_WINDOW_FLAG_CENTER_WINDOW
-
- #define ABOUT_GADGET_TYPE GADGET_DATA_TYPE_BUTTON
- #define ABOUT_GADGET_FLAGS GADGET_DATA_FLAG_HOT_KEY
- #define ABOUT_GADGET_TEXT "_Continue"
- #define ABOUT_GADGET_LEFT_EDGE ((ABOUT_WINDOW_WIDTH - ABOUT_GADGET_WIDTH) / 2)
- #define ABOUT_GADGET_TOP_EDGE (ABOUT_WINDOW_HEIGHT - ABOUT_GADGET_HEIGHT - 10)
- #define ABOUT_GADGET_WIDTH ((8 + 2) * 8)
- #define ABOUT_GADGET_HEIGHT 15
- #define ABOUT_GADGET_TEXT_ATTR &topaz80_attr
-
- #define ABOUT_TEXT1_TYPE TEXT_DATA_TYPE_TEXT
- #define ABOUT_TEXT1_FLAGS (TEXT_DATA_FLAG_CENTER | TEXT_DATA_FLAG_BOLD)
- #define ABOUT_TEXT1_LEFT_EDGE 0
- #define ABOUT_TEXT1_TOP_EDGE 10
- #define ABOUT_TEXT1_TEXT "Template Editor v1.0"
- #define ABOUT_TEXT1_TEXT_ATTR &topaz60_attr
-
- #define ABOUT_TEXT2_TYPE TEXT_DATA_TYPE_TEXT
- #define ABOUT_TEXT2_FLAGS (TEXT_DATA_FLAG_CENTER | TEXT_DATA_FLAG_COLOR2)
- #define ABOUT_TEXT2_LEFT_EDGE 0
- #define ABOUT_TEXT2_TOP_EDGE 30
- #define ABOUT_TEXT2_TEXT "© 08/91 by Torsten Jürgeleit"
- #define ABOUT_TEXT2_TEXT_ATTR &topaz80_attr
-
- #define ABOUT_TEXT3_TYPE TEXT_DATA_TYPE_TEXT
- #define ABOUT_TEXT3_FLAGS (TEXT_DATA_FLAG_CENTER | TEXT_DATA_FLAG_COLOR2)
- #define ABOUT_TEXT3_LEFT_EDGE 0
- #define ABOUT_TEXT3_TOP_EDGE 40
- #define ABOUT_TEXT3_TEXT " Am Sandberg 4 "
- #define ABOUT_TEXT3_TEXT_ATTR &topaz80_attr
-
- #define ABOUT_TEXT4_TYPE TEXT_DATA_TYPE_TEXT
- #define ABOUT_TEXT4_FLAGS (TEXT_DATA_FLAG_CENTER | TEXT_DATA_FLAG_COLOR2)
- #define ABOUT_TEXT4_LEFT_EDGE 0
- #define ABOUT_TEXT4_TOP_EDGE 50
- #define ABOUT_TEXT4_TEXT " 5270 Gummersbach "
- #define ABOUT_TEXT4_TEXT_ATTR &topaz80_attr
-
- #define ABOUT_TEXT5_TYPE TEXT_DATA_TYPE_TEXT
- #define ABOUT_TEXT5_FLAGS (TEXT_DATA_FLAG_CENTER | TEXT_DATA_FLAG_COLOR2)
- #define ABOUT_TEXT5_LEFT_EDGE 0
- #define ABOUT_TEXT5_TOP_EDGE 60
- #define ABOUT_TEXT5_TEXT " West Germany "
- #define ABOUT_TEXT5_TEXT_ATTR &topaz80_attr
-
- #define ABOUT_TEXT6_TYPE TEXT_DATA_TYPE_TEXT
- #define ABOUT_TEXT6_FLAGS (TEXT_DATA_FLAG_CENTER | TEXT_DATA_FLAG_COLOR2)
- #define ABOUT_TEXT6_LEFT_EDGE 0
- #define ABOUT_TEXT6_TOP_EDGE 70
- #define ABOUT_TEXT6_TEXT " Phone 02261/27400"
- #define ABOUT_TEXT6_TEXT_ATTR &topaz80_attr
-
- /* Statics for about requester */
-
- STATIC struct NewWindow about_new_window = {
- 0, 0, ABOUT_WINDOW_WIDTH, ABOUT_WINDOW_HEIGHT, 0, 1, ABOUT_WINDOW_IDCMP,
- WINDOWCLOSE | WINDOWDRAG | WINDOWDEPTH | SMART_REFRESH | NOCAREREFRESH |
- ACTIVATE, NULL, NULL, ABOUT_WINDOW_TITLE, NULL, NULL, 0, 0, 0, 0,
- WBENCHSCREEN
- };
- STATIC struct GadgetData about_gadget_data[] = {
- {
- ABOUT_GADGET_TYPE, /* gd_Type */
- ABOUT_GADGET_FLAGS, /* gd_Flags */
- ABOUT_GADGET_LEFT_EDGE, /* gd_LeftEdge */
- ABOUT_GADGET_TOP_EDGE, /* gd_TopEdge */
- ABOUT_GADGET_WIDTH, /* gd_Width */
- ABOUT_GADGET_HEIGHT, /* gd_Height */
- ABOUT_GADGET_TEXT, /* *gd_Text */
- ABOUT_GADGET_TEXT_ATTR, /* *gd_TextAttr */
- { 0, 0, 0 }
- }, {
- INTUISUP_DATA_END /* mark end of gadget data */
- }
- };
- STATIC struct TextData about_text_data[] = {
- {
- ABOUT_TEXT1_TYPE, /* td_Type */
- ABOUT_TEXT1_FLAGS, /* td_Flags */
- ABOUT_TEXT1_LEFT_EDGE, /* td_LeftEdge */
- ABOUT_TEXT1_TOP_EDGE, /* td_TopEdge */
- ABOUT_TEXT1_TEXT, /* *td_Text */
- ABOUT_TEXT1_TEXT_ATTR /* *td_TextAttr */
- }, {
- ABOUT_TEXT2_TYPE, /* td_Type */
- ABOUT_TEXT2_FLAGS, /* td_Flags */
- ABOUT_TEXT2_LEFT_EDGE, /* td_LeftEdge */
- ABOUT_TEXT2_TOP_EDGE, /* td_TopEdge */
- ABOUT_TEXT2_TEXT, /* *td_Text */
- ABOUT_TEXT2_TEXT_ATTR /* *td_TextAttr */
- }, {
- ABOUT_TEXT3_TYPE, /* td_Type */
- ABOUT_TEXT3_FLAGS, /* td_Flags */
- ABOUT_TEXT3_LEFT_EDGE, /* td_LeftEdge */
- ABOUT_TEXT3_TOP_EDGE, /* td_TopEdge */
- ABOUT_TEXT3_TEXT, /* *td_Text */
- ABOUT_TEXT3_TEXT_ATTR /* *td_TextAttr */
- }, {
- ABOUT_TEXT4_TYPE, /* td_Type */
- ABOUT_TEXT4_FLAGS, /* td_Flags */
- ABOUT_TEXT4_LEFT_EDGE, /* td_LeftEdge */
- ABOUT_TEXT4_TOP_EDGE, /* td_TopEdge */
- ABOUT_TEXT4_TEXT, /* *td_Text */
- ABOUT_TEXT4_TEXT_ATTR /* *td_TextAttr */
- }, {
- ABOUT_TEXT5_TYPE, /* td_Type */
- ABOUT_TEXT5_FLAGS, /* td_Flags */
- ABOUT_TEXT5_LEFT_EDGE, /* td_LeftEdge */
- ABOUT_TEXT5_TOP_EDGE, /* td_TopEdge */
- ABOUT_TEXT5_TEXT, /* *td_Text */
- ABOUT_TEXT5_TEXT_ATTR /* *td_TextAttr */
- }, {
- ABOUT_TEXT6_TYPE, /* td_Type */
- ABOUT_TEXT6_FLAGS, /* td_Flags */
- ABOUT_TEXT6_LEFT_EDGE, /* td_LeftEdge */
- ABOUT_TEXT6_TOP_EDGE, /* td_TopEdge */
- ABOUT_TEXT6_TEXT, /* *td_Text */
- ABOUT_TEXT6_TEXT_ATTR /* *td_TextAttr */
- }, {
- INTUISUP_DATA_END /* mark end of text data array */
- }
- };
- /* Defines for ok/cancel requester */
-
- #define OK_CANCEL_WINDOW_IDCMP (CLOSEWINDOW | GADGET_IDCMP_FLAGS_BUTTON)
- #define OK_CANCEL_RENDER_INFO_FLAGS (RENDER_INFO_FLAG_INNER_WINDOW | RENDER_INFO_FLAG_BACK_FILL)
- #define OK_CANCEL_INIT_NEW_WINDOW_FLAGS 0
-
- #define OK_GADGET_TYPE GADGET_DATA_TYPE_BUTTON
- #define OK_GADGET_FLAGS GADGET_DATA_FLAG_HOT_KEY
- #define OK_GADGET_TEXT "_Ok"
- #define OK_GADGET_LEFT_EDGE 0
- #define OK_GADGET_TOP_EDGE 0
- #define OK_GADGET_WIDTH ((6 + 2) * 8)
- #define OK_GADGET_HEIGHT 15
- #define OK_GADGET_TEXT_ATTR &topaz80_attr
-
- #define CANCEL_GADGET_TYPE GADGET_DATA_TYPE_BUTTON
- #define CANCEL_GADGET_FLAGS GADGET_DATA_FLAG_HOT_KEY
- #define CANCEL_GADGET_TEXT "_Cancel"
- #define CANCEL_GADGET_LEFT_EDGE 0
- #define CANCEL_GADGET_TOP_EDGE 0
- #define CANCEL_GADGET_WIDTH ((6 + 2) * 8)
- #define CANCEL_GADGET_HEIGHT 15
- #define CANCEL_GADGET_TEXT_ATTR &topaz80_attr
-
- /* Statics for ok/cancel requester */
-
- STATIC struct NewWindow ok_cancel_new_window = {
- 0, 0, 0, 0, 0, 1, OK_CANCEL_WINDOW_IDCMP, WINDOWCLOSE | WINDOWDRAG |
- WINDOWDEPTH | SMART_REFRESH | NOCAREREFRESH | ACTIVATE, NULL, NULL, NULL,
- NULL, NULL, 0, 0, 0, 0, WBENCHSCREEN
- };
-
- STATIC struct GadgetData ok_cancel_gadget_data[] = {
- {
- OK_GADGET_TYPE, /* gd_Type */
- OK_GADGET_FLAGS, /* gd_Flags */
- OK_GADGET_LEFT_EDGE, /* gd_LeftEdge */
- OK_GADGET_TOP_EDGE, /* gd_TopEdge */
- OK_GADGET_WIDTH, /* gd_Width */
- OK_GADGET_HEIGHT, /* gd_Height */
- OK_GADGET_TEXT, /* *gd_Text */
- OK_GADGET_TEXT_ATTR, /* *gd_TextAttr */
- { 0, 0, 0 }
- }, {
- CANCEL_GADGET_TYPE, /* gd_Type */
- CANCEL_GADGET_FLAGS, /* gd_Flags */
- CANCEL_GADGET_LEFT_EDGE, /* gd_LeftEdge */
- CANCEL_GADGET_TOP_EDGE, /* gd_TopEdge */
- CANCEL_GADGET_WIDTH, /* gd_Width */
- CANCEL_GADGET_HEIGHT, /* gd_Height */
- CANCEL_GADGET_TEXT, /* *gd_Text */
- CANCEL_GADGET_TEXT_ATTR, /* *gd_TextAttr */
- { 0, 0, 0 }
- }, {
- INTUISUP_DATA_END /* mark end of gadget data */
- }
- };
- /* Show error message as continue requester */
-
- VOID
- show_error(SHORT status)
- {
- BYTE *error;
-
- if (status < EDITOR_STATUS_NORMAL) {
- error = error_text[-(status + 1)];
- if (IntuiSupBase) {
- continue_requester(ERROR_WINDOW_TITLE, error);
- } else {
- if (IntuitionBase) {
- intuition_error_requester(error);
- }
- }
- }
- }
- /* Show IntuiSup continue requester */
-
- VOID
- continue_requester(BYTE *title, BYTE *text)
- {
- struct NewWindow *nwin = &continue_new_window;
- struct Window *win;
- struct TextAttr *ta = &topaz80_attr;
- struct MsgPort *up;
- struct IntuiMessage *msg;
- APTR ri, gl;
- USHORT width, height;
- BOOL keepon = TRUE;
-
- nwin->Title = (UBYTE *)title;
- if (ri = IGetRenderInfo((struct Screen *)NULL, CONTINUE_RENDER_INFO_FLAGS)) {
- width = IPrintText(ri, (struct Window *)NULL, text, 0, 0,
- TEXT_DATA_TYPE_TEXT, TEXT_DATA_FLAG_NO_PRINT, ta);
- if (width < CONTINUE_GADGET_WIDTH) {
- width = CONTINUE_GADGET_WIDTH;
- }
- width += 40;
- height = ta->ta_YSize + CONTINUE_GADGET_HEIGHT + 30;
-
- /* Prepare error window */
- nwin->Width = width;
- nwin->Height = height;
- if (win = IOpenWindow(ri, nwin, CONTINUE_OPEN_WINDOW_FLAGS)) {
- IPrintText(ri, win, text, 0, 10, TEXT_DATA_TYPE_TEXT,
- TEXT_DATA_FLAG_CENTER | TEXT_DATA_FLAG_COLOR2, ta);
- continue_gadget_data[0].gd_LeftEdge = (width -
- CONTINUE_GADGET_WIDTH) / 2;
- continue_gadget_data[0].gd_TopEdge = height -
- (CONTINUE_GADGET_HEIGHT + 10);
- if (gl = ICreateGadgets(ri, &continue_gadget_data[0], 0, 0)) {
- IDisplayGadgets(win, gl);
-
- /* Wait for close gadget or button pressed */
- up = win->UserPort;
- do {
- WaitPort(up);
- while (msg = IGetMsg(up)) {
- switch (msg->Class) {
- case CLOSEWINDOW :
- case ISUP_ID :
- keepon = FALSE;
- break;
- }
- }
- } while (keepon == TRUE);
- IRemoveGadgets(gl);
- IFreeGadgets(gl);
- }
- CloseWindow(win);
- }
- IFreeRenderInfo(ri);
- }
- }
- /* Show Intuition error requester */
-
- STATIC VOID
- intuition_error_requester(BYTE *text)
- {
- struct Screen screen;
- struct IntuiText itext_error, itext_ok;
- USHORT border_left, border_top, width, height, max_width;
-
- /* Get screen dimension */
- GetScreenData((BYTE *)&screen, (LONG)sizeof(struct Screen), (LONG)
- WBENCHSCREEN, (LONG)NULL);
- border_left = screen.BarHeight - screen.BarVBorder + screen.WBorTop;
- border_top = screen.WBorTop;
-
- /* Init message text */
- itext_error.LeftEdge = border_left;
- itext_error.TopEdge = border_top + 4;
- itext_error.DrawMode = JAM1;
- itext_error.FrontPen = 2;
- itext_error.IText = (UBYTE *)text;
- itext_error.ITextFont = &topaz80_attr;
- max_width = IntuiTextLength(&itext_error);
-
- /* Init ok text */
- itext_ok.LeftEdge = 6;
- itext_ok.TopEdge = 4;
- itext_ok.DrawMode = JAM1;
- itext_ok.FrontPen = 3;
- itext_ok.ITextFont = &topaz60_attr;
- itext_ok.IText = (UBYTE *)"Ok";
- if ((width = IntuiTextLength(&itext_ok) + 2 * 16) * 2 > max_width) {
- max_width = width;
- }
-
- /* Calc requester dimension and scale it if neccessary */
- width = max_width + border_left + screen.WBorRight + 2 * 16;
- if (width > screen.Width) {
- width = screen.Width;
- }
- height = border_top + screen.WBorBottom + 8 + 10 + 9 + 2 * 8 + 2 * 4;
- if (height > screen.Height) {
- height = screen.Height;
- }
- AutoRequest((LONG)NULL, &itext_error, &itext_ok, &itext_ok, 0L, 0L,
- (LONG)width, (LONG)height);
- }
- /* Show about requester */
-
- VOID
- about_requester(VOID)
- {
- struct NewWindow *nwin = &about_new_window;
- struct Window *win;
- struct MsgPort *up;
- struct IntuiMessage *msg;
- APTR ri, gl;
- BOOL keepon = TRUE;
-
- if (ri = IGetRenderInfo((struct Screen *)NULL, ABOUT_RENDER_INFO_FLAGS)) {
- nwin->Width = ABOUT_WINDOW_WIDTH;
- nwin->Height = ABOUT_WINDOW_HEIGHT;
- if (win = IOpenWindow(ri, nwin, ABOUT_OPEN_WINDOW_FLAGS)) {
- IDisplayTexts(ri, win, &about_text_data[0], 0, 0);
- if (gl = ICreateGadgets(ri, &about_gadget_data[0], 0, 0)) {
- IDisplayGadgets(win, gl);
-
- /* Wait for close gadget or button pressed */
- up = win->UserPort;
- do {
- WaitPort(up);
- while (msg = IGetMsg(up)) {
- switch (msg->Class) {
- case CLOSEWINDOW :
- case ISUP_ID :
- keepon = FALSE;
- break;
- }
- }
- } while (keepon == TRUE);
- IRemoveGadgets(gl);
- IFreeGadgets(gl);
- }
- CloseWindow(win);
- }
- IFreeRenderInfo(ri);
- }
- }
- /* Show IntuiSup ok/cancel requester */
-
- BOOL
- ok_cancel_requester(BYTE *title, BYTE *text)
- {
- struct NewWindow *nwin = &ok_cancel_new_window;
- struct Window *win;
- struct TextAttr *ta = &topaz80_attr;
- struct MsgPort *up;
- struct IntuiMessage *msg;
- APTR ri, gl;
- USHORT width, height;
- BOOL result = FALSE, keepon = TRUE;
-
- nwin->Title = (UBYTE *)title;
- if (ri = IGetRenderInfo((struct Screen *)NULL,
- OK_CANCEL_RENDER_INFO_FLAGS)) {
- width = IPrintText(ri, (struct Window *)NULL, text, 0, 0,
- TEXT_DATA_TYPE_TEXT, TEXT_DATA_FLAG_NO_PRINT, ta);
- if (width < (OK_GADGET_WIDTH + 20 + CANCEL_GADGET_WIDTH)) {
- width = OK_GADGET_WIDTH + 20 + CANCEL_GADGET_WIDTH;
- }
- width += 40;
- height = ta->ta_YSize + OK_GADGET_HEIGHT + 30;
-
- /* Prepare error window */
- nwin->Width = width;
- nwin->Height = height;
- if (win = IOpenWindow(ri, nwin, CONTINUE_OPEN_WINDOW_FLAGS)) {
- IPrintText(ri, win, text, 0, 10, TEXT_DATA_TYPE_TEXT,
- TEXT_DATA_FLAG_CENTER | TEXT_DATA_FLAG_COLOR2, ta);
- ok_cancel_gadget_data[0].gd_LeftEdge = 20;
- ok_cancel_gadget_data[0].gd_TopEdge = height - (OK_GADGET_HEIGHT +
- 10);
- ok_cancel_gadget_data[1].gd_LeftEdge = width -
- (CANCEL_GADGET_WIDTH + 20);
- ok_cancel_gadget_data[1].gd_TopEdge = height -
- (CANCEL_GADGET_HEIGHT + 10);
- if (gl = ICreateGadgets(ri, &ok_cancel_gadget_data[0], 0, 0)) {
- IDisplayGadgets(win, gl);
-
- /* Wait for close gadget or button pressed */
- up = win->UserPort;
- do {
- WaitPort(up);
- while (msg = IGetMsg(up)) {
- switch (msg->Class) {
- case CLOSEWINDOW :
- case ISUP_ID :
- if (!msg->Code) {
- result = TRUE; /* Ok */
- }
- keepon = FALSE;
- break;
- }
- }
- } while (keepon == TRUE);
- IRemoveGadgets(gl);
- IFreeGadgets(gl);
- }
- CloseWindow(win);
- }
- IFreeRenderInfo(ri);
- }
- return(result);
- }
-