[geany/geany] 169a2f: Keybindings for plugins
Pavel Roschin
git-noreply at xxxxx
Sat May 25 23:49:06 UTC 2013
Branch: refs/heads/master
Author: Pavel Roschin <roshin at scriptumplus.ru>
Committer: Matthew Brush <matt at geany.org>
Date: Sat, 25 May 2013 23:49:06 UTC
Commit: 169a2f49577457b2c1484fcf4e5ebf6c222547c0
https://github.com/geany/geany/commit/169a2f49577457b2c1484fcf4e5ebf6c222547c0
Log Message:
-----------
Keybindings for plugins
Modified Paths:
--------------
src/keybindings.c
src/keybindings.h
src/plugins.c
src/prefs.c
src/prefs.h
Modified: src/keybindings.c
38 files changed, 26 insertions(+), 12 deletions(-)
===================================================================
@@ -907,6 +907,31 @@ static GtkWidget *create_dialog(void)
}
+static void key_dialog_show_prefs()
+{
+ GtkWidget *wid;
+
+ prefs_show_dialog();
+ /* select the KB page */
+ wid = ui_lookup_widget(ui_widgets.prefs_dialog, "frame22");
+ if (wid != NULL)
+ {
+ GtkNotebook *nb = GTK_NOTEBOOK(ui_lookup_widget(ui_widgets.prefs_dialog, "notebook2"));
+ if (nb != NULL)
+ {
+ gtk_notebook_set_current_page(nb, gtk_notebook_page_num(nb, wid));
+ }
+ }
+}
+
+
+void keybindings_dialog_show_prefs_scroll(const gchar *name)
+{
+ key_dialog_show_prefs();
+ prefs_kb_search_name(name);
+}
+
+
/* non-modal keyboard shortcuts dialog, so user can edit whilst seeing the shortcuts */
static GtkWidget *key_dialog = NULL;
@@ -914,18 +939,7 @@ static void on_dialog_response(GtkWidget *dialog, gint response, gpointer user_d
{
if (response == GTK_RESPONSE_APPLY)
{
- GtkWidget *wid;
-
- prefs_show_dialog();
- /* select the KB page */
- wid = ui_lookup_widget(ui_widgets.prefs_dialog, "frame22");
- if (wid != NULL)
- {
- GtkNotebook *nb = GTK_NOTEBOOK(ui_lookup_widget(ui_widgets.prefs_dialog, "notebook2"));
-
- if (nb != NULL)
- gtk_notebook_set_current_page(nb, gtk_notebook_page_num(nb, wid));
- }
+ key_dialog_show_prefs();
}
gtk_widget_destroy(dialog);
key_dialog = NULL;
Modified: src/keybindings.h
2 files changed, 2 insertions(+), 0 deletions(-)
===================================================================
@@ -286,6 +286,8 @@ GeanyKeyBinding *keybindings_set_item(GeanyKeyGroup *group, gsize key_id,
gboolean keybindings_check_event(GdkEventKey *ev, GeanyKeyBinding *kb);
+void keybindings_dialog_show_prefs_scroll(const gchar *name);
+
G_END_DECLS
#endif
Modified: src/plugins.c
14 files changed, 13 insertions(+), 1 deletions(-)
===================================================================
@@ -1160,6 +1160,7 @@ enum
PLUGIN_COLUMN_DESCRIPTION,
PLUGIN_COLUMN_PLUGIN,
PLUGIN_N_COLUMNS,
+ PM_BUTTON_KEYBINDINGS,
PM_BUTTON_CONFIGURE,
PM_BUTTON_HELP
};
@@ -1173,6 +1174,7 @@ enum
GtkWidget *filename_label;
GtkWidget *author_label;
GtkWidget *configure_button;
+ GtkWidget *keybindings_button;
GtkWidget *help_button;
}
PluginManagerWidgets;
@@ -1188,6 +1190,8 @@ static void pm_update_buttons(Plugin *p)
gtk_widget_set_sensitive(pm_widgets.configure_button,
(p->configure || p->configure_single) && is_active);
gtk_widget_set_sensitive(pm_widgets.help_button, p->help != NULL && is_active);
+ gtk_widget_set_sensitive(pm_widgets.keybindings_button,
+ p->key_group && p->key_group->plugin_key_count > 0 && is_active);
}
@@ -1356,6 +1360,8 @@ static void pm_on_plugin_button_clicked(GtkButton *button, gpointer user_data)
plugin_show_configure(&p->public);
else if (GPOINTER_TO_INT(user_data) == PM_BUTTON_HELP && p->help != NULL)
p->help();
+ else if (GPOINTER_TO_INT(user_data) == PM_BUTTON_KEYBINDINGS && p->key_group && p->key_group->plugin_key_count > 0)
+ keybindings_dialog_show_prefs_scroll(p->info.name);
}
}
}
@@ -1434,6 +1440,11 @@ static void pm_show_dialog(GtkMenuItem *menuitem, gpointer user_data)
label = geany_wrap_label_new(_("Choose which plugins should be loaded at startup:"));
+ pm_widgets.keybindings_button = gtk_button_new_with_label(_("Keybindings"));
+ gtk_widget_set_sensitive(pm_widgets.keybindings_button, FALSE);
+ g_signal_connect(pm_widgets.keybindings_button, "clicked",
+ G_CALLBACK(pm_on_plugin_button_clicked), GINT_TO_POINTER(PM_BUTTON_KEYBINDINGS));
+
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",
@@ -1468,7 +1479,8 @@ static void pm_show_dialog(GtkMenuItem *menuitem, gpointer user_data)
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);
+ gtk_box_pack_start(GTK_BOX(hbox), pm_widgets.configure_button, FALSE, FALSE, 4);
+ gtk_box_pack_start(GTK_BOX(hbox), pm_widgets.keybindings_button, FALSE, FALSE, 0);
label_vbox = gtk_vbox_new(FALSE, 3);
gtk_box_pack_start(GTK_BOX(label_vbox), hbox, FALSE, FALSE, 0);
Modified: src/prefs.c
23 files changed, 23 insertions(+), 0 deletions(-)
===================================================================
@@ -334,6 +334,29 @@ static void kb_set_shortcut(GtkTreeStore *store, GtkTreeIter *iter,
}
+void prefs_kb_search_name(const gchar *search)
+{
+ GtkTreeIter iter;
+ gboolean valid;
+ GtkTreeModel *model;
+ gchar *name;
+ model = gtk_tree_view_get_model(tree);
+ valid = gtk_tree_model_get_iter_first(model, &iter);
+ while (valid)
+ {
+ gtk_tree_model_get(model, &iter, KB_TREE_ACTION, &name, -1);
+ if(g_strcmp0(name, search) == 0)
+ {
+ GtkTreePath *path = gtk_tree_model_get_path(model, &iter);
+ gtk_tree_view_scroll_to_cell(tree, path, NULL, FALSE, .0f, .0f);
+ gtk_tree_path_free(path);
+ break;
+ }
+ valid = gtk_tree_model_iter_next(model, &iter);
+ }
+}
+
+
static void kb_init(void)
{
GtkTreeIter parent, iter;
Modified: src/prefs.h
2 files changed, 2 insertions(+), 0 deletions(-)
===================================================================
@@ -58,6 +58,8 @@
void prefs_show_dialog(void);
+void prefs_kb_search_name(const gchar *search);
+
G_END_DECLS
#endif
--------------
This E-Mail was brought to you by github_commit_mail.py (Source: https://github.com/geany/infrastructure).
More information about the Commits
mailing list