home *** CD-ROM | disk | FTP | other *** search
- /* $Revision Header *** Header built automatically - do not edit! ***********
- *
- * (C) Copyright 1991 by Torsten Jürgeleit
- *
- * Name .....: source.c
- * Created ..: Sunday 22-Dec-91 21:35:45
- * Revision .: 0
- *
- * Date Author Comment
- * ========= ==================== ====================
- * 02-Oct-92 Michael Bjerking New realese, better Screen/Window editor
- * 22-Dec-91 Torsten Jürgeleit Created this file!
- *
- ****************************************************************************
- *
- * C source code generator
- *
- * $Revision Header ********************************************************/
-
- /* Includes */
-
- #include "includes.h"
- #include "defines.h"
- #include "imports.h"
- #include "protos.h"
-
- /* Defines */
-
- #define GADGET_TEXT (gads ? gad_y : gad_n)
- #define GADGET_ALL(x) (((x) & GADGET_IDCMP_FLAGS_ALL) && (IDCMPflags & GADGET_IDCMP_FLAGS_ALL))
-
- /* Defines for source title */
-
- #define SOURCE_TITLE_LEFT_EDGE 0
- #define SOURCE_TITLE_TOP_EDGE 5
- #define SOURCE_TITLE_TYPE TEXT_DATA_TYPE_TEXT
- #define SOURCE_TITLE_FLAGS (TEXT_DATA_FLAG_CENTER | TEXT_DATA_FLAG_BOLD)
- #define SOURCE_TITLE_TEXT "Save C source code of project"
- #define SOURCE_TITLE_TEXT_ATTR &topaz80_attr
-
- /* Defines for source gadgets */
-
- #define SOURCE_SELECTION_OK 1
-
- #define SOURCE_GADGET_OK 0
- #define SOURCE_GADGET_CANCEL 1
- #define SOURCE_GADGET_ID 2
- #define SOURCE_GADGET_STATIC 3
- #define SOURCE_GADGET_INNER 4
- #define SOURCE_GADGET_WINDOW 5
- #define SOURCE_GADGET_PROGRAM 6
-
- #define SOURCE_GADGET1_TYPE GADGET_DATA_TYPE_BUTTON
- #define SOURCE_GADGET1_FLAGS GADGET_DATA_FLAG_HOTKEY
- #define SOURCE_GADGET1_TEXT "_Ok"
- #define SOURCE_GADGET1_LEFT_EDGE ((EDITOR_WINDOW_WIDTH / 2 - SOURCE_GADGET1_WIDTH) / 2)
- #define SOURCE_GADGET1_TOP_EDGE (EDITOR_WINDOW_HEIGHT - SOURCE_GADGET1_HEIGHT - 5)
- #define SOURCE_GADGET1_WIDTH ((6 + 2) * 8)
- #define SOURCE_GADGET1_HEIGHT 15
- #define SOURCE_GADGET1_TEXT_ATTR &topaz80_attr
-
- #define SOURCE_GADGET2_TYPE GADGET_DATA_TYPE_BUTTON
- #define SOURCE_GADGET2_FLAGS GADGET_DATA_FLAG_HOTKEY
- #define SOURCE_GADGET2_TEXT "_Cancel"
- #define SOURCE_GADGET2_LEFT_EDGE (EDITOR_WINDOW_WIDTH / 2 + (EDITOR_WINDOW_WIDTH / 2 - SOURCE_GADGET1_WIDTH) / 2)
- #define SOURCE_GADGET2_TOP_EDGE (EDITOR_WINDOW_HEIGHT - SOURCE_GADGET1_HEIGHT - 5)
- #define SOURCE_GADGET2_WIDTH SOURCE_GADGET1_WIDTH
- #define SOURCE_GADGET2_HEIGHT SOURCE_GADGET1_HEIGHT
- #define SOURCE_GADGET2_TEXT_ATTR &topaz80_attr
-
- #define SOURCE_GADGET3_TYPE GADGET_DATA_TYPE_STRING
- #define SOURCE_GADGET3_FLAGS (GADGET_DATA_FLAG_HOTKEY | GADGET_DATA_FLAG_TEXT_LEFT)
- #define SOURCE_GADGET3_LEFT_EDGE (110 + (10 + 1) * 8)
- #define SOURCE_GADGET3_TOP_EDGE 22
- #define SOURCE_GADGET3_WIDTH 76
- #define SOURCE_GADGET3_HEIGHT 12
- #define SOURCE_GADGET3_TEXT "Project I_D"
- #define SOURCE_GADGET3_TEXT_ATTR &topaz80_attr
- #define SOURCE_GADGET3_INPUT_LEN MAX_PROJECT_ID_LEN
- #define SOURCE_GADGET3_INPUT_ACTIVATE 0
- #define SOURCE_GADGET3_INPUT_DEFAULT NULL
-
- #define SOURCE_GADGET4_TYPE GADGET_DATA_TYPE_CHECK
- #define SOURCE_GADGET4_FLAGS (GADGET_DATA_FLAG_HOTKEY | GADGET_DATA_FLAG_TEXT_RIGHT)
- #define SOURCE_GADGET4_TEXT "_Static data"
- #define SOURCE_GADGET4_LEFT_EDGE (SOURCE_GADGET3_LEFT_EDGE + SOURCE_GADGET3_WIDTH + 50)
- #define SOURCE_GADGET4_TOP_EDGE (SOURCE_GADGET3_TOP_EDGE + 1)
- #define SOURCE_GADGET4_WIDTH 0
- #define SOURCE_GADGET4_HEIGHT 0
- #define SOURCE_GADGET4_TEXT_ATTR &topaz80_attr
-
- #define SOURCE_GADGET5_TYPE GADGET_DATA_TYPE_CHECK
- #define SOURCE_GADGET5_FLAGS (GADGET_DATA_FLAG_HOTKEY | GADGET_DATA_FLAG_TEXT_RIGHT)
- #define SOURCE_GADGET5_TEXT "_Inner window"
- #define SOURCE_GADGET5_LEFT_EDGE SOURCE_GADGET4_LEFT_EDGE
- #define SOURCE_GADGET5_TOP_EDGE (SOURCE_GADGET4_TOP_EDGE + 16)
- #define SOURCE_GADGET5_WIDTH 0
- #define SOURCE_GADGET5_HEIGHT 0
- #define SOURCE_GADGET5_TEXT_ATTR &topaz80_attr
-
- #define SOURCE_GADGET6_TYPE GADGET_DATA_TYPE_CHECK
- #define SOURCE_GADGET6_FLAGS (GADGET_DATA_FLAG_HOTKEY | GADGET_DATA_FLAG_TEXT_RIGHT)
- #define SOURCE_GADGET6_TEXT "_Window"
- #define SOURCE_GADGET6_LEFT_EDGE SOURCE_GADGET5_LEFT_EDGE
- #define SOURCE_GADGET6_TOP_EDGE (SOURCE_GADGET5_TOP_EDGE + 16)
- #define SOURCE_GADGET6_WIDTH 0
- #define SOURCE_GADGET6_HEIGHT 0
- #define SOURCE_GADGET6_TEXT_ATTR &topaz80_attr
-
- #define SOURCE_GADGET7_TYPE GADGET_DATA_TYPE_CHECK
- #define SOURCE_GADGET7_FLAGS (GADGET_DATA_FLAG_HOTKEY | GADGET_DATA_FLAG_TEXT_RIGHT)
- #define SOURCE_GADGET7_TEXT "_Program"
- #define SOURCE_GADGET7_LEFT_EDGE SOURCE_GADGET6_LEFT_EDGE
- #define SOURCE_GADGET7_TOP_EDGE (SOURCE_GADGET6_TOP_EDGE + 16)
- #define SOURCE_GADGET7_WIDTH 0
- #define SOURCE_GADGET7_HEIGHT 0
- #define SOURCE_GADGET7_TEXT_ATTR &topaz80_attr
-
- /* Statics for source requester */
-
- STATIC struct GadgetData source_gadget_data[]=
- {
- {
- SOURCE_GADGET1_TYPE, /* gd_Type */
- SOURCE_GADGET1_FLAGS, /* gd_Flags */
- SOURCE_GADGET1_LEFT_EDGE, /* gd_LeftEdge */
- SOURCE_GADGET1_TOP_EDGE,/* gd_TopEdge */
- SOURCE_GADGET1_WIDTH, /* gd_Width */
- SOURCE_GADGET1_HEIGHT, /* gd_Height */
- SOURCE_GADGET1_TEXT, /* *gd_Text */
- SOURCE_GADGET1_TEXT_ATTR, /* *gd_TextAttr */
- {0, 0, 0}
- },
- {
- SOURCE_GADGET2_TYPE, /* gd_Type */
- SOURCE_GADGET2_FLAGS, /* gd_Flags */
- SOURCE_GADGET2_LEFT_EDGE, /* gd_LeftEdge */
- SOURCE_GADGET2_TOP_EDGE,/* gd_TopEdge */
- SOURCE_GADGET2_WIDTH, /* gd_Width */
- SOURCE_GADGET2_HEIGHT, /* gd_Height */
- SOURCE_GADGET2_TEXT, /* *gd_Text */
- SOURCE_GADGET2_TEXT_ATTR, /* *gd_TextAttr */
- {0, 0, 0}
- },
- {
- SOURCE_GADGET3_TYPE, /* gd_Type */
- SOURCE_GADGET3_FLAGS, /* gd_Flags */
- SOURCE_GADGET3_LEFT_EDGE, /* gd_LeftEdge */
- SOURCE_GADGET3_TOP_EDGE,/* gd_TopEdge */
- SOURCE_GADGET3_WIDTH, /* gd_Width */
- SOURCE_GADGET3_HEIGHT, /* gd_Height */
- SOURCE_GADGET3_TEXT, /* *gd_Text */
- SOURCE_GADGET3_TEXT_ATTR, /* *gd_TextAttr */
- {
- SOURCE_GADGET3_INPUT_LEN, /* gd_InputLen */
- SOURCE_GADGET3_INPUT_ACTIVATE, /* gd_InputActivate */
- SOURCE_GADGET3_INPUT_DEFAULT /* gd_InputDefault */
- }
- },
- {
- SOURCE_GADGET4_TYPE, /* gd_Type */
- SOURCE_GADGET4_FLAGS, /* gd_Flags */
- SOURCE_GADGET4_LEFT_EDGE, /* gd_LeftEdge */
- SOURCE_GADGET4_TOP_EDGE,/* gd_TopEdge */
- SOURCE_GADGET4_WIDTH, /* gd_Width */
- SOURCE_GADGET4_HEIGHT, /* gd_Height */
- SOURCE_GADGET4_TEXT, /* *gd_Text */
- SOURCE_GADGET4_TEXT_ATTR, /* *gd_TextAttr */
- {0, 0, 0}
- },
- {
- SOURCE_GADGET5_TYPE, /* gd_Type */
- SOURCE_GADGET5_FLAGS, /* gd_Flags */
- SOURCE_GADGET5_LEFT_EDGE, /* gd_LeftEdge */
- SOURCE_GADGET5_TOP_EDGE,/* gd_TopEdge */
- SOURCE_GADGET5_WIDTH, /* gd_Width */
- SOURCE_GADGET5_HEIGHT, /* gd_Height */
- SOURCE_GADGET5_TEXT, /* *gd_Text */
- SOURCE_GADGET5_TEXT_ATTR, /* *gd_TextAttr */
- {0, 0, 0}
- },
- {
- SOURCE_GADGET6_TYPE, /* gd_Type */
- SOURCE_GADGET6_FLAGS, /* gd_Flags */
- SOURCE_GADGET6_LEFT_EDGE, /* gd_LeftEdge */
- SOURCE_GADGET6_TOP_EDGE,/* gd_TopEdge */
- SOURCE_GADGET6_WIDTH, /* gd_Width */
- SOURCE_GADGET6_HEIGHT, /* gd_Height */
- SOURCE_GADGET6_TEXT, /* *gd_Text */
- SOURCE_GADGET6_TEXT_ATTR, /* *gd_TextAttr */
- {0, 0, 0}
- },
- {
- SOURCE_GADGET7_TYPE, /* gd_Type */
- SOURCE_GADGET7_FLAGS, /* gd_Flags */
- SOURCE_GADGET7_LEFT_EDGE, /* gd_LeftEdge */
- SOURCE_GADGET7_TOP_EDGE,/* gd_TopEdge */
- SOURCE_GADGET7_WIDTH, /* gd_Width */
- SOURCE_GADGET7_HEIGHT, /* gd_Height */
- SOURCE_GADGET7_TEXT, /* *gd_Text */
- SOURCE_GADGET7_TEXT_ATTR, /* *gd_TextAttr */
- {0, 0, 0}
- },
- {
- INTUISUP_DATA_END /* mark end of gadget data */
- }
- };
- /* Save project as C source code */
-
- SHORT
- save_c_source(VOID)
- {
- struct TemplateList *tl = &template_list;
- struct GadgetData *gd = &source_gadget_data[0];
- APTR gl;
- USHORT flags = tl->tl_Flags;
- SHORT status;
-
- /* Init gadgets with current project data */
- (gd + SOURCE_GADGET_ID)->gd_SpecialData.gd_InputData.gd_InputDefault = &tl->tl_ProjectID[0];
- (gd + SOURCE_GADGET_STATIC)->gd_SpecialData.gd_CheckData.gd_CheckSelected = (flags & TEMPLATE_LIST_FLAG_SOURCE_STATIC_DATA ? 1 : 0);
- (gd + SOURCE_GADGET_INNER)->gd_SpecialData.gd_CheckData.gd_CheckSelected = (flags & TEMPLATE_LIST_FLAG_SOURCE_INNER_WINDOW ? 1 : 0);
- (gd + SOURCE_GADGET_WINDOW)->gd_SpecialData.gd_CheckData.gd_CheckSelected = (flags & TEMPLATE_LIST_FLAG_SOURCE_WINDOW ? 1 : 0);
- (gd + SOURCE_GADGET_PROGRAM)->gd_SpecialData.gd_CheckData.gd_CheckSelected = (flags & TEMPLATE_LIST_FLAG_SOURCE_PROGRAM ? 1 : 0);
-
- /* Print title and display gadgets */
- IClearWindow(eri, ewin, 0, 0, EDITOR_WINDOW_WIDTH, EDITOR_WINDOW_HEIGHT,
- 0);
- IPrintText(eri, ewin, SOURCE_TITLE_TEXT, SOURCE_TITLE_LEFT_EDGE,
- SOURCE_TITLE_TOP_EDGE, SOURCE_TITLE_TYPE, SOURCE_TITLE_FLAGS,
- SOURCE_TITLE_TEXT_ATTR);
- if (!(gl = ICreateGadgets(eri, &source_gadget_data[0], 0, 0, NULL)))
- {
- status = EDITOR_ERROR_OUT_OF_MEM;
- }
- else
- {
- IDisplayGadgets(ewin, gl);
- status = save_c_source_action(gl, tl);
- IRemoveGadgets(gl);
- IFreeGadgets(gl);
-
- /* Generate C source */
- if (status == SOURCE_SELECTION_OK)
- {
- status = generate_c_source(tl);
- }
- }
- return (status);
- }
-
- /* Perform action for source code generator */
-
- STATIC SHORT
- save_c_source_action(APTR gl, struct TemplateList * tl)
- {
- struct MsgPort *up = ewin->UserPort;
- BYTE *id = NULL;
- USHORT flags = tl->tl_Flags;
- BOOL keepon = TRUE;
- SHORT status = EDITOR_STATUS_NORMAL;
-
- do
- {
- struct IntuiMessage *msg;
-
- WaitPort(up);
- while (msg = IGetMsg(up))
- {
- ULONG value;
-
- switch (msg->Class)
- {
- case CLOSEWINDOW:
- status = EDITOR_STATUS_QUIT;
- keepon = FALSE;
- break;
-
- case ISUP_ID:
- value = (ULONG) msg->IAddress;
- switch (msg->Code)
- {
- case SOURCE_GADGET_OK:
-
- /* Change template list data */
- if (id)
- {
- strcpy(&tl->tl_ProjectID[0], id);
- }
- tl->tl_Flags = flags;
-
- /* Set status to generate C source code */
- status = SOURCE_SELECTION_OK;
- keepon = FALSE;
- break;
-
- case SOURCE_GADGET_CANCEL:
- keepon = FALSE;
- break;
-
- case SOURCE_GADGET_ID:
- id = (BYTE *) value;
- flags |= TEMPLATE_LIST_FLAG_CHANGED;
- break;
-
- case SOURCE_GADGET_STATIC:
- if (value)
- {
- flags |= TEMPLATE_LIST_FLAG_SOURCE_STATIC_DATA;
- }
- else
- {
- flags &= ~TEMPLATE_LIST_FLAG_SOURCE_STATIC_DATA;
- }
- flags |= TEMPLATE_LIST_FLAG_CHANGED;
- break;
-
- case SOURCE_GADGET_INNER:
- if (value)
- {
- flags |= TEMPLATE_LIST_FLAG_SOURCE_INNER_WINDOW;
- }
- else
- {
- flags &= ~TEMPLATE_LIST_FLAG_SOURCE_INNER_WINDOW;
- }
- flags |= TEMPLATE_LIST_FLAG_CHANGED;
- break;
-
- case SOURCE_GADGET_WINDOW:
- if (value)
- {
- flags |= TEMPLATE_LIST_FLAG_SOURCE_WINDOW;
- }
- else
- {
- flags &= ~TEMPLATE_LIST_FLAG_SOURCE_WINDOW;
- }
- flags |= TEMPLATE_LIST_FLAG_CHANGED;
- break;
-
- case SOURCE_GADGET_PROGRAM:
- if (value)
- {
- flags |= TEMPLATE_LIST_FLAG_SOURCE_PROGRAM;
- if (!(flags & TEMPLATE_LIST_FLAG_SOURCE_WINDOW))
- {
- flags |= TEMPLATE_LIST_FLAG_SOURCE_WINDOW;
- ISetGadgetAttributes(gl, SOURCE_GADGET_WINDOW,
- 0L, 0L, 1L, USE_CURRENT_VALUE,
- (VOID *) USE_CURRENT_VALUE);
- }
- }
- else
- {
- flags &= ~TEMPLATE_LIST_FLAG_SOURCE_PROGRAM;
- }
- flags |= TEMPLATE_LIST_FLAG_CHANGED;
- break;
- }
- break;
- }
- IReplyMsg(msg);
- }
- }
- while (keepon == TRUE);
- return (status);
- }
-
- /* C source code generator */
-
- STATIC SHORT
- generate_c_source(struct TemplateList * tl)
- {
- struct rtFileRequester *freq = csource_file_requester;
- SHORT status = EDITOR_STATUS_NORMAL;
- BYTE filename[256], buf[256]; /* <- should define a constant */
-
- /* Display ReqTools file requester and check if user selected cancel */
- IChangeMousePointer(ewin, NULL, FALSE);
-
- if (rtFileRequest(freq, filename, CSOURCE_SAVE_HAIL_TEXT, TAG_END))
- {
- struct TemplateList *tl = &template_list;
- FILE *fh;
- SHORT len = strlen(filename) - 2;
-
- /* Prepare file name */
- if (len < 1 || strcmp(filename + len, ".c"))
- {
- strcat(filename, ".c");
- len += 2;
- }
-
- /* filename = path + name */
- if (strlen(freq->Dir) > 0)
- {
- strcpy(buf, filename);
- if (strncmp(buf + strlen(buf) - 1, ":", (size_t) 1) == 0)
- sprintf(filename, "%s/%s", freq->Dir, buf);
- else
- sprintf(filename, "%s%s", freq->Dir, buf);
- }
-
- /* Check if file already exists and inform user */
- if (fh = fopen(filename, "r"))
- fclose(fh);
-
- if (!fh || ok_cancel_requester(" Save C source ", "File already"
- " exists.\\n\\nDo you really want to overwrite?") == TRUE)
- {
-
- /* Open file and write C source */
- if (!(fh = fopen(filename, "w+")))
- {
- status = EDITOR_ERROR_OPEN_FAILED;
- }
- else
- {
- if ((status = write_project_window(fh, tl)) ==
- EDITOR_STATUS_NORMAL)
- {
- if ((status = write_project_borders(fh, tl)) ==
- EDITOR_STATUS_NORMAL)
- {
- if ((status = write_project_fonts(fh, tl)) ==
- EDITOR_STATUS_NORMAL)
- {
- if ((status = write_project_texts(fh, tl)) ==
- EDITOR_STATUS_NORMAL)
- {
- if ((status = write_project_gadgets(fh, tl)) ==
- EDITOR_STATUS_NORMAL)
- {
- status = write_project_program(fh, tl);
- }
- }
- }
- }
- }
- fclose(fh);
-
- /* If any error then delete incomplete C source file */
- if (status != EDITOR_STATUS_NORMAL)
- {
- DeleteFile(filename);
- }
- }
- }
- }
- IRestoreMousePointer(ewin);
- if (status != EDITOR_STATUS_NORMAL)
- {
- show_error(status);
- }
- return (status);
- }
-
- /* Write project window data to save file */
-
- STATIC SHORT
- write_project_window(FILE * fh, struct TemplateList * tl)
- {
- USHORT flags = tl->tl_Flags;
- ULONG IDCMPflags = tl->tl_IDCMPFlags, WINflags = pwin->Flags;
- SHORT status = EDITOR_STATUS_NORMAL;
-
- if (fprintf(fh, "\t\t/* Project: %s */\n\n", &tl->tl_ProjectName[0]) == -1L)
- {
- status = EDITOR_ERROR_WRITE_FAILED;
- }
-
- if (status == EDITOR_STATUS_NORMAL && flags & TEMPLATE_LIST_FLAG_SOURCE_PROGRAM)
- {
- if (fprintf(fh,
- "\t/* Includes */\n\n"
- "#include <exec/types.h>\n"
- "#include <exec/lists.h>\n"
- "#include <intuition/intuition.h>\n"
- "#include <libraries/intuisup.h>\n"
- "#ifdef AZTEC_C\n"
- "#include <functions.h>\n"
- "#endif\n"
- "#ifdef LATTICE\n"
- "#include <proto/all.h>\n"
- "#endif\n\n"
- )== -1L)
- {
- status = EDITOR_ERROR_WRITE_FAILED;
- }
- }
-
- if (status == EDITOR_STATUS_NORMAL && flags & TEMPLATE_LIST_FLAG_SOURCE_WINDOW)
- {
- struct Window *win = pwin;
- BYTE id[MAX_PROJECT_ID_LEN];
-
- lower_string(&tl->tl_ProjectID[0], &id[0]);
- if (fprintf(fh,
- "\t/* Defines and data for window */\n\n"
- "#define RENDER_INFO_FLAGS %d\n"
- "#define OPEN_WINDOW_FLAGS %d\n\n"
- "#define WINDOW_LEFT_EDGE %d\n"
- "#define WINDOW_TOP_EDGE %d\n"
- "#define WINDOW_WIDTH %d\n"
- "#define WINDOW_HEIGHT %d\n\n"
- "%sstruct NewWindow %s_new_window = {\n"
- " WINDOW_LEFT_EDGE, WINDOW_TOP_EDGE, WINDOW_WIDTH, WINDOW_HEIGHT,\n"
- " %d, %d,\n"
- "%s"
- "%s"
- "%s"
- "%s"
- "%s"
- "%s"
- "%s"
- "%s"
- "%s"
- "%s"
- "%s"
- "%s"
- "%s"
- "%s"
- "%s"
- "%s"
- "%s"
- "%s"
- "%s"
- "%s"
- "%s"
- "%s"
- "%s"
- "%s,\n"
-
- "%s"
- "%s"
- "%s"
- "%s"
- "%s"
- "%s"
- "%s"
- "%s"
- "%s"
- "%s"
- "%s"
- "%s"
- "%s"
- "%s,\n"
-
- " NULL, NULL,\n"
- " (UBYTE *)\"%s\",\n"
- " NULL, NULL,\n"
- " %d, %d, %d, %d,\n"
- " WBENCHSCREEN\n"
- "};\n",
-
- ((flags & TEMPLATE_LIST_FLAG_SOURCE_INNER ? RENDER_INFO_FLAG_INNER_WINDOW : 0) | (flags & TEMPLATE_LIST_FLAG_BACK_FILL ? RENDER_INFO_FLAG_BACK_FILL : 0)),
- (flags & TEMPLATE_LIST_FLAG_RENDER_COLORS ? OPEN_WINDOW_FLAG_RENDER_PENS : 0),
- win->LeftEdge,
- win->TopEdge,
- (flags & TEMPLATE_LIST_FLAG_SOURCE_INNER_WINDOW ? win->Width - win->BorderLeft - win->BorderRight : win->Width),
- (flags & TEMPLATE_LIST_FLAG_SOURCE_INNER_WINDOW ? win->Height - win->BorderTop - win->BorderBottom : win->Height),
- (flags & TEMPLATE_LIST_FLAG_SOURCE_STATIC_DATA ? "STATIC " : ""),
- &id[0],
- (USHORT) win->DetailPen,
- (USHORT) win->BlockPen,
-
- ((IDCMPflags & GADGETDOWN) && !GADGET_ALL(GADGETDOWN) ? " | GADGETDOWN" : ""),
- ((IDCMPflags & GADGETUP) && !GADGET_ALL(GADGETUP) ? " | GADGETUP" : ""),
- ((IDCMPflags & CLOSEWINDOW) && !GADGET_ALL(CLOSEWINDOW) ? " | CLOSEWINDOW" : ""),
- ((IDCMPflags & REQSET) && !GADGET_ALL(REQSET) ? " | REQSET" : ""),
- ((IDCMPflags & REQCLEAR) && !GADGET_ALL(REQCLEAR) ? " | REQCLEAR" : ""),
- ((IDCMPflags & REQVERIFY) && !GADGET_ALL(REQVERIFY) ? " | REQVERIFY" : ""),
- ((IDCMPflags & MENUPICK) && !GADGET_ALL(MENUPICK) ? " | MENUPICK" : ""),
- ((IDCMPflags & MENUVERIFY) && !GADGET_ALL(MENUVERIFY) ? " | MENUVERIFY" : ""),
- ((IDCMPflags & MOUSEBUTTONS) && !GADGET_ALL(MOUSEBUTTONS) ? " | MOUSEBUTTONS" : ""),
- ((IDCMPflags & MOUSEMOVE) && !GADGET_ALL(MOUSEMOVE) ? " | MOUSEMOVE" : ""),
- ((IDCMPflags & DELTAMOVE) && !GADGET_ALL(DELTAMOVE) ? " | DELTAMOVE" : ""),
- ((IDCMPflags & NEWSIZE) && !GADGET_ALL(NEWSIZE) ? " | NEWSIZE" : ""),
- ((IDCMPflags & SIZEVERIFY) && !GADGET_ALL(SIZEVERIFY) ? " | SIZEVERIFY" : ""),
- ((IDCMPflags & REFRESHWINDOW) && !GADGET_ALL(REFRESHWINDOW) ? " | REFRESHWINDOW" : ""),
- ((IDCMPflags & ACTIVEWINDOW) && !GADGET_ALL(ACTIVEWINDOW) ? " | ACTIVEWINDOW" : ""),
- ((IDCMPflags & INACTIVEWINDOW) && !GADGET_ALL(INACTIVEWINDOW) ? " | INACTIVEWINDOW" : ""),
- ((IDCMPflags & RAWKEY) && !GADGET_ALL(RAWKEY) ? " | RAWKEY" : ""),
- ((IDCMPflags & VANILLAKEY) && !GADGET_ALL(VANILLAKEY) ? " | VANILLAKEY" : ""),
- ((IDCMPflags & DISKINSERTED) && !GADGET_ALL(DISKINSERTED) ? " | DISKINSERTED" : ""),
- ((IDCMPflags & DISKREMOVED) && !GADGET_ALL(DISKREMOVED) ? " | DISKREMOVED" : ""),
- ((IDCMPflags & NEWPREFS) && !GADGET_ALL(NEWPREFS) ? " | NEWPREFS" : ""),
- ((IDCMPflags & INTUITICKS) && !GADGET_ALL(INTUITICKS) ? " | INTUITICKS" : ""),
- ((IDCMPflags & WBENCHMESSAGE) && !GADGET_ALL(WBENCHMESSAGE) ? " | WBENCHMESSAGE" : ""),
- (IDCMPflags & GADGET_IDCMP_FLAGS_ALL ? " | GADGET_IDCMP_FLAGS_ALL" : ""),
-
- (WINflags & WINDOWCLOSE ? " | WINDOWCLOSE" : ""),
- (WINflags & WINDOWDRAG ? " | WINDOWDRAG" : ""),
- (WINflags & WINDOWDEPTH ? " | WINDOWDEPTH" : ""),
- (WINflags & WINDOWSIZING ? " | WINDOWSIZING" : ""),
- (WINflags & BACKDROP ? " | BACKDROP" : ""),
- (WINflags & BORDERLESS ? " | BORDERLESS" : ""),
- (WINflags & GIMMEZEROZERO ? " | GIMMEZEROZERO" : ""),
- (WINflags & SUPER_BITMAP ? " | SUPER_BITMAP" : ""),
- (WINflags & SIMPLE_REFRESH ? " | SIMPLE_REFRESH" : ""),
- (WINflags & SMART_REFRESH ? " | SMART_REFRESH" : ""),
- (flags & TEMPLATE_LIST_FLAG_REPORTMOUSE ? " | REPORTMOUSE" : ""),
- (WINflags & NOCAREREFRESH ? " | NOCAREREFRESH" : ""),
- (WINflags & RMBTRAP ? " | RMBTRAP" : ""),
- (WINflags & ACTIVATE ? " | ACTIVATE" : ""),
-
- &tl->tl_ProjectWinName[0],
-
- win->MinWidth,
- win->MinHeight,
- win->MaxWidth,
- win->MaxHeight)
- == -1L)
- {
- status = EDITOR_ERROR_WRITE_FAILED;
- }
- }
-
- return (status);
- }
-
- /* Write project border defines and data to save file */
-
- STATIC SHORT
- write_project_borders(FILE * fh, struct TemplateList * tl)
- {
- SHORT status = EDITOR_STATUS_NORMAL;
-
- if (tl->tl_BorderTemplates)
- {
- if (fprintf(fh, "\t/* Defines and data for borders */\n\n") == -1L)
- {
- status = EDITOR_ERROR_WRITE_FAILED;
- }
- if (status == EDITOR_STATUS_NORMAL)
- {
- struct Template *tp;
- BYTE id[MAX_PROJECT_ID_LEN + 1];
- USHORT count;
-
- /* Write defines */
- upper_string(&tl->tl_ProjectID[0], &id[0]);
- for (count = 0, tp = get_head((struct List *) & tl->tl_Templates);
- tp && status == EDITOR_STATUS_NORMAL;
- count++, tp = get_succ(&tp->tp_Node))
- {
- if (TEMPLATE_GROUP(tp) == TEMPLATE_GROUP_BORDER)
- {
- BYTE name[MAX_TEMPLATE_NAME_LEN + 1];
-
- upper_string(&tp->tp_TemplateName[0], &name[0]);
- if (fprintf(fh, "#define %s_BORDER_%s %d\n",
- &id[0], &name[0], count) == -1L)
- {
- status = EDITOR_ERROR_WRITE_FAILED;
- }
- }
- }
- if (status == EDITOR_STATUS_NORMAL)
- {
- USHORT flags = tl->tl_Flags;
-
- /* Write border data */
- lower_string(&tl->tl_ProjectID[0], &id[0]);
- if (fprintf(fh, "\n%sstruct BorderData %s_border_data[] = {\n"
- " {\n",
- (flags & TEMPLATE_LIST_FLAG_SOURCE_STATIC_DATA ?
- "STATIC " : ""), &id[0]) == -1L)
- {
- status = EDITOR_ERROR_WRITE_FAILED;
- }
- else
- {
- struct Window *win = pwin;
-
- for (tp = get_head((struct List *) & tl->tl_Templates);
- tp && status == EDITOR_STATUS_NORMAL;
- tp = get_succ(&tp->tp_Node))
- {
- if (TEMPLATE_GROUP(tp) == TEMPLATE_GROUP_BORDER)
- {
- struct BorderData *bd = &tp->tp_Data.tp_BorderData;
-
- if (fprintf(fh, " %d, %d, %d, %d, %d\n"
- " }, {\n", bd->bd_Type,
- (flags & TEMPLATE_LIST_FLAG_SOURCE_INNER_WINDOW ?
- bd->bd_LeftEdge - win->BorderLeft :
- bd->bd_LeftEdge),
- (flags & TEMPLATE_LIST_FLAG_SOURCE_INNER_WINDOW ?
- bd->bd_TopEdge - win->BorderTop :
- bd->bd_TopEdge),
- bd->bd_Width, bd->bd_Height) == -1L)
- {
- status = EDITOR_ERROR_WRITE_FAILED;
- }
- }
- }
- if (status == EDITOR_STATUS_NORMAL)
- {
- if (fprintf(fh, " INTUISUP_DATA_END\n"
- " }\n"
- "};\n") == -1L)
- {
- status = EDITOR_ERROR_WRITE_FAILED;
- }
- }
- }
- }
- }
- }
- return (status);
- }
-
- /* Write project font data to save file */
-
- STATIC SHORT
- write_project_fonts(FILE * fh, struct TemplateList * tl)
- {
- SHORT status = EDITOR_STATUS_NORMAL;
-
- if (tl->tl_TextTemplates || tl->tl_GadgetTemplates)
- {
- BYTE id[MAX_PROJECT_ID_LEN + 1];
-
- lower_string(&tl->tl_ProjectID[0], &id[0]);
- if (fprintf(fh, "\t/* Data for fonts */\n\n"
- "%sstruct TextAttr %s_text_attr[] = {\n"
- " {\n",
- (tl->tl_Flags & TEMPLATE_LIST_FLAG_SOURCE_STATIC_DATA ?
- "STATIC " : ""), &id[0]) == -1L)
- {
- status = EDITOR_ERROR_WRITE_FAILED;
- }
- else
- {
- struct TemplateFont *tf = get_head((struct List *) & tl->tl_Fonts);
-
- while (tf && status == EDITOR_STATUS_NORMAL)
- {
- struct TextAttr *ta = &tf->tf_TextAttr;
-
- tf = get_succ((struct Node *) & tf->tf_MinNode);
- if (fprintf(fh, " (STRPTR)\"%s\", %d, FS_NORMAL, FPF_ROMFONT\n"
- " }%s", ta->ta_Name, ta->ta_YSize,
- (tf ? ", {\n" : "\n};\n")) == -1L)
- {
- status = EDITOR_ERROR_WRITE_FAILED;
- }
- }
- }
- }
- return (status);
- }
-
- /* Write project text defines and data to save file */
-
- STATIC SHORT
- write_project_texts(FILE * fh, struct TemplateList * tl)
- {
- SHORT status = EDITOR_STATUS_NORMAL;
-
- if (tl->tl_TextTemplates)
- {
- if (fprintf(fh, "\t/* Defines and data for texts */\n\n") == -1L)
- {
- status = EDITOR_ERROR_WRITE_FAILED;
- }
- if (status == EDITOR_STATUS_NORMAL)
- {
- struct Template *tp;
- BYTE id[MAX_PROJECT_ID_LEN + 1];
- USHORT count;
-
- /* Write defines */
- upper_string(&tl->tl_ProjectID[0], &id[0]);
- for (count = 0, tp = get_head((struct List *) & tl->tl_Templates);
- tp && status == EDITOR_STATUS_NORMAL;
- tp = get_succ(&tp->tp_Node))
- {
- if (TEMPLATE_GROUP(tp) == TEMPLATE_GROUP_TEXT)
- {
- BYTE name[MAX_TEMPLATE_NAME_LEN + 1];
-
- upper_string(&tp->tp_TemplateName[0], &name[0]);
- if (fprintf(fh, "#define %s_TEXT_%s %d\n",
- &id[0], &name[0], count) == -1L)
- {
- status = EDITOR_ERROR_WRITE_FAILED;
- }
- else
- {
- count++;
- }
- }
- }
- if (status == EDITOR_STATUS_NORMAL)
- {
- USHORT flags = tl->tl_Flags;
-
- /* Write text data */
- lower_string(&tl->tl_ProjectID[0], &id[0]);
- if (fprintf(fh, "\n%sstruct TextData %s_text_data[] = {\n"
- " {\n",
- (flags & TEMPLATE_LIST_FLAG_SOURCE_STATIC_DATA ?
- "STATIC " : ""), &id[0]) == -1L)
- {
- status = EDITOR_ERROR_WRITE_FAILED;
- }
- else
- {
- struct Window *win = pwin;
-
- for (tp = get_head((struct List *) & tl->tl_Templates);
- tp && status == EDITOR_STATUS_NORMAL;
- tp = get_succ(&tp->tp_Node))
- {
- if (TEMPLATE_GROUP(tp) == TEMPLATE_GROUP_TEXT)
- {
- struct TextData *td = &tp->tp_Data.tp_TextData;
-
- if (fprintf(fh, " %d, %d, %d, %d,\n"
- " \"%s\", &%s_text_attr[%d]\n"
- " }, {\n", td->td_Type, td->td_Flags,
- (flags & TEMPLATE_LIST_FLAG_SOURCE_INNER_WINDOW ?
- td->td_LeftEdge - win->BorderLeft :
- td->td_LeftEdge),
- (flags & TEMPLATE_LIST_FLAG_SOURCE_INNER_WINDOW ?
- td->td_TopEdge - win->BorderTop :
- td->td_TopEdge),
- td->td_Text, &id[0], get_template_font_num(tl,
- td->td_TextAttr)) == -1L)
- {
- status = EDITOR_ERROR_WRITE_FAILED;
- }
- }
- }
- if (status == EDITOR_STATUS_NORMAL)
- {
- if (fprintf(fh, " INTUISUP_DATA_END\n"
- " }\n"
- "};\n") == -1L)
- {
- status = EDITOR_ERROR_WRITE_FAILED;
- }
- }
- }
- }
- }
- }
- return (status);
- }
-
- /* Write project gadget defines and data to save file */
-
- STATIC SHORT
- write_project_gadgets(FILE * fh, struct TemplateList * tl)
- {
- SHORT status = EDITOR_STATUS_NORMAL;
-
- if (tl->tl_GadgetTemplates)
- {
- if (fprintf(fh, "\t/* Defines and data for gadgets */\n\n") == -1L)
- {
- status = EDITOR_ERROR_WRITE_FAILED;
- }
- if (status == EDITOR_STATUS_NORMAL)
- {
- struct Template *tp;
- BYTE id[MAX_PROJECT_ID_LEN + 1];
- USHORT count;
-
- /* Write defines */
- upper_string(&tl->tl_ProjectID[0], &id[0]);
- for (count = 0, tp = get_head((struct List *) & tl->tl_Templates);
- tp && status == EDITOR_STATUS_NORMAL;
- tp = get_succ(&tp->tp_Node))
- {
- if (TEMPLATE_GROUP(tp) == TEMPLATE_GROUP_GADGET)
- {
- BYTE name[MAX_TEMPLATE_NAME_LEN + 1];
-
- upper_string(&tp->tp_TemplateName[0], &name[0]);
- if (fprintf(fh, "#define %s_GADGET_%s %d\n",
- &id[0], &name[0], count) == -1L)
- {
- status = EDITOR_ERROR_WRITE_FAILED;
- }
- else
- {
- count++;
- }
- }
- }
- if (status == EDITOR_STATUS_NORMAL)
- {
- if (fprintf(fh, "\n") == -1L)
- {
- status = EDITOR_ERROR_WRITE_FAILED;
- }
- else
- {
-
- /* Write text arrays and lists */
- lower_string(&tl->tl_ProjectID[0], &id[0]);
- for (count = 1, tp = get_head((struct List *) & tl->tl_Templates);
- tp && status == EDITOR_STATUS_NORMAL;
- tp = get_succ(&tp->tp_Node))
- {
- if (TEMPLATE_GROUP(tp) == TEMPLATE_GROUP_GADGET)
- {
- struct GadgetData *gd = &tp->tp_Data.tp_GadgetData;
-
- switch (gd->gd_Type)
- {
- case GADGET_DATA_TYPE_MX:
- status = write_gadget_text_array(fh, tl, &id[0], count,
- gd->gd_SpecialData.gd_MXData.gd_MXTextArray);
- break;
-
- case GADGET_DATA_TYPE_CYCLE:
- status = write_gadget_text_array(fh, tl, &id[0], count,
- gd->gd_SpecialData.gd_CycleData.gd_CycleTextArray);
- break;
-
- case GADGET_DATA_TYPE_LISTVIEW:
- status = write_gadget_list(fh, tl, &id[0], count,
- gd->gd_SpecialData.gd_ListViewData.gd_ListViewList);
- break;
- }
- count++;
- }
- }
- if (status == EDITOR_STATUS_NORMAL)
- {
- USHORT flags = tl->tl_Flags;
-
- /* Write gadget data */
- if (fprintf(fh, "%sstruct GadgetData %s_gadget_data[] = {\n"
- " {\n",
- (flags & TEMPLATE_LIST_FLAG_SOURCE_STATIC_DATA ?
- "STATIC " : ""), &id[0]) == -1L)
- {
- status = EDITOR_ERROR_WRITE_FAILED;
- }
- else
- {
- struct Window *win = pwin;
-
- for (count = 1, tp = get_head((struct List *)
- & tl->tl_Templates);
- tp && status == EDITOR_STATUS_NORMAL;
- tp = get_succ(&tp->tp_Node))
- {
- if (TEMPLATE_GROUP(tp) == TEMPLATE_GROUP_GADGET)
- {
- struct GadgetData *gd = &tp->tp_Data.tp_GadgetData;
-
- if (fprintf(fh, " %ld, %ld, %d, %d, %d, %d,\n"
- " \"%s\", &%s_text_attr[%d],\n",
- gd->gd_Type, gd->gd_Flags,
- (flags & TEMPLATE_LIST_FLAG_SOURCE_INNER_WINDOW ?
- gd->gd_LeftEdge - win->BorderLeft :
- gd->gd_LeftEdge),
- (flags & TEMPLATE_LIST_FLAG_SOURCE_INNER_WINDOW ?
- gd->gd_TopEdge - win->BorderTop :
- gd->gd_TopEdge),
- gd->gd_Width, gd->gd_Height, gd->gd_Text,
- &id[0], get_template_font_num(tl,
- gd->gd_TextAttr)) == -1L)
- {
- status = EDITOR_ERROR_WRITE_FAILED;
- }
- else
- {
- if ((status = write_gadget_special_data(fh, &id[0],
- count, gd)) == EDITOR_STATUS_NORMAL)
- {
- count++;
- }
- }
- }
- }
- if (status == EDITOR_STATUS_NORMAL)
- {
- if (fprintf(fh, " INTUISUP_DATA_END\n"
- " }\n"
- "};\n") == -1L)
- {
- status = EDITOR_ERROR_WRITE_FAILED;
- }
- }
- }
- }
- }
- }
- }
- }
- return (status);
- }
-
- /* Write gadget text array to save file*/
-
- STATIC SHORT
- write_gadget_text_array(FILE * fh, struct TemplateList * tl, BYTE * id, USHORT count, BYTE ** array)
- {
- SHORT status = EDITOR_STATUS_NORMAL;
-
- if (fprintf(fh, "%sBYTE *%s_gadget%d_text_array[] = {\n",
- (tl->tl_Flags & TEMPLATE_LIST_FLAG_SOURCE_STATIC_DATA ?
- "STATIC " : ""), id, count) == -1L)
- {
- status = EDITOR_ERROR_WRITE_FAILED;
- }
- else
- {
- BYTE *text;
-
- while ((text = *array++) && status == EDITOR_STATUS_NORMAL)
- {
- if (fprintf(fh, " \"%s\",\n", text) == -1L)
- {
- status = EDITOR_ERROR_WRITE_FAILED;
- }
- }
- if (status == EDITOR_STATUS_NORMAL)
- {
- if (fprintf(fh, " NULL\n"
- "};\n") == -1L)
- {
- status = EDITOR_ERROR_WRITE_FAILED;
- }
- }
- }
- return (status);
- }
-
- /* Write gadget list to save file*/
-
- STATIC SHORT
- write_gadget_list(FILE * fh, struct TemplateList * tl, BYTE * id, USHORT count, struct List * list)
- {
- USHORT num = 0;
- SHORT status = EDITOR_STATUS_NORMAL;
-
- if (list->lh_Head->ln_Succ)
- {
- if (fprintf(fh, "IMPORT struct List %s_gadget%d_list;\n"
- "%sstruct Node %s_gadget%d_node[] = {\n"
- " {\n", id, count,
- (tl->tl_Flags & TEMPLATE_LIST_FLAG_SOURCE_STATIC_DATA ?
- "STATIC " : ""), id, count) == -1L)
- {
- status = EDITOR_ERROR_WRITE_FAILED;
- }
- else
- {
- struct Node *node = get_head(list);
-
- /* Write node array */
- while (node && status == EDITOR_STATUS_NORMAL)
- {
- BYTE *text = node->ln_Name;
-
- /* Write node pred */
- node = get_succ(node);
- if (node)
- {
- if (fprintf(fh, " &%s_gadget%d_node[%d], ",
- &id[0], count, num + 1) == -1L)
- {
- status = EDITOR_ERROR_WRITE_FAILED;
- }
- }
- else
- {
- if (fprintf(fh, " (struct Node *)"
- "&%s_gadget%d_list.lh_Tail, ", &id[0], count) == -1L)
- {
- status = EDITOR_ERROR_WRITE_FAILED;
- }
- }
- if (status == EDITOR_STATUS_NORMAL)
- {
-
- /* Write node succ */
- if (num)
- {
- if (fprintf(fh, "&%s_gadget%d_node[%d]",
- &id[0], count, num - 1) == -1L)
- {
- status = EDITOR_ERROR_WRITE_FAILED;
- }
- }
- else
- {
- if (fprintf(fh, "(struct Node *)&%s_gadget%d_list.lh_Head",
- &id[0], count) == -1L)
- {
- status = EDITOR_ERROR_WRITE_FAILED;
- }
- }
- if (status == EDITOR_STATUS_NORMAL)
- {
-
- /* Write node text */
- if (fprintf(fh, ", 0, 0,\n"
- " \"%s\"\n"
- " }%s", text,
- (node ? ", {\n" : "\n};\n")) == -1L)
- {
- status = EDITOR_ERROR_WRITE_FAILED;
- }
- else
- {
- num++;
- }
- }
- }
- }
- }
- }
- if (status == EDITOR_STATUS_NORMAL)
- {
-
- /* Write list */
- if (fprintf(fh, "%sstruct List %s_gadget%d_list = {\n",
- (tl->tl_Flags & TEMPLATE_LIST_FLAG_SOURCE_STATIC_DATA ?
- "/* STATIC */ " : ""), id, count) == -1L)
- {
- status = EDITOR_ERROR_WRITE_FAILED;
- }
- else
- {
-
- /* Write list head */
- if (num)
- {
- if (fprintf(fh, " &%s_gadget%d_node[0], NULL,\n",
- id, count) == -1L)
- {
- status = EDITOR_ERROR_WRITE_FAILED;
- }
- }
- else
- {
- if (fprintf(fh, " (struct Node *)&%s_gadget%d_list.lh_Tail,"
- " NULL,\n", id, count) == -1L)
- {
- status = EDITOR_ERROR_WRITE_FAILED;
- }
- }
- if (status == EDITOR_STATUS_NORMAL)
- {
-
- /* Write list tail */
- if (num)
- {
- if (fprintf(fh, " &%s_gadget%d_node[%d]",
- id, count, num - 1) == -1L)
- {
- status = EDITOR_ERROR_WRITE_FAILED;
- }
- }
- else
- {
- if (fprintf(fh, " (struct Node *)&%s_gadget%d_list.lh_Head",
- id, count) == -1L)
- {
- status = EDITOR_ERROR_WRITE_FAILED;
- }
- }
- if (status == EDITOR_STATUS_NORMAL)
- {
-
- /* Write list type */
- if (fprintf(fh, ", 0, 0\n"
- "};\n") == -1L)
- {
- status = EDITOR_ERROR_WRITE_FAILED;
- }
- }
- }
- }
- }
- return (status);
- }
-
- /* Write special gadget data */
-
- STATIC SHORT
- write_gadget_special_data(FILE * fh, BYTE * id, USHORT count, struct GadgetData * gd)
- {
- SHORT status = EDITOR_STATUS_NORMAL;
-
- if (fprintf(fh, " { ") == -1L)
- {
- status = EDITOR_ERROR_WRITE_FAILED;
- }
- else
- {
- switch (gd->gd_Type)
- {
- case GADGET_DATA_TYPE_MX:
- case GADGET_DATA_TYPE_CYCLE:
- if (fprintf(fh, "%ld, %ld, &%s_gadget%d_text_array[0]",
- gd->gd_SpecialData.gd_Data.gd_Data1,
- gd->gd_SpecialData.gd_Data.gd_Data2, id, count) == -1L)
- {
- status = EDITOR_ERROR_WRITE_FAILED;
- }
- break;
-
- case GADGET_DATA_TYPE_STRING:
- if (fprintf(fh, "%ld, %ld, \"%s\"",
- gd->gd_SpecialData.gd_Data.gd_Data1,
- gd->gd_SpecialData.gd_Data.gd_Data2,
- gd->gd_SpecialData.gd_Data.gd_Data3) == -1L)
- {
- status = EDITOR_ERROR_WRITE_FAILED;
- }
- break;
-
- case GADGET_DATA_TYPE_LISTVIEW:
- if (fprintf(fh, "%ld, %ld, &%s_gadget%d_list",
- gd->gd_SpecialData.gd_Data.gd_Data1,
- gd->gd_SpecialData.gd_Data.gd_Data2, id, count) == -1L)
- {
- status = EDITOR_ERROR_WRITE_FAILED;
- }
- break;
-
- default:
- if (fprintf(fh, "%ld, %ld, (VOID *)%ld",
- gd->gd_SpecialData.gd_Data.gd_Data1,
- gd->gd_SpecialData.gd_Data.gd_Data2,
- gd->gd_SpecialData.gd_Data.gd_Data3) == -1L)
- {
- status = EDITOR_ERROR_WRITE_FAILED;
- }
- break;
- }
- if (status == EDITOR_STATUS_NORMAL)
- {
- if (fprintf(fh, " }\n"
- " }, {\n") == -1L)
- {
- status = EDITOR_ERROR_WRITE_FAILED;
- }
- }
- }
- return (status);
- }
-
- /* Write project test program */
-
- STATIC SHORT
- write_project_program(FILE * fh, struct TemplateList * tl)
- {
- SHORT status = EDITOR_STATUS_NORMAL;
-
- if (tl->tl_Flags & TEMPLATE_LIST_FLAG_SOURCE_PROGRAM)
- {
- BYTE id[MAX_PROJECT_ID_LEN + 1];
- USHORT gads = tl->tl_GadgetTemplates;
- struct Template *tp;
- USHORT count;
-
-
- lower_string(&tl->tl_ProjectID[0], &id[0]);
- if (fprintf(fh,
- "\n /* Global var. */\n"
- "struct Library *IntuiSupBase = NULL;\n"
- "APTR ri = NULL;\n"
- "struct Window* win = NULL;\n"
- "%s%c\n"
- "\t/* Protos */\n"
- "BOOL %s_init(VOID);\n"
- "VOID %s_close(VOID);\n"
- "VOID %s_action(VOID);\n"
- "%s%s%s\n"
- "\t/* Test program */\n\n"
- " LONG\n"
- "main(VOID)\n"
- "{\n"
- "\n"
- " if(! %s_init(VOID))\n"
- " {\n"
- " %s_close(VOID);\n"
- " return(1L);\n"
- " }\n\n",
- (gads ? "APTR gl = NULL;" : ""),
- (gads ? 10 : 32),
- &id[0],
- &id[0],
- &id[0],
- (pwin->Flags & SUPER_BITMAP ? "VOID " : ""),
- (pwin->Flags & SUPER_BITMAP ? &id[0] : ""),
- (pwin->Flags & SUPER_BITMAP ? "_init_bitmap(struct BitMap*);" : ""),
- &id[0],
- &id[0]) == -1L)
- {
- return EDITOR_ERROR_WRITE_FAILED;
- }
-
-
- if (tl->tl_BorderTemplates && fprintf(fh,
- " IDisplayBorders(ri, win, &%s_border_data[0], 0, 0);\n",
- &id[0]) == -1L)
- {
- return EDITOR_ERROR_WRITE_FAILED;
- }
-
- if (tl->tl_TextTemplates && fprintf(fh,
- " IDisplayTexts(ri, win,&%s_text_data[0], 0, 0, NULL);\n",
- &id[0]) == -1L)
- {
- return EDITOR_ERROR_WRITE_FAILED;
- }
-
- if (gads && fprintf(fh,
- " IDisplayGadgets(win,gl);\n"
- )== -1L)
- {
- return EDITOR_ERROR_WRITE_FAILED;
- }
-
- if (fprintf(fh,
- "\n"
- " %s_action(VOID);\n\n"
- " %s_close(VOID);\n\n"
- " return(0L);\n"
- "}\n\n",
- &id[0],
- &id[0]) == -1L)
- {
- return EDITOR_ERROR_WRITE_FAILED;
- }
-
- if (fprintf(fh,
- "BOOL %s_init(VOID)\n"
- "{\n"
- " if (!(IntuiSupBase = (struct Library*)OpenLibrary(IntuiSupName,IntuiSupVersion)) )\n"
- " return FALSE;\n"
- "\n"
- " if (!(ri = IGetRenderInfo(NULL, RENDER_INFO_FLAGS)) )\n"
- " return FALSE;\n"
- "\n"
- "%s%s%c%c"
- " if (!(win = IOpenWindow(ri, &%s_new_window,OPEN_WINDOW_FLAGS)) )\n"
- " return FALSE;\n"
- "\n",
- &id[0],
- (pwin->Flags & SUPER_BITMAP ? &id[0] : ""),
- (pwin->Flags & SUPER_BITMAP ? "_init_bitmap(&bitmap);" : ""),
- (pwin->Flags & SUPER_BITMAP ? 10 : 32),
- (pwin->Flags & SUPER_BITMAP ? 10 : 32),
- &id[0]) == -1L)
- {
- return EDITOR_ERROR_WRITE_FAILED;
- }
-
-
- if (gads && fprintf(fh,
- " if (!(gl = ICreateGadgets(ri,&%s_gadget_data[0], 0, 0, NULL)) )\n"
- " return FALSE;\n"
- "\n",
- &id[0]) == -1L)
- {
- return EDITOR_ERROR_WRITE_FAILED;
- }
-
-
- if (fprintf(fh,
- " return TRUE;\n"
- "}\n"
- "\n"
- " VOID\n"
- "%s_close(VOID)\n"
- "{\n"
- " if(gl) IRemoveGadgets(gl);\n"
- " if(gl) IFreeGadgets(gl);\n"
- " if(win) ICloseWindow(win, FALSE);\n"
- " if(ri) IFreeRenderInfo(ri);\n"
- " if(IntuiSupBase) CloseLibrary(IntuiSupBase);\n"
- "}\n",
- &id[0],
- &id[0],
- &id[0]) == -1L)
- {
- return EDITOR_ERROR_WRITE_FAILED;
- }
-
- if (fprintf(fh,
- "\n VOID\n"
- "%s_action(VOID)\n"
- "{\n"
- " BOOL keepon = TRUE;\n\n"
- " do {\n"
- " struct IntuiMessage *msg;\n\n"
- " WaitPort(win->UserPort);\n"
- " while (msg = IGetMsg(win->UserPort)) {\n"
- " ULONG Class=msg->Class;\n"
- " USHORT Code=msg->Code;\n"
- " LONG IAddress=(LONG)msg->IAddress;\n\n"
- " IReplyMsg(msg);\n\n"
- " switch(Class)\n"
- " {\n"
- " case CLOSEWINDOW:\n"
- " keepon = FALSE;\n"
- " break;\n\n"
- "%s",
- &id[0],
- (pwin->Flags & RMBTRAP ? "" :
- " case MENUPICK:\n"
- " printf(\"MENUPICK: \");\n"
- " break;\n\n")
- )== -1L)
- {
- return EDITOR_ERROR_WRITE_FAILED;
- }
-
- if (gads)
- {
- if (fprintf(fh,
- " case ISUP_ID:\n"
- " switch(Code)\n"
- " {\n"
- )== -1L)
- {
- return EDITOR_ERROR_WRITE_FAILED;
- }
-
- upper_string(&tl->tl_ProjectID[0], &id[0]);
- for (count = 0, tp = get_head((struct List *) & tl->tl_Templates); tp && status == EDITOR_STATUS_NORMAL; tp = get_succ(&tp->tp_Node))
- {
- if (TEMPLATE_GROUP(tp) == TEMPLATE_GROUP_GADGET)
- {
- BYTE name[MAX_TEMPLATE_NAME_LEN + 1];
- struct GadgetData *gd = &tp->tp_Data.tp_GadgetData;
-
- upper_string(&tp->tp_TemplateName[0], &name[0]);
-
- switch (gd->gd_Type)
- {
- case GADGET_DATA_TYPE_STRING:
- if (fprintf(fh,
- " case %s_GADGET_%s:\n"
- " printf(\"%s_GADGET_%s: %s\\n\",IAddress);\n"
- " break;\n\n",
- &id[0],
- &name[0],
- &id[0],
- &name[0],
- "%s") == -1L)
- {
- return EDITOR_ERROR_WRITE_FAILED;
- }
- break;
-
- default:
- if (fprintf(fh,
- " case %s_GADGET_%s:\n"
- " printf(\"%s_GADGET_%s: %s\\n\",IAddress);\n"
- " break;\n\n",
- &id[0],
- &name[0],
- &id[0],
- &name[0],
- "%ld") == -1L)
- {
- return EDITOR_ERROR_WRITE_FAILED;
- }
- }
-
- count++;
- }
- }
-
- if (fprintf(fh,
- " }\n"
- )== -1L)
- {
- return EDITOR_ERROR_WRITE_FAILED;
- }
-
- lower_string(&tl->tl_ProjectID[0], &id[0]);
- }
-
- if (fprintf(fh,
- " }\n"
- " }\n"
- " } while (keepon == TRUE);\n"
- "}\n"
- )== -1L)
- {
- return EDITOR_ERROR_WRITE_FAILED;
- }
- }
-
- return (status);
- }
-