home *** CD-ROM | disk | FTP | other *** search
/ World of A1200 / World_Of_A1200.iso / programs / develop / visualarts / demo / source / multisub.c < prev    next >
C/C++ Source or Header  |  1995-02-27  |  7KB  |  241 lines

  1. /* ******************************************************************** */
  2. /* C code generated by:                            */
  3. /* Visual Arts Version 2.0                        */
  4. /* Copyright 1994 Danny Y. Wong  All rights reserved            */
  5. /* Calgary, Alberta (CANADA)                                    */
  6. /* Partial of the code is copyright by Jaba Development            */
  7. /* ******************************************************************** */
  8.  
  9. #include "VisualArts.h" 
  10.  
  11. #define ID_sObjID2                                    0
  12. #define ID_sObjID4                                    1
  13.  
  14. #define SubPrgNumGads                        2
  15. #define SubPrgNumPopUpGads                    1
  16.  
  17. #include "MultiSub.h" 
  18.  
  19. int sObjID3Obj(struct VAobject VAObject);
  20. int sObjID2Obj(struct VAobject VAObject);
  21. int sObjID4Obj(struct VAobject VAObject);
  22.  
  23. int OpenSubPrgWindow(char windtitle[80]);
  24. void CloseSubPrgWindow(void);
  25. int SubPrgHandler(void);
  26. int SubPrgMainHandler(void);
  27. void DrawSubPrgObjs(void);
  28. void SubPrg(void);
  29.  
  30. extern struct WindowNode    *ContextSActiveWind;
  31. struct Gadget            *SubPrgGList = NULL;
  32. struct Gadget            *SubPrgGadgets[SubPrgNumGads];
  33. struct Gadget            *SubPrgPopUpGadgets[SubPrgNumPopUpGads];
  34. Class                *SubPrgPopUpClass;
  35. struct IntuiMessage         SubPrgMsg;
  36. UWORD                 SubPrgLeft = 168;
  37. UWORD                 SubPrgTop = 116;
  38. UWORD                 SubPrgWidth = 298;
  39. UWORD                 SubPrgHeight = 63;
  40. extern struct IntuitionBase    *IntuitionBase;
  41. extern struct List        *ContextSWindList;
  42. extern UWORD             ContextSTotalWindows;
  43. UWORD                 SubPrgNumWindows = 0;
  44. extern struct TextAttr topaz8;
  45. extern struct TextAttr topaz800;
  46.  
  47. UBYTE *ModelsALabels[] = {
  48.     (UBYTE *)"Amiga 500", 
  49.     (UBYTE *)"Amiga 1000", 
  50.     (UBYTE *)"Amiga 2000", 
  51.     (UBYTE *)"Amiga 3000", 
  52.     (UBYTE *)"Amiga 4000", 
  53.     (UBYTE *)"Amiga CDTV", 
  54.     (UBYTE *)"Amiga CD32", 
  55.     NULL
  56. };
  57.  
  58. WORD SubPrgGadTypes[] = {
  59.     LISTVIEW_KIND,
  60.     PALETTE_KIND,
  61. };
  62.  
  63. struct NewGadget SubPrgNGads[] = {
  64.     7, 1, 149, 44, (UBYTE *)"", &topaz800, ID_sObjID2, PLACETEXT_ABOVE, NULL, (APTR)sObjID2Obj,
  65.     165, 18, 117, 27, (UBYTE *)"", &topaz800, ID_sObjID4, PLACETEXT_ABOVE, NULL, (APTR)sObjID4Obj,
  66. };
  67.  
  68. ULONG SubPrgNTags[] = {
  69.     (GTLV_Labels), NULL, (GTLV_Top), 0, (GTLV_ScrollWidth), 16, (LAYOUTA_Spacing), 0, TAG_DONE,
  70.     (GTPA_Depth), 2, (GTPA_Color), 1, (GTPA_ColorOffset), 0, (GTPA_IndicatorWidth), 10, TAG_DONE,
  71. };
  72.  
  73. ULONG SubPrgPopUpNTags[] = {
  74.     GA_Left, 167,        GA_Top, 14,
  75.     GA_Height, 12,        GA_Width, 119,
  76.     GA_RelVerify, TRUE,    GA_ID, 2,
  77.     PUMG_NewLook, TRUE,    GA_UserData, (ULONG)((APTR)sObjID3Obj),
  78.     PUMG_Active, 0,     TAG_DONE,
  79.  
  80. };
  81.  
  82.  
  83. int OpenSubPrgWindow(char windtitle[80])
  84. {
  85.   struct NewGadget    NewGad;
  86.   struct Gadget       *Gad;
  87.   register UWORD i, j;
  88.   UWORD offsetx = Scr->WBorLeft;
  89.   UWORD offsety = Scr->WBorTop + Scr->RastPort.TxHeight + 1;
  90.  
  91.   if (!(SubPrgPopUpClass = CreatePopUpMenuClass()))
  92.       return(1L);
  93.  
  94.  if (SubPrgNumWindows == 0)
  95.  {
  96.   if (!(Gad = CreateContext(&SubPrgGList)))
  97.       return(1L);
  98.  
  99.   for (i=0, j=0; i < SubPrgNumGads; i++)
  100.   {
  101.     CopyMem((char *)&SubPrgNGads[i], (char *)&NewGad, (long)sizeof(struct NewGadget));
  102.  
  103.     NewGad.ng_VisualInfo = VisualInfo;
  104.     NewGad.ng_LeftEdge += offsetx;
  105.     NewGad.ng_TopEdge  += offsety;
  106.  
  107.     SubPrgGadgets[i] = Gad = CreateGadgetA((ULONG)SubPrgGadTypes[i], Gad, &NewGad,
  108.     (struct TagItem *)&SubPrgNTags[j]);
  109.     while (SubPrgNTags[j])
  110.         j +=2;
  111.     j++;
  112.     if (!Gad)
  113.        return(2L);
  114.   }
  115.  }
  116.   if (!(ContextSActiveWind = AddWindowNode(ContextSWindList, windtitle, SubPrgHandler)))
  117.      return(1);
  118.   if (!(ContextSActiveWind->nn_Window = OpenWindowTags(NULL,
  119.       WA_Left,    SubPrgLeft,
  120.       WA_Top,     SubPrgTop,
  121.       WA_Width,    SubPrgWidth,
  122.       WA_Height,    SubPrgHeight - Scr->WBorTop,
  123.       WA_NewLookMenus, TRUE,
  124.       WA_IDCMP,    IDCMP_CLOSEWINDOW |  IDCMP_NEWSIZE | IDCMP_MOUSEBUTTONS | IDCMP_MOUSEMOVE | IDCMP_GADGETUP | IDCMP_GADGETDOWN | IDCMP_INTUITICKS | IDCMP_ACTIVEWINDOW | IDCMP_INACTIVEWINDOW ,
  125.       WA_Flags,    WFLG_CLOSEGADGET | WFLG_DEPTHGADGET  |  WFLG_SMART_REFRESH | 
  126.              WFLG_ACTIVATE |  WFLG_DRAGBAR ,
  127.       WA_Gadgets,    SubPrgGList,
  128.       WA_Title,    windtitle,
  129.       WA_ScreenTitle,    "Visual Arts V2.0 Copyright 1994 Danny Y. Wong  All Rights Reserved.",
  130.       WA_PubScreen,    Scr,
  131.       WA_MinWidth,    160,
  132.       WA_MinHeight,    50,
  133.       WA_MaxWidth,    640,
  134.       WA_MaxHeight,    200,
  135.       TAG_DONE)))
  136.           return(3L);
  137.  
  138.   if (++SubPrgNumWindows == 1)
  139.     CreateSubPrgLists();
  140.   for (i=0, j=0; i < SubPrgNumPopUpGads; i++)
  141.   {
  142.       SubPrgPopUpGadgets[i]=NewObjectA(SubPrgPopUpClass, NULL, (struct TagItem *)&SubPrgPopUpNTags[j]);
  143.       if (SubPrgPopUpGadgets[i])
  144.         AddGadget(ContextSActiveWind->nn_Window, SubPrgPopUpGadgets[i], -1);
  145.     while (SubPrgPopUpNTags[j])
  146.       j +=2;
  147.     j++;
  148.   }
  149.   GT_RefreshWindow(ContextSActiveWind->nn_Window, NULL);
  150.   RefreshGadgets(SubPrgGadgets[0], ContextSActiveWind->nn_Window, NULL);
  151.   GT_SetGadgetAttrs(SubPrgGadgets[0], ContextSActiveWind->nn_Window, NULL,
  152.      GTLV_Labels, SubPrgLists[0], TAG_END);
  153.   SetGadgetAttrs(SubPrgPopUpGadgets[0], ContextSActiveWind->nn_Window, NULL,
  154.      PUMG_Labels, SubPrgLists[0], TAG_END);
  155.   RefreshGadgets(SubPrgPopUpGadgets[0], ContextSActiveWind->nn_Window, NULL);
  156.   return(0L);
  157. }
  158.  
  159. int SubPrgHandler(void)
  160. {
  161.   struct IntuiMessage    *msg;
  162.   struct VAobject    VAObject;
  163.   int running    = 1;
  164.   int (*func)(struct VAobject VAObject);
  165.   struct WindowNode *WindNode;
  166.   ULONG class;
  167.   UWORD code;
  168.  
  169.   while (msg=GT_GetIMsg(ContextSActiveWind->nn_Window->UserPort))
  170.   {
  171.     CopyMem((char *)msg, (char *)&SubPrgMsg, (long)sizeof(struct IntuiMessage));
  172.     class = msg->Class;
  173.     code  = msg->Code;
  174.  
  175.     GT_ReplyIMsg(msg);
  176.     switch(class)
  177.     {
  178.  
  179.       case IDCMP_MOUSEBUTTONS :
  180.         break;
  181.  
  182.       case IDCMP_MOUSEMOVE :
  183.         break;
  184.  
  185.       case IDCMP_INTUITICKS :
  186.         break;
  187.  
  188.       case IDCMP_NEWSIZE:
  189.        break;
  190.  
  191.       case IDCMP_CLOSEWINDOW:
  192.          CloseContextSWindow();
  193.          if (--SubPrgNumWindows == 0)
  194.          {
  195.              if (SubPrgGList)
  196.                 FreeGadgets(SubPrgGList);
  197.              for (running=0; running < 1; running++)
  198.                 FreeList(SubPrgLists[running]);
  199.              if (SubPrgPopUpClass)
  200.                 DisposePopUpMenuClass(SubPrgPopUpClass);
  201.          }
  202.          return(1);
  203.          break;
  204.  
  205.       case IDCMP_ACTIVEWINDOW:
  206.       case IDCMP_INACTIVEWINDOW:
  207.         if (!IntuitionBase->ActiveWindow)
  208.         {
  209.         ActivateWindow(ContextSActiveWind->nn_Window);
  210.         break;
  211.         }
  212.         WindNode = FindWindowNode(ContextSWindList, IntuitionBase->ActiveWindow->Title);
  213.         if (WindNode)
  214.         ContextSActiveWind = WindNode;
  215.         break;
  216.  
  217.       case IDCMP_GADGETUP:
  218.         VAObject.va_Window = (struct Window *)ContextSActiveWind->nn_Window ;
  219.         VAObject.va_Gadget = (struct Gadget *)msg->IAddress;
  220.         VAObject.va_IntuiMsg = (struct IntuiMessage *)msg;
  221.         VAObject.va_Flags = 0;
  222.         VAObject.va_UserData = 0;
  223.         func = (void *)((struct Gadget *)SubPrgMsg.IAddress)->UserData;
  224.         if (func != NULL)
  225.           running =  func(VAObject);
  226.         break;
  227.  
  228.     }
  229.   }
  230.   return(running);
  231. }
  232.  
  233. void SubPrg(void)
  234. {
  235.   int rc;
  236.  
  237.     for (rc=0; rc < 1; rc++)
  238.       SubPrgLists[rc]=GetNewList();
  239.     rc = OpenSubPrgWindow("Sub-Program");
  240. }
  241.