Revision: 3626 http://geany.svn.sourceforge.net/geany/?rev=3626&view=rev Author: eht16 Date: 2009-03-13 10:02:29 +0000 (Fri, 13 Mar 2009)
Log Message: ----------- Add an option to set an additional plugin lookup path.
Modified Paths: -------------- trunk/ChangeLog trunk/doc/geany.html trunk/doc/geany.txt trunk/geany.glade trunk/src/interface.c trunk/src/main.c trunk/src/plugindata.h trunk/src/plugins.c trunk/src/prefs.c trunk/src/prefs.h
Modified: trunk/ChangeLog =================================================================== --- trunk/ChangeLog 2009-03-13 09:59:58 UTC (rev 3625) +++ trunk/ChangeLog 2009-03-13 10:02:29 UTC (rev 3626) @@ -1,3 +1,11 @@ +2009-03-13 Enrico Tröger <enrico(dot)troeger(at)uvena(dot)de> + + * doc/geany.txt, doc/geany.html, geany.glade, src/interface.c, + src/main.c, src/plugindata.h, src/plugins.c, src/prefs.c, + src/prefs.h: + Add an option to set an additional plugin lookup path. + + 2009-03-10 Enrico Tröger <enrico(dot)troeger(at)uvena(dot)de>
* data/filetype_extensions.conf, data/filetypes.actionscript,
Modified: trunk/doc/geany.html =================================================================== --- trunk/doc/geany.html 2009-03-13 09:59:58 UTC (rev 3625) +++ trunk/doc/geany.html 2009-03-13 10:02:29 UTC (rev 3626) @@ -1666,6 +1666,13 @@ Leave it blank to use the current working directory.</dd> <dt>Project files</dt> <dd>Path to start in when opening project files.</dd> +<dt>Extra plugin path</dt> +<dd>Geany looks by default in the global installation path and in the +configuration directory. The path entered here will be searched additionally +for plugins. Usually you do not need to set an additional path to search for +plugins. It might be useful when Geany is installed on a multi-user machine +and additional plugins should be available in a custom location for all users. +Leave blank to not set an additional lookup path.</dd> </dl> </div> </div> @@ -4705,7 +4712,7 @@ <div class="footer"> <hr class="footer" /> <a class="reference external" href="geany.txt">View document source</a>. -Generated on: 2009-02-25 23:11 UTC. +Generated on: 2009-03-13 09:51 UTC. Generated by <a class="reference external" href="http://docutils.sourceforge.net/">Docutils</a> from <a class="reference external" href="http://docutils.sourceforge.net/rst.html">reStructuredText</a> source.
</div>
Modified: trunk/doc/geany.txt =================================================================== --- trunk/doc/geany.txt 2009-03-13 09:59:58 UTC (rev 3625) +++ trunk/doc/geany.txt 2009-03-13 10:02:29 UTC (rev 3626) @@ -1383,6 +1383,13 @@ Project files Path to start in when opening project files.
+Extra plugin path + Geany looks by default in the global installation path and in the + configuration directory. The path entered here will be searched additionally + for plugins. Usually you do not need to set an additional path to search for + plugins. It might be useful when Geany is installed on a multi-user machine + and additional plugins should be available in a custom location for all users. + Leave blank to not set an additional lookup path.
General Miscellaneous tab in preferences dialog
Modified: trunk/geany.glade =================================================================== --- trunk/geany.glade 2009-03-13 09:59:58 UTC (rev 3625) +++ trunk/geany.glade 2009-03-13 10:02:29 UTC (rev 3626) @@ -2992,7 +2992,7 @@ <child> <widget class="GtkTable" id="table11"> <property name="visible">True</property> - <property name="n_rows">2</property> + <property name="n_rows">3</property> <property name="n_columns">3</property> <property name="homogeneous">False</property> <property name="row_spacing">3</property> @@ -3155,6 +3155,85 @@ <property name="y_options"></property> </packing> </child> + + <child> + <widget class="GtkLabel" id="label235"> + <property name="visible">True</property> + <property name="label" translatable="yes">Extra plugin path:</property> + <property name="use_underline">False</property> + <property name="use_markup">False</property> + <property name="justify">GTK_JUSTIFY_LEFT</property> + <property name="wrap">False</property> + <property name="selectable">False</property> + <property name="xalign">0</property> + <property name="yalign">0.5</property> + <property name="xpad">0</property> + <property name="ypad">0</property> + <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> + <property name="width_chars">-1</property> + <property name="single_line_mode">False</property> + <property name="angle">0</property> + </widget> + <packing> + <property name="left_attach">0</property> + <property name="right_attach">1</property> + <property name="top_attach">2</property> + <property name="bottom_attach">3</property> + <property name="x_options">fill</property> + <property name="y_options"></property> + </packing> + </child> + + <child> + <widget class="GtkEntry" id="extra_plugin_path_entry"> + <property name="visible">True</property> + <property name="tooltip" translatable="yes">Geany looks by default in the global installation path and in the configuration directory. The path entered here will be searched additionally for plugins. Leave blank to disable.</property> + <property name="can_focus">True</property> + <property name="editable">True</property> + <property name="visibility">True</property> + <property name="max_length">0</property> + <property name="text" translatable="yes"></property> + <property name="has_frame">True</property> + <property name="invisible_char">•</property> + <property name="activates_default">False</property> + </widget> + <packing> + <property name="left_attach">1</property> + <property name="right_attach">2</property> + <property name="top_attach">2</property> + <property name="bottom_attach">3</property> + <property name="y_options"></property> + </packing> + </child> + + <child> + <widget class="GtkButton" id="extra_plugin_path_button"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="relief">GTK_RELIEF_NORMAL</property> + <property name="focus_on_click">True</property> + + <child> + <widget class="GtkImage" id="image2852"> + <property name="visible">True</property> + <property name="stock">gtk-open</property> + <property name="icon_size">4</property> + <property name="xalign">0.5</property> + <property name="yalign">0.5</property> + <property name="xpad">0</property> + <property name="ypad">0</property> + </widget> + </child> + </widget> + <packing> + <property name="left_attach">2</property> + <property name="right_attach">3</property> + <property name="top_attach">2</property> + <property name="bottom_attach">3</property> + <property name="x_options">fill</property> + <property name="y_options"></property> + </packing> + </child> </widget> </child> </widget>
Modified: trunk/src/interface.c =================================================================== --- trunk/src/interface.c 2009-03-13 09:59:58 UTC (rev 3625) +++ trunk/src/interface.c 2009-03-13 10:02:29 UTC (rev 3626) @@ -2280,6 +2280,10 @@ GtkWidget *project_file_path_entry; GtkWidget *project_file_path_button; GtkWidget *image1775; + GtkWidget *label235; + GtkWidget *extra_plugin_path_entry; + GtkWidget *extra_plugin_path_button; + GtkWidget *image2852; GtkWidget *label190; GtkWidget *label233; GtkWidget *vbox41; @@ -2706,7 +2710,7 @@ gtk_container_add (GTK_CONTAINER (frame25), alignment28); gtk_alignment_set_padding (GTK_ALIGNMENT (alignment28), 0, 0, 12, 0);
- table11 = gtk_table_new (2, 3, FALSE); + table11 = gtk_table_new (3, 3, FALSE); gtk_widget_show (table11); gtk_container_add (GTK_CONTAINER (alignment28), table11); gtk_table_set_row_spacings (GTK_TABLE (table11), 3); @@ -2762,6 +2766,31 @@ gtk_widget_show (image1775); gtk_container_add (GTK_CONTAINER (project_file_path_button), image1775);
+ label235 = gtk_label_new (_("Extra plugin path:")); + gtk_widget_show (label235); + gtk_table_attach (GTK_TABLE (table11), label235, 0, 1, 2, 3, + (GtkAttachOptions) (GTK_FILL), + (GtkAttachOptions) (0), 0, 0); + gtk_misc_set_alignment (GTK_MISC (label235), 0, 0.5); + + extra_plugin_path_entry = gtk_entry_new (); + gtk_widget_show (extra_plugin_path_entry); + gtk_table_attach (GTK_TABLE (table11), extra_plugin_path_entry, 1, 2, 2, 3, + (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), + (GtkAttachOptions) (0), 0, 0); + gtk_tooltips_set_tip (tooltips, extra_plugin_path_entry, _("Geany looks by default in the global installation path and in the configuration directory. The path entered here will be searched additionally for plugins. Leave blank to disable."), NULL); + gtk_entry_set_invisible_char (GTK_ENTRY (extra_plugin_path_entry), 8226); + + extra_plugin_path_button = gtk_button_new (); + gtk_widget_show (extra_plugin_path_button); + gtk_table_attach (GTK_TABLE (table11), extra_plugin_path_button, 2, 3, 2, 3, + (GtkAttachOptions) (GTK_FILL), + (GtkAttachOptions) (0), 0, 0); + + image2852 = gtk_image_new_from_stock ("gtk-open", GTK_ICON_SIZE_BUTTON); + gtk_widget_show (image2852); + gtk_container_add (GTK_CONTAINER (extra_plugin_path_button), image2852); + label190 = gtk_label_new (_("<b>Paths</b>")); gtk_widget_show (label190); gtk_frame_set_label_widget (GTK_FRAME (frame25), label190); @@ -4542,6 +4571,10 @@ GLADE_HOOKUP_OBJECT (prefs_dialog, project_file_path_entry, "project_file_path_entry"); GLADE_HOOKUP_OBJECT (prefs_dialog, project_file_path_button, "project_file_path_button"); GLADE_HOOKUP_OBJECT (prefs_dialog, image1775, "image1775"); + GLADE_HOOKUP_OBJECT (prefs_dialog, label235, "label235"); + GLADE_HOOKUP_OBJECT (prefs_dialog, extra_plugin_path_entry, "extra_plugin_path_entry"); + GLADE_HOOKUP_OBJECT (prefs_dialog, extra_plugin_path_button, "extra_plugin_path_button"); + GLADE_HOOKUP_OBJECT (prefs_dialog, image2852, "image2852"); GLADE_HOOKUP_OBJECT (prefs_dialog, label190, "label190"); GLADE_HOOKUP_OBJECT (prefs_dialog, label233, "label233"); GLADE_HOOKUP_OBJECT (prefs_dialog, vbox41, "vbox41");
Modified: trunk/src/main.c =================================================================== --- trunk/src/main.c 2009-03-13 09:59:58 UTC (rev 3625) +++ trunk/src/main.c 2009-03-13 10:02:29 UTC (rev 3626) @@ -1116,6 +1116,7 @@ g_free(app->datadir); g_free(app->docdir); g_free(prefs.default_open_path); + g_free(prefs.custom_plugin_path); g_free(ui_prefs.custom_date_format); g_free(interface_prefs.editor_font); g_free(interface_prefs.tagbar_font);
Modified: trunk/src/plugindata.h =================================================================== --- trunk/src/plugindata.h 2009-03-13 09:59:58 UTC (rev 3625) +++ trunk/src/plugindata.h 2009-03-13 10:02:29 UTC (rev 3626) @@ -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 = 134, + GEANY_API_VERSION = 135,
/** The Application Binary Interface (ABI) version, incremented whenever * existing fields in the plugin data types have to be changed or reordered. */
Modified: trunk/src/plugins.c =================================================================== --- trunk/src/plugins.c 2009-03-13 09:59:58 UTC (rev 3625) +++ trunk/src/plugins.c 2009-03-13 10:02:29 UTC (rev 3626) @@ -816,16 +816,21 @@ gchar *path;
path = g_strconcat(app->configdir, G_DIR_SEPARATOR_S, "plugins", NULL); - /* first load plugins in ~/.config/geany/plugins/, then in $prefix/lib/geany */ + /* first load plugins in ~/.config/geany/plugins/ */ load_plugins_from_path(path); g_free(path); + + /* load plugins from a custom path */ + if (NZV(prefs.custom_plugin_path)) + load_plugins_from_path(prefs.custom_plugin_path); + + /* finally load plugins from $prefix/lib/geany */ #ifdef G_OS_WIN32 path = get_plugin_path(); #else path = g_strconcat(GEANY_LIBDIR, G_DIR_SEPARATOR_S "geany", NULL); #endif load_plugins_from_path(path); - g_free(path); }
@@ -945,6 +950,8 @@
stash_group_add_toggle_button(group, &prefs.load_plugins, "load_plugins", TRUE, "check_plugins"); + stash_group_add_entry(group, &prefs.custom_plugin_path, + "custom_plugin_path", "", "extra_plugin_path_entry");
g_signal_connect(geany_object, "save-settings", G_CALLBACK(on_save_settings), NULL); stash_group_add_string_vector(group, &active_plugins_pref, "active_plugins", NULL);
Modified: trunk/src/prefs.c =================================================================== --- trunk/src/prefs.c 2009-03-13 09:59:58 UTC (rev 3625) +++ trunk/src/prefs.c 2009-03-13 10:02:29 UTC (rev 3626) @@ -86,6 +86,7 @@ guint key, GdkModifierType mods, const gchar *action); static void on_toolbar_show_toggled(GtkToggleButton *togglebutton, gpointer user_data); static void on_show_notebook_tabs_toggled(GtkToggleButton *togglebutton, gpointer user_data); +static void on_enable_plugins_toggled(GtkToggleButton *togglebutton, gpointer user_data); static void on_use_folding_toggled(GtkToggleButton *togglebutton, gpointer user_data); static void on_open_encoding_toggled(GtkToggleButton *togglebutton, gpointer user_data); static void on_prefs_print_radio_button_toggled(GtkToggleButton *togglebutton, gpointer user_data); @@ -539,6 +540,7 @@ #ifndef HAVE_PLUGINS gtk_widget_set_sensitive(ui_lookup_widget(ui_widgets.prefs_dialog, "check_plugins"), FALSE); #endif + on_enable_plugins_toggled(GTK_TOGGLE_BUTTON( ui_lookup_widget(ui_widgets.prefs_dialog, "check_plugins")), NULL);
#ifdef HAVE_VTE /* make VTE switch visible only when VTE is compiled in, it is hidden by default */ @@ -1356,6 +1358,15 @@ }
+static void on_enable_plugins_toggled(GtkToggleButton *togglebutton, gpointer user_data) +{ + gboolean sens = gtk_toggle_button_get_active(togglebutton); + + gtk_widget_set_sensitive(ui_lookup_widget(ui_widgets.prefs_dialog, "extra_plugin_path_entry"), sens); + gtk_widget_set_sensitive(ui_lookup_widget(ui_widgets.prefs_dialog, "extra_plugin_path_button"), sens); +} + + static void on_open_encoding_toggled(GtkToggleButton *togglebutton, gpointer user_data) { gboolean sens = gtk_toggle_button_get_active(togglebutton); @@ -1459,6 +1470,7 @@ /* add the clear icon to GtkEntry widgets in the dialog */ ui_entry_add_clear_icon(ui_lookup_widget(ui_widgets.prefs_dialog, "startup_path_entry")); ui_entry_add_clear_icon(ui_lookup_widget(ui_widgets.prefs_dialog, "project_file_path_entry")); + ui_entry_add_clear_icon(ui_lookup_widget(ui_widgets.prefs_dialog, "extra_plugin_path_entry")); ui_entry_add_clear_icon(ui_lookup_widget(ui_widgets.prefs_dialog, "entry_toggle_mark")); ui_entry_add_clear_icon(ui_lookup_widget(ui_widgets.prefs_dialog, "entry_com_make")); ui_entry_add_clear_icon(ui_lookup_widget(ui_widgets.prefs_dialog, "entry_com_term")); @@ -1482,6 +1494,8 @@
ui_setup_open_button_callback(ui_lookup_widget(ui_widgets.prefs_dialog, "startup_path_button"), NULL, GTK_FILE_CHOOSER_ACTION_SELECT_FOLDER, GTK_ENTRY(ui_lookup_widget(ui_widgets.prefs_dialog, "startup_path_entry"))); + ui_setup_open_button_callback(ui_lookup_widget(ui_widgets.prefs_dialog, "extra_plugin_path_button"), NULL, + GTK_FILE_CHOOSER_ACTION_SELECT_FOLDER, GTK_ENTRY(ui_lookup_widget(ui_widgets.prefs_dialog, "extra_plugin_path_entry")));
g_signal_connect(ui_widgets.prefs_dialog, "response", G_CALLBACK(on_prefs_button_clicked), NULL); @@ -1518,6 +1532,8 @@ g_signal_connect(ui_lookup_widget(ui_widgets.prefs_dialog, "check_print_pageheader"), "toggled", G_CALLBACK(on_prefs_print_page_header_toggled), NULL);
+ g_signal_connect(ui_lookup_widget(ui_widgets.prefs_dialog, "check_plugins"), + "toggled", G_CALLBACK(on_enable_plugins_toggled), NULL); g_signal_connect(ui_lookup_widget(ui_widgets.prefs_dialog, "check_toolbar_show"), "toggled", G_CALLBACK(on_toolbar_show_toggled), NULL); g_signal_connect(ui_lookup_widget(ui_widgets.prefs_dialog, "check_show_notebook_tabs"),
Modified: trunk/src/prefs.h =================================================================== --- trunk/src/prefs.h 2009-03-13 09:59:58 UTC (rev 3625) +++ trunk/src/prefs.h 2009-03-13 10:02:29 UTC (rev 3626) @@ -36,6 +36,7 @@ gboolean switch_to_status; gboolean auto_focus; gchar *default_open_path; + gchar *custom_plugin_path; } GeanyPrefs;
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.