home *** CD-ROM | disk | FTP | other *** search
/ Amiga Elysian Archive / AmigaElysianArchive.iso / prog / c / butclas1.lha / test.c < prev   
C/C++ Source or Header  |  1993-02-24  |  5KB  |  205 lines

  1. #include "headers.h"
  2.  
  3. #include "buttonclass.h"
  4.  
  5. struct Library *IntuitionBase, *UtilityBase, *GfxBase, *DOSBase;
  6. extern struct Library *SysBase;
  7. struct Window *w;
  8. Class *buttonCl;
  9. struct Gadget *but;
  10. struct IntuiMessage *msg;
  11. struct Gadget *glist=NULL;
  12. struct DrawInfo *drinfo;
  13.  
  14. UWORD chip arrowData[] =
  15. {
  16. /* Plane 0 */
  17.     0x2000,0x6000,0xFE00,0x6000,0x2000,
  18. };
  19.  
  20. struct Image arrow =
  21. {
  22.     0, 0,            /* Upper left corner */
  23.     7, 5, 1,            /* Width, Height, Depth */
  24.     arrowData,        /* Image data */
  25.     0x0001, 0x0000,        /* PlanePick, PlaneOnOff */
  26.     NULL            /* Next image */
  27. };
  28.  
  29. UWORD chip arrowDatas[] =
  30. {
  31. /* Plane 0 */
  32.     0xFE00,0xFE00,0xFE00,0xFE00,0xFE00,
  33. /* Plane 1 */
  34.     0xDE00,0x9E00,0x0000,0x9E00,0xDE00,
  35. };
  36.  
  37. struct Image arrows =
  38. {
  39.     0, 0,            /* Upper left corner */
  40.     7, 5, 2,            /* Width, Height, Depth */
  41.     arrowDatas,        /* Image data */
  42.     0x0003, 0x0000,        /* PlanePick, PlaneOnOff */
  43.     NULL            /* Next image */
  44. };
  45.  
  46. /* boopsi.c */
  47. void MainLoop ( ULONG attr , ULONG value );
  48.  
  49. void main(int argc, char *argv[])
  50. {
  51.  
  52.  
  53.     SysBase=*((void **)4L);
  54.     if(IntuitionBase=OpenLibrary("intuition.library",37))
  55.         {
  56.         if(UtilityBase=OpenLibrary("utility.library",37))
  57.             {
  58.             if(GfxBase=OpenLibrary("graphics.library",37))
  59.                 {
  60.                 if(w=OpenWindowTags(NULL,
  61.                             WA_Flags,    WFLG_DEPTHGADGET | WFLG_DRAGBAR |
  62.                                         WFLG_CLOSEGADGET | WFLG_SIZEGADGET,
  63.                             WA_IDCMP,    IDCMP_CLOSEWINDOW | IDCMP_GADGETUP | IDCMP_GADGETDOWN | IDCMP_MOUSEBUTTONS | IDCMP_RAWKEY,
  64.                             WA_Top,        15,
  65.                             WA_Left,    150,
  66.                             WA_Width,    200,
  67.                             WA_Height,    300,
  68.                             WA_Activate,TRUE,
  69.                             WA_PubScreenName, (argc==2?argv[1]:NULL),
  70.                             TAG_END) )
  71.                     {
  72.                     if( drinfo=GetScreenDrawInfo(w->WScreen) )
  73.                         {
  74.                         WindowLimits(w, 150, 100, ~0, ~0);
  75.                         
  76.                         if(buttonCl = initButtonGadgetClass(IntuitionBase, UtilityBase, GfxBase))
  77.                             {
  78.                             struct Gadget *tmpgad,*gad;
  79.                             UWORD i;
  80.  
  81.                             tmpgad= (struct Gadget *)&glist;
  82.                             for(i=0;i<16;i++)
  83.                                 {
  84.                                 NewObject(buttonCl, NULL,
  85.                                         GA_ID,            1L,
  86.                                         GA_Top,            w->BorderTop + 2 + i*13,
  87.                                         GA_Left,        20,
  88.                                         GA_Width,        100,
  89.                                         GA_Height,        11,
  90.                                         GA_Immediate,    TRUE,
  91.                                         GA_RelVerify,    TRUE,
  92.                                         GA_Previous,    tmpgad,
  93.                                         BUT_Text,        "All",
  94.                                         BUT_Color,        (i<8?(i==1?0:1):i%8),
  95.                                         //BUT_Key,        'A',
  96.                                         BUT_BackColor,    (i<8?i%8:~0),
  97.                                         TAG_DONE);
  98.                                 }
  99.                             NewObject(buttonCl, NULL,
  100.                                     GA_ID,            1L,
  101.                                     GA_Top,            w->BorderTop + 2 + i*13,
  102.                                     GA_Left,        20,
  103.                                     GA_Width,        150,
  104.                                     GA_Height,        11,
  105.                                     GA_Immediate,    TRUE,
  106.                                     GA_RelVerify,    TRUE,
  107.                                     GA_Previous,    tmpgad,
  108.                                     GA_Disabled,    TRUE,
  109.                                     BUT_Text,        "Press a Key",
  110.                                     BUT_Key,        'P',
  111.                                     TAG_DONE);
  112.                             NewObject(buttonCl, NULL,
  113.                                     GA_ID,            1L,
  114.                                     GA_Top,            w->BorderTop + 2 + ++i*13,
  115.                                     GA_Left,        20,
  116.                                     GA_Width,        25,
  117.                                     GA_Height,        14,
  118.                                     GA_Immediate,    TRUE,
  119.                                     GA_RelVerify,    TRUE,
  120.                                     GA_Previous,    tmpgad,
  121.                                     BUT_Image,        &arrow,
  122.                                     BUT_SelectImage,&arrows,
  123.                                     TAG_DONE);
  124.  
  125.  
  126.                             AddGList(w, glist, -1, -1, NULL);
  127.                             RefreshGList(glist, w, NULL, -1);
  128.                             
  129.                             /*SetGadgetAttrs(gad, w, NULL,
  130.                                     GA_Disabled, TRUE,
  131.                                     TAG_DONE);*/
  132.                             
  133.                             MainLoop(TAG_DONE, 0);
  134.                             //MainLoop(BUT_Color, 2);
  135.                             //MainLoop(BUT_Text, (ULONG)"two three");
  136.  
  137.                             RemoveGList(w, glist, -1);
  138.  
  139.                             gad=glist;
  140.                             while(gad)
  141.                                 {
  142.                                 tmpgad= gad->NextGadget;
  143.                                 DisposeObject(gad);
  144.                                 gad= tmpgad;
  145.                                 }
  146.  
  147.                             freeButtonGadgetClass(buttonCl);
  148.                             }
  149.                         FreeScreenDrawInfo(w->WScreen,drinfo);
  150.                         }
  151.                     CloseWindow(w);
  152.                     }
  153.                 CloseLibrary(GfxBase);
  154.                 }
  155.             CloseLibrary(UtilityBase);
  156.             }
  157.         CloseLibrary(IntuitionBase);
  158.         }
  159. }
  160.  
  161. void MainLoop(ULONG attr, ULONG value)
  162. {
  163.   ULONG done=FALSE;
  164.  
  165.     SetGadgetAttrs(but, w, NULL, attr, value, TAG_DONE);
  166.  
  167.     while(done==FALSE)
  168.         {
  169.         WaitPort(w->UserPort);
  170.         while(msg=(struct IntuiMessage *)GetMsg(w->UserPort))
  171.             {
  172.             switch( msg->Class )
  173.                 {
  174.                 case IDCMP_GADGETDOWN:
  175.                     kprintf("Gadget down\n");
  176.                     break;
  177.                 case IDCMP_GADGETUP:
  178.                     kprintf("Gadget up\n");
  179.                     break;
  180.                 case IDCMP_MOUSEBUTTONS:
  181.                     kprintf("Mouse buttons\n");
  182.                     break;
  183.                 case IDCMP_CLOSEWINDOW:
  184.                     done=TRUE;
  185.                     break;
  186.                 case IDCMP_RAWKEY:
  187.                     if( msg->Code & IECODE_UP_PREFIX )
  188.                         {
  189.                         SetGadgetAttrs(glist, w, NULL,
  190.                             GA_Selected,    FALSE,
  191.                             TAG_DONE);
  192.                         }
  193.                     else if( !(msg->Qualifier & IEQUALIFIER_REPEAT) )
  194.                         {
  195.                         SetGadgetAttrs(glist, w, NULL,
  196.                             GA_Selected,    TRUE,
  197.                             TAG_DONE);
  198.                         }
  199.                     break;
  200.                 }
  201.             ReplyMsg(msg);
  202.             }
  203.         }
  204. }
  205.