diff options
Diffstat (limited to 'Src/Wasabi/Lib/com/dispatch_ifc.m')
-rw-r--r-- | Src/Wasabi/Lib/com/dispatch_ifc.m | 99 |
1 files changed, 99 insertions, 0 deletions
diff --git a/Src/Wasabi/Lib/com/dispatch_ifc.m b/Src/Wasabi/Lib/com/dispatch_ifc.m new file mode 100644 index 00000000..d87b8612 --- /dev/null +++ b/Src/Wasabi/Lib/com/dispatch_ifc.m @@ -0,0 +1,99 @@ +/** + * dispatch_ifc.m + * + * defines a function interface for dispatchable messaging + * define DISPATCH before loading if you are a message reciever + * + * @author mpdeimos + * @date 2008/10/25 + * @version 0.1 + */ + +#ifndef included +#error This script can only be compiled as a #include +#endif + +Function initDispatcher(); // Call this function on startup to set the parent layout as dispatcher +Function setDispatcher(GuiObject dispatcher); // Call this function instead if you want to define a custom + +#ifndef DISPATCH +// Sends a message to the parent layout +Function int sendMessage(int message, int i0, int i1, int i2, String s0, String s1, GuiObject obj); +Function int sendMessageI(int message, int i0); +Function int sendMessageI2(int message, int i0, int i1); +Function int sendMessageS(int message, String s0); +Function int sendMessageO(int message, GuiObject obj); +Function int sendMessageV(int message); +#endif + +#ifdef DISPATCH +// Recieves Messages +Function int onMessage(int message, int i0, int i1, int i2, String s0, String s1, GuiObject obj); +int onMessage(int message, int i0, int i1, int i2, String s0, String s1, GuiObject obj) {} // STUB! Implement this in your code +#endif + + +/// +/// IMPLEMENTATION +/// + + +Global GuiObject dispatcher; + +initDispatcher() +{ + dispatcher = getScriptGroup().getParentLayout(); +} + +setDispatcher(GuiObject go) +{ + dispatcher = go; +} + + +#ifndef DISPATCH + +int sendMessage(int message, int i0, int i1, int i2, String s0, String s1, GuiObject obj) +{ + return dispatcher.onAction (s0, s1, message, i0, i1, i2, obj); +} + +int sendMessageI(int message, int i0) +{ + GuiObject obj = NULL; + return sendMessage(message, i0, i1, 0, "", "", obj); +} + +int sendMessageI2(int message, int i0, int i1) +{ + GuiObject obj = NULL; + return sendMessage(message, i0, 0, 0, "", "", obj); +} + +int sendMessageS(int message, String s0) +{ + GuiObject obj = NULL; + return sendMessage(message, 0, 0, 0, s0, "", obj); +} + +int sendMessageO(int message, GuiObject obj) +{ + return sendMessage(message, 0, 0, 0, "", "", obj); +} + +int sendMessageV(int messagej) +{ + GuiObject obj = NULL; + return sendMessage(message, 0, 0, 0, "", "", obj); +} + +#endif + +#ifdef DISPATCH + +dispatcher.onAction(String action, String param, Int message, int y, int p1, int p2, GuiObject source) +{ + return onMessage(message, y, p1, p2, action, param, source); +} + +#endif
\ No newline at end of file |