SF.net SVN: geany:[3524] trunk
eht16 at users.sourceforge.net
eht16 at xxxxx
Wed Jan 28 19:30:18 UTC 2009
Revision: 3524
http://geany.svn.sourceforge.net/geany/?rev=3524&view=rev
Author: eht16
Date: 2009-01-28 19:30:18 +0000 (Wed, 28 Jan 2009)
Log Message:
-----------
Rename utils_start_browser() in utils_open_browser() and add it to the plugin API.
Add plugin symbol plugin_help() which is called by Geany when the plugin should show its documentation (if any). This symbol is optional, plugins can omit it if not needed.
Add a Help button next to the Configure button in the plugin manager dialog to easily open a plugin's documentation if available.
Modified Paths:
--------------
trunk/ChangeLog
trunk/doc/pluginsymbols.c
trunk/plugins/geanyfunctions.h
trunk/src/about.c
trunk/src/build.c
trunk/src/callbacks.c
trunk/src/plugindata.h
trunk/src/plugins.c
trunk/src/utils.c
trunk/src/utils.h
Modified: trunk/ChangeLog
===================================================================
--- trunk/ChangeLog 2009-01-28 17:57:16 UTC (rev 3523)
+++ trunk/ChangeLog 2009-01-28 19:30:18 UTC (rev 3524)
@@ -14,6 +14,16 @@
* doc/plugins.dox, plugins/demoplugin.h:
Mention necessary header includes in the plugin signal descriptions.
Add missing header includes for the demoplugin.
+ * doc/pluginsymbols.c, plugins/geanyfunctions.h, src/about.c,
+ src/build.c, src/callbacks.c, src/plugindata.h, src/plugins.c,
+ src/utils.c, src/utils.h:
+ Rename utils_start_browser() in utils_open_browser() and add it to
+ the plugin API.
+ Add plugin symbol plugin_help() which is called by Geany when the
+ plugin should show its documentation (if any). This symbol is
+ optional, plugins can omit it if not needed.
+ Add a Help button next to the Configure button in the plugin manager
+ dialog to easily open a plugin's documentation if available.
2009-01-27 Enrico Tröger <enrico(dot)troeger(at)uvena(dot)de>
Modified: trunk/doc/pluginsymbols.c
===================================================================
--- trunk/doc/pluginsymbols.c 2009-01-28 17:57:16 UTC (rev 3523)
+++ trunk/doc/pluginsymbols.c 2009-01-28 19:30:18 UTC (rev 3524)
@@ -97,3 +97,9 @@
* everything done in plugin_init() - e.g. destroy menu items, free memory. */
void plugin_cleanup();
+/** Called whenever the plugin should show its documentation (if any). This may open a dialog,
+ * a browser with a website or a local installed HTML help file(see utils_start_browser())
+ * or something else.
+ * Can be omitted when not needed. */
+void plugin_help();
+
Modified: trunk/plugins/geanyfunctions.h
===================================================================
--- trunk/plugins/geanyfunctions.h 2009-01-28 17:57:16 UTC (rev 3523)
+++ trunk/plugins/geanyfunctions.h 2009-01-28 19:30:18 UTC (rev 3524)
@@ -164,6 +164,8 @@
geany_functions->p_utils->str_casecmp
#define utils_get_date_time \
geany_functions->p_utils->get_date_time
+#define utils_open_browser \
+ geany_functions->p_utils->open_browser
#define ui_dialog_vbox_new \
geany_functions->p_ui->dialog_vbox_new
#define ui_frame_new_with_alignment \
Modified: trunk/src/about.c
===================================================================
--- trunk/src/about.c 2009-01-28 17:57:16 UTC (rev 3523)
+++ trunk/src/about.c 2009-01-28 19:30:18 UTC (rev 3524)
@@ -442,6 +442,6 @@
static void homepage_clicked(GtkButton *button, gpointer data)
{
- utils_start_browser(data);
+ utils_open_browser(data);
}
Modified: trunk/src/build.c
===================================================================
--- trunk/src/build.c 2009-01-28 17:57:16 UTC (rev 3523)
+++ trunk/src/build.c 2009-01-28 19:30:18 UTC (rev 3524)
@@ -1924,7 +1924,7 @@
if (use_builtin)
{
gchar *uri = g_strconcat("file:///", g_path_skip_root(doc->file_name), NULL);
- utils_start_browser(uri);
+ utils_open_browser(uri);
g_free(uri);
return TRUE;
Modified: trunk/src/callbacks.c
===================================================================
--- trunk/src/callbacks.c 2009-01-28 17:57:16 UTC (rev 3523)
+++ trunk/src/callbacks.c 2009-01-28 19:30:18 UTC (rev 3524)
@@ -1274,7 +1274,7 @@
uri = g_strconcat(GEANY_HOMEPAGE, "manual/", VERSION, "/index.html", NULL);
}
- utils_start_browser(uri);
+ utils_open_browser(uri);
g_free(uri);
}
@@ -1291,7 +1291,7 @@
on_website1_activate (GtkMenuItem *menuitem,
gpointer user_data)
{
- utils_start_browser(GEANY_HOMEPAGE);
+ utils_open_browser(GEANY_HOMEPAGE);
}
Modified: trunk/src/plugindata.h
===================================================================
--- trunk/src/plugindata.h 2009-01-28 17:57:16 UTC (rev 3523)
+++ trunk/src/plugindata.h 2009-01-28 19:30:18 UTC (rev 3524)
@@ -45,7 +45,7 @@
enum {
/** The Application Programming Interface (API) version, incremented
* whenever any plugin data types are modified or appended to. */
- GEANY_API_VERSION = 129,
+ GEANY_API_VERSION = 130,
/** The Application Binary Interface (ABI) version, incremented whenever
* existing fields in the plugin data types have to be changed or reordered. */
@@ -353,6 +353,7 @@
GError **error);
gint (*str_casecmp) (const gchar *s1, const gchar *s2);
gchar* (*get_date_time) (const gchar *format, time_t *time_to_use);
+ void (*open_browser) (const gchar *uri);
}
UtilsFuncs;
Modified: trunk/src/plugins.c
===================================================================
--- trunk/src/plugins.c 2009-01-28 17:57:16 UTC (rev 3523)
+++ trunk/src/plugins.c 2009-01-28 19:30:18 UTC (rev 3524)
@@ -91,6 +91,7 @@
void (*init) (GeanyData *data); /* Called when the plugin is enabled */
GtkWidget* (*configure) (GtkDialog *dialog); /* plugin configure dialog, optional */
+ void (*help) (void); /* Called when the plugin should show some help, optional */
void (*cleanup) (void); /* Called when the plugin is disabled or when Geany exits */
}
Plugin;
@@ -212,7 +213,8 @@
&utils_spawn_sync,
&utils_spawn_async,
&utils_str_casecmp,
- &utils_get_date_time
+ &utils_get_date_time,
+ &utils_open_browser
};
static UIUtilsFuncs uiutils_funcs = {
@@ -536,6 +538,7 @@
/* store some function pointers for later use */
g_module_symbol(plugin->module, "plugin_configure", (void *) &plugin->configure);
+ g_module_symbol(plugin->module, "plugin_help", (void *) &plugin->help);
g_module_symbol(plugin->module, "plugin_cleanup", (void *) &plugin->cleanup);
if (plugin->cleanup == NULL)
{
@@ -964,7 +967,9 @@
PLUGIN_COLUMN_NAME,
PLUGIN_COLUMN_FILE,
PLUGIN_COLUMN_PLUGIN,
- PLUGIN_N_COLUMNS
+ PLUGIN_N_COLUMNS,
+ PM_BUTTON_CONFIGURE,
+ PM_BUTTON_HELP
};
typedef struct
@@ -974,6 +979,7 @@
GtkListStore *store;
GtkWidget *description_label;
GtkWidget *configure_button;
+ GtkWidget *help_button;
}
PluginManagerWidgets;
@@ -1005,6 +1011,8 @@
gtk_widget_set_sensitive(pm_widgets.configure_button,
p->configure != NULL && g_list_find(active_plugin_list, p) != NULL);
+ gtk_widget_set_sensitive(pm_widgets.help_button,
+ p->help != NULL && g_list_find(active_plugin_list, p) != NULL);
}
}
}
@@ -1032,7 +1040,9 @@
/* unload plugin module */
if (!state)
- keybindings_write_to_file(); /* save shortcuts (only need this group, but it doesn't take long) */
+ /* save shortcuts (only need this group, but it doesn't take long) */
+ keybindings_write_to_file();
+
plugin_free(p);
/* reload plugin module and initialize it if item is checked */
@@ -1149,7 +1159,7 @@
}
-void pm_on_configure_button_clicked(GtkButton *button, gpointer user_data)
+void pm_on_plugin_button_clicked(GtkButton *button, gpointer user_data)
{
GtkTreeModel *model;
GtkTreeSelection *selection;
@@ -1163,7 +1173,10 @@
if (p != NULL)
{
- configure_plugin(p);
+ if (GPOINTER_TO_INT(user_data) == PM_BUTTON_CONFIGURE)
+ configure_plugin(p);
+ else if (GPOINTER_TO_INT(user_data) == PM_BUTTON_HELP && p->help != NULL)
+ p->help();
}
}
}
@@ -1228,8 +1241,13 @@
pm_widgets.configure_button = gtk_button_new_from_stock(GTK_STOCK_PREFERENCES);
gtk_widget_set_sensitive(pm_widgets.configure_button, FALSE);
g_signal_connect(pm_widgets.configure_button, "clicked",
- G_CALLBACK(pm_on_configure_button_clicked), NULL);
+ G_CALLBACK(pm_on_plugin_button_clicked), GINT_TO_POINTER(PM_BUTTON_CONFIGURE));
+ pm_widgets.help_button = gtk_button_new_from_stock(GTK_STOCK_HELP);
+ gtk_widget_set_sensitive(pm_widgets.help_button, FALSE);
+ g_signal_connect(pm_widgets.help_button, "clicked",
+ G_CALLBACK(pm_on_plugin_button_clicked), GINT_TO_POINTER(PM_BUTTON_HELP));
+
label2 = gtk_label_new(_("<b>Plugin details:</b>"));
gtk_label_set_use_markup(GTK_LABEL(label2), TRUE);
gtk_misc_set_alignment(GTK_MISC(label2), 0, 0.5);
@@ -1243,13 +1261,14 @@
hbox = gtk_hbox_new(FALSE, 0);
gtk_box_pack_start(GTK_BOX(hbox), label2, TRUE, TRUE, 0);
+ gtk_box_pack_start(GTK_BOX(hbox), pm_widgets.help_button, FALSE, FALSE, 4);
gtk_box_pack_start(GTK_BOX(hbox), pm_widgets.configure_button, FALSE, FALSE, 0);
- label_vbox = gtk_vbox_new(FALSE, 0);
+ label_vbox = gtk_vbox_new(FALSE, 3);
gtk_box_pack_start(GTK_BOX(label_vbox), hbox, FALSE, FALSE, 0);
gtk_box_pack_start(GTK_BOX(label_vbox), desc_win, FALSE, FALSE, 0);
- vbox2 = gtk_vbox_new(FALSE, 6);
+ vbox2 = gtk_vbox_new(FALSE, 3);
gtk_box_pack_start(GTK_BOX(vbox2), label, FALSE, FALSE, 5);
gtk_box_pack_start(GTK_BOX(vbox2), swin, TRUE, TRUE, 0);
gtk_box_pack_start(GTK_BOX(vbox2), label_vbox, FALSE, FALSE, 0);
Modified: trunk/src/utils.c
===================================================================
--- trunk/src/utils.c 2009-01-28 17:57:16 UTC (rev 3523)
+++ trunk/src/utils.c 2009-01-28 19:30:18 UTC (rev 3524)
@@ -59,13 +59,26 @@
#include "utils.h"
-void utils_start_browser(const gchar *uri)
+/**
+ * Tries to open the given URI in a browser.
+ * On Windows, the system's default browser is opened.
+ * On non-Windows systems, the browser command set in the preferences dialog is used. In case
+ * that fails or it is unset, @a xdg-open is used as fallback as well as some other known
+ * browsers.
+ *
+ * @param uri The URI to open in the web browser.
+ **/
+void utils_open_browser(const gchar *uri)
{
#ifdef G_OS_WIN32
+ g_return_if_fail(uri != NULL);
win32_open_browser(uri);
#else
- gchar *cmdline = g_strconcat(tool_prefs.browser_cmd, " ", uri, NULL);
+ gchar *cmdline;
+ g_return_if_fail(uri != NULL);
+
+ cmdline = g_strconcat(tool_prefs.browser_cmd, " ", uri, NULL);
if (! g_spawn_command_line_async(cmdline, NULL))
{
const gchar *argv[3];
Modified: trunk/src/utils.h
===================================================================
--- trunk/src/utils.h 2009-01-28 17:57:16 UTC (rev 3523)
+++ trunk/src/utils.h 2009-01-28 19:30:18 UTC (rev 3524)
@@ -54,7 +54,7 @@
ptr < &ptr_array->pdata[ptr_array->len]; ++ptr, item = *ptr)
-void utils_start_browser(const gchar *uri);
+void utils_open_browser(const gchar *uri);
gint utils_get_line_endings(const gchar* buffer, glong size);
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
More information about the Commits
mailing list