[Geany] Plugin Events Patch

Enrico Tröger enrico.troeger at xxxxx
Wed Aug 1 17:17:37 UTC 2007


On Wed, 01 Aug 2007 16:28:39 +0100, Nick Treleaven
<nick.treleaven at btinternet.com> wrote:

Hi,

> Then something like:
> 
> // callback func called by all editors when a signal arises
> void on_editor_notification(GtkWidget *editor, gint scn, gpointer
> lscn, gpointer user_data)
> {
> 	SCNotification *nt;
> 	ScintillaObject *sci;
> 	gint idx;
> 
> 	idx = GPOINTER_TO_INT(user_data);
> 	sci = doc_list[idx].sci;
> 
> 	nt = lscn;
> 	
> 	plugins_sci_notify(editor, scn, nt, idx);
> 
> Where plugins_sci_notify() calls any plugin that has an on_sci_notify 
> symbol.
Why don't we just use the signal framework from Glib/GTK?
My suggestion:
Let's define a bunch of available signals like
"plugin::sci-notify"
"plugin::build-complete"
"plugin::show-auto-complete-list"
...
Then every plugin can connect to these signals using the
g_signal_connect() family.
Within the core of Geany, we emit the signal at the appropriate place
(e.g. in the signal handler of sci-notify we emit plugin::sci-notify)
and so the signal handler within the plugin is called. The only
difficult thing probably will be to define the signals.

I came across this way of signal usage while writing a panel plugin for
the Xfce panel. There are (at least) these signals for the plugins
available:
"configure-plugin"
"free-data"
"save"

configure-plugin is used to tell the plugin it should show its
configuration dialog, save is when the plugin settings should be saved
and free-data is fired when the panel is about to remove the plugin.

Another possibility could be to let the plugins set function pointers
for several pre-defined actions to functions within the plugin. But
this would be nothing else than a more simple way of defining signals
and connecting handlers to them. So, I suggest we use the existing and
working signals framework from GLib/GTK.

What do you think?

Regards,
Enrico

-- 
Get my GPG key from http://www.uvena.de/pub.key
Powered by Debian GNU/Linux, GnuPG and Sylpheed.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 189 bytes
Desc: not available
URL: <http://lists.geany.org/pipermail/users/attachments/20070801/35bfe4f1/attachment.pgp>


More information about the Users mailing list