winamp/Src/Wasabi/Lib/com/dispatch_ifc.m
2024-09-24 14:54:57 +02:00

99 lines
2.3 KiB
Objective-C

/**
* 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