home *** CD-ROM | disk | FTP | other *** search
/ Amiga MA Magazine 1998 #6 / amigamamagazinepolishissue1998.iso / coders / guicreator / demos / managecdpics.c < prev    next >
C/C++ Source or Header  |  1977-12-31  |  35KB  |  536 lines

  1. /*************************************************************************/
  2. /*                                                                       */
  3. /*   Includes                                                            */
  4. /*                                                                       */
  5. /*************************************************************************/
  6.  
  7. #include "ManageCDPics_Includes.h"
  8. #include "ManageCDPics.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 ManageCDPicsWindowData
  48.    {
  49.    BOOL    gd_Disabled_CD;
  50.    struct List *gd_Labels_CD;
  51.    UWORD   gd_Selected_CD;
  52.    UWORD   gd_Top_CD;
  53.    BOOL    gd_Disabled_Category;
  54.    struct List *gd_Labels_Category;
  55.    UWORD   gd_Selected_Category;
  56.    UWORD   gd_Top_Category;
  57.    BOOL    gd_Disabled_Picture;
  58.    struct List *gd_Labels_Picture;
  59.    UWORD   gd_Selected_Picture;
  60.    UWORD   gd_Top_Picture;
  61.    BOOL    gd_Disabled_Text;
  62.    char    gd_Text_Text[256];
  63.    BOOL    gd_Disabled_String;
  64.    char    gd_String_String[64];
  65.    BOOL    gd_Disabled_ToShow;
  66.    UWORD   gd_Active_ToShow;
  67.    STRPTR *gd_Labels_ToShow;
  68.    BOOL    gd_Disabled_SavePrefs;
  69.    BOOL    gd_Disabled_Slideshow;
  70.    BOOL    gd_Disabled_Show;
  71.    };
  72.  
  73. /*************************************************************************/
  74. /*                                                                       */
  75. /*   Routines to handle gadgets                                          */
  76. /*                                                                       */
  77. /*************************************************************************/
  78.  
  79.  
  80. void HandleGadgetsManageCDPicsWindow(struct Window *win,struct Gadget *wingads[],ULONG gadgetid,ULONG messagecode,struct ManageCDPicsWindowData *gadgetdata,APTR userdata)
  81. {
  82.    switch(gadgetid)
  83.       {
  84.       case LVID_CD:
  85.          CDClicked(win,wingads,gadgetid,messagecode,userdata);
  86.          break;
  87.       case LVID_Category:
  88.          CategoryClicked(win,wingads,gadgetid,messagecode,userdata);
  89.          break;
  90.       case LVID_Picture:
  91.          PictureClicked(win,wingads,gadgetid,messagecode,userdata);
  92.          break;
  93.       case TXID_Text:
  94.          TextClicked(win,wingads,gadgetid,messagecode,userdata);
  95.          break;
  96.       case STID_String:
  97.          StringClicked(win,wingads,gadgetid,messagecode,userdata);
  98.          break;
  99.       case CYID_ToShow:
  100.          ToShowClicked(win,wingads,gadgetid,messagecode,userdata);
  101.          break;
  102.       case BTID_SavePrefs:
  103.          SavePrefsClicked(win,wingads,gadgetid,messagecode,userdata);
  104.          break;
  105.       case BTID_Slideshow:
  106.          SlideshowClicked(win,wingads,gadgetid,messagecode,userdata);
  107.          break;
  108.       case BTID_Show:
  109.          ShowClicked(win,wingads,gadgetid,messagecode,userdata);
  110.          break;
  111.       };
  112. }
  113.  
  114.  
  115. /*************************************************************************/
  116. /*                                                                       */
  117. /*   Routines to create gadgets                                          */
  118. /*                                                                       */
  119. /*************************************************************************/
  120.  
  121.  
  122. struct Gadget *CreateGadgetsManageCDPicsWindow(struct Gadget **gadgetlist,struct NewGadget newgad[],struct Gadget *wingads[],struct ManageCDPicsWindowData *gadgetdata)
  123. {
  124.    struct Gadget *gadget=CreateContext(gadgetlist);
  125.    if (gadget)
  126.       {
  127.       wingads[LVID_CD]=gadget=CreateGadget(LISTVIEW_KIND,gadget,&newgad[LVID_CD],GA_Disabled,gadgetdata->gd_Disabled_CD,GTLV_Labels,gadgetdata->gd_Labels_CD,GTLV_ReadOnly,FALSE,GTLV_Selected,gadgetdata->gd_Selected_CD,GTLV_ShowSelected,NULL,GTLV_Top,gadgetdata->gd_Top_CD,LAYOUTA_Spacing,0,TAG_END);
  128.       wingads[LVID_Category]=gadget=CreateGadget(LISTVIEW_KIND,gadget,&newgad[LVID_Category],GA_Disabled,gadgetdata->gd_Disabled_Category,GTLV_Labels,gadgetdata->gd_Labels_Category,GTLV_ReadOnly,FALSE,GTLV_Selected,gadgetdata->gd_Selected_Category,GTLV_ShowSelected,NULL,GTLV_Top,gadgetdata->gd_Top_Category,LAYOUTA_Spacing,0,TAG_END);
  129.       wingads[LVID_Picture]=gadget=CreateGadget(LISTVIEW_KIND,gadget,&newgad[LVID_Picture],GA_Disabled,gadgetdata->gd_Disabled_Picture,GTLV_Labels,gadgetdata->gd_Labels_Picture,GTLV_ReadOnly,FALSE,GTLV_Selected,gadgetdata->gd_Selected_Picture,GTLV_ShowSelected,NULL,GTLV_Top,gadgetdata->gd_Top_Picture,LAYOUTA_Spacing,0,TAG_END);
  130.       wingads[LAID_Gadget5]=gadget=CreateGadget(TEXT_KIND,gadget,&newgad[LAID_Gadget5],GT_Underscore,'_',GTTX_Border,FALSE,TAG_END);
  131.       wingads[LAID_Gadget6]=gadget=CreateGadget(TEXT_KIND,gadget,&newgad[LAID_Gadget6],GT_Underscore,'_',GTTX_Border,FALSE,TAG_END);
  132.       wingads[LAID_Gadget7]=gadget=CreateGadget(TEXT_KIND,gadget,&newgad[LAID_Gadget7],GT_Underscore,'_',GTTX_Border,FALSE,TAG_END);
  133.       wingads[TXID_Text]=gadget=CreateGadget(TEXT_KIND,gadget,&newgad[TXID_Text],GA_Disabled,gadgetdata->gd_Disabled_Text,GTTX_Border,TRUE,GTTX_CopyText,TRUE,GTTX_Text,gadgetdata->gd_Text_Text,TAG_END);
  134.       wingads[LAID_Gadget9]=gadget=CreateGadget(TEXT_KIND,gadget,&newgad[LAID_Gadget9],GT_Underscore,'_',GTTX_Border,FALSE,TAG_END);
  135.       wingads[STID_String]=gadget=CreateGadget(STRING_KIND,gadget,&newgad[STID_String],GA_Disabled,gadgetdata->gd_Disabled_String,GA_TabCycle,TRUE,GTST_MaxChars,64,GTST_String,gadgetdata->gd_String_String,GA_TabCycle,TRUE,STRINGA_ExitHelp,TRUE,STRINGA_Justification,GACT_STRINGLEFT,STRINGA_ReplaceMode,TRUE,TAG_END);
  136.       wingads[LAID_Gadget12]=gadget=CreateGadget(TEXT_KIND,gadget,&newgad[LAID_Gadget12],GT_Underscore,'_',GTTX_Border,FALSE,TAG_END);
  137.       wingads[CYID_ToShow]=gadget=CreateGadget(CYCLE_KIND,gadget,&newgad[CYID_ToShow],GA_Disabled,gadgetdata->gd_Disabled_ToShow,GTCY_Labels,gadgetdata->gd_Labels_ToShow,GTCY_Active,gadgetdata->gd_Active_ToShow,TAG_END);
  138.       wingads[BTID_SavePrefs]=gadget=CreateGadget(BUTTON_KIND,gadget,&newgad[BTID_SavePrefs],GA_Disabled,gadgetdata->gd_Disabled_SavePrefs,GT_Underscore,'_',TAG_END);
  139.       wingads[BTID_Slideshow]=gadget=CreateGadget(BUTTON_KIND,gadget,&newgad[BTID_Slideshow],GA_Disabled,gadgetdata->gd_Disabled_Slideshow,GT_Underscore,'_',TAG_END);
  140.       wingads[BTID_Show]=gadget=CreateGadget(BUTTON_KIND,gadget,&newgad[BTID_Show],GA_Disabled,gadgetdata->gd_Disabled_Show,GT_Underscore,'_',TAG_END);
  141.       return gadget;
  142.       }
  143.    else return NULL;
  144. }
  145.  
  146.  
  147. /*************************************************************************/
  148. /*                                                                       */
  149. /*   Routines to handle windows                                          */
  150. /*                                                                       */
  151. /*************************************************************************/
  152.  
  153.  
  154. void HandleManageCDPicsWindow(struct Screen *customscreen,LONG left,LONG top,APTR userdata)
  155. {
  156.    APTR visualinfo=GetVisualInfo(customscreen,TAG_DONE);
  157.    if (visualinfo)
  158.       {
  159.       struct Gadget  *gadgetlist = NULL;
  160.       struct Menu    *menustrip  = NULL;
  161.       ULONG height=33,width=79,maxheight=1024,maxwidth=1280;
  162.  
  163.       struct Gadget *wingads[14];
  164.  
  165.       STRPTR title                  = "ManageCDPics © 1994-95 by Markus Hillenbrand";
  166.       struct Window     *win        = NULL;
  167.  
  168.       struct TextAttr   textattr    = { GfxBase->DefaultFont->tf_Message.mn_Node.ln_Name,GfxBase->DefaultFont->tf_YSize,FS_NORMAL,FPF_DISKFONT };
  169.  
  170.       struct NewGadget  newgad[]    = {
  171.                                         XPOS(1),YPOS(2),XSIZE(25),YSIZE(20),NULL,&textattr,LVID_CD,PLACETEXT_ABOVE,visualinfo,NULL,
  172.                                         XPOS(27),YPOS(2),XSIZE(25),YSIZE(20),NULL,&textattr,LVID_Category,PLACETEXT_ABOVE,visualinfo,NULL,
  173.                                         XPOS(53),YPOS(2),XSIZE(25),YSIZE(20),NULL,&textattr,LVID_Picture,PLACETEXT_ABOVE,visualinfo,NULL,
  174.                                         XPOS(1),YPOS(0),XSIZE(25),YSIZE(2),"_CD:",&textattr,LAID_Gadget5,PLACETEXT_IN,visualinfo,NULL,
  175.                                         XPOS(27),YPOS(0),XSIZE(25),YSIZE(2),"C_ategory:",&textattr,LAID_Gadget6,PLACETEXT_IN,visualinfo,NULL,
  176.                                         XPOS(53),YPOS(0),XSIZE(25),YSIZE(2),"_Picture:",&textattr,LAID_Gadget7,PLACETEXT_IN,visualinfo,NULL,
  177.                                         XPOS(1),YPOS(22),XSIZE(77),YSIZE(2),NULL,&textattr,TXID_Text,PLACETEXT_LEFT,visualinfo,NULL,
  178.                                         XPOS(1),YPOS(25),XSIZE(29),YSIZE(2),"Program to _view Picture with:",&textattr,LAID_Gadget9,PLACETEXT_IN,visualinfo,NULL,
  179.                                         XPOS(1),YPOS(27),XSIZE(51),YSIZE(2),NULL,&textattr,STID_String,PLACETEXT_LEFT,visualinfo,NULL,
  180.                                         XPOS(53),YPOS(25),XSIZE(15),YSIZE(2),"Select _to show:",&textattr,LAID_Gadget12,PLACETEXT_IN,visualinfo,NULL,
  181.                                         XPOS(53),YPOS(27),XSIZE(25),YSIZE(2),NULL,&textattr,CYID_ToShow,PLACETEXT_ABOVE,visualinfo,NULL,
  182.                                         XPOS(1),YPOS(30),XSIZE(25),YSIZE(2),"_Save Prefs",&textattr,BTID_SavePrefs,PLACETEXT_IN,visualinfo,NULL,
  183.                                         XPOS(27),YPOS(30),XSIZE(25),YSIZE(2),"Start S_lideshow",&textattr,BTID_Slideshow,PLACETEXT_IN,visualinfo,NULL,
  184.                                         XPOS(53),YPOS(30),XSIZE(25),YSIZE(2),"Show P_icture(s)",&textattr,BTID_Show,PLACETEXT_IN,visualinfo,NULL,
  185.                                       };
  186.       STRPTR            LA_ToShow[]  = { "Single","Category","CD",NULL };
  187.  
  188.  
  189.       struct ManageCDPicsWindowData gadgetdata = {
  190.                                         /* belongs to a listview gadget */
  191.                                         FALSE,
  192.                                         (struct List *)~0,
  193.                                         0,
  194.                                         0,
  195.                                         /* belongs to a listview gadget */
  196.                                         FALSE,
  197.                                         (struct List *)~0,
  198.                                         0,
  199.                                         0,
  200.                                         /* belongs to a listview gadget */
  201.                                         FALSE,
  202.                                         (struct List *)~0,
  203.                                         0,
  204.                                         0,
  205.                                         /* belongs to a text gadget */
  206.                                         FALSE,
  207.                                         (char *)"",
  208.                                         /* belongs to a string gadget */
  209.                                         FALSE,
  210.                                         (char *)"",
  211.                                         /* belongs to a cycle gadget */
  212.                                         FALSE,
  213.                                         0,
  214.                                         (STRPTR *)&LA_ToShow[0],
  215.                                         /* belongs to a button */
  216.                                         FALSE,
  217.                                         /* belongs to a button */
  218.                                         FALSE,
  219.                                         /* belongs to a button */
  220.                                         FALSE,
  221.                                       };
  222.  
  223.  
  224.       struct NewMenu    menu[]      = { NM_TITLE, "Program"    , 0 ,0,0,0,
  225.                                         NM_ITEM , "About"      ,"A",0,0,0,
  226.                                         NM_END  , NULL         , 0 ,0,0,0 };
  227.  
  228.       height= YSIZE(height);
  229.       width = XSIZE(width) ;
  230.       if (left==-1) left  = (customscreen->Width-width)/2;
  231.       if (top ==-1) top   = (customscreen->Height-height)/2;
  232.  
  233.       if (CreateGadgetsManageCDPicsWindow(&gadgetlist,newgad,wingads,&gadgetdata)!=NULL)
  234.          {
  235.          if (height>customscreen->Height || width>customscreen->Width) GUICreatorErrorReport(NULL,ERROR_SCREEN_TOO_SMALL);
  236.          win=OpenWindowTags(NULL,WA_Activate,         TRUE,
  237.                                  WA_CloseGadget,      TRUE,
  238.                                  WA_DepthGadget,      TRUE,
  239.                                  WA_SizeGadget,       TRUE,
  240.                                  WA_DragBar,          TRUE,
  241.                                  WA_Gadgets,          gadgetlist,
  242.                                  WA_InnerHeight,      height,
  243.                                  WA_InnerWidth,       width,
  244.                                  WA_IDCMP,            IDCMP_CLOSEWINDOW|IDCMP_MENUPICK|IDCMP_NEWSIZE|IDCMP_VANILLAKEY|IDCMP_REFRESHWINDOW|IDCMP_GADGETUP|BUTTONIDCMP|STRINGIDCMP|CYCLEIDCMP|LISTVIEWIDCMP,
  245.                                  WA_Left,             left,
  246.                                  WA_Top,              top,
  247.                                  WA_MaxHeight,        maxheight,
  248.                                  WA_MinHeight,        height,
  249.                                  WA_MaxWidth,         maxwidth,
  250.                                  WA_MinWidth,         width,
  251.                                  WA_SizeBRight,       FALSE,
  252.                                  WA_SizeBBottom,      TRUE,
  253.                                  WA_SmartRefresh,     TRUE,
  254.                                  WA_CustomScreen,     customscreen,
  255.                                  WA_Title,            title,
  256.                                  WA_NewLookMenus,     TRUE,
  257.                                  TAG_END);
  258.          if (win)
  259.             {
  260.             menustrip=CreateMenus(menu,GTMN_NewLookMenus,TRUE,TAG_END);
  261.             if (menustrip)
  262.                {
  263.                if (LayoutMenus(menustrip,visualinfo,GTMN_NewLookMenus,TRUE,TAG_END))
  264.                   {
  265.                   if (SetMenuStrip(win,menustrip))
  266.                      {
  267.                      struct IntuiMessage  *imessage   = NULL;
  268.                      struct Gadget        *idcmpgad   = NULL;
  269.                      struct NewGadget     ngcopy[]    = newgad;
  270.                      long   double        xscale      = 1.0;
  271.                      long   double        yscale      = 1.0;
  272.                      STRPTR stringpointer             = NULL;
  273.                      ULONG                i           = 0;
  274.                      ULONG                gadgetcount = 14;
  275.                      ULONG  idcmpclass                = 0;
  276.                      UWORD  messagecode               = 0;
  277.                      BOOL   running                   = TRUE;
  278.                      ULONG  signal                    = 0;
  279.                      ULONG  longpointer1              = 0;
  280.                      ULONG  longpointer2              = 0;
  281.  
  282.                      SetFont(win->RPort,GfxBase->DefaultFont);
  283.  
  284.                      GT_RefreshWindow(win,NULL);
  285.  
  286.                      /* User-Setup */
  287.                      UserSetupManageCDPicsWindow(win,wingads,userdata);
  288.                      do
  289.                         {
  290.                         WindowLimits(win,width+win->BorderLeft+win->BorderRight,height+win->BorderTop+win->BorderBottom,maxwidth,maxheight);
  291.                         if (running) signal=Wait(SIGBREAKF_CTRL_C | 1L << win->UserPort->mp_SigBit);
  292.                         if (signal & SIGBREAKF_CTRL_C) running=FALSE;
  293.                         WindowLimits(win,win->Width,win->Height,win->Width,win->Height);
  294.                         while (running && (imessage=GT_GetIMsg(win->UserPort)))
  295.                            {
  296.                            idcmpgad=(struct Gadget *)imessage->IAddress;
  297.                            idcmpclass=imessage->Class;
  298.                            messagecode =imessage->Code;
  299.  
  300.                            GT_ReplyIMsg(imessage);
  301.  
  302.                            switch(idcmpclass)
  303.                               {
  304.                               case IDCMP_REFRESHWINDOW:
  305.                                    GT_BeginRefresh(win);
  306.                                    GT_EndRefresh(win,TRUE);
  307.                                    break;
  308.                               case IDCMP_MENUPICK:
  309.                                    switch(MENUNUM(messagecode))
  310.                                       {
  311.                                       case 0:
  312.                                          switch (ITEMNUM(messagecode))
  313.                                             {
  314.                                             case 0:
  315.                                                About(win);
  316.                                                break;
  317.                                             }
  318.                                          /* end-switch */
  319.                                          break;
  320.                                       }
  321.                                    /* end-switch */
  322.                                    break;
  323.                               case IDCMP_NEWSIZE:
  324.                                    GT_GetGadgetAttrs(wingads[LVID_CD],win,NULL,GA_Disabled,&longpointer1,GTLV_Labels,&longpointer2,TAG_END);
  325.                                    gadgetdata.gd_Disabled_CD=(longpointer1==0)?FALSE:TRUE;
  326.                                    gadgetdata.gd_Labels_CD=(struct List *)longpointer2;
  327.                                    GT_GetGadgetAttrs(wingads[LVID_CD],win,NULL,GTLV_Top,&longpointer1,GTLV_Selected,&longpointer2,TAG_END);
  328.                                    gadgetdata.gd_Top_CD=longpointer1;
  329.                                    gadgetdata.gd_Selected_CD=longpointer2;
  330.                                    GT_GetGadgetAttrs(wingads[LVID_Category],win,NULL,GA_Disabled,&longpointer1,GTLV_Labels,&longpointer2,TAG_END);
  331.                                    gadgetdata.gd_Disabled_Category=(longpointer1==0)?FALSE:TRUE;
  332.                                    gadgetdata.gd_Labels_Category=(struct List *)longpointer2;
  333.                                    GT_GetGadgetAttrs(wingads[LVID_Category],win,NULL,GTLV_Top,&longpointer1,GTLV_Selected,&longpointer2,TAG_END);
  334.                                    gadgetdata.gd_Top_Category=longpointer1;
  335.                                    gadgetdata.gd_Selected_Category=longpointer2;
  336.                                    GT_GetGadgetAttrs(wingads[LVID_Picture],win,NULL,GA_Disabled,&longpointer1,GTLV_Labels,&longpointer2,TAG_END);
  337.                                    gadgetdata.gd_Disabled_Picture=(longpointer1==0)?FALSE:TRUE;
  338.                                    gadgetdata.gd_Labels_Picture=(struct List *)longpointer2;
  339.                                    GT_GetGadgetAttrs(wingads[LVID_Picture],win,NULL,GTLV_Top,&longpointer1,GTLV_Selected,&longpointer2,TAG_END);
  340.                                    gadgetdata.gd_Top_Picture=longpointer1;
  341.                                    gadgetdata.gd_Selected_Picture=longpointer2;
  342.                                    GT_GetGadgetAttrs(wingads[TXID_Text],win,NULL,GA_Disabled,&longpointer1,GTTX_Text,&stringpointer,TAG_END);
  343.                                    gadgetdata.gd_Disabled_Text=(longpointer1==0)?FALSE:TRUE;
  344.                                    strcpy(gadgetdata.gd_Text_Text,stringpointer);
  345.                                    GT_GetGadgetAttrs(wingads[STID_String],win,NULL,GA_Disabled,&longpointer1,GTST_String,&stringpointer,TAG_END);
  346.                                    gadgetdata.gd_Disabled_String=(longpointer1==0)?FALSE:TRUE;
  347.                                    strcpy(gadgetdata.gd_String_String,stringpointer);
  348.                                    GT_GetGadgetAttrs(wingads[CYID_ToShow],win,NULL,GA_Disabled,&longpointer1,GTCY_Active,&longpointer2,TAG_END);
  349.                                    gadgetdata.gd_Disabled_ToShow=(longpointer1==0)?FALSE:TRUE;
  350.                                    gadgetdata.gd_Active_ToShow=longpointer2;
  351.                                    GT_GetGadgetAttrs(wingads[CYID_ToShow],win,NULL,GTCY_Labels,&longpointer1,TAG_END);
  352.                                    gadgetdata.gd_Labels_ToShow=(STRPTR *)longpointer1;
  353.                                    GT_GetGadgetAttrs(wingads[BTID_SavePrefs],win,NULL,GA_Disabled,&longpointer1,TAG_END);
  354.                                    gadgetdata.gd_Disabled_SavePrefs=(longpointer1==0)?FALSE:TRUE;
  355.                                    GT_GetGadgetAttrs(wingads[BTID_Slideshow],win,NULL,GA_Disabled,&longpointer1,TAG_END);
  356.                                    gadgetdata.gd_Disabled_Slideshow=(longpointer1==0)?FALSE:TRUE;
  357.                                    GT_GetGadgetAttrs(wingads[BTID_Show],win,NULL,GA_Disabled,&longpointer1,TAG_END);
  358.                                    gadgetdata.gd_Disabled_Show=(longpointer1==0)?FALSE:TRUE;
  359.  
  360.                                    RemoveGList(win,gadgetlist,-1);
  361.                                    SetAPen(win->RPort,0L);
  362.                                    RectFill(win->RPort,win->BorderLeft,win->BorderTop,win->Width-win->BorderRight-1,win->Height-win->BorderBottom-1);
  363.                                    RefreshWindowFrame(win);
  364.  
  365.                                    xscale=(long double)win->Width /(long double)(width+win->BorderLeft+win->BorderRight);
  366.                                    yscale=(long double)win->Height/(long double)(height+win->BorderTop+win->BorderBottom);
  367.                                    for (i=0;i<gadgetcount;i++)
  368.                                       {
  369.                                       ngcopy[i].ng_LeftEdge=(WORD)((long double)newgad[i].ng_LeftEdge*xscale);
  370.                                       ngcopy[i].ng_TopEdge =(WORD)((long double)newgad[i].ng_TopEdge *yscale);
  371.                                       ngcopy[i].ng_Width   =(WORD)((long double)newgad[i].ng_Width   *xscale);
  372.                                       ngcopy[i].ng_Height  =(WORD)((long double)newgad[i].ng_Height  *yscale);
  373.                                       }
  374.  
  375.                                    FreeGadgets(gadgetlist);
  376.                                    gadgetlist=NULL;
  377.  
  378.                                    CreateGadgetsManageCDPicsWindow(&gadgetlist,ngcopy,wingads,&gadgetdata);
  379.                                    AddGList(win,gadgetlist,-1,-1,NULL);
  380.                                    RefreshGList(gadgetlist,win,NULL,-1);
  381.                                    GT_RefreshWindow(win,NULL);
  382.  
  383.                                    break;
  384.                               case IDCMP_VANILLAKEY:
  385.                                    switch(messagecode)
  386.                                       {
  387.                                       case 'c':
  388.                                            GT_GetGadgetAttrs(wingads[LVID_CD],win,NULL,GA_Disabled,&longpointer1,TAG_END);
  389.                                            if (longpointer1==0)
  390.                                               {
  391.                                               GT_GetGadgetAttrs(wingads[LVID_CD],win,NULL,GTLV_Selected,&longpointer1,TAG_END);
  392.                                               GT_SetGadgetAttrs(wingads[LVID_CD],win,NULL,GTLV_Selected,longpointer1+1,TAG_END);
  393.                                               GT_GetGadgetAttrs(wingads[LVID_CD],win,NULL,GTLV_Selected,&longpointer2,TAG_END);
  394.                                               if (longpointer2!=longpointer1)
  395.                                                  {
  396.                                                  HandleGadgetsManageCDPicsWindow(win,wingads,LVID_CD,longpointer2,&gadgetdata,userdata);
  397.                                                  }
  398.                                               }
  399.                                            break;
  400.                                       case 'C':
  401.                                            GT_GetGadgetAttrs(wingads[LVID_CD],win,NULL,GA_Disabled,&longpointer1,TAG_END);
  402.                                            if (longpointer1==0)
  403.                                               {
  404.                                               GT_GetGadgetAttrs(wingads[LVID_CD],win,NULL,GTLV_Selected,&longpointer1,TAG_END);
  405.                                               if (longpointer1!=0)
  406.                                                  {
  407.                                                  GT_SetGadgetAttrs(wingads[LVID_CD],win,NULL,GTLV_Selected,longpointer1-1,TAG_END);
  408.                                                  HandleGadgetsManageCDPicsWindow(win,wingads,LVID_CD,longpointer1-1,&gadgetdata,userdata);
  409.                                                  }
  410.                                               }
  411.                                            break;
  412.                                       case 'a':
  413.                                            GT_GetGadgetAttrs(wingads[LVID_Category],win,NULL,GA_Disabled,&longpointer1,TAG_END);
  414.                                            if (longpointer1==0)
  415.                                               {
  416.                                               GT_GetGadgetAttrs(wingads[LVID_Category],win,NULL,GTLV_Selected,&longpointer1,TAG_END);
  417.                                               GT_SetGadgetAttrs(wingads[LVID_Category],win,NULL,GTLV_Selected,longpointer1+1,TAG_END);
  418.                                               GT_GetGadgetAttrs(wingads[LVID_Category],win,NULL,GTLV_Selected,&longpointer2,TAG_END);
  419.                                               if (longpointer2!=longpointer1)
  420.                                                  {
  421.                                                  HandleGadgetsManageCDPicsWindow(win,wingads,LVID_Category,longpointer2,&gadgetdata,userdata);
  422.                                                  }
  423.                                               }
  424.                                            break;
  425.                                       case 'A':
  426.                                            GT_GetGadgetAttrs(wingads[LVID_Category],win,NULL,GA_Disabled,&longpointer1,TAG_END);
  427.                                            if (longpointer1==0)
  428.                                               {
  429.                                               GT_GetGadgetAttrs(wingads[LVID_Category],win,NULL,GTLV_Selected,&longpointer1,TAG_END);
  430.                                               if (longpointer1!=0)
  431.                                                  {
  432.                                                  GT_SetGadgetAttrs(wingads[LVID_Category],win,NULL,GTLV_Selected,longpointer1-1,TAG_END);
  433.                                                  HandleGadgetsManageCDPicsWindow(win,wingads,LVID_Category,longpointer1-1,&gadgetdata,userdata);
  434.                                                  }
  435.                                               }
  436.                                            break;
  437.                                       case 'p':
  438.                                            GT_GetGadgetAttrs(wingads[LVID_Picture],win,NULL,GA_Disabled,&longpointer1,TAG_END);
  439.                                            if (longpointer1==0)
  440.                                               {
  441.                                               GT_GetGadgetAttrs(wingads[LVID_Picture],win,NULL,GTLV_Selected,&longpointer1,TAG_END);
  442.                                               GT_SetGadgetAttrs(wingads[LVID_Picture],win,NULL,GTLV_Selected,longpointer1+1,TAG_END);
  443.                                               GT_GetGadgetAttrs(wingads[LVID_Picture],win,NULL,GTLV_Selected,&longpointer2,TAG_END);
  444.                                               if (longpointer2!=longpointer1)
  445.                                                  {
  446.                                                  HandleGadgetsManageCDPicsWindow(win,wingads,LVID_Picture,longpointer2,&gadgetdata,userdata);
  447.                                                  }
  448.                                               }
  449.                                            break;
  450.                                       case 'P':
  451.                                            GT_GetGadgetAttrs(wingads[LVID_Picture],win,NULL,GA_Disabled,&longpointer1,TAG_END);
  452.                                            if (longpointer1==0)
  453.                                               {
  454.                                               GT_GetGadgetAttrs(wingads[LVID_Picture],win,NULL,GTLV_Selected,&longpointer1,TAG_END);
  455.                                               if (longpointer1!=0)
  456.                                                  {
  457.                                                  GT_SetGadgetAttrs(wingads[LVID_Picture],win,NULL,GTLV_Selected,longpointer1-1,TAG_END);
  458.                                                  HandleGadgetsManageCDPicsWindow(win,wingads,LVID_Picture,longpointer1-1,&gadgetdata,userdata);
  459.                                                  }
  460.                                               }
  461.                                            break;
  462.                                       case 'v':
  463.                                            GT_GetGadgetAttrs(wingads[STID_String],win,NULL,GA_Disabled,&longpointer1,TAG_END);
  464.                                            if (longpointer1==0) ActivateGadget(wingads[STID_String],win,NULL);
  465.                                            break;
  466.                                       case 't':
  467.                                            GT_GetGadgetAttrs(wingads[CYID_ToShow],win,NULL,GA_Disabled,&longpointer1,TAG_END);
  468.                                            if (longpointer1==0)
  469.                                               {
  470.                                               GT_GetGadgetAttrs(wingads[CYID_ToShow],win,NULL,GTCY_Active,&longpointer1,TAG_END);
  471.                                               if (++longpointer1==3) longpointer1=0;
  472.                                               GT_SetGadgetAttrs(wingads[CYID_ToShow],win,NULL,GTCY_Active,longpointer1,TAG_END);
  473.                                               HandleGadgetsManageCDPicsWindow(win,wingads,CYID_ToShow,longpointer1,&gadgetdata,userdata);
  474.                                               }
  475.                                            break;
  476.                                       case 'T':
  477.                                            GT_GetGadgetAttrs(wingads[CYID_ToShow],win,NULL,GA_Disabled,&longpointer1,TAG_END);
  478.                                            if (longpointer1==0)
  479.                                               {
  480.                                               GT_GetGadgetAttrs(wingads[CYID_ToShow],win,NULL,GTCY_Active,&longpointer1,TAG_END);
  481.                                               if (longpointer1==0) longpointer1=3;
  482.                                               longpointer1--;
  483.                                               GT_SetGadgetAttrs(wingads[CYID_ToShow],win,NULL,GTCY_Active,longpointer1,TAG_END);
  484.                                               HandleGadgetsManageCDPicsWindow(win,wingads,CYID_ToShow,longpointer1,&gadgetdata,userdata);
  485.                                               }
  486.                                            break;
  487.                                       case 's':
  488.                                            GT_GetGadgetAttrs(wingads[BTID_SavePrefs],win,NULL,GA_Disabled,&longpointer1,TAG_END);
  489.                                            if (longpointer1==0) HandleGadgetsManageCDPicsWindow(win,wingads,BTID_SavePrefs,messagecode,&gadgetdata,userdata);
  490.                                            break;
  491.                                       case 'l':
  492.                                            GT_GetGadgetAttrs(wingads[BTID_Slideshow],win,NULL,GA_Disabled,&longpointer1,TAG_END);
  493.                                            if (longpointer1==0) HandleGadgetsManageCDPicsWindow(win,wingads,BTID_Slideshow,messagecode,&gadgetdata,userdata);
  494.                                            break;
  495.                                       case 'i':
  496.                                            GT_GetGadgetAttrs(wingads[BTID_Show],win,NULL,GA_Disabled,&longpointer1,TAG_END);
  497.                                            if (longpointer1==0) HandleGadgetsManageCDPicsWindow(win,wingads,BTID_Show,messagecode,&gadgetdata,userdata);
  498.                                            break;
  499.                                       case 27:
  500.                                          running=FALSE;
  501.                                          break;
  502.                                       }
  503.                                    break;
  504.                               case IDCMP_CLOSEWINDOW:
  505.                                    running=FALSE;
  506.                                    break;
  507.                                 case IDCMP_GADGETUP:
  508.                                 case MXIDCMP:
  509.                                    HandleGadgetsManageCDPicsWindow(win,wingads,idcmpgad->GadgetID,messagecode,&gadgetdata,userdata);
  510.                                    break;
  511.                               }
  512.                            /* end-switch */
  513.                            }
  514.                         /* end-while */
  515.                         }
  516.                      while (running);
  517.                      ClearMenuStrip(win);
  518.                      }
  519.                   else GUICreatorErrorReport(win,ERROR_NO_WINDOW_MENU);
  520.                   }
  521.                else GUICreatorErrorReport(win,ERROR_NO_WINDOW_MENU);
  522.                FreeMenus(menustrip);
  523.                }
  524.             else GUICreatorErrorReport(win,ERROR_NO_WINDOW_MENU);
  525.             if (win) CloseWindow(win);
  526.             }
  527.          else GUICreatorErrorReport(win,ERROR_NO_WINDOW_OPENED);
  528.          if (gadgetlist) FreeGadgets(gadgetlist);
  529.          }
  530.       else GUICreatorErrorReport(NULL,ERROR_NO_GADGETS_CREATED);
  531.       if (visualinfo) FreeVisualInfo(visualinfo);
  532.       }
  533.    else GUICreatorErrorReport(NULL,ERROR_NO_VISUALINFO);
  534. }
  535.  
  536.