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 / Notify.h < prev    next >
Encoding:
C/C++ Source or Header  |  1996-07-01  |  9.9 KB  |  348 lines

  1. //
  2. //  $VER: Notify.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_NOTIFY_H
  23. #define CPP_TWIMUI_NOTIFY_H
  24.  
  25. #ifndef CPP_TWIMUI_MISC_H
  26. #include <classes/twimui/misc.h>
  27. #endif
  28.  
  29. #ifndef    INTUITION_CLASSUSR_H
  30. #include <intuition/classusr.h>
  31. #endif
  32.  
  33. #ifndef LIBRARIES_MUI_H
  34. #include <libraries/mui.h>
  35. #endif
  36.  
  37. #ifndef _INCLUDE_PRAGMA_MUIMASTER_LIB_H
  38. #include <pragma/muimaster_lib.h>
  39. #endif
  40.  
  41. #ifndef WORKBENCH_WORKBENCH_H
  42. #include <workbench/workbench.h>
  43. #endif
  44.  
  45. const ULONG MUISERIALNR_WILLI = (ULONG)0x06af;
  46. const ULONG TAGBASE_WILLI     = (TAG_USER | ( MUISERIALNR_WILLI << 16));
  47.  
  48. const ULONG MUIA_TWiClass_AppClass = (TAGBASE_WILLI | 0xffff);
  49. const ULONG MUIA_TWiClass_WinClass = (TAGBASE_WILLI | 0xfffe);
  50.  
  51. inline ULONG MakeId(const UBYTE a, const UBYTE b, const UBYTE c, const UBYTE d)
  52.     {
  53.     return((ULONG)(a)<<24 | (ULONG)(b)<<16 | (ULONG)(c)<<8 | (ULONG)(d));
  54.     };
  55.  
  56. inline Object *MakeLabel(const STRPTR lab)
  57.     {
  58.     return(MUI_MakeObject(MUIO_Label,lab,0));
  59.     };
  60.  
  61. inline Object *MakeLabel1(const STRPTR lab)
  62.     {
  63.     return(MUI_MakeObject(MUIO_Label,lab,MUIO_Label_SingleFrame));
  64.     };
  65.  
  66. inline Object *MakeLabel2(const STRPTR lab)
  67.     {
  68.     return(MUI_MakeObject(MUIO_Label,lab,MUIO_Label_DoubleFrame));
  69.     };
  70.  
  71. inline Object *MakeLLabel(const STRPTR lab)
  72.     {
  73.     return(MUI_MakeObject(MUIO_Label,lab,MUIO_Label_LeftAligned));
  74.     };
  75.  
  76. inline Object *MakeLLabel1(const STRPTR lab)
  77.     {
  78.     return(MUI_MakeObject(MUIO_Label,lab,MUIO_Label_LeftAligned|MUIO_Label_SingleFrame));
  79.     };
  80.  
  81. inline Object *MakeLLabel2(const STRPTR lab)
  82.     {
  83.     return(MUI_MakeObject(MUIO_Label,lab,MUIO_Label_LeftAligned|MUIO_Label_DoubleFrame));
  84.     };
  85.  
  86. inline Object *MakeCLabel(const STRPTR lab)
  87.     {
  88.     return(MUI_MakeObject(MUIO_Label,lab,MUIO_Label_Centered));
  89.     };
  90.  
  91. inline Object *MakeCLabel1(const STRPTR lab)
  92.     {
  93.     return(MUI_MakeObject(MUIO_Label,lab,MUIO_Label_Centered|MUIO_Label_SingleFrame));
  94.     };
  95.  
  96. inline Object *MakeCLabel2(const STRPTR lab)
  97.     {
  98.     return(MUI_MakeObject(MUIO_Label,lab,MUIO_Label_Centered|MUIO_Label_DoubleFrame));
  99.     };
  100.  
  101. inline Object *MakeFreeLabel(const STRPTR lab)
  102.     {
  103.     return(MUI_MakeObject(MUIO_Label,lab,MUIO_Label_FreeVert));
  104.     };
  105.  
  106. inline Object *MakeFreeLabel1(const STRPTR lab)
  107.     {
  108.     return(MUI_MakeObject(MUIO_Label,lab,MUIO_Label_FreeVert|MUIO_Label_SingleFrame));
  109.     };
  110.  
  111. inline Object *MakeFreeLabel2(const STRPTR lab)
  112.     {
  113.     return(MUI_MakeObject(MUIO_Label,lab,MUIO_Label_FreeVert|MUIO_Label_DoubleFrame));
  114.     };
  115.  
  116. inline Object *MakeFreeLLabel(const STRPTR lab)
  117.     {
  118.     return(MUI_MakeObject(MUIO_Label,lab,MUIO_Label_FreeVert|MUIO_Label_LeftAligned));
  119.     };
  120.  
  121. inline Object *MakeFreeLLabel1(const STRPTR lab)
  122.     {
  123.     return(MUI_MakeObject(MUIO_Label,lab,MUIO_Label_FreeVert|MUIO_Label_LeftAligned|MUIO_Label_SingleFrame));
  124.     };
  125.  
  126. inline Object *MakeFreeLLabel2(const STRPTR lab)
  127.     {
  128.     return(MUI_MakeObject(MUIO_Label,lab,MUIO_Label_FreeVert|MUIO_Label_LeftAligned|MUIO_Label_DoubleFrame));
  129.     };
  130.  
  131. inline Object *MakeFreeCLabel(const STRPTR lab)
  132.     {
  133.     return(MUI_MakeObject(MUIO_Label,lab,MUIO_Label_FreeVert|MUIO_Label_Centered));
  134.     };
  135.  
  136. inline Object *MakeFreeCLabel1(const STRPTR lab)
  137.     {
  138.     return(MUI_MakeObject(MUIO_Label,lab,MUIO_Label_FreeVert|MUIO_Label_Centered|MUIO_Label_SingleFrame));
  139.     };
  140.  
  141. inline Object *MakeFreeCLabel2(const STRPTR lab)
  142.     {
  143.     return(MUI_MakeObject(MUIO_Label,lab,MUIO_Label_FreeVert|MUIO_Label_Centered|MUIO_Label_DoubleFrame));
  144.     };
  145.  
  146. inline Object *MakeKeyLabel(const STRPTR lab, const UBYTE key)
  147.     {
  148.     return(MUI_MakeObject(MUIO_Label,lab,key));
  149.     };
  150.  
  151. inline Object *MakeKeyLabel1(const STRPTR lab, const UBYTE key)
  152.     {
  153.     return(MUI_MakeObject(MUIO_Label,lab,MUIO_Label_SingleFrame|(key)));
  154.     };
  155.  
  156. inline Object *MakeKeyLabel2(const STRPTR lab, const UBYTE key)
  157.     {
  158.     return(MUI_MakeObject(MUIO_Label,lab,MUIO_Label_DoubleFrame|(key)));
  159.     };
  160.  
  161. inline Object *MakeKeyLLabel(const STRPTR lab, const UBYTE key)
  162.     {
  163.     return(MUI_MakeObject(MUIO_Label,lab,MUIO_Label_LeftAligned|(key)));
  164.     };
  165.  
  166. inline Object *MakeKeyLLabel1(const STRPTR lab, const UBYTE key)
  167.     {
  168.     return(MUI_MakeObject(MUIO_Label,lab,MUIO_Label_LeftAligned|MUIO_Label_SingleFrame|(key)));
  169.     };
  170.  
  171. inline Object *MakeKeyLLabel2(const STRPTR lab, const UBYTE key)
  172.     {
  173.     return(MUI_MakeObject(MUIO_Label,lab,MUIO_Label_LeftAligned|MUIO_Label_DoubleFrame|(key)));
  174.     };
  175.  
  176. inline Object *MakeKeyCLabel(const STRPTR lab, const UBYTE key)
  177.     {
  178.     return(MUI_MakeObject(MUIO_Label,lab,MUIO_Label_Centered|(key)));
  179.     };
  180.  
  181. inline Object *MakeKeyCLabel1(const STRPTR lab, const UBYTE key)
  182.     {
  183.     return(MUI_MakeObject(MUIO_Label,lab,MUIO_Label_Centered|MUIO_Label_SingleFrame|(key)));
  184.     };
  185.  
  186. inline Object *MakeKeyCLabel2(const STRPTR lab, const UBYTE key)
  187.     {
  188.     return(MUI_MakeObject(MUIO_Label,lab,MUIO_Label_Centered|MUIO_Label_DoubleFrame|(key)));
  189.     };
  190.  
  191. inline Object *MakeFreeKeyLabel(const STRPTR lab, const UBYTE key)
  192.     {
  193.     return(MUI_MakeObject(MUIO_Label,lab,MUIO_Label_FreeVert|(key)));
  194.     };
  195.  
  196. inline Object *MakeFreeKeyLabel1(const STRPTR lab, const UBYTE key)
  197.     {
  198.     return(MUI_MakeObject(MUIO_Label,lab,MUIO_Label_FreeVert|MUIO_Label_SingleFrame|(key)));
  199.     };
  200.  
  201. inline Object *MakeFreeKeyLabel2(const STRPTR lab, const UBYTE key)
  202.     {
  203.     return(MUI_MakeObject(MUIO_Label,lab,MUIO_Label_FreeVert|MUIO_Label_DoubleFrame|(key)));
  204.     };
  205.  
  206. inline Object *MakeFreeKeyLLabel(const STRPTR lab, const UBYTE key)
  207.     {
  208.     return(MUI_MakeObject(MUIO_Label,lab,MUIO_Label_FreeVert|MUIO_Label_LeftAligned|(key)));
  209.     };
  210.  
  211. inline Object *MakeFreeKeyLLabel1(const STRPTR lab, const UBYTE key)
  212.     {
  213.     return(MUI_MakeObject(MUIO_Label,lab,MUIO_Label_FreeVert|MUIO_Label_LeftAligned|MUIO_Label_SingleFrame|(key)));
  214.     };
  215.  
  216. inline Object *MakeFreeKeyLLabel2(const STRPTR lab, const UBYTE key)
  217.     {
  218.     return(MUI_MakeObject(MUIO_Label,lab,MUIO_Label_FreeVert|MUIO_Label_LeftAligned|MUIO_Label_DoubleFrame|(key)));
  219.     };
  220.  
  221. inline Object *MakeFreeKeyCLabel(const STRPTR lab, const UBYTE key)
  222.     {
  223.     return(MUI_MakeObject(MUIO_Label,lab,MUIO_Label_FreeVert|MUIO_Label_Centered|(key)));
  224.     };
  225.  
  226. inline Object *MakeFreeKeyCLabel1(const STRPTR lab, const UBYTE key)
  227.     {
  228.     return(MUI_MakeObject(MUIO_Label,lab,MUIO_Label_FreeVert|MUIO_Label_Centered|MUIO_Label_SingleFrame|(key)));
  229.     };
  230.  
  231. inline Object *MakeFreeKeyCLabel2(const STRPTR lab, const UBYTE key)
  232.     {
  233.     return(MUI_MakeObject(MUIO_Label,lab,MUIO_Label_FreeVert|MUIO_Label_Centered|MUIO_Label_DoubleFrame|(key)));
  234.     };
  235.  
  236. inline Object *MakeHBar(const ULONG size)
  237.     {
  238.     return(MUI_MakeObject(MUIO_HBar,size));
  239.     };
  240.  
  241. inline Object *MakeVBar(const ULONG size)
  242.     {
  243.     return(MUI_MakeObject(MUIO_VBar,size));
  244.     };
  245.  
  246. inline Object *MakeHSpace(const ULONG size)
  247.     {
  248.     return(MUI_MakeObject(MUIO_HSpace,size));
  249.     };
  250.  
  251. inline Object *MakeVSpace(const ULONG size)
  252.     {
  253.     return(MUI_MakeObject(MUIO_VSpace,size));
  254.     };
  255.  
  256. class MUIT
  257.     {
  258.     protected:
  259.         LONG Typ;
  260.     public:
  261.         MUIT(const LONG t) : Typ(t) { };
  262.         MUIT(const MUIT &t) : Typ(t.Typ) { };
  263.         ~MUIT() { };
  264.         LONG typ() const { return(Typ); };
  265.     };
  266.  
  267. class MUILabelHelp
  268.     {
  269.     private:
  270.         TWiStr labstr;
  271.         UBYTE cc;
  272.     protected:
  273.         MUILabelHelp(const STRPTR);
  274.         MUILabelHelp(const MUILabelHelp &p) : labstr(p.labstr), cc(p.cc) { };
  275.         virtual ~MUILabelHelp();
  276.         MUILabelHelp &operator=(const MUILabelHelp &);
  277.         TWiStr &gLab() { return(labstr); };
  278.         UBYTE gCC() { return(cc); };
  279.     };
  280.  
  281. class MUIApplication;
  282.  
  283. class MUINotify
  284.     {
  285.     private:
  286.         static TWiArrayList<MUI_CustomClass *> ClassArray;
  287.         static ULONG Counter;
  288.         static ULONG dispatcher(register __a0 struct IClass *, register __a2 Object *, register __a1 Msg);
  289.  
  290.     private:
  291.         TWiTag Tags;
  292.         TWiStr ClassName;
  293.         struct MUI_CustomClass *mcc;
  294.         ULONG *thisCounter;
  295.     protected:
  296.         Object *Obj;
  297.         Object *Par;
  298.  
  299.     private:
  300.         void terminate();
  301.         virtual ULONG Dispatch(struct IClass *, Object *, Msg);
  302.     protected:
  303.         MUINotify(const STRPTR cl);
  304.         MUINotify(const MUINotify &);
  305.         virtual ~MUINotify();
  306.         MUINotify &operator= (const MUINotify &);
  307.         void set(const Tag, const ULONG);
  308.         ULONG get(const Tag, const ULONG p = NULL) const;
  309.         ULONG dom(const Tag);
  310.         ULONG dom(const Tag, ULONG);
  311.         ULONG dom(const Tag, ULONG, ULONG);
  312.         ULONG dom(const Tag, ULONG, ULONG, ULONG);
  313.         ULONG dom(const Tag, ULONG, ULONG, ULONG, ULONG);
  314.         void init(const struct TagItem *);
  315.         void init(const Tag, ...);
  316.         virtual ULONG Dispose(struct IClass *, Object *, Msg);
  317.         virtual ULONG UserDispatch(struct IClass *, Object *, Msg);
  318.     public:
  319.         BOOL Create(const struct TagItem *t = NULL);
  320.         BOOL Create(const Tag, ...);
  321.         Object *object() const { return(Obj); };
  322.         operator Object*() const { return(Obj); };
  323.         Object *AppObject() const { return((Object *)get(MUIA_ApplicationObject)); };
  324.         MUIApplication *AppClass() const;
  325.         struct AppMessage *AppMessage() const { return((struct AppMessage *)get(MUIA_AppMessage)); };
  326.         void HelpLine(const LONG p) { set(MUIA_HelpLine,(ULONG)p); };
  327.         LONG HelpLine() const { return((LONG)get(MUIA_HelpLine,0L)); };
  328.         void HelpNode(const STRPTR p) { set(MUIA_HelpNode,(ULONG)p); };
  329.         STRPTR HelpNode() const { return((STRPTR)get(MUIA_HelpNode)); };
  330.         Object *Parent() const { return((Object *)get(MUIA_Parent)); };
  331.         LONG Revision() const { return((LONG)get(MUIA_Revision,0L)); };
  332.         void UserData(const ULONG p) { set(MUIA_UserData,p); };
  333.         ULONG UserData() const { return(get(MUIA_UserData,0L)); };
  334.         LONG VersionN() const { return((LONG)get(MUIA_Version,0L)); };
  335.         void CallHook(struct Hook *h, ULONG c = 0UL, ...);
  336.         Object *FindUData(ULONG p) { return((Object *)dom(MUIM_FindUData,p)); };
  337.         ULONG GetUData(ULONG p1, ULONG *p2) { return(dom(MUIM_GetUData,p1,(ULONG)p2)); };
  338.         void KillNotify(ULONG p) { dom(MUIM_KillNotify,p); };
  339.         void NoNotifySet(ULONG p1, ULONG p2) { dom(MUIM_NoNotifySet,p1,p2); };
  340.         void Notify(const Tag t, ULONG v, Object *o, ULONG c = 0UL, ...);
  341.         void Set(ULONG p1, ULONG p2) { dom(MUIM_Set,p1,p2); };
  342.         void SetAsString(Tag t, STRPTR f, ULONG c = 0UL, ...);
  343.         void SetUData(ULONG p1, ULONG p2, ULONG p3) { dom(MUIM_SetUData,p1,p2,p3); };
  344.         void SetUDataOnce(ULONG p1, ULONG p2, ULONG p3) { dom(MUIM_SetUDataOnce,p1,p2,p3); };
  345.     };
  346.  
  347. #endif
  348.