Geany dev
|
Plugin utility functions. More...
Functions | |
gint | geany_api_version (void) |
Returns the runtime API version Geany was compiled with. More... | |
void | plugin_add_toolbar_item (struct GeanyPlugin *plugin, GtkToolItem *item) |
Inserts a toolbar item before the Quit button, or after the previous plugin toolbar item. More... | |
void | plugin_builder_connect_signals (struct GeanyPlugin *plugin, GtkBuilder *builder, gpointer user_data) |
Allows auto-connecting Glade/GtkBuilder signals in plugins. More... | |
gpointer | plugin_get_document_data (struct GeanyPlugin *plugin, struct GeanyDocument *doc, const gchar *key) |
Retrieve plugin-specific data attached to a document. More... | |
guint | plugin_idle_add (struct GeanyPlugin *plugin, GSourceFunc function, gpointer data) |
Adds a GLib main loop IDLE callback that will be removed when unloading the plugin, preventing it to run after the plugin has been unloaded (which may lead to a segfault). More... | |
void | plugin_module_make_resident (struct GeanyPlugin *plugin) |
Ensures that a plugin's module (*.so) will never be unloaded. More... | |
void | plugin_set_document_data (struct GeanyPlugin *plugin, struct GeanyDocument *doc, const gchar *key, gpointer data) |
Attach plugin-specific data to a document. More... | |
void | plugin_set_document_data_full (struct GeanyPlugin *plugin, struct GeanyDocument *doc, const gchar *key, gpointer data, GDestroyNotify free_func) |
Attach plugin-specific data and a free function to a document. More... | |
struct GeanyKeyGroup * | plugin_set_key_group (struct GeanyPlugin *plugin, const gchar *section_name, gsize count, GeanyKeyGroupCallback callback) |
Sets up or resizes a keybinding group for the plugin. More... | |
GeanyKeyGroup * | plugin_set_key_group_full (struct GeanyPlugin *plugin, const gchar *section_name, gsize count, GeanyKeyGroupFunc cb, gpointer pdata, GDestroyNotify destroy_notify) |
Sets up or resizes a keybinding group for the plugin. More... | |
void | plugin_show_configure (struct GeanyPlugin *plugin) |
Shows the plugin's configure dialog. More... | |
void | plugin_signal_connect (struct GeanyPlugin *plugin, GObject *object, const gchar *signal_name, gboolean after, GCallback callback, gpointer user_data) |
Connects a signal which will be disconnected on unloading the plugin, to prevent a possible segfault. More... | |
guint | plugin_timeout_add (struct GeanyPlugin *plugin, guint interval, GSourceFunc function, gpointer data) |
Adds a GLib main loop timeout callback that will be removed when unloading the plugin, preventing it to run after the plugin has been unloaded (which may lead to a segfault). More... | |
guint | plugin_timeout_add_seconds (struct GeanyPlugin *plugin, guint interval, GSourceFunc function, gpointer data) |
Adds a GLib main loop timeout callback that will be removed when unloading the plugin, preventing it to run after the plugin has been unloaded (which may lead to a segfault). More... | |
Plugin utility functions.
These functions all take the geany_plugin symbol as their first argument.
gint geany_api_version | ( | void | ) |
Returns the runtime API version Geany was compiled with.
Unlike GEANY_API_VERSION this version is the value of that define at the time when Geany itself was compiled. This allows to establish soft dependencies which are resolved at runtime depending on Geany's API version.
void plugin_add_toolbar_item | ( | GeanyPlugin * | plugin, |
GtkToolItem * | item | ||
) |
Inserts a toolbar item before the Quit button, or after the previous plugin toolbar item.
A separator is added on the first call to this function, and will be shown when item is shown; hidden when item is hidden.
plugin | Must be geany_plugin. |
item | The item to add. |
void plugin_builder_connect_signals | ( | GeanyPlugin * | plugin, |
GtkBuilder * | builder, | ||
gpointer | user_data | ||
) |
Allows auto-connecting Glade/GtkBuilder signals in plugins.
When a plugin uses GtkBuilder to load some UI from file/string, the gtk_builder_connect_signals() function is unable to automatically connect to the plugin's signal handlers. A plugin could itself use the gtk_builder_connect_signals_full() function to automatically connect to the signal handler functions by loading it's GModule and retrieving pointers to the handler functions, but rather than each plugin having to do that, this function handles it automatically.
plugin | Must be geany_plugin. |
builder | The GtkBuilder to connect signals with. |
user_data | User data to pass to the connected signal handlers. |
gpointer plugin_get_document_data | ( | struct GeanyPlugin * | plugin, |
struct GeanyDocument * | doc, | ||
const gchar * | key | ||
) |
Retrieve plugin-specific data attached to a document.
plugin | The plugin who attached the data. |
doc | The document which the data was attached to. |
key | The key name of the attached data. |
NULL
if the key is not found for the given plugin.guint plugin_idle_add | ( | GeanyPlugin * | plugin, |
GSourceFunc | function, | ||
gpointer | data | ||
) |
Adds a GLib main loop IDLE callback that will be removed when unloading the plugin, preventing it to run after the plugin has been unloaded (which may lead to a segfault).
plugin | Must be geany_plugin. |
function | The function to call in IDLE time. |
data | The user data passed to the function. |
void plugin_module_make_resident | ( | GeanyPlugin * | plugin | ) |
Ensures that a plugin's module (*.so) will never be unloaded.
This is necessary if you register new GTypes in your plugin, e.g. when using own classes using the GObject system.
plugin | Must be geany_plugin. |
void plugin_set_document_data | ( | struct GeanyPlugin * | plugin, |
struct GeanyDocument * | doc, | ||
const gchar * | key, | ||
gpointer | data | ||
) |
Attach plugin-specific data to a document.
plugin | The plugin attaching data to the document. |
doc | The document to attach the data to. |
key | The key name for the data. |
data | The pointer to attach to the document. |
void plugin_set_document_data_full | ( | struct GeanyPlugin * | plugin, |
struct GeanyDocument * | doc, | ||
const gchar * | key, | ||
gpointer | data, | ||
GDestroyNotify | free_func | ||
) |
Attach plugin-specific data and a free function to a document.
This is useful for plugins who want to keep some additional data with the document and even have it auto-released appropriately (see below).
This is a simple example showing how a plugin might use this to attach a string to each document and print it when the document is saved:
The free_func can be used to tie the lifetime of the data to that of the doc and/or the plugin. The free_func will be called in any of the following cases:
plugin | The plugin attaching data to the document. |
doc | The document to attach the data to. |
key | The key name for the data. |
data | The pointer to attach to the document. |
free_func | The function to call with data when removed. |
struct GeanyKeyGroup * plugin_set_key_group | ( | GeanyPlugin * | plugin, |
const gchar * | section_name, | ||
gsize | count, | ||
GeanyKeyGroupCallback | callback | ||
) |
Sets up or resizes a keybinding group for the plugin.
You should then call keybindings_set_item() for each keybinding in the group.
plugin | Must be geany_plugin. |
section_name | Name of the section used for this group in the keybindings configuration file, i.e. "html_chars" . |
count | Number of keybindings for the group. |
callback | Group callback, or NULL if you only want individual keybinding callbacks. |
GeanyKeyGroup * plugin_set_key_group_full | ( | GeanyPlugin * | plugin, |
const gchar * | section_name, | ||
gsize | count, | ||
GeanyKeyGroupFunc | cb, | ||
gpointer | pdata, | ||
GDestroyNotify | destroy_notify | ||
) |
Sets up or resizes a keybinding group for the plugin.
You should then call keybindings_set_item() or keybindings_set_item_full() for each keybinding in the group.
plugin | Must be geany_plugin. |
section_name | Name of the section used for this group in the keybindings configuration file, i.e. "html_chars" . |
count | Number of keybindings for the group. |
cb | New-style group callback, or NULL if you only want individual keybinding callbacks. |
pdata | Plugin specific data, passed to the group callback cb. |
destroy_notify | Function that is invoked to free the plugin data when not needed anymore. |
void plugin_show_configure | ( | GeanyPlugin * | plugin | ) |
Shows the plugin's configure dialog.
The plugin must implement one of the plugin_configure() or plugin_configure_single() symbols.
plugin | Must be geany_plugin. |
void plugin_signal_connect | ( | GeanyPlugin * | plugin, |
GObject * | object, | ||
const gchar * | signal_name, | ||
gboolean | after, | ||
GCallback | callback, | ||
gpointer | user_data | ||
) |
Connects a signal which will be disconnected on unloading the plugin, to prevent a possible segfault.
plugin | Must be geany_plugin. |
object | Object to connect to, or NULL when using Geany signals . |
signal_name | The name of the signal. For a list of available signals, please see the Signal documentation . |
after | Set to TRUE to call your handler after the main signal handlers have been called (if supported by signal_name). |
callback | The function to call when the signal is emitted. |
user_data | The user data passed to the signal handler. |
g_signal_connect()
, since all handlers are disconnected when the object is destroyed anyway. For objects that may or may not outlive the plugin (like a document's ScintillaObject
, which is destroyed when the document is closed), you currently have to manually handle both situations, when the plugin is unloaded before the object is destroyed (and then, you have to disconnect the signal on plugin_cleanup()
), and when the object is destroyed during the plugin's lifetime (in which case you cannot and should not disconnect manually in plugin_cleanup()
since it already has been disconnected and the object has been destroyed), and disconnect yourself or not as appropriate. g_signal_connect()
is safe and has lower overhead. guint plugin_timeout_add | ( | GeanyPlugin * | plugin, |
guint | interval, | ||
GSourceFunc | function, | ||
gpointer | data | ||
) |
Adds a GLib main loop timeout callback that will be removed when unloading the plugin, preventing it to run after the plugin has been unloaded (which may lead to a segfault).
plugin | Must be geany_plugin. |
interval | The time between calls to the function, in milliseconds. |
function | The function to call after the given timeout. |
data | The user data passed to the function. |
guint plugin_timeout_add_seconds | ( | GeanyPlugin * | plugin, |
guint | interval, | ||
GSourceFunc | function, | ||
gpointer | data | ||
) |
Adds a GLib main loop timeout callback that will be removed when unloading the plugin, preventing it to run after the plugin has been unloaded (which may lead to a segfault).
plugin | Must be geany_plugin. |
interval | The time between calls to the function, in seconds. |
function | The function to call after the given timeout. |
data | The user data passed to the function. |