Sun, 03 Jun 2012 20:23:23 +0000
Convert the XMPP Console entry to WebKit.
Only thing it doesn't do is auto-sizing the entry widget.
|
18660
e2feaa89d5f5
- Added a lovely Doxygen signals tutorial
William Ehlhardt <williamehlhardt@gmail.com>
parents:
diff
changeset
|
1 | /** @page signal-howto Signals HOWTO |
|
e2feaa89d5f5
- Added a lovely Doxygen signals tutorial
William Ehlhardt <williamehlhardt@gmail.com>
parents:
diff
changeset
|
2 | |
|
e2feaa89d5f5
- Added a lovely Doxygen signals tutorial
William Ehlhardt <williamehlhardt@gmail.com>
parents:
diff
changeset
|
3 | @section Introduction |
|
e2feaa89d5f5
- Added a lovely Doxygen signals tutorial
William Ehlhardt <williamehlhardt@gmail.com>
parents:
diff
changeset
|
4 | The libpurple signals interface is used for general event notification, such |
|
e2feaa89d5f5
- Added a lovely Doxygen signals tutorial
William Ehlhardt <williamehlhardt@gmail.com>
parents:
diff
changeset
|
5 | as plugins being loaded or unloaded, allowing the GUI frontend to respond |
|
e2feaa89d5f5
- Added a lovely Doxygen signals tutorial
William Ehlhardt <williamehlhardt@gmail.com>
parents:
diff
changeset
|
6 | appropriately to changing internal data. Unfortunately, its use is not at all |
|
e2feaa89d5f5
- Added a lovely Doxygen signals tutorial
William Ehlhardt <williamehlhardt@gmail.com>
parents:
diff
changeset
|
7 | obvious from the information in the header files. This document uses code |
|
e2feaa89d5f5
- Added a lovely Doxygen signals tutorial
William Ehlhardt <williamehlhardt@gmail.com>
parents:
diff
changeset
|
8 | snippets from the Pidgin/libpurple plugin systems to illustrate the proper |
|
e2feaa89d5f5
- Added a lovely Doxygen signals tutorial
William Ehlhardt <williamehlhardt@gmail.com>
parents:
diff
changeset
|
9 | use of signals. |
|
e2feaa89d5f5
- Added a lovely Doxygen signals tutorial
William Ehlhardt <williamehlhardt@gmail.com>
parents:
diff
changeset
|
10 | |
|
e2feaa89d5f5
- Added a lovely Doxygen signals tutorial
William Ehlhardt <williamehlhardt@gmail.com>
parents:
diff
changeset
|
11 | @section overview Overview of Signals |
|
e2feaa89d5f5
- Added a lovely Doxygen signals tutorial
William Ehlhardt <williamehlhardt@gmail.com>
parents:
diff
changeset
|
12 | Signals in libpurple are very similar to those in GTK+. When certain events |
|
e2feaa89d5f5
- Added a lovely Doxygen signals tutorial
William Ehlhardt <williamehlhardt@gmail.com>
parents:
diff
changeset
|
13 | happen, a named signal is "emitted" from a certain object. Emitting the |
|
e2feaa89d5f5
- Added a lovely Doxygen signals tutorial
William Ehlhardt <williamehlhardt@gmail.com>
parents:
diff
changeset
|
14 | signal triggers a series of callbacks that have been "connected" to that |
|
e2feaa89d5f5
- Added a lovely Doxygen signals tutorial
William Ehlhardt <williamehlhardt@gmail.com>
parents:
diff
changeset
|
15 | signal for that object. These callbacks take appropriate action in response |
|
e2feaa89d5f5
- Added a lovely Doxygen signals tutorial
William Ehlhardt <williamehlhardt@gmail.com>
parents:
diff
changeset
|
16 | to the signal. |
|
e2feaa89d5f5
- Added a lovely Doxygen signals tutorial
William Ehlhardt <williamehlhardt@gmail.com>
parents:
diff
changeset
|
17 | |
|
e2feaa89d5f5
- Added a lovely Doxygen signals tutorial
William Ehlhardt <williamehlhardt@gmail.com>
parents:
diff
changeset
|
18 | @section registering_signal Registering a Signal |
|
e2feaa89d5f5
- Added a lovely Doxygen signals tutorial
William Ehlhardt <williamehlhardt@gmail.com>
parents:
diff
changeset
|
19 | The first step of using a signal is registering it with libpurple so that |
|
e2feaa89d5f5
- Added a lovely Doxygen signals tutorial
William Ehlhardt <williamehlhardt@gmail.com>
parents:
diff
changeset
|
20 | callbacks may be connected to it. This is done using purple_signal_register() |
|
e2feaa89d5f5
- Added a lovely Doxygen signals tutorial
William Ehlhardt <williamehlhardt@gmail.com>
parents:
diff
changeset
|
21 | Here is a slightly modified example from @c purple_plugins_init in |
|
e2feaa89d5f5
- Added a lovely Doxygen signals tutorial
William Ehlhardt <williamehlhardt@gmail.com>
parents:
diff
changeset
|
22 | @c libpurple/plugin.c : |
|
e2feaa89d5f5
- Added a lovely Doxygen signals tutorial
William Ehlhardt <williamehlhardt@gmail.com>
parents:
diff
changeset
|
23 | |
|
e2feaa89d5f5
- Added a lovely Doxygen signals tutorial
William Ehlhardt <williamehlhardt@gmail.com>
parents:
diff
changeset
|
24 | @code |
|
e2feaa89d5f5
- Added a lovely Doxygen signals tutorial
William Ehlhardt <williamehlhardt@gmail.com>
parents:
diff
changeset
|
25 | purple_signal_register( purple_plugins_get_handle(), /* Instance */ |
|
e2feaa89d5f5
- Added a lovely Doxygen signals tutorial
William Ehlhardt <williamehlhardt@gmail.com>
parents:
diff
changeset
|
26 | "plugin-load", /* Signal name */ |
|
e2feaa89d5f5
- Added a lovely Doxygen signals tutorial
William Ehlhardt <williamehlhardt@gmail.com>
parents:
diff
changeset
|
27 | purple_marshal_VOID__POINTER,/* Marshal function */ |
|
e2feaa89d5f5
- Added a lovely Doxygen signals tutorial
William Ehlhardt <williamehlhardt@gmail.com>
parents:
diff
changeset
|
28 | NULL, /* Callback return value type */ |
|
e2feaa89d5f5
- Added a lovely Doxygen signals tutorial
William Ehlhardt <williamehlhardt@gmail.com>
parents:
diff
changeset
|
29 | 1, /* Number of callback arguments (not including void *data) */ |
|
e2feaa89d5f5
- Added a lovely Doxygen signals tutorial
William Ehlhardt <williamehlhardt@gmail.com>
parents:
diff
changeset
|
30 | purple_value_new(PURPLE_TYPE_SUBTYPE,PURPLE_SUBTYPE_PLUGIN) /* Type of first callback argument */ |
|
e2feaa89d5f5
- Added a lovely Doxygen signals tutorial
William Ehlhardt <williamehlhardt@gmail.com>
parents:
diff
changeset
|
31 | ); |
|
e2feaa89d5f5
- Added a lovely Doxygen signals tutorial
William Ehlhardt <williamehlhardt@gmail.com>
parents:
diff
changeset
|
32 | @endcode |
|
e2feaa89d5f5
- Added a lovely Doxygen signals tutorial
William Ehlhardt <williamehlhardt@gmail.com>
parents:
diff
changeset
|
33 | |
|
e2feaa89d5f5
- Added a lovely Doxygen signals tutorial
William Ehlhardt <williamehlhardt@gmail.com>
parents:
diff
changeset
|
34 | @subsection Instance |
|
e2feaa89d5f5
- Added a lovely Doxygen signals tutorial
William Ehlhardt <williamehlhardt@gmail.com>
parents:
diff
changeset
|
35 | A reference to the object from which this signal is emitted, and to which |
|
e2feaa89d5f5
- Added a lovely Doxygen signals tutorial
William Ehlhardt <williamehlhardt@gmail.com>
parents:
diff
changeset
|
36 | potential callbacks should be connected. In this case, it will be the entire |
|
e2feaa89d5f5
- Added a lovely Doxygen signals tutorial
William Ehlhardt <williamehlhardt@gmail.com>
parents:
diff
changeset
|
37 | plugin module emitting the signal. |
|
e2feaa89d5f5
- Added a lovely Doxygen signals tutorial
William Ehlhardt <williamehlhardt@gmail.com>
parents:
diff
changeset
|
38 | |
|
e2feaa89d5f5
- Added a lovely Doxygen signals tutorial
William Ehlhardt <williamehlhardt@gmail.com>
parents:
diff
changeset
|
39 | @subsection signalname Signal Name |
|
e2feaa89d5f5
- Added a lovely Doxygen signals tutorial
William Ehlhardt <williamehlhardt@gmail.com>
parents:
diff
changeset
|
40 | Unique identifier for the signal itself. |
|
e2feaa89d5f5
- Added a lovely Doxygen signals tutorial
William Ehlhardt <williamehlhardt@gmail.com>
parents:
diff
changeset
|
41 | |
|
e2feaa89d5f5
- Added a lovely Doxygen signals tutorial
William Ehlhardt <williamehlhardt@gmail.com>
parents:
diff
changeset
|
42 | @subsection therest Callback function definition |
|
e2feaa89d5f5
- Added a lovely Doxygen signals tutorial
William Ehlhardt <williamehlhardt@gmail.com>
parents:
diff
changeset
|
43 | The rest of the arguments specify the form of the callback function. |
|
e2feaa89d5f5
- Added a lovely Doxygen signals tutorial
William Ehlhardt <williamehlhardt@gmail.com>
parents:
diff
changeset
|
44 | |
|
e2feaa89d5f5
- Added a lovely Doxygen signals tutorial
William Ehlhardt <williamehlhardt@gmail.com>
parents:
diff
changeset
|
45 | @subsubsection marshalfunc Marshal Function |
|
e2feaa89d5f5
- Added a lovely Doxygen signals tutorial
William Ehlhardt <williamehlhardt@gmail.com>
parents:
diff
changeset
|
46 | @c purple_marshal_VOID__POINTER represents the callback function prototype, |
|
e2feaa89d5f5
- Added a lovely Doxygen signals tutorial
William Ehlhardt <williamehlhardt@gmail.com>
parents:
diff
changeset
|
47 | not including a "data" argument, explained later. The form is |
|
e2feaa89d5f5
- Added a lovely Doxygen signals tutorial
William Ehlhardt <williamehlhardt@gmail.com>
parents:
diff
changeset
|
48 | @c purple_marshal_RETURNVALUETYPE__ARG1TYPE_ARG2TYPE_ETC. See signals.h for |
|
e2feaa89d5f5
- Added a lovely Doxygen signals tutorial
William Ehlhardt <williamehlhardt@gmail.com>
parents:
diff
changeset
|
49 | more possible types. |
|
e2feaa89d5f5
- Added a lovely Doxygen signals tutorial
William Ehlhardt <williamehlhardt@gmail.com>
parents:
diff
changeset
|
50 | |
|
e2feaa89d5f5
- Added a lovely Doxygen signals tutorial
William Ehlhardt <williamehlhardt@gmail.com>
parents:
diff
changeset
|
51 | In this case, the callback will have the form |
|
e2feaa89d5f5
- Added a lovely Doxygen signals tutorial
William Ehlhardt <williamehlhardt@gmail.com>
parents:
diff
changeset
|
52 | @code |
|
e2feaa89d5f5
- Added a lovely Doxygen signals tutorial
William Ehlhardt <williamehlhardt@gmail.com>
parents:
diff
changeset
|
53 | void cb(void *arg1, void *data) |
|
e2feaa89d5f5
- Added a lovely Doxygen signals tutorial
William Ehlhardt <williamehlhardt@gmail.com>
parents:
diff
changeset
|
54 | @endcode |
|
e2feaa89d5f5
- Added a lovely Doxygen signals tutorial
William Ehlhardt <williamehlhardt@gmail.com>
parents:
diff
changeset
|
55 | |
|
e2feaa89d5f5
- Added a lovely Doxygen signals tutorial
William Ehlhardt <williamehlhardt@gmail.com>
parents:
diff
changeset
|
56 | If @c purple_marshal_BOOLEAN__POINTER_POINTER_POINTER were specified, it |
|
e2feaa89d5f5
- Added a lovely Doxygen signals tutorial
William Ehlhardt <williamehlhardt@gmail.com>
parents:
diff
changeset
|
57 | would be: |
|
e2feaa89d5f5
- Added a lovely Doxygen signals tutorial
William Ehlhardt <williamehlhardt@gmail.com>
parents:
diff
changeset
|
58 | @code |
|
e2feaa89d5f5
- Added a lovely Doxygen signals tutorial
William Ehlhardt <williamehlhardt@gmail.com>
parents:
diff
changeset
|
59 | gboolean cb(void *arg1, void *arg2, void *arg3, void *data) |
|
e2feaa89d5f5
- Added a lovely Doxygen signals tutorial
William Ehlhardt <williamehlhardt@gmail.com>
parents:
diff
changeset
|
60 | @endcode |
|
e2feaa89d5f5
- Added a lovely Doxygen signals tutorial
William Ehlhardt <williamehlhardt@gmail.com>
parents:
diff
changeset
|
61 | |
|
e2feaa89d5f5
- Added a lovely Doxygen signals tutorial
William Ehlhardt <williamehlhardt@gmail.com>
parents:
diff
changeset
|
62 | The @c void @c *data argument at the end of each callback function |
|
e2feaa89d5f5
- Added a lovely Doxygen signals tutorial
William Ehlhardt <williamehlhardt@gmail.com>
parents:
diff
changeset
|
63 | provides the data argument given to purple_signal_connect() . |
|
e2feaa89d5f5
- Added a lovely Doxygen signals tutorial
William Ehlhardt <williamehlhardt@gmail.com>
parents:
diff
changeset
|
64 | |
|
e2feaa89d5f5
- Added a lovely Doxygen signals tutorial
William Ehlhardt <williamehlhardt@gmail.com>
parents:
diff
changeset
|
65 | @subsubsection cb_ret_type Callback return value type |
|
e2feaa89d5f5
- Added a lovely Doxygen signals tutorial
William Ehlhardt <williamehlhardt@gmail.com>
parents:
diff
changeset
|
66 | In our case, this is NULL, meaning "returns void". |
|
e2feaa89d5f5
- Added a lovely Doxygen signals tutorial
William Ehlhardt <williamehlhardt@gmail.com>
parents:
diff
changeset
|
67 | @todo This could be described better. |
|
e2feaa89d5f5
- Added a lovely Doxygen signals tutorial
William Ehlhardt <williamehlhardt@gmail.com>
parents:
diff
changeset
|
68 | |
|
e2feaa89d5f5
- Added a lovely Doxygen signals tutorial
William Ehlhardt <williamehlhardt@gmail.com>
parents:
diff
changeset
|
69 | @subsubsection num_args Number of arguments |
|
e2feaa89d5f5
- Added a lovely Doxygen signals tutorial
William Ehlhardt <williamehlhardt@gmail.com>
parents:
diff
changeset
|
70 | The number of arguments (not including @c data ) that the callback function |
|
e2feaa89d5f5
- Added a lovely Doxygen signals tutorial
William Ehlhardt <williamehlhardt@gmail.com>
parents:
diff
changeset
|
71 | will take. |
|
e2feaa89d5f5
- Added a lovely Doxygen signals tutorial
William Ehlhardt <williamehlhardt@gmail.com>
parents:
diff
changeset
|
72 | |
|
e2feaa89d5f5
- Added a lovely Doxygen signals tutorial
William Ehlhardt <williamehlhardt@gmail.com>
parents:
diff
changeset
|
73 | @subsubsection type_arg Type of argument |
|
e2feaa89d5f5
- Added a lovely Doxygen signals tutorial
William Ehlhardt <williamehlhardt@gmail.com>
parents:
diff
changeset
|
74 | @c purple_value_new(PURPLE_TYPE_SUBTYPE,PURPLE_SUBTYPE_PLUGIN) specifies that |
|
e2feaa89d5f5
- Added a lovely Doxygen signals tutorial
William Ehlhardt <williamehlhardt@gmail.com>
parents:
diff
changeset
|
75 | the first argument given to the callback will be a @c PurplePlugin* . You |
|
e2feaa89d5f5
- Added a lovely Doxygen signals tutorial
William Ehlhardt <williamehlhardt@gmail.com>
parents:
diff
changeset
|
76 | will need as many "type of argument" arguments to purple_signal_register() as |
|
e2feaa89d5f5
- Added a lovely Doxygen signals tutorial
William Ehlhardt <williamehlhardt@gmail.com>
parents:
diff
changeset
|
77 | you specified in "Number of arguments" above. |
|
e2feaa89d5f5
- Added a lovely Doxygen signals tutorial
William Ehlhardt <williamehlhardt@gmail.com>
parents:
diff
changeset
|
78 | |
|
e2feaa89d5f5
- Added a lovely Doxygen signals tutorial
William Ehlhardt <williamehlhardt@gmail.com>
parents:
diff
changeset
|
79 | @todo Describe this more. |
|
e2feaa89d5f5
- Added a lovely Doxygen signals tutorial
William Ehlhardt <williamehlhardt@gmail.com>
parents:
diff
changeset
|
80 | |
|
19862
3aa48ac21c45
This will silence a few warnings when building the Doxygen docs.
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
18660
diff
changeset
|
81 | @see value.h |
|
18660
e2feaa89d5f5
- Added a lovely Doxygen signals tutorial
William Ehlhardt <williamehlhardt@gmail.com>
parents:
diff
changeset
|
82 | |
|
e2feaa89d5f5
- Added a lovely Doxygen signals tutorial
William Ehlhardt <williamehlhardt@gmail.com>
parents:
diff
changeset
|
83 | @section connect Connecting to the signal |
|
e2feaa89d5f5
- Added a lovely Doxygen signals tutorial
William Ehlhardt <williamehlhardt@gmail.com>
parents:
diff
changeset
|
84 | Once the signal is registered, you can connect callbacks to it. First, you |
|
e2feaa89d5f5
- Added a lovely Doxygen signals tutorial
William Ehlhardt <williamehlhardt@gmail.com>
parents:
diff
changeset
|
85 | must define a callback function, such as this one from gtkplugin.c : |
|
e2feaa89d5f5
- Added a lovely Doxygen signals tutorial
William Ehlhardt <williamehlhardt@gmail.com>
parents:
diff
changeset
|
86 | @code |
|
e2feaa89d5f5
- Added a lovely Doxygen signals tutorial
William Ehlhardt <williamehlhardt@gmail.com>
parents:
diff
changeset
|
87 | static void plugin_load_cb(PurplePlugin *plugin, gpointer data) |
|
e2feaa89d5f5
- Added a lovely Doxygen signals tutorial
William Ehlhardt <williamehlhardt@gmail.com>
parents:
diff
changeset
|
88 | { |
|
e2feaa89d5f5
- Added a lovely Doxygen signals tutorial
William Ehlhardt <williamehlhardt@gmail.com>
parents:
diff
changeset
|
89 | GtkTreeView *view = (GtkTreeView *)data; |
|
e2feaa89d5f5
- Added a lovely Doxygen signals tutorial
William Ehlhardt <williamehlhardt@gmail.com>
parents:
diff
changeset
|
90 | plugin_loading_common(plugin, view, TRUE); |
|
e2feaa89d5f5
- Added a lovely Doxygen signals tutorial
William Ehlhardt <williamehlhardt@gmail.com>
parents:
diff
changeset
|
91 | } |
|
e2feaa89d5f5
- Added a lovely Doxygen signals tutorial
William Ehlhardt <williamehlhardt@gmail.com>
parents:
diff
changeset
|
92 | @endcode |
|
e2feaa89d5f5
- Added a lovely Doxygen signals tutorial
William Ehlhardt <williamehlhardt@gmail.com>
parents:
diff
changeset
|
93 | Note that the callback function prototype matches that specified in the call |
|
e2feaa89d5f5
- Added a lovely Doxygen signals tutorial
William Ehlhardt <williamehlhardt@gmail.com>
parents:
diff
changeset
|
94 | to purple_signal_register() above. |
|
e2feaa89d5f5
- Added a lovely Doxygen signals tutorial
William Ehlhardt <williamehlhardt@gmail.com>
parents:
diff
changeset
|
95 | |
|
e2feaa89d5f5
- Added a lovely Doxygen signals tutorial
William Ehlhardt <williamehlhardt@gmail.com>
parents:
diff
changeset
|
96 | Once the callback function is defined, you can connect it to the signal. |
|
e2feaa89d5f5
- Added a lovely Doxygen signals tutorial
William Ehlhardt <williamehlhardt@gmail.com>
parents:
diff
changeset
|
97 | Again from gtkplugin.c , in @c pidgin_plugin_dialog_show() : |
|
e2feaa89d5f5
- Added a lovely Doxygen signals tutorial
William Ehlhardt <williamehlhardt@gmail.com>
parents:
diff
changeset
|
98 | @code |
|
e2feaa89d5f5
- Added a lovely Doxygen signals tutorial
William Ehlhardt <williamehlhardt@gmail.com>
parents:
diff
changeset
|
99 | purple_signal_connect(purple_plugins_get_handle(), "plugin-load", /* What to connect to */ |
|
e2feaa89d5f5
- Added a lovely Doxygen signals tutorial
William Ehlhardt <williamehlhardt@gmail.com>
parents:
diff
changeset
|
100 | plugin_dialog, /* Object receiving the signal */ |
|
e2feaa89d5f5
- Added a lovely Doxygen signals tutorial
William Ehlhardt <williamehlhardt@gmail.com>
parents:
diff
changeset
|
101 | PURPLE_CALLBACK(plugin_load_cb), /* Callback function */ |
|
e2feaa89d5f5
- Added a lovely Doxygen signals tutorial
William Ehlhardt <williamehlhardt@gmail.com>
parents:
diff
changeset
|
102 | event_view, /* Data to pass to the callback function |
|
e2feaa89d5f5
- Added a lovely Doxygen signals tutorial
William Ehlhardt <williamehlhardt@gmail.com>
parents:
diff
changeset
|
103 | ); |
|
e2feaa89d5f5
- Added a lovely Doxygen signals tutorial
William Ehlhardt <williamehlhardt@gmail.com>
parents:
diff
changeset
|
104 | @endcode |
|
e2feaa89d5f5
- Added a lovely Doxygen signals tutorial
William Ehlhardt <williamehlhardt@gmail.com>
parents:
diff
changeset
|
105 | |
|
e2feaa89d5f5
- Added a lovely Doxygen signals tutorial
William Ehlhardt <williamehlhardt@gmail.com>
parents:
diff
changeset
|
106 | The first two arguments ("What to connect to") specify the object emitting |
|
e2feaa89d5f5
- Added a lovely Doxygen signals tutorial
William Ehlhardt <williamehlhardt@gmail.com>
parents:
diff
changeset
|
107 | the signal (the plugin module) and what signal to listen for ("plugin-load"). |
|
e2feaa89d5f5
- Added a lovely Doxygen signals tutorial
William Ehlhardt <williamehlhardt@gmail.com>
parents:
diff
changeset
|
108 | |
|
e2feaa89d5f5
- Added a lovely Doxygen signals tutorial
William Ehlhardt <williamehlhardt@gmail.com>
parents:
diff
changeset
|
109 | The object receiving the signal is @c plugin_dialog , the Pidgin plugins |
|
e2feaa89d5f5
- Added a lovely Doxygen signals tutorial
William Ehlhardt <williamehlhardt@gmail.com>
parents:
diff
changeset
|
110 | dialog. When @c plugin_dialog is deleted, then |
|
e2feaa89d5f5
- Added a lovely Doxygen signals tutorial
William Ehlhardt <williamehlhardt@gmail.com>
parents:
diff
changeset
|
111 | @c purple_signals_disconnect_by_handle(plugin_dialog) should be called to |
|
e2feaa89d5f5
- Added a lovely Doxygen signals tutorial
William Ehlhardt <williamehlhardt@gmail.com>
parents:
diff
changeset
|
112 | remove all signal connections it is associated with. |
|
e2feaa89d5f5
- Added a lovely Doxygen signals tutorial
William Ehlhardt <williamehlhardt@gmail.com>
parents:
diff
changeset
|
113 | |
|
e2feaa89d5f5
- Added a lovely Doxygen signals tutorial
William Ehlhardt <williamehlhardt@gmail.com>
parents:
diff
changeset
|
114 | The callback function is given using a helper macro, and finally the |
|
e2feaa89d5f5
- Added a lovely Doxygen signals tutorial
William Ehlhardt <williamehlhardt@gmail.com>
parents:
diff
changeset
|
115 | @c data argument to be passed to @c plugin_load_cb is given as @c event_view, |
|
e2feaa89d5f5
- Added a lovely Doxygen signals tutorial
William Ehlhardt <williamehlhardt@gmail.com>
parents:
diff
changeset
|
116 | a pointer to the GTK widget that @c plugin_load_cb needs to update. |
|
e2feaa89d5f5
- Added a lovely Doxygen signals tutorial
William Ehlhardt <williamehlhardt@gmail.com>
parents:
diff
changeset
|
117 | |
|
e2feaa89d5f5
- Added a lovely Doxygen signals tutorial
William Ehlhardt <williamehlhardt@gmail.com>
parents:
diff
changeset
|
118 | @section emit-signal Emitting a signal |
|
e2feaa89d5f5
- Added a lovely Doxygen signals tutorial
William Ehlhardt <williamehlhardt@gmail.com>
parents:
diff
changeset
|
119 | Connecting callbacks to signals is all well and good, but how do you "fire" |
|
e2feaa89d5f5
- Added a lovely Doxygen signals tutorial
William Ehlhardt <williamehlhardt@gmail.com>
parents:
diff
changeset
|
120 | the signal and trigger the callback? At some point, you must "emit" the |
|
e2feaa89d5f5
- Added a lovely Doxygen signals tutorial
William Ehlhardt <williamehlhardt@gmail.com>
parents:
diff
changeset
|
121 | signal, which immediately calls all connected callbacks. |
|
e2feaa89d5f5
- Added a lovely Doxygen signals tutorial
William Ehlhardt <williamehlhardt@gmail.com>
parents:
diff
changeset
|
122 | |
|
e2feaa89d5f5
- Added a lovely Doxygen signals tutorial
William Ehlhardt <williamehlhardt@gmail.com>
parents:
diff
changeset
|
123 | As seen in @c purple_plugin_load() in plugin.c : |
|
e2feaa89d5f5
- Added a lovely Doxygen signals tutorial
William Ehlhardt <williamehlhardt@gmail.com>
parents:
diff
changeset
|
124 | @code |
|
e2feaa89d5f5
- Added a lovely Doxygen signals tutorial
William Ehlhardt <williamehlhardt@gmail.com>
parents:
diff
changeset
|
125 | purple_signal_emit(purple_plugins_get_handle(), "plugin-load", plugin); |
|
e2feaa89d5f5
- Added a lovely Doxygen signals tutorial
William Ehlhardt <williamehlhardt@gmail.com>
parents:
diff
changeset
|
126 | @endcode |
|
e2feaa89d5f5
- Added a lovely Doxygen signals tutorial
William Ehlhardt <williamehlhardt@gmail.com>
parents:
diff
changeset
|
127 | This causes the signal "plugin-load" to be emitted from the plugin module |
|
e2feaa89d5f5
- Added a lovely Doxygen signals tutorial
William Ehlhardt <williamehlhardt@gmail.com>
parents:
diff
changeset
|
128 | (given by @c purple_plugins_get_handle() ), with the newly loaded plugin as |
|
e2feaa89d5f5
- Added a lovely Doxygen signals tutorial
William Ehlhardt <williamehlhardt@gmail.com>
parents:
diff
changeset
|
129 | the argument to pass to any registered callback functions. |
|
e2feaa89d5f5
- Added a lovely Doxygen signals tutorial
William Ehlhardt <williamehlhardt@gmail.com>
parents:
diff
changeset
|
130 | |
|
e2feaa89d5f5
- Added a lovely Doxygen signals tutorial
William Ehlhardt <williamehlhardt@gmail.com>
parents:
diff
changeset
|
131 | In our example, @c plugin_load_cb is called immediately as |
|
e2feaa89d5f5
- Added a lovely Doxygen signals tutorial
William Ehlhardt <williamehlhardt@gmail.com>
parents:
diff
changeset
|
132 | @code |
|
e2feaa89d5f5
- Added a lovely Doxygen signals tutorial
William Ehlhardt <williamehlhardt@gmail.com>
parents:
diff
changeset
|
133 | plugin_load_cb(plugin, event_view); |
|
e2feaa89d5f5
- Added a lovely Doxygen signals tutorial
William Ehlhardt <williamehlhardt@gmail.com>
parents:
diff
changeset
|
134 | @endcode |
|
e2feaa89d5f5
- Added a lovely Doxygen signals tutorial
William Ehlhardt <williamehlhardt@gmail.com>
parents:
diff
changeset
|
135 | and does whatever it does. |
|
e2feaa89d5f5
- Added a lovely Doxygen signals tutorial
William Ehlhardt <williamehlhardt@gmail.com>
parents:
diff
changeset
|
136 | |
|
e2feaa89d5f5
- Added a lovely Doxygen signals tutorial
William Ehlhardt <williamehlhardt@gmail.com>
parents:
diff
changeset
|
137 | */ |