summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog7
-rw-r--r--src/editor.c10
-rw-r--r--src/gtkext/easygtk.c27
-rw-r--r--src/gtkext/easygtk.h3
4 files changed, 47 insertions, 0 deletions
diff --git a/ChangeLog b/ChangeLog
index 53706d8..e98e720 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,10 @@
+10-10-10 Cyrille Bagard <nocbos@gmail.com>
+
+ * src/editor.c:
+ * src/gtkext/easygtk.c:
+ * src/gtkext/easygtk.h:
+ Introduce menu item accelerators.
+
10-08-19 Cyrille Bagard <nocbos@gmail.com>
* src/arch/x86/instruction.c:
diff --git a/src/editor.c b/src/editor.c
index c446234..59401d9 100644
--- a/src/editor.c
+++ b/src/editor.c
@@ -228,6 +228,9 @@ GtkWidget *create_editor(void)
GtkWidget *button; /* Btn. de commande inférieur */
+ GtkAccelGroup *accgroup;
+
+
result = gtk_window_new(GTK_WINDOW_TOPLEVEL);
gtk_widget_set_size_request(result, 800, 600);
@@ -240,6 +243,10 @@ GtkWidget *create_editor(void)
ref = G_OBJECT(result);
+ accgroup = gtk_accel_group_new();
+ gtk_window_add_accel_group(GTK_WINDOW(result), accgroup);
+
+
vbox1 = gtk_vbox_new (FALSE, 0);
gtk_widget_show (vbox1);
@@ -260,6 +267,7 @@ GtkWidget *create_editor(void)
gtk_menu_item_set_submenu(GTK_MENU_ITEM(menuitem), menubar);
submenuitem = qck_create_menu_item(NULL, NULL, _("New project"), G_CALLBACK(mcb_file_new_project), result);
+ add_accelerator_to_menu_item(submenuitem, "<Control>N", accgroup);
gtk_container_add(GTK_CONTAINER(menubar), submenuitem);
submenuitem = qck_create_menu_item(NULL, NULL, _("Open project"), G_CALLBACK(mcb_file_open_project), result);
@@ -291,12 +299,14 @@ GtkWidget *create_editor(void)
gtk_menu_item_set_submenu(GTK_MENU_ITEM(menuitem), menubar);
submenuitem = qck_create_radio_menu_item(ref, "textview", NULL, _("Text view"), G_CALLBACK(mcb_view_change_support), result);
+ add_accelerator_to_menu_item(submenuitem, "F2", accgroup);
g_object_set_data(G_OBJECT(submenuitem), "kind_of_view", GUINT_TO_POINTER(BVW_BLOCK));
gtk_container_add(GTK_CONTAINER(menubar), submenuitem);
rgroup = gtk_radio_menu_item_get_group(GTK_RADIO_MENU_ITEM(submenuitem));
submenuitem = qck_create_radio_menu_item(ref, "graphview", rgroup, _("Graph view"), G_CALLBACK(mcb_view_change_support), result);
+ add_accelerator_to_menu_item(submenuitem, "F3", accgroup);
g_object_set_data(G_OBJECT(submenuitem), "kind_of_view", GUINT_TO_POINTER(BVW_GRAPH));
gtk_container_add(GTK_CONTAINER(menubar), submenuitem);
diff --git a/src/gtkext/easygtk.c b/src/gtkext/easygtk.c
index c14042c..15071e0 100644
--- a/src/gtkext/easygtk.c
+++ b/src/gtkext/easygtk.c
@@ -591,6 +591,33 @@ GtkWidget *qck_create_radio_menu_item(GObject *object, const char *name, GSList
/******************************************************************************
* *
+* Paramètres : item = élément d'un menu à mettre à jour. *
+* accelerator = description sous forme de chaîne de caractères.*
+* group = groupe d'appartenance du raccourci. *
+* *
+* Description : Ajoute un accélérateur à un élément de menu existant. *
+* *
+* Retour : - *
+* *
+* Remarques : - *
+* *
+******************************************************************************/
+
+void add_accelerator_to_menu_item(GtkWidget *item, const char *accelerator, GtkAccelGroup *group)
+{
+ guint key; /* Touche concernée */
+ GdkModifierType mods; /* Eventuels modificateurs */
+
+ gtk_accelerator_parse(accelerator, &key, &mods);
+
+ gtk_widget_add_accelerator(item, "activate", group,
+ key, mods, GTK_ACCEL_VISIBLE);
+
+}
+
+
+/******************************************************************************
+* *
* Paramètres : - *
* *
* Description : Crée et enregistre un composant 'GtkSeparatorMenuItem'. *
diff --git a/src/gtkext/easygtk.h b/src/gtkext/easygtk.h
index 1dae530..13a415a 100644
--- a/src/gtkext/easygtk.h
+++ b/src/gtkext/easygtk.h
@@ -77,6 +77,9 @@ GtkWidget *qck_create_check_menu_item(GObject *, const char *, const char *, GCa
/* Crée et enregistre un composant 'GtkRadioMenuItem'. */
GtkWidget *qck_create_radio_menu_item(GObject *, const char *, GSList *, const char *, GCallback, gpointer);
+/* Ajoute un accélérateur à un élément de menu existant. */
+void add_accelerator_to_menu_item(GtkWidget *, const char *, GtkAccelGroup *);
+
/* Crée et enregistre un composant 'GtkSeparatorMenuItem'. */
GtkWidget *qck_create_menu_separator(void);