home *** CD-ROM | disk | FTP | other *** search
/ Amiga ISO Collection / AmigaUtilCD2.iso / Programming / C / BK-SC1_4.DMS / in.adf / MUIClass.Lha / Include / Classes / TWiMUI / Group.h < prev    next >
Encoding:
C/C++ Source or Header  |  1996-06-16  |  4.2 KB  |  155 lines

  1. //
  2. //  $VER: Group.h       1.0 (16 Jun 1996)
  3. //
  4. //    c 1996 Thomas Wilhelmi
  5. //
  6. //
  7. // Address : Taunusstrasse 14
  8. //           61138 Niederdorfelden
  9. //           Germany
  10. //
  11. //  E-Mail : willi@twi.rhein-main.de
  12. //
  13. //   Phone : +49 (0)6101 531060
  14. //   Fax   : +49 (0)6101 531061
  15. //
  16. //
  17. //  $HISTORY:
  18. //
  19. //  16 Jun 1996 :   1.0 : first public Release
  20. //
  21.  
  22. #ifndef CPP_TWIMUI_GROUP_H
  23. #define CPP_TWIMUI_GROUP_H
  24.  
  25. #ifndef CPP_TWIMUI_AREA_H
  26. #include <classes/twimui/area.h>
  27. #endif
  28.  
  29. #ifndef EXEC_LISTS_H
  30. #include <exec/lists.h>
  31. #endif
  32.  
  33. #ifndef UTILITY_HOOKS_H
  34. #include <utility/hooks.h>
  35. #endif
  36.  
  37. class MUIGroupLayoutHook
  38.     {
  39.     private:
  40.         struct Hook layouthook;
  41.         static ULONG LayoutHookEntry(register __a0 struct Hook *, register __a2 Object *, register __a1 struct MUI_LayoutMsg *);
  42.         virtual ULONG LayoutHookFunc(struct Hook *, Object *, struct MUI_LayoutMsg *);
  43.     protected:
  44.         MUIGroupLayoutHook();
  45.         MUIGroupLayoutHook(const MUIGroupLayoutHook &p);
  46.         ~MUIGroupLayoutHook();
  47.         MUIGroupLayoutHook &operator= (const MUIGroupLayoutHook &);
  48.     public:
  49.         struct Hook *layout() { return(&layouthook); };
  50.     };
  51.  
  52. class MUIGroup
  53.     :   public MUIArea,
  54.         public MUIGroupLayoutHook
  55.     {
  56.     protected:
  57.         MUIGroup(const STRPTR cl)
  58.             :   MUIArea(cl),
  59.                 MUIGroupLayoutHook()
  60.             { };
  61.     public:
  62.         MUIGroup(const struct TagItem *t)
  63.             :   MUIArea(MUIC_Group),
  64.                 MUIGroupLayoutHook()
  65.             { init(t); };
  66.         MUIGroup(const Tag, ...);
  67.         MUIGroup()
  68.             :   MUIArea(MUIC_Group),
  69.                 MUIGroupLayoutHook()
  70.             { };
  71.         MUIGroup(MUIGroup &p)
  72.             :   MUIArea(p),
  73.                 MUIGroupLayoutHook(p)
  74.             { };
  75.         virtual ~MUIGroup();
  76.         MUIGroup &operator= (MUIGroup &);
  77.         void ActivePage(const LONG p) { set(MUIA_Group_ActivePage,(ULONG)p); };
  78.         void ActivePageFirst() { set(MUIA_Group_ActivePage,MUIV_Group_ActivePage_First); };
  79.         void ActivePageLast() { set(MUIA_Group_ActivePage,MUIV_Group_ActivePage_Last); };
  80.         void ActivePagePrev() { set(MUIA_Group_ActivePage,MUIV_Group_ActivePage_Prev); };
  81.         void ActivePageNext() { set(MUIA_Group_ActivePage,MUIV_Group_ActivePage_Next); };
  82.         LONG ActivePage() const { return((LONG)get(MUIA_Group_ActivePage,0L)); };
  83.         struct List *ChildList() const { return((struct List *)get(MUIA_Group_ChildList,NULL)); };
  84.         void Columns(const LONG p) { set(MUIA_Group_Columns,(ULONG)p); };
  85.         void HorizSpacing(const LONG p) { set(MUIA_Group_HorizSpacing,(ULONG)p); };
  86.         void Rows(const LONG p) { set(MUIA_Group_Rows,(ULONG)p); };
  87.         void VertSpacing(const LONG p) { set(MUIA_Group_VertSpacing,(ULONG)p); };
  88.         void ExitChange() { dom(MUIM_Group_ExitChange,0); };
  89.         APTR InitChange() { return((APTR)dom(MUIM_Group_InitChange,0)); };
  90.         void Add(MUIGroup &p) { dom(OM_ADDMEMBER,(ULONG)((Object *)p)); };
  91.         void Rem(MUIGroup &p) { dom(OM_REMMEMBER,(ULONG)((Object *)p)); };
  92.     };
  93.  
  94. class MUIGroupV : public MUIGroup
  95.     {
  96.     public:
  97.         MUIGroupV(const struct TagItem *t)
  98.             :   MUIGroup(MUIA_Group_Horiz,FALSE,TAG_MORE,t)
  99.             { };
  100.         MUIGroupV(const Tag, ...);
  101.         MUIGroupV()
  102.             :   MUIGroup(MUIA_Group_Horiz,FALSE,TAG_DONE)
  103.             { };
  104.         MUIGroupV(MUIGroupV &p) : MUIGroup(p) { };
  105.         virtual ~MUIGroupV();
  106.         MUIGroupV &operator= (MUIGroupV &);
  107.     };
  108.  
  109. class MUIGroupH : public MUIGroup
  110.     {
  111.     public:
  112.         MUIGroupH(const struct TagItem *t)
  113.             :   MUIGroup(MUIA_Group_Horiz,TRUE,TAG_MORE,t)
  114.             { };
  115.         MUIGroupH(const Tag, ...);
  116.         MUIGroupH()
  117.             :   MUIGroup(MUIA_Group_Horiz,TRUE,TAG_DONE)
  118.             { };
  119.         MUIGroupH(MUIGroupH &p) : MUIGroup(p) { };
  120.         virtual ~MUIGroupH();
  121.         MUIGroupH &operator= (MUIGroupH &);
  122.     };
  123.  
  124. class MUIGroupCol : public MUIGroup
  125.     {
  126.     public:
  127.         MUIGroupCol(const LONG c, const struct TagItem *t)
  128.             :   MUIGroup(MUIA_Group_Columns,c,TAG_MORE,t)
  129.             { };
  130.         MUIGroupCol(const LONG, const Tag, ...);
  131.         MUIGroupCol(const LONG c = 0)
  132.             :   MUIGroup(MUIA_Group_Columns,c,TAG_DONE)
  133.             { };
  134.         MUIGroupCol(MUIGroupCol &p) : MUIGroup(p) { };
  135.         virtual ~MUIGroupCol();
  136.         MUIGroupCol &operator= (MUIGroupCol &);
  137.     };
  138.  
  139. class MUIGroupRow : public MUIGroup
  140.     {
  141.     public:
  142.         MUIGroupRow(const LONG r, const struct TagItem *t)
  143.             :   MUIGroup(MUIA_Group_Rows,r,TAG_MORE,t)
  144.             { };
  145.         MUIGroupRow(const LONG, const Tag, ...);
  146.         MUIGroupRow(const LONG r = 0)
  147.             :   MUIGroup(MUIA_Group_Rows,r,TAG_DONE)
  148.             { };
  149.         MUIGroupRow(MUIGroupRow &p) : MUIGroup(p) { };
  150.         virtual ~MUIGroupRow();
  151.         MUIGroupRow &operator= (MUIGroupRow &p);
  152.     };
  153.  
  154. #endif
  155.