home *** CD-ROM | disk | FTP | other *** search
/ The AGA Experience 2 / agavol2.iso / software / utilities / programmers / misc / guicreator / demos / videothek / videothek.c < prev    next >
Encoding:
C/C++ Source or Header  |  1995-06-20  |  46.3 KB  |  775 lines

  1. /*************************************************************************/
  2. /*                                                                       */
  3. /*   Includes                                                            */
  4. /*                                                                       */
  5. /*************************************************************************/
  6.  
  7. #include "Videothek_Includes.h"
  8. #include "Videothek.h"
  9.  
  10. /*************************************************************************/
  11. /*                                                                       */
  12. /*   Variables and Structures                                            */
  13. /*                                                                       */
  14. /*************************************************************************/
  15.  
  16. extern struct IntuitionBase   *IntuitionBase;
  17. extern struct GfxBase         *GfxBase;
  18.  
  19. extern struct Library *GadToolsBase ;
  20. extern struct Library *AslBase      ;
  21. extern struct Library *DataTypesBase;
  22.  
  23. /*************************************************************************/
  24. /*                                                                       */
  25. /*   Defines                                                             */
  26. /*                                                                       */
  27. /*************************************************************************/
  28.  
  29. #define RASTERX (GfxBase->DefaultFont->tf_XSize)
  30. #define RASTERY (GfxBase->DefaultFont->tf_YSize/2+4)
  31.  
  32. #define XSIZE(x)  ((x)*RASTERX)
  33. #define YSIZE(x)  ((x)*RASTERY)
  34.  
  35. #define XPOS(x)   (XSIZE(x)+customscreen->WBorLeft)
  36. #define YPOS(x)   (YSIZE(x)+customscreen->BarHeight+1)
  37.  
  38. #define ERROR_NO_WINDOW_OPENED      1001L
  39. #define ERROR_NO_PUBSCREEN_LOCKED   1002L
  40. #define ERROR_NO_GADGETS_CREATED    1003L
  41. #define ERROR_NO_VISUALINFO         1004L
  42. #define ERROR_NO_PICTURE_LOADED     1005L
  43. #define ERROR_NO_GADGETLIST_CREATED 1006L
  44. #define ERROR_NO_WINDOW_MENU        1007L
  45.  
  46.  
  47. struct HauptfensterData
  48.    {
  49.    BOOL    gd_Disabled_Listview;
  50.    struct List *gd_Labels_Listview;
  51.    UWORD   gd_Selected_Listview;
  52.    UWORD   gd_Top_Listview;
  53.    BOOL    gd_Disabled_Neu;
  54.    BOOL    gd_Disabled_Aendern;
  55.    BOOL    gd_Disabled_Loeschen;
  56.    BOOL    gd_Disabled_ListeLoeschen;
  57.    BOOL    gd_Disabled_Drucken;
  58.    BOOL    gd_Disabled_Speichern;
  59.    };
  60.  
  61.  
  62. struct EintragData
  63.    {
  64.    BOOL    gd_Disabled_Filmtitel;
  65.    char    gd_String_Filmtitel[40];
  66.    BOOL    gd_Disabled_Kassette;
  67.    ULONG   gd_Number_Kassette;
  68.    BOOL    gd_Disabled_Minuten;
  69.    ULONG   gd_Number_Minuten;
  70.    BOOL    gd_Disabled_Quelle;
  71.    UWORD   gd_Active_Quelle;
  72.    STRPTR *gd_Labels_Quelle;
  73.    BOOL    gd_Disabled_Art;
  74.    UWORD   gd_Active_Art;
  75.    STRPTR *gd_Labels_Art;
  76.    BOOL    gd_Disabled_Weiter;
  77.    };
  78.  
  79. /*************************************************************************/
  80. /*                                                                       */
  81. /*   Routines to handle gadgets                                          */
  82. /*                                                                       */
  83. /*************************************************************************/
  84.  
  85.  
  86. void HandleGadgetsHauptfenster(struct Window *win,struct Gadget *wingads[],ULONG gadgetid,ULONG messagecode,struct HauptfensterData *gadgetdata,APTR userdata)
  87. {
  88.    switch(gadgetid)
  89.       {
  90.       case LVID_Listview:
  91.          ListviewClicked(win,wingads,gadgetid,messagecode,userdata);
  92.          break;
  93.       case BTID_Neu:
  94.          NeuClicked(win,wingads,gadgetid,messagecode,userdata);
  95.          break;
  96.       case BTID_Aendern:
  97.          AendernClicked(win,wingads,gadgetid,messagecode,userdata);
  98.          break;
  99.       case BTID_Loeschen:
  100.          LoeschenClicked(win,wingads,gadgetid,messagecode,userdata);
  101.          break;
  102.       case BTID_ListeLoeschen:
  103.          ListeLoeschenClicked(win,wingads,gadgetid,messagecode,userdata);
  104.          break;
  105.       case BTID_Drucken:
  106.          DruckenClicked(win,wingads,gadgetid,messagecode,userdata);
  107.          break;
  108.       case BTID_Speichern:
  109.          SpeichernClicked(win,wingads,gadgetid,messagecode,userdata);
  110.          break;
  111.       };
  112. }
  113.  
  114. void HandleGadgetsEintrag(struct Window *win,struct Gadget *wingads[],ULONG gadgetid,ULONG messagecode,struct EintragData *gadgetdata,APTR userdata)
  115. {
  116.    switch(gadgetid)
  117.       {
  118.       case STID_Filmtitel:
  119.          FilmtitelClicked(win,wingads,gadgetid,messagecode,userdata);
  120.          break;
  121.       case INID_Kassette:
  122.          KassetteClicked(win,wingads,gadgetid,messagecode,userdata);
  123.          break;
  124.       case INID_Minuten:
  125.          MinutenClicked(win,wingads,gadgetid,messagecode,userdata);
  126.          break;
  127.       case CYID_Quelle:
  128.          QuelleClicked(win,wingads,gadgetid,messagecode,userdata);
  129.          break;
  130.       case CYID_Art:
  131.          ArtClicked(win,wingads,gadgetid,messagecode,userdata);
  132.          break;
  133.       case BTID_Weiter:
  134.          WeiterClicked(win,wingads,gadgetid,messagecode,userdata);
  135.          break;
  136.       };
  137. }
  138.  
  139.  
  140. /*************************************************************************/
  141. /*                                                                       */
  142. /*   Routines to create gadgets                                          */
  143. /*                                                                       */
  144. /*************************************************************************/
  145.  
  146.  
  147. struct Gadget *CreateGadgetsHauptfenster(struct Gadget **gadgetlist,struct NewGadget newgad[],struct Gadget *wingads[],struct HauptfensterData *gadgetdata)
  148. {
  149.    struct Gadget *gadget=CreateContext(gadgetlist);
  150.    if (gadget)
  151.       {
  152.       wingads[LVID_Listview]=gadget=CreateGadget(LISTVIEW_KIND,gadget,&newgad[LVID_Listview],GA_Disabled,gadgetdata->gd_Disabled_Listview,GTLV_Labels,gadgetdata->gd_Labels_Listview,GTLV_ReadOnly,FALSE,GTLV_Selected,gadgetdata->gd_Selected_Listview,GTLV_ShowSelected,NULL,GTLV_Top,gadgetdata->gd_Top_Listview,LAYOUTA_Spacing,0,TAG_END);
  153.       wingads[LAID_Gadget2]=gadget=CreateGadget(TEXT_KIND,gadget,&newgad[LAID_Gadget2],GT_Underscore,'_',GTTX_Border,FALSE,TAG_END);
  154.       wingads[BTID_Neu]=gadget=CreateGadget(BUTTON_KIND,gadget,&newgad[BTID_Neu],GA_Disabled,gadgetdata->gd_Disabled_Neu,GT_Underscore,'_',TAG_END);
  155.       wingads[BTID_Aendern]=gadget=CreateGadget(BUTTON_KIND,gadget,&newgad[BTID_Aendern],GA_Disabled,gadgetdata->gd_Disabled_Aendern,GT_Underscore,'_',TAG_END);
  156.       wingads[BTID_Loeschen]=gadget=CreateGadget(BUTTON_KIND,gadget,&newgad[BTID_Loeschen],GA_Disabled,gadgetdata->gd_Disabled_Loeschen,GT_Underscore,'_',TAG_END);
  157.       wingads[BTID_ListeLoeschen]=gadget=CreateGadget(BUTTON_KIND,gadget,&newgad[BTID_ListeLoeschen],GA_Disabled,gadgetdata->gd_Disabled_ListeLoeschen,GT_Underscore,'_',TAG_END);
  158.       wingads[BTID_Drucken]=gadget=CreateGadget(BUTTON_KIND,gadget,&newgad[BTID_Drucken],GA_Disabled,gadgetdata->gd_Disabled_Drucken,GT_Underscore,'_',TAG_END);
  159.       wingads[BTID_Speichern]=gadget=CreateGadget(BUTTON_KIND,gadget,&newgad[BTID_Speichern],GA_Disabled,gadgetdata->gd_Disabled_Speichern,GT_Underscore,'_',TAG_END);
  160.       return gadget;
  161.       }
  162.    else return NULL;
  163. }
  164.  
  165. struct Gadget *CreateGadgetsEintrag(struct Gadget **gadgetlist,struct NewGadget newgad[],struct Gadget *wingads[],struct EintragData *gadgetdata)
  166. {
  167.    struct Gadget *gadget=CreateContext(gadgetlist);
  168.    if (gadget)
  169.       {
  170.       wingads[LAID_Gadget9]=gadget=CreateGadget(TEXT_KIND,gadget,&newgad[LAID_Gadget9],GT_Underscore,'_',GTTX_Border,FALSE,TAG_END);
  171.       wingads[LAID_Gadget10]=gadget=CreateGadget(TEXT_KIND,gadget,&newgad[LAID_Gadget10],GT_Underscore,'_',GTTX_Border,FALSE,TAG_END);
  172.       wingads[LAID_Gadget11]=gadget=CreateGadget(TEXT_KIND,gadget,&newgad[LAID_Gadget11],GT_Underscore,'_',GTTX_Border,FALSE,TAG_END);
  173.       wingads[STID_Filmtitel]=gadget=CreateGadget(STRING_KIND,gadget,&newgad[STID_Filmtitel],GA_Disabled,gadgetdata->gd_Disabled_Filmtitel,GA_TabCycle,TRUE,GTST_MaxChars,40,GTST_String,gadgetdata->gd_String_Filmtitel,GA_TabCycle,TRUE,STRINGA_ExitHelp,TRUE,STRINGA_Justification,GACT_STRINGLEFT,STRINGA_ReplaceMode,FALSE,TAG_END);
  174.       wingads[INID_Kassette]=gadget=CreateGadget(INTEGER_KIND,gadget,&newgad[INID_Kassette],GA_Disabled,gadgetdata->gd_Disabled_Kassette,GA_TabCycle,TRUE,GTIN_MaxChars,4,GTIN_Number,gadgetdata->gd_Number_Kassette,STRINGA_ExitHelp,TRUE,STRINGA_Justification,GACT_STRINGCENTER,STRINGA_ReplaceMode,TRUE,TAG_END);
  175.       wingads[INID_Minuten]=gadget=CreateGadget(INTEGER_KIND,gadget,&newgad[INID_Minuten],GA_Disabled,gadgetdata->gd_Disabled_Minuten,GA_TabCycle,TRUE,GTIN_MaxChars,3,GTIN_Number,gadgetdata->gd_Number_Minuten,STRINGA_ExitHelp,TRUE,STRINGA_Justification,GACT_STRINGCENTER,STRINGA_ReplaceMode,TRUE,TAG_END);
  176.       wingads[CYID_Quelle]=gadget=CreateGadget(CYCLE_KIND,gadget,&newgad[CYID_Quelle],GA_Disabled,gadgetdata->gd_Disabled_Quelle,GTCY_Labels,gadgetdata->gd_Labels_Quelle,GTCY_Active,gadgetdata->gd_Active_Quelle,TAG_END);
  177.       wingads[CYID_Art]=gadget=CreateGadget(CYCLE_KIND,gadget,&newgad[CYID_Art],GA_Disabled,gadgetdata->gd_Disabled_Art,GTCY_Labels,gadgetdata->gd_Labels_Art,GTCY_Active,gadgetdata->gd_Active_Art,TAG_END);
  178.       wingads[LAID_Gadget17]=gadget=CreateGadget(TEXT_KIND,gadget,&newgad[LAID_Gadget17],GT_Underscore,'_',GTTX_Border,FALSE,TAG_END);
  179.       wingads[LAID_Gadget18]=gadget=CreateGadget(TEXT_KIND,gadget,&newgad[LAID_Gadget18],GT_Underscore,'_',GTTX_Border,FALSE,TAG_END);
  180.       wingads[BTID_Weiter]=gadget=CreateGadget(BUTTON_KIND,gadget,&newgad[BTID_Weiter],GA_Disabled,gadgetdata->gd_Disabled_Weiter,GT_Underscore,'_',TAG_END);
  181.       return gadget;
  182.       }
  183.    else return NULL;
  184. }
  185.  
  186.  
  187. /*************************************************************************/
  188. /*                                                                       */
  189. /*   Routines to handle windows                                          */
  190. /*                                                                       */
  191. /*************************************************************************/
  192.  
  193.  
  194. void HandleHauptfenster(struct Screen *customscreen,LONG left,LONG top,APTR userdata)
  195. {
  196.    APTR visualinfo=GetVisualInfo(customscreen,TAG_DONE);
  197.    if (visualinfo)
  198.       {
  199.       struct Gadget  *gadgetlist = NULL;
  200.       struct Menu    *menustrip  = NULL;
  201.       ULONG height=34,width=66,maxheight=1024,maxwidth=1280;
  202.  
  203.       struct Gadget *wingads[8];
  204.  
  205.       STRPTR title                  = "Videothek - © 1993-95 by Markus Hillenbrand";
  206.       struct Window     *win        = NULL;
  207.  
  208.       struct TextAttr   textattr    = { GfxBase->DefaultFont->tf_Message.mn_Node.ln_Name,GfxBase->DefaultFont->tf_YSize,FS_NORMAL,FPF_DISKFONT };
  209.  
  210.       struct NewGadget  newgad[]    = {
  211.                                         XPOS(1),YPOS(2),XSIZE(64),YSIZE(25),NULL,&textattr,LVID_Listview,PLACETEXT_ABOVE,visualinfo,NULL,
  212.                                         XPOS(1),YPOS(0),XSIZE(64),YSIZE(2),"_Filme:",&textattr,LAID_Gadget2,PLACETEXT_IN,visualinfo,NULL,
  213.                                         XPOS(1),YPOS(27),XSIZE(16),YSIZE(2),"_Neu",&textattr,BTID_Neu,PLACETEXT_IN,visualinfo,NULL,
  214.                                         XPOS(17),YPOS(27),XSIZE(16),YSIZE(2),"Änd_ern",&textattr,BTID_Aendern,PLACETEXT_IN,visualinfo,NULL,
  215.                                         XPOS(33),YPOS(27),XSIZE(16),YSIZE(2),"_Löschen",&textattr,BTID_Loeschen,PLACETEXT_IN,visualinfo,NULL,
  216.                                         XPOS(49),YPOS(27),XSIZE(16),YSIZE(2),"L_iste löschen",&textattr,BTID_ListeLoeschen,PLACETEXT_IN,visualinfo,NULL,
  217.                                         XPOS(1),YPOS(31),XSIZE(25),YSIZE(2),"_Drucken auf Drucker",&textattr,BTID_Drucken,PLACETEXT_IN,visualinfo,NULL,
  218.                                         XPOS(40),YPOS(31),XSIZE(25),YSIZE(2),"_Speichern & Ende",&textattr,BTID_Speichern,PLACETEXT_IN,visualinfo,NULL,
  219.                                       };
  220.  
  221.  
  222.       struct HauptfensterData gadgetdata = {
  223.                                         /* belongs to a listview gadget */
  224.                                         FALSE,
  225.                                         (struct List *)~0,
  226.                                         0,
  227.                                         0,
  228.                                         /* belongs to a button */
  229.                                         FALSE,
  230.                                         /* belongs to a button */
  231.                                         FALSE,
  232.                                         /* belongs to a button */
  233.                                         FALSE,
  234.                                         /* belongs to a button */
  235.                                         FALSE,
  236.                                         /* belongs to a button */
  237.                                         FALSE,
  238.                                         /* belongs to a button */
  239.                                         FALSE,
  240.                                       };
  241.  
  242.  
  243.       struct NewMenu    menu[]      = { NM_TITLE, "Program"    , 0 ,0,0,0,
  244.                                         NM_ITEM , "About"      ,"A",0,0,0,
  245.                                         NM_END  , NULL         , 0 ,0,0,0 };
  246.  
  247.       height= YSIZE(height);
  248.       width = XSIZE(width) ;
  249.       if (left==-1) left  = (customscreen->Width-width)/2;
  250.       if (top ==-1) top   = (customscreen->Height-height)/2;
  251.  
  252.       if (CreateGadgetsHauptfenster(&gadgetlist,newgad,wingads,&gadgetdata)!=NULL)
  253.          {
  254.          if (height>customscreen->Height || width>customscreen->Width) GUICreatorErrorReport(NULL,ERROR_SCREEN_TOO_SMALL);
  255.          win=OpenWindowTags(NULL,WA_Activate,         TRUE,
  256.                                  WA_CloseGadget,      TRUE,
  257.                                  WA_DepthGadget,      TRUE,
  258.                                  WA_SizeGadget,       TRUE,
  259.                                  WA_DragBar,          TRUE,
  260.                                  WA_Gadgets,          gadgetlist,
  261.                                  WA_InnerHeight,      height,
  262.                                  WA_InnerWidth,       width,
  263.                                  WA_IDCMP,            IDCMP_CLOSEWINDOW|IDCMP_MENUPICK|IDCMP_NEWSIZE|IDCMP_VANILLAKEY|IDCMP_REFRESHWINDOW|IDCMP_GADGETUP|BUTTONIDCMP|LISTVIEWIDCMP,
  264.                                  WA_Left,             left,
  265.                                  WA_Top,              top,
  266.                                  WA_MaxHeight,        maxheight,
  267.                                  WA_MinHeight,        height,
  268.                                  WA_MaxWidth,         maxwidth,
  269.                                  WA_MinWidth,         width,
  270.                                  WA_SizeBRight,       FALSE,
  271.                                  WA_SizeBBottom,      TRUE,
  272.                                  WA_SmartRefresh,     TRUE,
  273.                                  WA_CustomScreen,     customscreen,
  274.                                  WA_Title,            title,
  275.                                  WA_NewLookMenus,     TRUE,
  276.                                  TAG_END);
  277.          if (win)
  278.             {
  279.             menustrip=CreateMenus(menu,GTMN_NewLookMenus,TRUE,TAG_END);
  280.             if (menustrip)
  281.                {
  282.                if (LayoutMenus(menustrip,visualinfo,GTMN_NewLookMenus,TRUE,TAG_END))
  283.                   {
  284.                   if (SetMenuStrip(win,menustrip))
  285.                      {
  286.                      struct IntuiMessage  *imessage   = NULL;
  287.                      struct Gadget        *idcmpgad   = NULL;
  288.                      struct NewGadget     ngcopy[]    = newgad;
  289.                      long   double        xscale      = 1.0;
  290.                      long   double        yscale      = 1.0;
  291.                      STRPTR stringpointer             = NULL;
  292.                      ULONG                i           = 0;
  293.                      ULONG                gadgetcount = 8;
  294.                      ULONG  idcmpclass                = 0;
  295.                      UWORD  messagecode               = 0;
  296.                      BOOL   running                   = TRUE;
  297.                      ULONG  signal                    = 0;
  298.                      ULONG  longpointer1              = 0;
  299.                      ULONG  longpointer2              = 0;
  300.  
  301.                      SetFont(win->RPort,GfxBase->DefaultFont);
  302.  
  303.                      GT_RefreshWindow(win,NULL);
  304.  
  305.                      /* User-Setup */
  306.                      UserSetupHauptfenster(win,wingads,userdata);
  307.                      do
  308.                         {
  309.                         WindowLimits(win,width+win->BorderLeft+win->BorderRight,height+win->BorderTop+win->BorderBottom,maxwidth,maxheight);
  310.                         if (running) signal=Wait(SIGBREAKF_CTRL_C | 1L << win->UserPort->mp_SigBit);
  311.                         if (signal & SIGBREAKF_CTRL_C) running=FALSE;
  312.                         WindowLimits(win,win->Width,win->Height,win->Width,win->Height);
  313.                         while (running && (imessage=GT_GetIMsg(win->UserPort)))
  314.                            {
  315.                            idcmpgad=(struct Gadget *)imessage->IAddress;
  316.                            idcmpclass=imessage->Class;
  317.                            messagecode =imessage->Code;
  318.  
  319.                            GT_ReplyIMsg(imessage);
  320.  
  321.                            switch(idcmpclass)
  322.                               {
  323.                               case IDCMP_REFRESHWINDOW:
  324.                                    GT_BeginRefresh(win);
  325.                                    GT_EndRefresh(win,TRUE);
  326.                                    break;
  327.                               case IDCMP_MENUPICK:
  328.                                    switch(MENUNUM(messagecode))
  329.                                       {
  330.                                       case 0:
  331.                                          switch (ITEMNUM(messagecode))
  332.                                             {
  333.                                             case 0:
  334.                                                About(win);
  335.                                                break;
  336.                                             }
  337.                                          /* end-switch */
  338.                                          break;
  339.                                       }
  340.                                    /* end-switch */
  341.                                    break;
  342.                               case IDCMP_NEWSIZE:
  343.                                    GT_GetGadgetAttrs(wingads[LVID_Listview],win,NULL,GA_Disabled,&longpointer1,GTLV_Labels,&longpointer2,TAG_END);
  344.                                    gadgetdata.gd_Disabled_Listview=(longpointer1==0)?FALSE:TRUE;
  345.                                    gadgetdata.gd_Labels_Listview=(struct List *)longpointer2;
  346.                                    GT_GetGadgetAttrs(wingads[LVID_Listview],win,NULL,GTLV_Top,&longpointer1,GTLV_Selected,&longpointer2,TAG_END);
  347.                                    gadgetdata.gd_Top_Listview=longpointer1;
  348.                                    gadgetdata.gd_Selected_Listview=longpointer2;
  349.                                    GT_GetGadgetAttrs(wingads[BTID_Neu],win,NULL,GA_Disabled,&longpointer1,TAG_END);
  350.                                    gadgetdata.gd_Disabled_Neu=(longpointer1==0)?FALSE:TRUE;
  351.                                    GT_GetGadgetAttrs(wingads[BTID_Aendern],win,NULL,GA_Disabled,&longpointer1,TAG_END);
  352.                                    gadgetdata.gd_Disabled_Aendern=(longpointer1==0)?FALSE:TRUE;
  353.                                    GT_GetGadgetAttrs(wingads[BTID_Loeschen],win,NULL,GA_Disabled,&longpointer1,TAG_END);
  354.                                    gadgetdata.gd_Disabled_Loeschen=(longpointer1==0)?FALSE:TRUE;
  355.                                    GT_GetGadgetAttrs(wingads[BTID_ListeLoeschen],win,NULL,GA_Disabled,&longpointer1,TAG_END);
  356.                                    gadgetdata.gd_Disabled_ListeLoeschen=(longpointer1==0)?FALSE:TRUE;
  357.                                    GT_GetGadgetAttrs(wingads[BTID_Drucken],win,NULL,GA_Disabled,&longpointer1,TAG_END);
  358.                                    gadgetdata.gd_Disabled_Drucken=(longpointer1==0)?FALSE:TRUE;
  359.                                    GT_GetGadgetAttrs(wingads[BTID_Speichern],win,NULL,GA_Disabled,&longpointer1,TAG_END);
  360.                                    gadgetdata.gd_Disabled_Speichern=(longpointer1==0)?FALSE:TRUE;
  361.  
  362.                                    RemoveGList(win,gadgetlist,-1);
  363.                                    SetAPen(win->RPort,0L);
  364.                                    RectFill(win->RPort,win->BorderLeft,win->BorderTop,win->Width-win->BorderRight-1,win->Height-win->BorderBottom-1);
  365.                                    RefreshWindowFrame(win);
  366.  
  367.                                    xscale=(long double)win->Width /(long double)(width+win->BorderLeft+win->BorderRight);
  368.                                    yscale=(long double)win->Height/(long double)(height+win->BorderTop+win->BorderBottom);
  369.                                    for (i=0;i<gadgetcount;i++)
  370.                                       {
  371.                                       ngcopy[i].ng_LeftEdge=(WORD)((long double)newgad[i].ng_LeftEdge*xscale);
  372.                                       ngcopy[i].ng_TopEdge =(WORD)((long double)newgad[i].ng_TopEdge *yscale);
  373.                                       ngcopy[i].ng_Width   =(WORD)((long double)newgad[i].ng_Width   *xscale);
  374.                                       ngcopy[i].ng_Height  =(WORD)((long double)newgad[i].ng_Height  *yscale);
  375.                                       }
  376.  
  377.                                    FreeGadgets(gadgetlist);
  378.                                    gadgetlist=NULL;
  379.  
  380.                                    CreateGadgetsHauptfenster(&gadgetlist,ngcopy,wingads,&gadgetdata);
  381.                                    AddGList(win,gadgetlist,-1,-1,NULL);
  382.                                    RefreshGList(gadgetlist,win,NULL,-1);
  383.                                    GT_RefreshWindow(win,NULL);
  384.  
  385.                                    break;
  386.                               case IDCMP_VANILLAKEY:
  387.                                    switch(messagecode)
  388.                                       {
  389.                                       case 'f':
  390.                                            GT_GetGadgetAttrs(wingads[LVID_Listview],win,NULL,GA_Disabled,&longpointer1,TAG_END);
  391.                                            if (longpointer1==0)
  392.                                               {
  393.                                               GT_GetGadgetAttrs(wingads[LVID_Listview],win,NULL,GTLV_Selected,&longpointer1,TAG_END);
  394.                                               GT_SetGadgetAttrs(wingads[LVID_Listview],win,NULL,GTLV_Selected,longpointer1+1,TAG_END);
  395.                                               GT_GetGadgetAttrs(wingads[LVID_Listview],win,NULL,GTLV_Selected,&longpointer2,TAG_END);
  396.                                               if (longpointer2!=longpointer1)
  397.                                                  {
  398.                                                  HandleGadgetsHauptfenster(win,wingads,LVID_Listview,longpointer2,&gadgetdata,userdata);
  399.                                                  }
  400.                                               }
  401.                                            break;
  402.                                       case 'F':
  403.                                            GT_GetGadgetAttrs(wingads[LVID_Listview],win,NULL,GA_Disabled,&longpointer1,TAG_END);
  404.                                            if (longpointer1==0)
  405.                                               {
  406.                                               GT_GetGadgetAttrs(wingads[LVID_Listview],win,NULL,GTLV_Selected,&longpointer1,TAG_END);
  407.                                               if (longpointer1!=0)
  408.                                                  {
  409.                                                  GT_SetGadgetAttrs(wingads[LVID_Listview],win,NULL,GTLV_Selected,longpointer1-1,TAG_END);
  410.                                                  HandleGadgetsHauptfenster(win,wingads,LVID_Listview,longpointer1-1,&gadgetdata,userdata);
  411.                                                  }
  412.                                               }
  413.                                            break;
  414.                                       case 'n':
  415.                                            GT_GetGadgetAttrs(wingads[BTID_Neu],win,NULL,GA_Disabled,&longpointer1,TAG_END);
  416.                                            if (longpointer1==0) HandleGadgetsHauptfenster(win,wingads,BTID_Neu,messagecode,&gadgetdata,userdata);
  417.                                            break;
  418.                                       case 'e':
  419.                                            GT_GetGadgetAttrs(wingads[BTID_Aendern],win,NULL,GA_Disabled,&longpointer1,TAG_END);
  420.                                            if (longpointer1==0) HandleGadgetsHauptfenster(win,wingads,BTID_Aendern,messagecode,&gadgetdata,userdata);
  421.                                            break;
  422.                                       case 'l':
  423.                                            GT_GetGadgetAttrs(wingads[BTID_Loeschen],win,NULL,GA_Disabled,&longpointer1,TAG_END);
  424.                                            if (longpointer1==0) HandleGadgetsHauptfenster(win,wingads,BTID_Loeschen,messagecode,&gadgetdata,userdata);
  425.                                            break;
  426.                                       case 'i':
  427.                                            GT_GetGadgetAttrs(wingads[BTID_ListeLoeschen],win,NULL,GA_Disabled,&longpointer1,TAG_END);
  428.                                            if (longpointer1==0) HandleGadgetsHauptfenster(win,wingads,BTID_ListeLoeschen,messagecode,&gadgetdata,userdata);
  429.                                            break;
  430.                                       case 'd':
  431.                                            GT_GetGadgetAttrs(wingads[BTID_Drucken],win,NULL,GA_Disabled,&longpointer1,TAG_END);
  432.                                            if (longpointer1==0) HandleGadgetsHauptfenster(win,wingads,BTID_Drucken,messagecode,&gadgetdata,userdata);
  433.                                            break;
  434.                                       case 's':
  435.                                            GT_GetGadgetAttrs(wingads[BTID_Speichern],win,NULL,GA_Disabled,&longpointer1,TAG_END);
  436.                                            if (longpointer1==0) HandleGadgetsHauptfenster(win,wingads,BTID_Speichern,messagecode,&gadgetdata,userdata);
  437.                                            break;
  438.                                       case 27:
  439.                                          running=FALSE;
  440.                                          break;
  441.                                       }
  442.                                    break;
  443.                               case IDCMP_CLOSEWINDOW:
  444.                                    running=FALSE;
  445.                                    break;
  446.                                 case IDCMP_GADGETUP:
  447.                                 case MXIDCMP:
  448.                                    HandleGadgetsHauptfenster(win,wingads,idcmpgad->GadgetID,messagecode,&gadgetdata,userdata);
  449.                                    break;
  450.                               }
  451.                            /* end-switch */
  452.                            }
  453.                         /* end-while */
  454.                         }
  455.                      while (running);
  456.                      ClearMenuStrip(win);
  457.                      }
  458.                   else GUICreatorErrorReport(win,ERROR_NO_WINDOW_MENU);
  459.                   }
  460.                else GUICreatorErrorReport(win,ERROR_NO_WINDOW_MENU);
  461.                FreeMenus(menustrip);
  462.                }
  463.             else GUICreatorErrorReport(win,ERROR_NO_WINDOW_MENU);
  464.             if (win) CloseWindow(win);
  465.             }
  466.          else GUICreatorErrorReport(win,ERROR_NO_WINDOW_OPENED);
  467.          if (gadgetlist) FreeGadgets(gadgetlist);
  468.          }
  469.       else GUICreatorErrorReport(NULL,ERROR_NO_GADGETS_CREATED);
  470.       if (visualinfo) FreeVisualInfo(visualinfo);
  471.       }
  472.    else GUICreatorErrorReport(NULL,ERROR_NO_VISUALINFO);
  473. }
  474.  
  475. void HandleEintrag(struct Screen *customscreen,LONG left,LONG top,APTR userdata)
  476. {
  477.    APTR visualinfo=GetVisualInfo(customscreen,TAG_DONE);
  478.    if (visualinfo)
  479.       {
  480.       struct Gadget  *gadgetlist = NULL;
  481.       struct Menu    *menustrip  = NULL;
  482.       ULONG height=13,width=53,maxheight=1024,maxwidth=1280;
  483.  
  484.       struct Gadget *wingads[11];
  485.  
  486.       STRPTR title                  = "Eintrag";
  487.       struct Window     *win        = NULL;
  488.  
  489.       struct TextAttr   textattr    = { GfxBase->DefaultFont->tf_Message.mn_Node.ln_Name,GfxBase->DefaultFont->tf_YSize,FS_NORMAL,FPF_DISKFONT };
  490.  
  491.       struct NewGadget  newgad[]    = {
  492.                                         XPOS(1),YPOS(1),XSIZE(10),YSIZE(2),"_Filmtitel:",&textattr,LAID_Gadget9,PLACETEXT_IN,visualinfo,NULL,
  493.                                         XPOS(1),YPOS(4),XSIZE(10),YSIZE(2)," _Kassette:",&textattr,LAID_Gadget10,PLACETEXT_IN,visualinfo,NULL,
  494.                                         XPOS(1),YPOS(7),XSIZE(10),YSIZE(2),"  _Minuten:",&textattr,LAID_Gadget11,PLACETEXT_IN,visualinfo,NULL,
  495.                                         XPOS(12),YPOS(1),XSIZE(40),YSIZE(2),NULL,&textattr,STID_Filmtitel,PLACETEXT_LEFT,visualinfo,NULL,
  496.                                         XPOS(12),YPOS(4),XSIZE(8),YSIZE(2),NULL,&textattr,INID_Kassette,PLACETEXT_LEFT,visualinfo,NULL,
  497.                                         XPOS(12),YPOS(7),XSIZE(8),YSIZE(2),NULL,&textattr,INID_Minuten,PLACETEXT_LEFT,visualinfo,NULL,
  498.                                         XPOS(30),YPOS(4),XSIZE(22),YSIZE(2),NULL,&textattr,CYID_Quelle,PLACETEXT_ABOVE,visualinfo,NULL,
  499.                                         XPOS(30),YPOS(7),XSIZE(22),YSIZE(2),NULL,&textattr,CYID_Art,PLACETEXT_ABOVE,visualinfo,NULL,
  500.                                         XPOS(22),YPOS(4),XSIZE(7),YSIZE(2),"_Quelle:",&textattr,LAID_Gadget17,PLACETEXT_IN,visualinfo,NULL,
  501.                                         XPOS(22),YPOS(7),XSIZE(7),YSIZE(2),"   _Art:",&textattr,LAID_Gadget18,PLACETEXT_IN,visualinfo,NULL,
  502.                                         XPOS(1),YPOS(10),XSIZE(51),YSIZE(2),"_Weiter",&textattr,BTID_Weiter,PLACETEXT_IN,visualinfo,NULL,
  503.                                       };
  504.       STRPTR            LA_Quelle[]  = { "Fernsehen","Videothek","selbst gedreht",NULL };
  505.       STRPTR            LA_Art[]  = { "Science-Fiction","Karate","Western","Krimi","Action","Heimatfilm","Epos","Dokumentation","Zeichentrick","Abenteuer","Theater","Werbung","Horror","TV-Movie","Komödie","Liebesfilm","Sonstiges",NULL };
  506.  
  507.  
  508.       struct EintragData gadgetdata = {
  509.                                         /* belongs to a string gadget */
  510.                                         FALSE,
  511.                                         (char *)"",
  512.                                         /* belongs to an integer gadget */
  513.                                         FALSE,
  514.                                         0,
  515.                                         /* belongs to an integer gadget */
  516.                                         FALSE,
  517.                                         0,
  518.                                         /* belongs to a cycle gadget */
  519.                                         FALSE,
  520.                                         0,
  521.                                         (STRPTR *)&LA_Quelle[0],
  522.                                         /* belongs to a cycle gadget */
  523.                                         FALSE,
  524.                                         0,
  525.                                         (STRPTR *)&LA_Art[0],
  526.                                         /* belongs to a button */
  527.                                         FALSE,
  528.                                       };
  529.  
  530.  
  531.       struct NewMenu    menu[]      = { NM_TITLE, "Program"    , 0 ,0,0,0,
  532.                                         NM_ITEM , "About"      ,"A",0,0,0,
  533.                                         NM_END  , NULL         , 0 ,0,0,0 };
  534.  
  535.       height= YSIZE(height);
  536.       width = XSIZE(width) ;
  537.       if (left==-1) left  = (customscreen->Width-width)/2;
  538.       if (top ==-1) top   = (customscreen->Height-height)/2;
  539.  
  540.       if (CreateGadgetsEintrag(&gadgetlist,newgad,wingads,&gadgetdata)!=NULL)
  541.          {
  542.          if (height>customscreen->Height || width>customscreen->Width) GUICreatorErrorReport(NULL,ERROR_SCREEN_TOO_SMALL);
  543.          win=OpenWindowTags(NULL,WA_Activate,         TRUE,
  544.                                  WA_CloseGadget,      TRUE,
  545.                                  WA_DepthGadget,      TRUE,
  546.                                  WA_SizeGadget,       TRUE,
  547.                                  WA_DragBar,          TRUE,
  548.                                  WA_Gadgets,          gadgetlist,
  549.                                  WA_InnerHeight,      height,
  550.                                  WA_InnerWidth,       width,
  551.                                  WA_IDCMP,            IDCMP_CLOSEWINDOW|IDCMP_MENUPICK|IDCMP_NEWSIZE|IDCMP_VANILLAKEY|IDCMP_REFRESHWINDOW|IDCMP_GADGETUP|BUTTONIDCMP|STRINGIDCMP|INTEGERIDCMP|CYCLEIDCMP,
  552.                                  WA_Left,             left,
  553.                                  WA_Top,              top,
  554.                                  WA_MaxHeight,        maxheight,
  555.                                  WA_MinHeight,        height,
  556.                                  WA_MaxWidth,         maxwidth,
  557.                                  WA_MinWidth,         width,
  558.                                  WA_SizeBRight,       FALSE,
  559.                                  WA_SizeBBottom,      TRUE,
  560.                                  WA_SmartRefresh,     TRUE,
  561.                                  WA_CustomScreen,     customscreen,
  562.                                  WA_Title,            title,
  563.                                  WA_NewLookMenus,     TRUE,
  564.                                  TAG_END);
  565.          if (win)
  566.             {
  567.             menustrip=CreateMenus(menu,GTMN_NewLookMenus,TRUE,TAG_END);
  568.             if (menustrip)
  569.                {
  570.                if (LayoutMenus(menustrip,visualinfo,GTMN_NewLookMenus,TRUE,TAG_END))
  571.                   {
  572.                   if (SetMenuStrip(win,menustrip))
  573.                      {
  574.                      struct IntuiMessage  *imessage   = NULL;
  575.                      struct Gadget        *idcmpgad   = NULL;
  576.                      struct NewGadget     ngcopy[]    = newgad;
  577.                      long   double        xscale      = 1.0;
  578.                      long   double        yscale      = 1.0;
  579.                      STRPTR stringpointer             = NULL;
  580.                      ULONG                i           = 0;
  581.                      ULONG                gadgetcount = 11;
  582.                      ULONG  idcmpclass                = 0;
  583.                      UWORD  messagecode               = 0;
  584.                      BOOL   running                   = TRUE;
  585.                      ULONG  signal                    = 0;
  586.                      ULONG  longpointer1              = 0;
  587.                      ULONG  longpointer2              = 0;
  588.  
  589.                      SetFont(win->RPort,GfxBase->DefaultFont);
  590.  
  591.                      GT_RefreshWindow(win,NULL);
  592.  
  593.                      /* User-Setup */
  594.                      UserSetupEintrag(win,wingads,userdata);
  595.                      do
  596.                         {
  597.                         WindowLimits(win,width+win->BorderLeft+win->BorderRight,height+win->BorderTop+win->BorderBottom,maxwidth,maxheight);
  598.                         if (running) signal=Wait(SIGBREAKF_CTRL_C | 1L << win->UserPort->mp_SigBit);
  599.                         if (signal & SIGBREAKF_CTRL_C) running=FALSE;
  600.                         WindowLimits(win,win->Width,win->Height,win->Width,win->Height);
  601.                         while (running && (imessage=GT_GetIMsg(win->UserPort)))
  602.                            {
  603.                            idcmpgad=(struct Gadget *)imessage->IAddress;
  604.                            idcmpclass=imessage->Class;
  605.                            messagecode =imessage->Code;
  606.  
  607.                            GT_ReplyIMsg(imessage);
  608.  
  609.                            switch(idcmpclass)
  610.                               {
  611.                               case IDCMP_REFRESHWINDOW:
  612.                                    GT_BeginRefresh(win);
  613.                                    GT_EndRefresh(win,TRUE);
  614.                                    break;
  615.                               case IDCMP_MENUPICK:
  616.                                    switch(MENUNUM(messagecode))
  617.                                       {
  618.                                       case 0:
  619.                                          switch (ITEMNUM(messagecode))
  620.                                             {
  621.                                             case 0:
  622.                                                About(win);
  623.                                                break;
  624.                                             }
  625.                                          /* end-switch */
  626.                                          break;
  627.                                       }
  628.                                    /* end-switch */
  629.                                    break;
  630.                               case IDCMP_NEWSIZE:
  631.                                    GT_GetGadgetAttrs(wingads[STID_Filmtitel],win,NULL,GA_Disabled,&longpointer1,GTST_String,&stringpointer,TAG_END);
  632.                                    gadgetdata.gd_Disabled_Filmtitel=(longpointer1==0)?FALSE:TRUE;
  633.                                    strcpy(gadgetdata.gd_String_Filmtitel,stringpointer);
  634.                                    GT_GetGadgetAttrs(wingads[INID_Kassette],win,NULL,GA_Disabled,&longpointer1,GTIN_Number,&longpointer2,TAG_END);
  635.                                    gadgetdata.gd_Disabled_Kassette=(longpointer1==0)?FALSE:TRUE;
  636.                                    gadgetdata.gd_Number_Kassette=longpointer2;
  637.                                    GT_GetGadgetAttrs(wingads[INID_Minuten],win,NULL,GA_Disabled,&longpointer1,GTIN_Number,&longpointer2,TAG_END);
  638.                                    gadgetdata.gd_Disabled_Minuten=(longpointer1==0)?FALSE:TRUE;
  639.                                    gadgetdata.gd_Number_Minuten=longpointer2;
  640.                                    GT_GetGadgetAttrs(wingads[CYID_Quelle],win,NULL,GA_Disabled,&longpointer1,GTCY_Active,&longpointer2,TAG_END);
  641.                                    gadgetdata.gd_Disabled_Quelle=(longpointer1==0)?FALSE:TRUE;
  642.                                    gadgetdata.gd_Active_Quelle=longpointer2;
  643.                                    GT_GetGadgetAttrs(wingads[CYID_Quelle],win,NULL,GTCY_Labels,&longpointer1,TAG_END);
  644.                                    gadgetdata.gd_Labels_Quelle=(STRPTR *)longpointer1;
  645.                                    GT_GetGadgetAttrs(wingads[CYID_Art],win,NULL,GA_Disabled,&longpointer1,GTCY_Active,&longpointer2,TAG_END);
  646.                                    gadgetdata.gd_Disabled_Art=(longpointer1==0)?FALSE:TRUE;
  647.                                    gadgetdata.gd_Active_Art=longpointer2;
  648.                                    GT_GetGadgetAttrs(wingads[CYID_Art],win,NULL,GTCY_Labels,&longpointer1,TAG_END);
  649.                                    gadgetdata.gd_Labels_Art=(STRPTR *)longpointer1;
  650.                                    GT_GetGadgetAttrs(wingads[BTID_Weiter],win,NULL,GA_Disabled,&longpointer1,TAG_END);
  651.                                    gadgetdata.gd_Disabled_Weiter=(longpointer1==0)?FALSE:TRUE;
  652.  
  653.                                    RemoveGList(win,gadgetlist,-1);
  654.                                    SetAPen(win->RPort,0L);
  655.                                    RectFill(win->RPort,win->BorderLeft,win->BorderTop,win->Width-win->BorderRight-1,win->Height-win->BorderBottom-1);
  656.                                    RefreshWindowFrame(win);
  657.  
  658.                                    xscale=(long double)win->Width /(long double)(width+win->BorderLeft+win->BorderRight);
  659.                                    yscale=(long double)win->Height/(long double)(height+win->BorderTop+win->BorderBottom);
  660.                                    for (i=0;i<gadgetcount;i++)
  661.                                       {
  662.                                       ngcopy[i].ng_LeftEdge=(WORD)((long double)newgad[i].ng_LeftEdge*xscale);
  663.                                       ngcopy[i].ng_TopEdge =(WORD)((long double)newgad[i].ng_TopEdge *yscale);
  664.                                       ngcopy[i].ng_Width   =(WORD)((long double)newgad[i].ng_Width   *xscale);
  665.                                       ngcopy[i].ng_Height  =(WORD)((long double)newgad[i].ng_Height  *yscale);
  666.                                       }
  667.  
  668.                                    FreeGadgets(gadgetlist);
  669.                                    gadgetlist=NULL;
  670.  
  671.                                    CreateGadgetsEintrag(&gadgetlist,ngcopy,wingads,&gadgetdata);
  672.                                    AddGList(win,gadgetlist,-1,-1,NULL);
  673.                                    RefreshGList(gadgetlist,win,NULL,-1);
  674.                                    GT_RefreshWindow(win,NULL);
  675.  
  676.                                    break;
  677.                               case IDCMP_VANILLAKEY:
  678.                                    switch(messagecode)
  679.                                       {
  680.                                       case 'f':
  681.                                            GT_GetGadgetAttrs(wingads[STID_Filmtitel],win,NULL,GA_Disabled,&longpointer1,TAG_END);
  682.                                            if (longpointer1==0) ActivateGadget(wingads[STID_Filmtitel],win,NULL);
  683.                                            break;
  684.                                       case 'k':
  685.                                            GT_GetGadgetAttrs(wingads[INID_Kassette],win,NULL,GA_Disabled,&longpointer1,TAG_END);
  686.                                            if (longpointer1==0) ActivateGadget(wingads[INID_Kassette],win,NULL);
  687.                                            break;
  688.                                       case 'm':
  689.                                            GT_GetGadgetAttrs(wingads[INID_Minuten],win,NULL,GA_Disabled,&longpointer1,TAG_END);
  690.                                            if (longpointer1==0) ActivateGadget(wingads[INID_Minuten],win,NULL);
  691.                                            break;
  692.                                       case 'q':
  693.                                            GT_GetGadgetAttrs(wingads[CYID_Quelle],win,NULL,GA_Disabled,&longpointer1,TAG_END);
  694.                                            if (longpointer1==0)
  695.                                               {
  696.                                               GT_GetGadgetAttrs(wingads[CYID_Quelle],win,NULL,GTCY_Active,&longpointer1,TAG_END);
  697.                                               if (++longpointer1==3) longpointer1=0;
  698.                                               GT_SetGadgetAttrs(wingads[CYID_Quelle],win,NULL,GTCY_Active,longpointer1,TAG_END);
  699.                                               HandleGadgetsEintrag(win,wingads,CYID_Quelle,longpointer1,&gadgetdata,userdata);
  700.                                               }
  701.                                            break;
  702.                                       case 'Q':
  703.                                            GT_GetGadgetAttrs(wingads[CYID_Quelle],win,NULL,GA_Disabled,&longpointer1,TAG_END);
  704.                                            if (longpointer1==0)
  705.                                               {
  706.                                               GT_GetGadgetAttrs(wingads[CYID_Quelle],win,NULL,GTCY_Active,&longpointer1,TAG_END);
  707.                                               if (longpointer1==0) longpointer1=3;
  708.                                               longpointer1--;
  709.                                               GT_SetGadgetAttrs(wingads[CYID_Quelle],win,NULL,GTCY_Active,longpointer1,TAG_END);
  710.                                               HandleGadgetsEintrag(win,wingads,CYID_Quelle,longpointer1,&gadgetdata,userdata);
  711.                                               }
  712.                                            break;
  713.                                       case 'a':
  714.                                            GT_GetGadgetAttrs(wingads[CYID_Art],win,NULL,GA_Disabled,&longpointer1,TAG_END);
  715.                                            if (longpointer1==0)
  716.                                               {
  717.                                               GT_GetGadgetAttrs(wingads[CYID_Art],win,NULL,GTCY_Active,&longpointer1,TAG_END);
  718.                                               if (++longpointer1==17) longpointer1=0;
  719.                                               GT_SetGadgetAttrs(wingads[CYID_Art],win,NULL,GTCY_Active,longpointer1,TAG_END);
  720.                                               HandleGadgetsEintrag(win,wingads,CYID_Art,longpointer1,&gadgetdata,userdata);
  721.                                               }
  722.                                            break;
  723.                                       case 'A':
  724.                                            GT_GetGadgetAttrs(wingads[CYID_Art],win,NULL,GA_Disabled,&longpointer1,TAG_END);
  725.                                            if (longpointer1==0)
  726.                                               {
  727.                                               GT_GetGadgetAttrs(wingads[CYID_Art],win,NULL,GTCY_Active,&longpointer1,TAG_END);
  728.                                               if (longpointer1==0) longpointer1=17;
  729.                                               longpointer1--;
  730.                                               GT_SetGadgetAttrs(wingads[CYID_Art],win,NULL,GTCY_Active,longpointer1,TAG_END);
  731.                                               HandleGadgetsEintrag(win,wingads,CYID_Art,longpointer1,&gadgetdata,userdata);
  732.                                               }
  733.                                            break;
  734.                                       case 'w':
  735.                                            GT_GetGadgetAttrs(wingads[BTID_Weiter],win,NULL,GA_Disabled,&longpointer1,TAG_END);
  736.                                            if (longpointer1==0) HandleGadgetsEintrag(win,wingads,BTID_Weiter,messagecode,&gadgetdata,userdata);
  737.                                            break;
  738.                                       case 27:
  739.                                          running=!EintragCloseWindow(win,wingads,userdata);
  740.                                          break;
  741.                                       }
  742.                                    break;
  743.                               case IDCMP_CLOSEWINDOW:
  744.                                    running=!EintragCloseWindow(win,wingads,userdata);
  745.                                    break;
  746.                                 case IDCMP_GADGETUP:
  747.                                 case MXIDCMP:
  748.                                    HandleGadgetsEintrag(win,wingads,idcmpgad->GadgetID,messagecode,&gadgetdata,userdata);
  749.                                    break;
  750.                               }
  751.                            /* end-switch */
  752.                            }
  753.                         /* end-while */
  754.                         }
  755.                      while (running);
  756.                      ClearMenuStrip(win);
  757.                      }
  758.                   else GUICreatorErrorReport(win,ERROR_NO_WINDOW_MENU);
  759.                   }
  760.                else GUICreatorErrorReport(win,ERROR_NO_WINDOW_MENU);
  761.                FreeMenus(menustrip);
  762.                }
  763.             else GUICreatorErrorReport(win,ERROR_NO_WINDOW_MENU);
  764.             if (win) CloseWindow(win);
  765.             }
  766.          else GUICreatorErrorReport(win,ERROR_NO_WINDOW_OPENED);
  767.          if (gadgetlist) FreeGadgets(gadgetlist);
  768.          }
  769.       else GUICreatorErrorReport(NULL,ERROR_NO_GADGETS_CREATED);
  770.       if (visualinfo) FreeVisualInfo(visualinfo);
  771.       }
  772.    else GUICreatorErrorReport(NULL,ERROR_NO_VISUALINFO);
  773. }
  774.  
  775.