aboutsummaryrefslogtreecommitdiff
path: root/Src/Wasabi/Lib/com/dispatch_ifc.m
diff options
context:
space:
mode:
Diffstat (limited to 'Src/Wasabi/Lib/com/dispatch_ifc.m')
-rw-r--r--Src/Wasabi/Lib/com/dispatch_ifc.m99
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