<HTML ><HEAD ><TITLE >bonobo-listener</TITLE ><META NAME="GENERATOR" CONTENT="Modular DocBook HTML Stylesheet Version 1.64 "><LINK REL="HOME" TITLE="Bonobo API Reference Manual" HREF="book1.html"><LINK REL="UP" TITLE="Notification and EventSources" HREF="bonobo-notification.html"><LINK REL="PREVIOUS" TITLE="bonobo-event-source" HREF="bonobo-bonobo-event-source.html"><LINK REL="NEXT" TITLE="Storage and Persistance" HREF="bonobo-storage.html"></HEAD ><BODY CLASS="REFENTRY" BGCOLOR="#FFFFFF" TEXT="#000000" LINK="#0000FF" VLINK="#840084" ALINK="#0000FF" ><DIV CLASS="NAVHEADER" ><TABLE WIDTH="100%" BORDER="0" BGCOLOR="#000000" CELLPADDING="1" CELLSPACING="0" ><TR ><TH COLSPAN="4" ALIGN="center" ><FONT COLOR="#FFFFFF" SIZE="5" >Bonobo API Reference Manual</FONT ></TH ></TR ><TR ><TD WIDTH="25%" BGCOLOR="#C00000" ALIGN="left" ><A HREF="bonobo-bonobo-event-source.html" ><FONT COLOR="#FFFFFF" SIZE="3" ><B ><<< Previous Page</B ></FONT ></A ></TD ><TD WIDTH="25%" BGCOLOR="#0000C0" ALIGN="center" ><FONT COLOR="#FFFFFF" SIZE="3" ><B ><A HREF="book1.html" ><FONT COLOR="#FFFFFF" SIZE="3" ><B >Home</B ></FONT ></A ></B ></FONT ></TD ><TD WIDTH="25%" BGCOLOR="#00C000" ALIGN="center" ><FONT COLOR="#FFFFFF" SIZE="3" ><B ><A HREF="bonobo-notification.html" ><FONT COLOR="#FFFFFF" SIZE="3" ><B >Up</B ></FONT ></A ></B ></FONT ></TD ><TD WIDTH="25%" BGCOLOR="#C00000" ALIGN="right" ><A HREF="bonobo-storage.html" ><FONT COLOR="#FFFFFF" SIZE="3" ><B >Next Page >>></B ></FONT ></A ></TD ></TR ></TABLE ></DIV ><H1 ><A NAME="BONOBO-BONOBO-LISTENER" >bonobo-listener</A ></H1 ><DIV CLASS="REFNAMEDIV" ><A NAME="AEN5694" ></A ><H2 >Name</H2 >bonobo-listener -- An Event Listener (an implementation of Bonobo::Listener)</DIV ><DIV CLASS="REFSYNOPSISDIV" ><A NAME="AEN5697" ></A ><H2 >Synopsis</H2 ><TABLE BORDER="0" BGCOLOR="#D6E8FF" WIDTH="100%" CELLPADDING="6" ><TR ><TD ><PRE CLASS="SYNOPSIS" > #define <A HREF="bonobo-bonobo-listener.html#BONOBO-LISTENER-TYPE-CAPS" >BONOBO_LISTENER_TYPE</A > #define <A HREF="bonobo-bonobo-listener.html#BONOBO-LISTENER-CAPS" >BONOBO_LISTENER</A > (o) #define <A HREF="bonobo-bonobo-listener.html#BONOBO-IS-LISTENER-CAPS" >BONOBO_IS_LISTENER</A > (o) #define <A HREF="bonobo-bonobo-listener.html#BONOBO-LISTENER-CLASS-CAPS" >BONOBO_LISTENER_CLASS</A > (k) #define <A HREF="bonobo-bonobo-listener.html#BONOBO-IS-LISTENER-CLASS-CAPS" >BONOBO_IS_LISTENER_CLASS</A > (k) typedef <A HREF="bonobo-bonobo-listener.html#BONOBOLISTENER" >BonoboListener</A >; typedef <A HREF="bonobo-bonobo-listener.html#BONOBOLISTENERCLASS" >BonoboListenerClass</A >; void (<A HREF="bonobo-bonobo-listener.html#BONOBOLISTENERCALLBACKFN" >*BonoboListenerCallbackFn</A >) (<A HREF="bonobo-bonobo-listener.html#BONOBOLISTENER" >BonoboListener</A > *listener, char *event_name, <GTKDOCLINK HREF="CORBA-ANY" >CORBA_any</GTKDOCLINK > *any, <GTKDOCLINK HREF="CORBA-ENVIRONMENT" >CORBA_Environment</GTKDOCLINK > *ev, <GTKDOCLINK HREF="GPOINTER" >gpointer</GTKDOCLINK > user_data); <A HREF="bonobo-bonobo-listener.html#BONOBOLISTENER" >BonoboListener</A >* <A HREF="bonobo-bonobo-listener.html#BONOBO-LISTENER-NEW" >bonobo_listener_new</A > (<A HREF="bonobo-bonobo-listener.html#BONOBOLISTENERCALLBACKFN" >BonoboListenerCallbackFn</A > event_callback, <GTKDOCLINK HREF="GPOINTER" >gpointer</GTKDOCLINK > user_data); char* <A HREF="bonobo-bonobo-listener.html#BONOBO-EVENT-KIND" >bonobo_event_kind</A > (const char *event_name); char* <A HREF="bonobo-bonobo-listener.html#BONOBO-EVENT-TYPE" >bonobo_event_type</A > (const char *event_name); char* <A HREF="bonobo-bonobo-listener.html#BONOBO-EVENT-SUBTYPE" >bonobo_event_subtype</A > (const char *event_name); char* <A HREF="bonobo-bonobo-listener.html#BONOBO-EVENT-IDL-PATH" >bonobo_event_idl_path</A > (const char *event_name); char* <A HREF="bonobo-bonobo-listener.html#BONOBO-EVENT-MAKE-NAME" >bonobo_event_make_name</A > (const char *idl_path, const char *kind, const char *subtype); </PRE ></TD ></TR ></TABLE ></DIV ><DIV CLASS="REFSECT1" ><A NAME="AEN5721" ></A ><H2 >Object Hierarchy</H2 ><TABLE BORDER="0" BGCOLOR="#D6E8FF" WIDTH="100%" CELLPADDING="6" ><TR ><TD ><PRE CLASS="SYNOPSIS" > <GTKDOCLINK HREF="GTKOBJECT" >GtkObject</GTKDOCLINK > +----<A HREF="bonobo-bonobo-object.html#BONOBOOBJECT" >BonoboObject</A > +----<GTKDOCLINK HREF="BONOBOXOBJECT" >BonoboXObject</GTKDOCLINK > +----BonoboListener</PRE ></TD ></TR ></TABLE ></DIV ><DIV CLASS="REFSECT1" ><A NAME="AEN5727" ></A ><H2 >Signal Prototypes</H2 ><TABLE BORDER="0" BGCOLOR="#D6E8FF" WIDTH="100%" CELLPADDING="6" ><TR ><TD ><PRE CLASS="SYNOPSIS" > "<A HREF="bonobo-bonobo-listener.html#BONOBOLISTENER-EVENT-NOTIFY" >event-notify</A >" void user_function (<A HREF="bonobo-bonobo-listener.html#BONOBOLISTENER" >BonoboListener</A > *bonobolistener, <GTKDOCLINK HREF="GPOINTER" >gpointer</GTKDOCLINK > arg1, <GTKDOCLINK HREF="GPOINTER" >gpointer</GTKDOCLINK > arg2, <GTKDOCLINK HREF="GPOINTER" >gpointer</GTKDOCLINK > arg3, <GTKDOCLINK HREF="GPOINTER" >gpointer</GTKDOCLINK > user_data);</PRE ></TD ></TR ></TABLE ></DIV ><DIV CLASS="REFSECT1" ><A NAME="AEN5736" ></A ><H2 >Description</H2 ><P > The BonoboListener object is a CORBA server used to receive events emitted by a remote Bonobo::EventSource server. The combination EventSource/Listener is used to notify one or more client applications of events that happen in a component. Think of the EventSource/Listener as a notification/callback system that allows multiple clients to be informed of events.</P ><P > Once created, the BonoboListener object needs to be attached to a remote IDL:Bonobo/EventSource:1.0 server. This is done by passing the CORBA Object reference of the BonoboListener to the addListener method in the IDL:Bonobo/EventSource:1.0. </P ><P > The BonoboListener object allows the user to specify a callback function to be invoked when an event is emitted by the IDL:Bonobo/EventSource:1.0 server. The BonoboListener object also emits the "event_notify" Gtk+ signal, which allows you to connect multiple code segments to the same event notification. </P ><P > Here is a sample client application that registers interest in being notified of events from the fictional "Keyboard" event source: <DIV CLASS="INFORMALEXAMPLE" ><A NAME="AEN5742" ></A ><P ></P ><TABLE BORDER="0" BGCOLOR="#D8F8D8" WIDTH="100%" CELLPADDING="6" ><TR ><TD ><PRE CLASS="PROGRAMLISTING" >BonoboListener *keyboard_listener; my_listener_function (BonoboListener *l, char *event_name, CORBA_any value, CORBA_Environment *ev, gpointer user_data) { printf ("Received event named: <TT CLASS="LITERAL" >s</TT >\n", event_name); } connect_to_keyboard_source (Bonobo_EventSource *keyboard) { Bonobo_Unknown reference; /* * First, create the listener Bonobo server. */ keyboard_listener = bonobo_listener_new (my_listener_function, NULL); /* * Now, register our listener with the EventSource */ reference = bonobo_object_corba_objref (keyboard_listener); Bonobo_EventSource_addListener (keyboard, reference); } </PRE ></TD ></TR ></TABLE ><P ></P ></DIV > </P ><P > The CORBA::any value passed to the listener function is defined by the contract between the EventSource's event you are using and you. To manipulate the value, you can use the CORBA DynamicAny interface to introspect the value and extract the information you need. </P ></DIV ><DIV CLASS="REFSECT1" ><A NAME="AEN5746" ></A ><H2 >Details</H2 ><DIV CLASS="REFSECT2" ><A NAME="AEN5748" ></A ><H3 ><A NAME="BONOBO-LISTENER-TYPE-CAPS" ></A >BONOBO_LISTENER_TYPE</H3 ><TABLE BORDER="0" BGCOLOR="#D6E8FF" WIDTH="100%" CELLPADDING="6" ><TR ><TD ><PRE CLASS="PROGRAMLISTING" >#define BONOBO_LISTENER_TYPE (bonobo_listener_get_type ())</PRE ></TD ></TR ></TABLE ><P ></P ></DIV ><HR><DIV CLASS="REFSECT2" ><A NAME="AEN5753" ></A ><H3 ><A NAME="BONOBO-LISTENER-CAPS" ></A >BONOBO_LISTENER()</H3 ><TABLE BORDER="0" BGCOLOR="#D6E8FF" WIDTH="100%" CELLPADDING="6" ><TR ><TD ><PRE CLASS="PROGRAMLISTING" >#define BONOBO_LISTENER(o) (GTK_CHECK_CAST ((o), BONOBO_LISTENER_TYPE, BonoboListener))</PRE ></TD ></TR ></TABLE ><P ></P ><P ></P ><TABLE CLASS="VARIABLELIST" BORDER="0" CELLSPACING="0" CELLPADDING="4" WIDTH="100%" BGCOLOR="#FFD0D0" ><TBODY ><TR ><TD ALIGN="RIGHT" VALIGN="TOP" WIDTH="20%" ><A NAME="AEN5759"><SPAN STYLE="white-space: nowrap" ><TT CLASS="PARAMETER" ><I >o</I ></TT > :</SPAN ></TD ><TD ALIGN="LEFT" VALIGN="TOP" WIDTH="80%" ><P > </P ></TD ></TR ></TBODY ></TABLE ></DIV ><HR><DIV CLASS="REFSECT2" ><A NAME="AEN5764" ></A ><H3 ><A NAME="BONOBO-IS-LISTENER-CAPS" ></A >BONOBO_IS_LISTENER()</H3 ><TABLE BORDER="0" BGCOLOR="#D6E8FF" WIDTH="100%" CELLPADDING="6" ><TR ><TD ><PRE CLASS="PROGRAMLISTING" >#define BONOBO_IS_LISTENER(o) (GTK_CHECK_TYPE ((o), BONOBO_LISTENER_TYPE))</PRE ></TD ></TR ></TABLE ><P ></P ><P ></P ><TABLE CLASS="VARIABLELIST" BORDER="0" CELLSPACING="0" CELLPADDING="4" WIDTH="100%" BGCOLOR="#FFD0D0" ><TBODY ><TR ><TD ALIGN="RIGHT" VALIGN="TOP" WIDTH="20%" ><A NAME="AEN5770"><SPAN STYLE="white-space: nowrap" ><TT CLASS="PARAMETER" ><I >o</I ></TT > :</SPAN ></TD ><TD ALIGN="LEFT" VALIGN="TOP" WIDTH="80%" ><P > </P ></TD ></TR ></TBODY ></TABLE ></DIV ><HR><DIV CLASS="REFSECT2" ><A NAME="AEN5775" ></A ><H3 ><A NAME="BONOBO-LISTENER-CLASS-CAPS" ></A >BONOBO_LISTENER_CLASS()</H3 ><TABLE BORDER="0" BGCOLOR="#D6E8FF" WIDTH="100%" CELLPADDING="6" ><TR ><TD ><PRE CLASS="PROGRAMLISTING" >#define BONOBO_LISTENER_CLASS(k) (GTK_CHECK_CLASS_CAST((k), BONOBO_LISTENER_TYPE, BonoboListenerClass))</PRE ></TD ></TR ></TABLE ><P ></P ><P ></P ><TABLE CLASS="VARIABLELIST" BORDER="0" CELLSPACING="0" CELLPADDING="4" WIDTH="100%" BGCOLOR="#FFD0D0" ><TBODY ><TR ><TD ALIGN="RIGHT" VALIGN="TOP" WIDTH="20%" ><A NAME="AEN5781"><SPAN STYLE="white-space: nowrap" ><TT CLASS="PARAMETER" ><I >k</I ></TT > :</SPAN ></TD ><TD ALIGN="LEFT" VALIGN="TOP" WIDTH="80%" ><P > </P ></TD ></TR ></TBODY ></TABLE ></DIV ><HR><DIV CLASS="REFSECT2" ><A NAME="AEN5786" ></A ><H3 ><A NAME="BONOBO-IS-LISTENER-CLASS-CAPS" ></A >BONOBO_IS_LISTENER_CLASS()</H3 ><TABLE BORDER="0" BGCOLOR="#D6E8FF" WIDTH="100%" CELLPADDING="6" ><TR ><TD ><PRE CLASS="PROGRAMLISTING" >#define BONOBO_IS_LISTENER_CLASS(k) (GTK_CHECK_CLASS_TYPE ((k), BONOBO_LISTENER_TYPE))</PRE ></TD ></TR ></TABLE ><P ></P ><P ></P ><TABLE CLASS="VARIABLELIST" BORDER="0" CELLSPACING="0" CELLPADDING="4" WIDTH="100%" BGCOLOR="#FFD0D0" ><TBODY ><TR ><TD ALIGN="RIGHT" VALIGN="TOP" WIDTH="20%" ><A NAME="AEN5792"><SPAN STYLE="white-space: nowrap" ><TT CLASS="PARAMETER" ><I >k</I ></TT > :</SPAN ></TD ><TD ALIGN="LEFT" VALIGN="TOP" WIDTH="80%" ><P > </P ></TD ></TR ></TBODY ></TABLE ></DIV ><HR><DIV CLASS="REFSECT2" ><A NAME="AEN5797" ></A ><H3 ><A NAME="BONOBOLISTENER" ></A >BonoboListener</H3 ><TABLE BORDER="0" BGCOLOR="#D6E8FF" WIDTH="100%" CELLPADDING="6" ><TR ><TD ><PRE CLASS="PROGRAMLISTING" >typedef struct { BonoboXObject parent; BonoboListenerPrivate *priv; } BonoboListener;</PRE ></TD ></TR ></TABLE ><P ></P ></DIV ><HR><DIV CLASS="REFSECT2" ><A NAME="AEN5802" ></A ><H3 ><A NAME="BONOBOLISTENERCLASS" ></A >BonoboListenerClass</H3 ><TABLE BORDER="0" BGCOLOR="#D6E8FF" WIDTH="100%" CELLPADDING="6" ><TR ><TD ><PRE CLASS="PROGRAMLISTING" >typedef struct { BonoboXObjectClass parent_class; POA_Bonobo_Listener__epv epv; /* Signals */ void (* event_notify) (BonoboListener *listener, char *event_name, BonoboArg *event_data, CORBA_Environment *ev); } BonoboListenerClass;</PRE ></TD ></TR ></TABLE ><P ></P ></DIV ><HR><DIV CLASS="REFSECT2" ><A NAME="AEN5807" ></A ><H3 ><A NAME="BONOBOLISTENERCALLBACKFN" ></A >BonoboListenerCallbackFn ()</H3 ><TABLE BORDER="0" BGCOLOR="#D6E8FF" WIDTH="100%" CELLPADDING="6" ><TR ><TD ><PRE CLASS="PROGRAMLISTING" >void (*BonoboListenerCallbackFn) (<A HREF="bonobo-bonobo-listener.html#BONOBOLISTENER" >BonoboListener</A > *listener, char *event_name, <GTKDOCLINK HREF="CORBA-ANY" >CORBA_any</GTKDOCLINK > *any, <GTKDOCLINK HREF="CORBA-ENVIRONMENT" >CORBA_Environment</GTKDOCLINK > *ev, <GTKDOCLINK HREF="GPOINTER" >gpointer</GTKDOCLINK > user_data);</PRE ></TD ></TR ></TABLE ><P > The signature for the callback function invoked when an event is delivered to the BonoboListener object. </P ><P ></P ><TABLE CLASS="VARIABLELIST" BORDER="0" CELLSPACING="0" CELLPADDING="4" WIDTH="100%" BGCOLOR="#FFD0D0" ><TBODY ><TR ><TD ALIGN="RIGHT" VALIGN="TOP" WIDTH="20%" ><A NAME="AEN5817"><SPAN STYLE="white-space: nowrap" ><TT CLASS="PARAMETER" ><I >listener</I ></TT > :</SPAN ></TD ><TD ALIGN="LEFT" VALIGN="TOP" WIDTH="80%" ><P >a pointer to the BonoboListener.</P ></TD ></TR ><TR ><TD ALIGN="RIGHT" VALIGN="TOP" WIDTH="20%" ><A NAME="AEN5822"><SPAN STYLE="white-space: nowrap" ><TT CLASS="PARAMETER" ><I >event_name</I ></TT > :</SPAN ></TD ><TD ALIGN="LEFT" VALIGN="TOP" WIDTH="80%" ><P >the event name that was emitted.</P ></TD ></TR ><TR ><TD ALIGN="RIGHT" VALIGN="TOP" WIDTH="20%" ><A NAME="AEN5827"><SPAN STYLE="white-space: nowrap" ><TT CLASS="PARAMETER" ><I >any</I ></TT > :</SPAN ></TD ><TD ALIGN="LEFT" VALIGN="TOP" WIDTH="80%" ><P >The value (A CORBA Any) that was passed by the EventSource.</P ></TD ></TR ><TR ><TD ALIGN="RIGHT" VALIGN="TOP" WIDTH="20%" ><A NAME="AEN5832"><SPAN STYLE="white-space: nowrap" ><TT CLASS="PARAMETER" ><I >ev</I ></TT > :</SPAN ></TD ><TD ALIGN="LEFT" VALIGN="TOP" WIDTH="80%" ><P >Environment for returning CORBA errors.</P ></TD ></TR ><TR ><TD ALIGN="RIGHT" VALIGN="TOP" WIDTH="20%" ><A NAME="AEN5837"><SPAN STYLE="white-space: nowrap" ><TT CLASS="PARAMETER" ><I >user_data</I ></TT > :</SPAN ></TD ><TD ALIGN="LEFT" VALIGN="TOP" WIDTH="80%" ><P >the data pointer specified when you called bonobo_listener_new </P ></TD ></TR ></TBODY ></TABLE ></DIV ><HR><DIV CLASS="REFSECT2" ><A NAME="AEN5842" ></A ><H3 ><A NAME="BONOBO-LISTENER-NEW" ></A >bonobo_listener_new ()</H3 ><TABLE BORDER="0" BGCOLOR="#D6E8FF" WIDTH="100%" CELLPADDING="6" ><TR ><TD ><PRE CLASS="PROGRAMLISTING" ><A HREF="bonobo-bonobo-listener.html#BONOBOLISTENER" >BonoboListener</A >* bonobo_listener_new (<A HREF="bonobo-bonobo-listener.html#BONOBOLISTENERCALLBACKFN" >BonoboListenerCallbackFn</A > event_callback, <GTKDOCLINK HREF="GPOINTER" >gpointer</GTKDOCLINK > user_data);</PRE ></TD ></TR ></TABLE ><P >Creates a generic event listener. The listener calls the <TT CLASS="PARAMETER" ><I >event_callback</I ></TT > function and emits an "event_notify" signal when notified of an event. The signal callback should be of the form:</P ><P ><informalexample> <programlisting> void some_callback (BonoboListener *listener, char *event_name, CORBA_any *any, CORBA_Environment *ev, gpointer user_data); </programlisting> </informalexample></P ><P >You will typically pass the CORBA_Object reference in the return value to an EventSource (by invoking EventSource::addListener).</P ><P ></P ><P ></P ><TABLE CLASS="VARIABLELIST" BORDER="0" CELLSPACING="0" CELLPADDING="4" WIDTH="100%" BGCOLOR="#FFD0D0" ><TBODY ><TR ><TD ALIGN="RIGHT" VALIGN="TOP" WIDTH="20%" ><A NAME="AEN5855"><SPAN STYLE="white-space: nowrap" ><TT CLASS="PARAMETER" ><I >event_callback</I ></TT > :</SPAN ></TD ><TD ALIGN="LEFT" VALIGN="TOP" WIDTH="80%" ><P > function to be invoked when an event is emitted by the EventSource.</P ></TD ></TR ><TR ><TD ALIGN="RIGHT" VALIGN="TOP" WIDTH="20%" ><A NAME="AEN5860"><SPAN STYLE="white-space: nowrap" ><TT CLASS="PARAMETER" ><I >user_data</I ></TT > :</SPAN ></TD ><TD ALIGN="LEFT" VALIGN="TOP" WIDTH="80%" ><P > data passed to the functioned pointed by <TT CLASS="PARAMETER" ><I >event_call</I ></TT >.</P ></TD ></TR ><TR ><TD ALIGN="RIGHT" VALIGN="TOP" WIDTH="20%" ><A NAME="AEN5866"><SPAN STYLE="white-space: nowrap" ><I CLASS="EMPHASIS" >Returns</I > :</SPAN ></TD ><TD ALIGN="LEFT" VALIGN="TOP" WIDTH="80%" ><P > A BonoboListener object.</P ></TD ></TR ></TBODY ></TABLE ></DIV ><HR><DIV CLASS="REFSECT2" ><A NAME="AEN5871" ></A ><H3 ><A NAME="BONOBO-EVENT-KIND" ></A >bonobo_event_kind ()</H3 ><TABLE BORDER="0" BGCOLOR="#D6E8FF" WIDTH="100%" CELLPADDING="6" ><TR ><TD ><PRE CLASS="PROGRAMLISTING" >char* bonobo_event_kind (const char *event_name);</PRE ></TD ></TR ></TABLE ><P ></P ><P ></P ><P ></P ><TABLE CLASS="VARIABLELIST" BORDER="0" CELLSPACING="0" CELLPADDING="4" WIDTH="100%" BGCOLOR="#FFD0D0" ><TBODY ><TR ><TD ALIGN="RIGHT" VALIGN="TOP" WIDTH="20%" ><A NAME="AEN5878"><SPAN STYLE="white-space: nowrap" ><TT CLASS="PARAMETER" ><I >event_name</I ></TT > :</SPAN ></TD ><TD ALIGN="LEFT" VALIGN="TOP" WIDTH="80%" ><P > the event name</P ></TD ></TR ><TR ><TD ALIGN="RIGHT" VALIGN="TOP" WIDTH="20%" ><A NAME="AEN5883"><SPAN STYLE="white-space: nowrap" ><I CLASS="EMPHASIS" >Returns</I > :</SPAN ></TD ><TD ALIGN="LEFT" VALIGN="TOP" WIDTH="80%" ><P > The event kind, or NULL on error.</P ></TD ></TR ></TBODY ></TABLE ></DIV ><HR><DIV CLASS="REFSECT2" ><A NAME="AEN5888" ></A ><H3 ><A NAME="BONOBO-EVENT-TYPE" ></A >bonobo_event_type ()</H3 ><TABLE BORDER="0" BGCOLOR="#D6E8FF" WIDTH="100%" CELLPADDING="6" ><TR ><TD ><PRE CLASS="PROGRAMLISTING" >char* bonobo_event_type (const char *event_name);</PRE ></TD ></TR ></TABLE ><P ></P ><P ></P ><P ></P ><TABLE CLASS="VARIABLELIST" BORDER="0" CELLSPACING="0" CELLPADDING="4" WIDTH="100%" BGCOLOR="#FFD0D0" ><TBODY ><TR ><TD ALIGN="RIGHT" VALIGN="TOP" WIDTH="20%" ><A NAME="AEN5895"><SPAN STYLE="white-space: nowrap" ><TT CLASS="PARAMETER" ><I >event_name</I ></TT > :</SPAN ></TD ><TD ALIGN="LEFT" VALIGN="TOP" WIDTH="80%" ><P > the event name</P ></TD ></TR ><TR ><TD ALIGN="RIGHT" VALIGN="TOP" WIDTH="20%" ><A NAME="AEN5900"><SPAN STYLE="white-space: nowrap" ><I CLASS="EMPHASIS" >Returns</I > :</SPAN ></TD ><TD ALIGN="LEFT" VALIGN="TOP" WIDTH="80%" ><P > The event subtype, or NULL on error.</P ></TD ></TR ></TBODY ></TABLE ></DIV ><HR><DIV CLASS="REFSECT2" ><A NAME="AEN5905" ></A ><H3 ><A NAME="BONOBO-EVENT-SUBTYPE" ></A >bonobo_event_subtype ()</H3 ><TABLE BORDER="0" BGCOLOR="#D6E8FF" WIDTH="100%" CELLPADDING="6" ><TR ><TD ><PRE CLASS="PROGRAMLISTING" >char* bonobo_event_subtype (const char *event_name);</PRE ></TD ></TR ></TABLE ><P ></P ><P ></P ><TABLE CLASS="VARIABLELIST" BORDER="0" CELLSPACING="0" CELLPADDING="4" WIDTH="100%" BGCOLOR="#FFD0D0" ><TBODY ><TR ><TD ALIGN="RIGHT" VALIGN="TOP" WIDTH="20%" ><A NAME="AEN5911"><SPAN STYLE="white-space: nowrap" ><TT CLASS="PARAMETER" ><I >event_name</I ></TT > :</SPAN ></TD ><TD ALIGN="LEFT" VALIGN="TOP" WIDTH="80%" ><P ></P ></TD ></TR ><TR ><TD ALIGN="RIGHT" VALIGN="TOP" WIDTH="20%" ><A NAME="AEN5916"><SPAN STYLE="white-space: nowrap" ><I CLASS="EMPHASIS" >Returns</I > :</SPAN ></TD ><TD ALIGN="LEFT" VALIGN="TOP" WIDTH="80%" ><P > </P ></TD ></TR ></TBODY ></TABLE ></DIV ><HR><DIV CLASS="REFSECT2" ><A NAME="AEN5921" ></A ><H3 ><A NAME="BONOBO-EVENT-IDL-PATH" ></A >bonobo_event_idl_path ()</H3 ><TABLE BORDER="0" BGCOLOR="#D6E8FF" WIDTH="100%" CELLPADDING="6" ><TR ><TD ><PRE CLASS="PROGRAMLISTING" >char* bonobo_event_idl_path (const char *event_name);</PRE ></TD ></TR ></TABLE ><P ></P ><P ></P ><P ></P ><TABLE CLASS="VARIABLELIST" BORDER="0" CELLSPACING="0" CELLPADDING="4" WIDTH="100%" BGCOLOR="#FFD0D0" ><TBODY ><TR ><TD ALIGN="RIGHT" VALIGN="TOP" WIDTH="20%" ><A NAME="AEN5928"><SPAN STYLE="white-space: nowrap" ><TT CLASS="PARAMETER" ><I >event_name</I ></TT > :</SPAN ></TD ><TD ALIGN="LEFT" VALIGN="TOP" WIDTH="80%" ><P > the event name</P ></TD ></TR ><TR ><TD ALIGN="RIGHT" VALIGN="TOP" WIDTH="20%" ><A NAME="AEN5933"><SPAN STYLE="white-space: nowrap" ><I CLASS="EMPHASIS" >Returns</I > :</SPAN ></TD ><TD ALIGN="LEFT" VALIGN="TOP" WIDTH="80%" ><P > The event idl path, or NULL on error.</P ></TD ></TR ></TBODY ></TABLE ></DIV ><HR><DIV CLASS="REFSECT2" ><A NAME="AEN5938" ></A ><H3 ><A NAME="BONOBO-EVENT-MAKE-NAME" ></A >bonobo_event_make_name ()</H3 ><TABLE BORDER="0" BGCOLOR="#D6E8FF" WIDTH="100%" CELLPADDING="6" ><TR ><TD ><PRE CLASS="PROGRAMLISTING" >char* bonobo_event_make_name (const char *idl_path, const char *kind, const char *subtype);</PRE ></TD ></TR ></TABLE ><P >Creates an event name. Event names consist of three parts. The <TT CLASS="PARAMETER" ><I >idl_path</I ></TT > is mainly to create a unique namespace, and should identify the interface which triggered the event, for example "Bonobo/Property". The <TT CLASS="PARAMETER" ><I >kind</I ></TT > denotes what happened, for example "change". Finally you can use the optional <TT CLASS="PARAMETER" ><I >subtype</I ></TT > to make events more specific. All three parts of the name are joined together separated by colons. "Bonobo/Property:change" or "Bonobo/Property:change:autosave" are examples of valid event names.</P ><P ></P ><P ></P ><TABLE CLASS="VARIABLELIST" BORDER="0" CELLSPACING="0" CELLPADDING="4" WIDTH="100%" BGCOLOR="#FFD0D0" ><TBODY ><TR ><TD ALIGN="RIGHT" VALIGN="TOP" WIDTH="20%" ><A NAME="AEN5948"><SPAN STYLE="white-space: nowrap" ><TT CLASS="PARAMETER" ><I >idl_path</I ></TT > :</SPAN ></TD ><TD ALIGN="LEFT" VALIGN="TOP" WIDTH="80%" ><P > the IDL part of the event name.</P ></TD ></TR ><TR ><TD ALIGN="RIGHT" VALIGN="TOP" WIDTH="20%" ><A NAME="AEN5953"><SPAN STYLE="white-space: nowrap" ><TT CLASS="PARAMETER" ><I >kind</I ></TT > :</SPAN ></TD ><TD ALIGN="LEFT" VALIGN="TOP" WIDTH="80%" ><P > the kind of the event</P ></TD ></TR ><TR ><TD ALIGN="RIGHT" VALIGN="TOP" WIDTH="20%" ><A NAME="AEN5958"><SPAN STYLE="white-space: nowrap" ><TT CLASS="PARAMETER" ><I >subtype</I ></TT > :</SPAN ></TD ><TD ALIGN="LEFT" VALIGN="TOP" WIDTH="80%" ><P > an optional subtype</P ></TD ></TR ><TR ><TD ALIGN="RIGHT" VALIGN="TOP" WIDTH="20%" ><A NAME="AEN5963"><SPAN STYLE="white-space: nowrap" ><I CLASS="EMPHASIS" >Returns</I > :</SPAN ></TD ><TD ALIGN="LEFT" VALIGN="TOP" WIDTH="80%" ><P > A valid event_name, or NULL on error.</P ></TD ></TR ></TBODY ></TABLE ></DIV ></DIV ><DIV CLASS="REFSECT1" ><A NAME="AEN5968" ></A ><H2 >Signals</H2 ><DIV CLASS="REFSECT2" ><A NAME="AEN5970" ></A ><H3 ><A NAME="BONOBOLISTENER-EVENT-NOTIFY" ></A >The "event-notify" signal</H3 ><TABLE BORDER="0" BGCOLOR="#D6E8FF" WIDTH="100%" CELLPADDING="6" ><TR ><TD ><PRE CLASS="PROGRAMLISTING" >void user_function (<A HREF="bonobo-bonobo-listener.html#BONOBOLISTENER" >BonoboListener</A > *bonobolistener, <GTKDOCLINK HREF="GPOINTER" >gpointer</GTKDOCLINK > arg1, <GTKDOCLINK HREF="GPOINTER" >gpointer</GTKDOCLINK > arg2, <GTKDOCLINK HREF="GPOINTER" >gpointer</GTKDOCLINK > arg3, <GTKDOCLINK HREF="GPOINTER" >gpointer</GTKDOCLINK > user_data);</PRE ></TD ></TR ></TABLE ></DIV ></DIV ><DIV CLASS="REFSECT1" ><A NAME="AEN5979" ></A ><H2 >See Also</H2 ><P > <A HREF="bonobo-bonobo-event-source.html#BONOBOEVENTSOURCE" >BonoboEventSource</A > <A HREF="bonobo-bonobo-arg.html#BONOBOARG" >BonoboArg</A ></P ></DIV ><DIV CLASS="NAVFOOTER" ><BR CLEAR="all"><BR><TABLE WIDTH="100%" BORDER="0" BGCOLOR="#000000" CELLPADDING="1" CELLSPACING="0" ><TR ><TD WIDTH="25%" BGCOLOR="#C00000" ALIGN="left" ><A HREF="bonobo-bonobo-event-source.html" ><FONT COLOR="#FFFFFF" SIZE="3" ><B ><<< Previous Page</B ></FONT ></A ></TD ><TD WIDTH="25%" BGCOLOR="#0000C0" ALIGN="center" ><FONT COLOR="#FFFFFF" SIZE="3" ><B ><A HREF="book1.html" ><FONT COLOR="#FFFFFF" SIZE="3" ><B >Home</B ></FONT ></A ></B ></FONT ></TD ><TD WIDTH="25%" BGCOLOR="#00C000" ALIGN="center" ><FONT COLOR="#FFFFFF" SIZE="3" ><B ><A HREF="bonobo-notification.html" ><FONT COLOR="#FFFFFF" SIZE="3" ><B >Up</B ></FONT ></A ></B ></FONT ></TD ><TD WIDTH="25%" BGCOLOR="#C00000" ALIGN="right" ><A HREF="bonobo-storage.html" ><FONT COLOR="#FFFFFF" SIZE="3" ><B >Next Page >>></B ></FONT ></A ></TD ></TR ><TR ><TD COLSPAN="2" ALIGN="left" ><FONT COLOR="#FFFFFF" SIZE="3" ><B >bonobo-event-source</B ></FONT ></TD ><TD COLSPAN="2" ALIGN="right" ><FONT COLOR="#FFFFFF" SIZE="3" ><B >Storage and Persistance</B ></FONT ></TD ></TR ></TABLE ></DIV ></BODY ></HTML >