home *** CD-ROM | disk | FTP | other *** search
/ Fresh Fish 5 / FreshFish_July-August1994.bin / bbs / gnu / aplusplus-1.01-src.lha / src / amiga / aplusplus-1.01 / libsource / GT_Gadget.cxx < prev    next >
C/C++ Source or Header  |  1994-05-09  |  4KB  |  117 lines

  1. /******************************************************************************
  2.  **
  3.  **    C++ Class Library for the Amiga© system software.
  4.  **
  5.  **    Copyright (C) 1994 by Armin Vogt  **  EMail: armin@uni-paderborn.de
  6.  **    All Rights Reserved.
  7.  **
  8.  **    $Source: apphome:APlusPlus/RCS/libsource/GT_Gadget.cxx,v $
  9.  **    $Revision: 1.8 $
  10.  **    $Date: 1994/05/09 21:18:12 $
  11.  **    $Author: Armin_Vogt $
  12.  **
  13.  ******************************************************************************/
  14.  
  15.  
  16. extern "C" {
  17. #ifdef __GNUG__
  18. #include <inline/intuition.h>
  19. #include <inline/gadtools.h>
  20. #endif
  21.  
  22. #ifdef __SASC
  23. #include <proto/intuition.h>
  24. #include <proto/gadtools.h>
  25. #endif
  26. }
  27. #include <string.h>
  28. #include <intuition/intuition.h>
  29. #include <APlusPlus/intuition/GT_Gadget.h>
  30.  
  31.  
  32. volatile static char rcs_id[] = "$Id: GT_Gadget.cxx,v 1.8 1994/05/09 21:18:12 Armin_Vogt Exp Armin_Vogt $";
  33.  
  34.  
  35. /*************************************************************************************************
  36.       GT_Gadget methods
  37.  *************************************************************************************************/
  38. struct NewGadget GT_Gadget::createNG;
  39.  
  40. GT_Gadget::GT_Gadget(GraphicObject *owner,ULONG createKind,AttrList& attrs)
  41.         : GadgetCV(owner,attrs)
  42. {
  43.     if (Ok())
  44.     {
  45.        kind = createKind;        
  46.        getHomeWindow()->modifyIDCMP(intuiAttrs().getTagData(GT_IDCMP,LISTVIEWIDCMP));
  47.         // per default all IDCMP flags needed by any GadTools gadget are set
  48.        setIOType(IOTYPE_GTGADGET);
  49.     }
  50. }
  51.  
  52.  
  53. GT_Gadget::~GT_Gadget()
  54. {
  55.    /* The gadget itself is freed by the GWindow. */
  56. }
  57.  
  58.  
  59. APTR GT_Gadget::redrawSelf(GWindow *homeWindow,ULONG& returnType)
  60. {
  61.     GadgetCV::redrawSelf(homeWindow,returnType);
  62.     
  63.    storeGadget(NULL);    // the old gadgets will be deleted with FreeGadgets() afterwards.
  64.    
  65.    _dout("fill createNG struct..\n");
  66.    // set the NewGadget structure with valid values according to the taglist.
  67.    createNG.ng_LeftEdge    = (WORD)iLeft();
  68.    createNG.ng_TopEdge     = (WORD)iTop();
  69.    createNG.ng_Width       = (WORD)iWidth();
  70.    createNG.ng_Height      = (WORD)iHeight();
  71.    createNG.ng_GadgetText  = (UBYTE*)intuiAttrs().getTagData(GA_Text,NULL);
  72.    createNG.ng_TextAttr    = (struct TextAttr*)intuiAttrs().getTagData(GT_TextAttr,
  73.                                         (ULONG)(const struct TextAttr*)homeWindow->getScreenFont());
  74.    createNG.ng_GadgetID    = (UWORD)intuiAttrs().getTagData(GA_ID,4711);
  75.    createNG.ng_Flags       = intuiAttrs().getTagData(GT_Flags,0);
  76.    createNG.ng_VisualInfo  = getHomeWindow()->screenC()->getVisualInfo();
  77.    createNG.ng_UserData    = (APTR)this;   // store reference to the GT_Gadget object in the gadget.
  78.  
  79.    if (storeGadget(CreateGadgetA(kind,getGT_Context(),&createNG,intuiAttrs())))
  80.    {
  81.       setIOType(IOTYPE_GTGADGET);
  82.       returnType = IOTYPE_GTGADGET;
  83.    }
  84.    else
  85.    {
  86.       returnType = NULL;
  87.       _ierror(GT_GADGET_CREATE_FAILED);
  88.         setIOType(IOTYPE_GTGADGET);    
  89.         // immediately set object to valid state to have GWindow call redrawSelf next time the window changes
  90.    }
  91.    _dout("\tdone.\n");
  92.     
  93.     return gadgetPtr();
  94. }
  95.  
  96. ULONG GT_Gadget::setAttributes(AttrList& attrs)
  97. {
  98.    if (notificationLoop()) return 0L;
  99.  
  100.     if (gadgetPtr())    // gadget available ?
  101.     {
  102.         GT_SetGadgetAttrsA(gadgetPtr(),(Window*)getHomeWindow()->windowPtr(),NULL,attrs);
  103.     }
  104.    return GadgetCV::setAttributes(attrs);
  105. }
  106.  
  107. ULONG GT_Gadget::getAttribute(Tag tag,ULONG& dataStore)
  108. {
  109.     return GadgetCV::getAttribute(tag,dataStore);
  110. }          
  111.  
  112. void GT_Gadget::callback(const IntuiMessageC *imsg)
  113. {
  114.    /* GadTools gadgets need specialized callback methods. 
  115.       These are defined in the specialized GT_??? class methods. */
  116. }
  117.