summaryrefslogtreecommitdiff
path: root/mate-dictionary/src
diff options
context:
space:
mode:
Diffstat (limited to 'mate-dictionary/src')
-rw-r--r--mate-dictionary/src/Makefile.am59
-rw-r--r--mate-dictionary/src/gdict-aligned-window.c112
-rw-r--r--mate-dictionary/src/gdict-applet.c78
-rw-r--r--mate-dictionary/src/gdict-sidebar.c4
-rw-r--r--mate-dictionary/src/gdict-window.c386
-rw-r--r--mate-dictionary/src/gdict-window.h4
6 files changed, 481 insertions, 162 deletions
diff --git a/mate-dictionary/src/Makefile.am b/mate-dictionary/src/Makefile.am
index e8228e6b..8616b3ef 100644
--- a/mate-dictionary/src/Makefile.am
+++ b/mate-dictionary/src/Makefile.am
@@ -27,8 +27,12 @@ AM_CPPFLAGS = \
bin_PROGRAMS = mate-dictionary
if BUILD_GDICT_APPLET
+if ENABLE_IN_PROCESS
+pkglib_LTLIBRARIES = libmate-dictionary-applet.la
+else
libexec_PROGRAMS = mate-dictionary-applet
endif
+endif
mate_dictionary_SOURCES = \
gdict-about.c \
@@ -56,6 +60,7 @@ mate_dictionary_CFLAGS = \
$(GLIB_CFLAGS) \
$(GIO_CFLAGS) \
$(GTK_CFLAGS) \
+ $(MATE_DESKTOP_CFLAGS) \
$(WARN_CFLAGS) \
$(NULL)
@@ -65,10 +70,60 @@ mate_dictionary_LDADD = \
$(GLIB_LIBS) \
$(GIO_LIBS) \
$(GTK_LIBS) \
+ $(MATE_DESKTOP_LIBS) \
$(NULL)
if BUILD_GDICT_APPLET
+if ENABLE_IN_PROCESS
+libmate_dictionary_applet_la_SOURCES = \
+ gdict-about.c \
+ gdict-about.h \
+ gdict-aligned-window.c \
+ gdict-aligned-window.h \
+ gdict-applet.c \
+ gdict-applet.h \
+ gdict-common.c \
+ gdict-common.h \
+ gdict-pref-dialog.c \
+ gdict-pref-dialog.h \
+ gdict-print.c \
+ gdict-print.h \
+ gdict-sidebar.c \
+ gdict-sidebar.h \
+ gdict-source-dialog.c \
+ gdict-source-dialog.h \
+ $(NULL)
+
+libmate_dictionary_applet_la_CFLAGS = \
+ -I$(top_builddir)/mate-dictionary \
+ -I$(top_srcdir)/mate-dictionary \
+ $(APPLET_CFLAGS) \
+ $(GLIB_CFLAGS) \
+ $(GIO_CFLAGS) \
+ $(GTK_CFLAGS) \
+ $(MATE_DESKTOP_CFLAGS) \
+ $(WARN_CFLAGS) \
+ $(NULL)
+
+libmate_dictionary_applet_la_LIBADD = \
+ -lm \
+ $(top_builddir)/mate-dictionary/libgdict/libmatedict.la \
+ $(APPLET_LIBS) \
+ $(GLIB_LIBS) \
+ $(GIO_LIBS) \
+ $(GTK_LIBS) \
+ $(MATE_DESKTOP_LIBS) \
+ $(NULL)
+
+if ENABLE_WAYLAND
+libmate_dictionary_applet_la_LIBADD += \
+ $(WAYLAND_LIBS)
+libmate_dictionary_applet_la_CFLAGS += \
+ $(WAYLAND_CFLAGS)
+endif
+
+else
mate_dictionary_applet_SOURCES = \
gdict-about.c \
gdict-about.h \
@@ -95,6 +150,7 @@ mate_dictionary_applet_CFLAGS = \
$(GLIB_CFLAGS) \
$(GIO_CFLAGS) \
$(GTK_CFLAGS) \
+ $(MATE_DESKTOP_CFLAGS) \
$(WARN_CFLAGS) \
$(NULL)
@@ -105,8 +161,9 @@ mate_dictionary_applet_LDADD = \
$(GLIB_LIBS) \
$(GIO_LIBS) \
$(GTK_LIBS) \
+ $(MATE_DESKTOP_LIBS) \
$(NULL)
-
+endif # ENABLE_IN_PROCESS
endif # BUILD_GDICT_APPLET
-include $(top_srcdir)/git.mk
diff --git a/mate-dictionary/src/gdict-aligned-window.c b/mate-dictionary/src/gdict-aligned-window.c
index ed2a08fe..c4a7bca1 100644
--- a/mate-dictionary/src/gdict-aligned-window.c
+++ b/mate-dictionary/src/gdict-aligned-window.c
@@ -33,6 +33,11 @@
#include "gdict-aligned-window.h"
+#if defined (ENABLE_WAYLAND) && defined (GDK_WINDOWING_WAYLAND)
+#include <gdk/gdkwayland.h>
+#include <gtk-layer-shell/gtk-layer-shell.h>
+#endif
+
struct _GdictAlignedWindowPrivate
{
GtkWidget *align_widget;
@@ -154,8 +159,10 @@ gdict_aligned_window_position (GdictAlignedWindow *window)
gint entry_x, entry_y, entry_width, entry_height;
gint x, y;
GdkGravity gravity = GDK_GRAVITY_NORTH_WEST;
- GdkWindow *gdk_window;
+ GdkWindow *gdk_window;
GdkDisplay *display;
+ GdkMonitor *monitor;
+ GdkRectangle geometry = {0};
g_assert (GDICT_IS_ALIGNED_WINDOW (window));
priv = window->priv;
@@ -185,7 +192,12 @@ gdict_aligned_window_position (GdictAlignedWindow *window)
&entry_y);
gdk_window_get_geometry (gdk_window, NULL, NULL, &entry_width, &entry_height);
- if (entry_x + our_width < WidthOfScreen (gdk_x11_screen_get_xscreen (gdk_screen_get_default ())))
+ /*Get the monitor dimensions*/
+ display= gdk_screen_get_display (gdk_screen_get_default ());
+ monitor = gdk_display_get_monitor (display, 0);
+ gdk_monitor_get_geometry (monitor, &geometry);
+
+ if (entry_x + our_width < geometry.width)
x = entry_x + 1;
else
{
@@ -194,7 +206,7 @@ gdict_aligned_window_position (GdictAlignedWindow *window)
gravity = GDK_GRAVITY_NORTH_EAST;
}
- if (entry_y + entry_height + our_height < HeightOfScreen (gdk_x11_screen_get_xscreen (gdk_screen_get_default ())))
+ if (entry_y + entry_height + our_height < geometry.height)
y = entry_y + entry_height - 1;
else
{
@@ -208,6 +220,100 @@ gdict_aligned_window_position (GdictAlignedWindow *window)
gtk_window_set_gravity (GTK_WINDOW (window), gravity);
gtk_window_move (GTK_WINDOW (window), x, y);
+
+#if defined (ENABLE_WAYLAND) && defined (GDK_WINDOWING_WAYLAND)
+ if (GDK_IS_WAYLAND_DISPLAY (display))
+ {
+ gboolean top, bottom, left, right;
+ GtkWidget *toplevel = gtk_widget_get_toplevel (GTK_WIDGET(priv->align_widget));
+
+ top = gtk_layer_get_anchor (GTK_WINDOW (toplevel), GTK_LAYER_SHELL_EDGE_TOP);
+ bottom = gtk_layer_get_anchor (GTK_WINDOW (toplevel), GTK_LAYER_SHELL_EDGE_BOTTOM);
+ left = gtk_layer_get_anchor (GTK_WINDOW (toplevel), GTK_LAYER_SHELL_EDGE_LEFT);
+ right = gtk_layer_get_anchor (GTK_WINDOW (toplevel), GTK_LAYER_SHELL_EDGE_RIGHT);
+
+ /*Set anchors to the edges (will hold to panel edge) and position along the panel
+ *Confine the dialog to the screen dimensions if the applet is near right or bottom
+ *Unset margins and anchors from any other position so as to avoid rendering issues
+ *when orientation changes as when the panel is moved
+ */
+ if (top && left && right)
+ {
+ gtk_layer_set_anchor (GTK_WINDOW (window), GTK_LAYER_SHELL_EDGE_TOP, TRUE);
+ gtk_layer_set_anchor (GTK_WINDOW (window), GTK_LAYER_SHELL_EDGE_BOTTOM, FALSE);
+ if (entry_x + our_width >= geometry.width)
+ {
+ gtk_layer_set_anchor (GTK_WINDOW (window), GTK_LAYER_SHELL_EDGE_LEFT, FALSE);
+ gtk_layer_set_anchor (GTK_WINDOW (window), GTK_LAYER_SHELL_EDGE_RIGHT,TRUE);
+ gtk_layer_set_margin (GTK_WINDOW (window), GTK_LAYER_SHELL_EDGE_LEFT, 0);
+ }
+ else
+ {
+ gtk_layer_set_anchor (GTK_WINDOW (window), GTK_LAYER_SHELL_EDGE_LEFT, TRUE);
+ gtk_layer_set_anchor (GTK_WINDOW (window), GTK_LAYER_SHELL_EDGE_RIGHT, FALSE);
+ gtk_layer_set_margin (GTK_WINDOW (window), GTK_LAYER_SHELL_EDGE_LEFT, entry_x);
+ }
+ gtk_layer_set_margin (GTK_WINDOW (window), GTK_LAYER_SHELL_EDGE_TOP, 0);
+ }
+
+ if (bottom && left && right)
+ {
+ gtk_layer_set_anchor (GTK_WINDOW (window), GTK_LAYER_SHELL_EDGE_BOTTOM, TRUE);
+ gtk_layer_set_anchor (GTK_WINDOW (window), GTK_LAYER_SHELL_EDGE_TOP, FALSE);
+ if (entry_x + our_width >= geometry.width)
+ {
+ gtk_layer_set_anchor (GTK_WINDOW (window), GTK_LAYER_SHELL_EDGE_LEFT, FALSE);
+ gtk_layer_set_anchor (GTK_WINDOW (window), GTK_LAYER_SHELL_EDGE_RIGHT,TRUE);
+ gtk_layer_set_margin (GTK_WINDOW (window), GTK_LAYER_SHELL_EDGE_LEFT, 0);
+ }
+ else
+ {
+ gtk_layer_set_anchor (GTK_WINDOW (window), GTK_LAYER_SHELL_EDGE_LEFT, TRUE);
+ gtk_layer_set_anchor (GTK_WINDOW (window), GTK_LAYER_SHELL_EDGE_RIGHT, FALSE);
+ gtk_layer_set_margin (GTK_WINDOW (window), GTK_LAYER_SHELL_EDGE_LEFT, entry_x);
+ }
+
+ gtk_layer_set_margin (GTK_WINDOW (window), GTK_LAYER_SHELL_EDGE_TOP, 0);
+ }
+ if (left && bottom && top && !right)
+ {
+ gtk_layer_set_anchor (GTK_WINDOW (window), GTK_LAYER_SHELL_EDGE_LEFT, TRUE);
+ gtk_layer_set_anchor (GTK_WINDOW (window), GTK_LAYER_SHELL_EDGE_RIGHT, FALSE);
+ if (entry_y + our_height >= geometry.height)
+ {
+ gtk_layer_set_anchor (GTK_WINDOW (window), GTK_LAYER_SHELL_EDGE_TOP, FALSE);
+ gtk_layer_set_anchor (GTK_WINDOW (window), GTK_LAYER_SHELL_EDGE_BOTTOM, TRUE);
+ gtk_layer_set_margin (GTK_WINDOW (window), GTK_LAYER_SHELL_EDGE_TOP, 0);
+ }
+ else
+ {
+ gtk_layer_set_anchor (GTK_WINDOW (window), GTK_LAYER_SHELL_EDGE_TOP, TRUE);
+ gtk_layer_set_anchor (GTK_WINDOW (window), GTK_LAYER_SHELL_EDGE_BOTTOM, FALSE);
+ gtk_layer_set_margin (GTK_WINDOW (window), GTK_LAYER_SHELL_EDGE_TOP, entry_y);
+ }
+ gtk_layer_set_margin (GTK_WINDOW (window), GTK_LAYER_SHELL_EDGE_LEFT, 0);
+ }
+ if (right && bottom && top && !left)
+ {
+ gtk_layer_set_anchor (GTK_WINDOW (window), GTK_LAYER_SHELL_EDGE_RIGHT, TRUE);
+ gtk_layer_set_anchor (GTK_WINDOW (window), GTK_LAYER_SHELL_EDGE_LEFT, FALSE);
+ if (entry_y + our_height >= geometry.height)
+ {
+ gtk_layer_set_anchor (GTK_WINDOW (window), GTK_LAYER_SHELL_EDGE_TOP, FALSE);
+ gtk_layer_set_anchor (GTK_WINDOW (window), GTK_LAYER_SHELL_EDGE_BOTTOM, TRUE);
+ gtk_layer_set_margin (GTK_WINDOW (window), GTK_LAYER_SHELL_EDGE_TOP, 0);
+ }
+ else
+ {
+ gtk_layer_set_anchor (GTK_WINDOW (window), GTK_LAYER_SHELL_EDGE_TOP, TRUE);
+ gtk_layer_set_anchor (GTK_WINDOW (window), GTK_LAYER_SHELL_EDGE_BOTTOM, FALSE);
+ gtk_layer_set_margin (GTK_WINDOW (window), GTK_LAYER_SHELL_EDGE_TOP, entry_y);
+ }
+ gtk_layer_set_margin (GTK_WINDOW (window), GTK_LAYER_SHELL_EDGE_TOP, entry_y);
+ gtk_layer_set_margin (GTK_WINDOW (window), GTK_LAYER_SHELL_EDGE_LEFT, 0);
+ }
+ }
+#endif
}
static void
diff --git a/mate-dictionary/src/gdict-applet.c b/mate-dictionary/src/gdict-applet.c
index 3c1e3a05..b635456a 100644
--- a/mate-dictionary/src/gdict-applet.c
+++ b/mate-dictionary/src/gdict-applet.c
@@ -38,6 +38,11 @@
#include "gdict-common.h"
#include "gdict-aligned-window.h"
+#if defined (ENABLE_WAYLAND) && defined (GDK_WINDOWING_WAYLAND)
+#include <gdk/gdkwayland.h>
+#include <gtk-layer-shell/gtk-layer-shell.h>
+#endif
+
#define GDICT_APPLET_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GDICT_TYPE_APPLET, GdictAppletClass))
#define GDICT_APPLET_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GDICT_TYPE_APPLET, GdictAppletClass))
@@ -132,7 +137,17 @@ set_window_default_size (GdictApplet *applet)
font_size = pango_font_description_get_size (gtk_widget_get_style (defbox)->font_desc);
font_size = PANGO_PIXELS (font_size);
- width = font_size * WINDOW_NUM_COLUMNS;
+#if defined (ENABLE_WAYLAND) && defined (GDK_WINDOWING_WAYLAND)
+ display = gtk_widget_get_display (widget);
+ if (GDK_IS_WAYLAND_DISPLAY (display))
+ width = font_size * WINDOW_NUM_COLUMNS - 100;
+
+ else
+#endif
+ {
+ width = font_size * WINDOW_NUM_COLUMNS;
+ }
+
height = font_size * WINDOW_NUM_ROWS;
/* Use at least the requisition size of the window... */
@@ -141,7 +156,6 @@ set_window_default_size (GdictApplet *applet)
height = MAX (height, req.height);
/* ... but make it no larger than half the monitor size */
- display = gtk_widget_get_display (widget);
monitor_num = gdk_display_get_monitor_at_window (display,
gtk_widget_get_window (widget));
gdk_monitor_get_geometry (monitor_num, &monitor);
@@ -314,6 +328,15 @@ gdict_applet_build_window (GdictApplet *applet)
G_CALLBACK (window_show_cb),
applet);
+#if defined (ENABLE_WAYLAND) && defined (GDK_WINDOWING_WAYLAND)
+ GdkDisplay *display = gdk_screen_get_display (gdk_screen_get_default());
+ if ((GDK_IS_WAYLAND_DISPLAY (display)) && (!gtk_layer_is_layer_window (GTK_WINDOW (window))))
+ {
+ gtk_layer_init_for_window (GTK_WINDOW (window));
+ gtk_layer_set_layer (GTK_WINDOW (window), GTK_LAYER_SHELL_LAYER_TOP);
+ gtk_layer_set_keyboard_mode (GTK_WINDOW (window), GTK_LAYER_SHELL_KEYBOARD_MODE_ON_DEMAND);
+ }
+#endif
frame = gtk_frame_new (NULL);
gtk_frame_set_shadow_type (GTK_FRAME (frame), GTK_SHADOW_IN);
gtk_container_add (GTK_CONTAINER (window), frame);
@@ -337,6 +360,14 @@ gdict_applet_build_window (GdictApplet *applet)
bbox = gtk_button_box_new (GTK_ORIENTATION_HORIZONTAL);
gtk_button_box_set_layout (GTK_BUTTON_BOX (bbox), GTK_BUTTONBOX_END);
gtk_box_set_spacing (GTK_BOX (bbox), 6);
+
+#if defined (ENABLE_WAYLAND) && defined (GDK_WINDOWING_WAYLAND)
+ if (GDK_IS_WAYLAND_DISPLAY (display))
+ {
+ gtk_box_pack_start (GTK_BOX (bbox), priv->entry, TRUE, TRUE, 0);
+ gtk_button_box_set_child_non_homogeneous(GTK_BUTTON_BOX (bbox), priv->entry, TRUE);
+ }
+#endif
gtk_box_pack_end (GTK_BOX (vbox), bbox, FALSE, FALSE, 0);
gtk_widget_show (bbox);
@@ -385,6 +416,11 @@ gdict_applet_build_window (GdictApplet *applet)
gtk_box_pack_start (GTK_BOX (bbox), button, FALSE, FALSE, 0);
gtk_widget_show (button);
+#if defined (ENABLE_WAYLAND) && defined (GDK_WINDOWING_WAYLAND)
+ if (GDK_IS_WAYLAND_DISPLAY (display))
+ gtk_widget_show (priv->entry);
+#endif
+
gtk_window_set_default (GTK_WINDOW (window), priv->defbox);
priv->window = window;
@@ -482,6 +518,11 @@ gdict_applet_icon_button_press_event_cb (GtkWidget *widget,
if (event->button != 1)
g_signal_stop_emission_by_name (priv->toggle, "button-press-event");
+#if defined (ENABLE_WAYLAND) && defined (GDK_WINDOWING_WAYLAND)
+ GdkDisplay *display = gdk_screen_get_display (gdk_screen_get_default());
+ if ((GDK_IS_WAYLAND_DISPLAY (display)) && (GTK_IS_WIDGET (priv->window)) && (event->button == 1))
+ gtk_widget_show_all (GTK_WIDGET (priv->window));
+#endif
return FALSE;
}
@@ -570,13 +611,23 @@ gdict_applet_draw (GdictApplet *applet)
/* entry */
priv->entry = gtk_entry_new ();
+#if defined (ENABLE_WAYLAND) && defined (GDK_WINDOWING_WAYLAND)
+ GdkDisplay *display = gdk_screen_get_display (gdk_screen_get_default());
+ if (GDK_IS_WAYLAND_DISPLAY (display))
+ {
+ gtk_entry_set_icon_from_icon_name (GTK_ENTRY(priv->entry), GTK_ENTRY_ICON_PRIMARY, "gtk-edit");
+ gtk_entry_set_icon_activatable (GTK_ENTRY(priv->entry), GTK_ENTRY_ICON_PRIMARY, FALSE);
+ /*Fill the available space since we must move the entry to the popup window for wayland*/
+ }
+#endif
+ gtk_entry_set_width_chars (GTK_ENTRY (priv->entry), 12);
+
gtk_widget_set_tooltip_text (priv->entry, _("Type the word you want to look up"));
set_atk_name_description (priv->entry,
_("Dictionary entry"),
_("Look up words in dictionaries"));
gtk_editable_set_editable (GTK_EDITABLE (priv->entry), TRUE);
- gtk_entry_set_width_chars (GTK_ENTRY (priv->entry), 12);
g_signal_connect (priv->entry, "activate",
G_CALLBACK (gdict_applet_entry_activate_cb),
applet);
@@ -586,8 +637,19 @@ gdict_applet_draw (GdictApplet *applet)
g_signal_connect (priv->entry, "key-press-event",
G_CALLBACK (gdict_applet_entry_key_press_cb),
applet);
+
+#if defined (ENABLE_WAYLAND) && defined (GDK_WINDOWING_WAYLAND)
+ if (GDK_IS_WAYLAND_DISPLAY (display))
+ {
+ GtkStyleContext *context = gtk_widget_get_style_context (priv->entry);
+ gtk_style_context_add_class (context, "view");
+ }
+ else
+#endif
+ {
gtk_box_pack_end (GTK_BOX (box), priv->entry, FALSE, FALSE, 0);
gtk_widget_show (priv->entry);
+ }
if (text)
{
@@ -1214,9 +1276,9 @@ gdict_applet_factory (MatePanelApplet *applet,
}
/* this defines the main () for the applet */
-MATE_PANEL_APPLET_OUT_PROCESS_FACTORY ("DictionaryAppletFactory",
- GDICT_TYPE_APPLET,
- "mate-dictionary-applet",
- gdict_applet_factory,
- NULL);
+PANEL_APPLET_FACTORY ("DictionaryAppletFactory",
+ GDICT_TYPE_APPLET,
+ "mate-dictionary-applet",
+ gdict_applet_factory,
+ NULL);
diff --git a/mate-dictionary/src/gdict-sidebar.c b/mate-dictionary/src/gdict-sidebar.c
index 72c56f3f..317f4cbf 100644
--- a/mate-dictionary/src/gdict-sidebar.c
+++ b/mate-dictionary/src/gdict-sidebar.c
@@ -33,6 +33,8 @@
#include <gdk/gdkkeysyms.h>
#include <glib/gi18n.h>
+#include <libmate-desktop/mate-image-menu-item.h>
+
#include "gdict-sidebar.h"
typedef struct
@@ -409,7 +411,7 @@ gdict_sidebar_add_page (GdictSidebar *sidebar,
NULL);
/* add the menu item for the page */
- menu_item = gtk_image_menu_item_new_with_label (page_name);
+ menu_item = mate_image_menu_item_new_with_label (page_name);
g_object_set_qdata_full (G_OBJECT (menu_item),
sidebar_page_id_quark,
g_strdup (page_id),
diff --git a/mate-dictionary/src/gdict-window.c b/mate-dictionary/src/gdict-window.c
index 75f9a6f5..7d6a6bb2 100644
--- a/mate-dictionary/src/gdict-window.c
+++ b/mate-dictionary/src/gdict-window.c
@@ -191,10 +191,10 @@ gdict_window_dispose (GObject *gobject)
}
static const gchar *toggle_state[] = {
- "/MainMenu/FileMenu/SaveAsMenu",
- "/MainMenu/FileMenu/FilePreviewMenu",
- "/MainMenu/FileMenu/FilePrintMenu",
- "/MainMenu/GoMenu",
+ "save_as_item",
+ "preview_item",
+ "print_item",
+ "go_menu",
};
static gint n_toggle_state = G_N_ELEMENTS (toggle_state);
@@ -215,7 +215,7 @@ gdict_window_ensure_menu_state (GdictWindow *window)
{
GtkWidget *item;
- item = gtk_ui_manager_get_widget (window->ui_manager, toggle_state[i]);
+ item = (GtkWidget *)gtk_builder_get_object (window->ui_manager, toggle_state[i]);
if (!item)
continue;
@@ -233,7 +233,7 @@ gdict_window_set_sidebar_visible (GdictWindow *window,
if (is_visible != window->sidebar_visible)
{
- GtkAction *action;
+ GAction *action;
window->sidebar_visible = (is_visible != FALSE);
@@ -242,8 +242,8 @@ gdict_window_set_sidebar_visible (GdictWindow *window,
else
gtk_widget_hide (window->sidebar_frame);
- action = gtk_action_group_get_action (window->action_group, "ViewSidebar");
- gtk_toggle_action_set_active (GTK_TOGGLE_ACTION (action), window->sidebar_visible);
+ action = g_action_map_lookup_action (G_ACTION_MAP (window->action_group), "ViewSidebar");
+ g_simple_action_set_state (G_SIMPLE_ACTION (action), g_variant_new_boolean (window->sidebar_visible));
}
}
@@ -896,9 +896,11 @@ gdict_window_load_state (GdictWindow *window)
}
static void
-gdict_window_cmd_file_new (GtkAction *action,
- GdictWindow *window)
+gdict_window_cmd_file_new (GSimpleAction *action,
+ GVariant *parameter,
+ gpointer user_data)
{
+ GdictWindow *window = user_data;
GtkWidget *new_window;
gchar *word = NULL;
@@ -923,9 +925,11 @@ gdict_window_cmd_file_new (GtkAction *action,
}
static void
-gdict_window_cmd_save_as (GtkAction *action,
- GdictWindow *window)
+gdict_window_cmd_save_as (GSimpleAction *action,
+ GVariant *parameter,
+ gpointer user_data)
{
+ GdictWindow *window = user_data;
GtkWidget *dialog;
g_assert (GDICT_IS_WINDOW (window));
@@ -978,9 +982,11 @@ gdict_window_cmd_save_as (GtkAction *action,
}
static void
-gdict_window_cmd_file_preview (GtkAction *action,
- GdictWindow *window)
+gdict_window_cmd_file_preview (GSimpleAction *action,
+ GVariant *parameter,
+ gpointer user_data)
{
+ GdictWindow *window = user_data;
g_assert (GDICT_IS_WINDOW (window));
gdict_show_print_preview (GTK_WINDOW (window),
@@ -988,9 +994,11 @@ gdict_window_cmd_file_preview (GtkAction *action,
}
static void
-gdict_window_cmd_file_print (GtkAction *action,
- GdictWindow *window)
+gdict_window_cmd_file_print (GSimpleAction *action,
+ GVariant *parameter,
+ gpointer user_data)
{
+ GdictWindow *window = user_data;
g_assert (GDICT_IS_WINDOW (window));
gdict_show_print_dialog (GTK_WINDOW (window),
@@ -998,9 +1006,11 @@ gdict_window_cmd_file_print (GtkAction *action,
}
static void
-gdict_window_cmd_file_close_window (GtkAction *action,
- GdictWindow *window)
+gdict_window_cmd_file_close_window (GSimpleAction *action,
+ GVariant *parameter,
+ gpointer user_data)
{
+ GdictWindow *window = user_data;
g_assert (GDICT_IS_WINDOW (window));
gdict_window_store_state (window);
@@ -1014,9 +1024,11 @@ gdict_window_cmd_file_close_window (GtkAction *action,
}
static void
-gdict_window_cmd_edit_copy (GtkAction *action,
- GdictWindow *window)
+gdict_window_cmd_edit_copy (GSimpleAction *action,
+ GVariant *parameter,
+ gpointer user_data)
{
+ GdictWindow *window = user_data;
g_assert (GDICT_IS_WINDOW (window));
if (gtk_widget_has_focus (window->entry))
@@ -1027,9 +1039,11 @@ gdict_window_cmd_edit_copy (GtkAction *action,
}
static void
-gdict_window_cmd_edit_select_all (GtkAction *action,
- GdictWindow *window)
+gdict_window_cmd_edit_select_all (GSimpleAction *action,
+ GVariant *parameter,
+ gpointer user_data)
{
+ GdictWindow *window = user_data;
g_assert (GDICT_IS_WINDOW (window));
if (gtk_widget_has_focus (window->entry))
@@ -1039,36 +1053,43 @@ gdict_window_cmd_edit_select_all (GtkAction *action,
}
static void
-gdict_window_cmd_edit_find (GtkAction *action,
- GdictWindow *window)
+gdict_window_cmd_edit_find (GSimpleAction *action,
+ GVariant *parameter,
+ gpointer user_data)
{
+ GdictWindow *window = user_data;
g_assert (GDICT_IS_WINDOW (window));
-
gdict_defbox_set_show_find (GDICT_DEFBOX (window->defbox), TRUE);
}
static void
-gdict_window_cmd_edit_find_next (GtkAction *action,
- GdictWindow *window)
+gdict_window_cmd_edit_find_next (GSimpleAction *action,
+ GVariant *parameter,
+ gpointer user_data)
{
+ GdictWindow *window = user_data;
g_assert (GDICT_IS_WINDOW (window));
gdict_defbox_find_next (GDICT_DEFBOX (window->defbox));
}
static void
-gdict_window_cmd_edit_find_previous (GtkAction *action,
- GdictWindow *window)
+gdict_window_cmd_edit_find_previous (GSimpleAction *action,
+ GVariant *parameter,
+ gpointer user_data)
{
+ GdictWindow *window = user_data;
g_assert (GDICT_IS_WINDOW (window));
gdict_defbox_find_previous (GDICT_DEFBOX (window->defbox));
}
static void
-gdict_window_cmd_edit_preferences (GtkAction *action,
- GdictWindow *window)
+gdict_window_cmd_edit_preferences (GSimpleAction *action,
+ GVariant *parameter,
+ gpointer user_data)
{
+ GdictWindow *window = user_data;
g_assert (GDICT_IS_WINDOW (window));
gdict_show_pref_dialog (GTK_WIDGET (window),
@@ -1077,12 +1098,40 @@ gdict_window_cmd_edit_preferences (GtkAction *action,
}
static void
-gdict_window_cmd_view_sidebar (GtkToggleAction *action,
- GdictWindow *window)
+sidebar_activate_toggle (GSimpleAction *action,
+ GVariant *parameter,
+ gpointer user_data)
+{
+ GVariant *state;
+
+ state = g_action_get_state (G_ACTION (action));
+ g_action_change_state (G_ACTION (action), g_variant_new_boolean (!g_variant_get_boolean (state)));
+ g_variant_unref (state);
+}
+
+static void
+statusbar_activate_toggle (GSimpleAction *action,
+ GVariant *parameter,
+ gpointer user_data)
+{
+ GVariant *state;
+
+ state = g_action_get_state (G_ACTION (action));
+ g_action_change_state (G_ACTION (action), g_variant_new_boolean (!g_variant_get_boolean (state)));
+ g_variant_unref (state);
+}
+
+static void
+gdict_window_cmd_view_sidebar (GSimpleAction *action,
+ GVariant *state,
+ gpointer user_data)
{
+ GdictWindow *window = user_data;
g_assert (GDICT_IS_WINDOW (window));
- window->sidebar_visible = (gtk_toggle_action_get_active (action) != FALSE);
+ g_variant_get_boolean (state);
+ window->sidebar_visible = (g_variant_get_boolean (state) != FALSE);
+ g_simple_action_set_state (action, state);
if (window->sidebar_visible)
gtk_widget_show (window->sidebar_frame);
@@ -1091,12 +1140,15 @@ gdict_window_cmd_view_sidebar (GtkToggleAction *action,
}
static void
-gdict_window_cmd_view_statusbar (GtkToggleAction *action,
- GdictWindow *window)
+gdict_window_cmd_view_statusbar (GSimpleAction *action,
+ GVariant *state,
+ gpointer user_data)
{
+ GdictWindow *window = user_data;
g_assert (GDICT_IS_WINDOW (window));
- window->statusbar_visible = (gtk_toggle_action_get_active (action) != FALSE);
+ window->statusbar_visible = (g_variant_get_boolean (state) != FALSE);
+ g_simple_action_set_state (action, state);
if (window->statusbar_visible)
gtk_widget_show (window->status);
@@ -1106,9 +1158,12 @@ gdict_window_cmd_view_statusbar (GtkToggleAction *action,
}
static void
-gdict_window_cmd_view_speller (GtkAction *action,
- GdictWindow *window)
+gdict_window_cmd_view_speller (GSimpleAction *action,
+ GVariant *parameter,
+ gpointer user_data)
+
{
+ GdictWindow *window = user_data;
g_assert (GDICT_IS_WINDOW (window));
gdict_sidebar_view_page (GDICT_SIDEBAR (window->sidebar),
@@ -1117,9 +1172,12 @@ gdict_window_cmd_view_speller (GtkAction *action,
}
static void
-gdict_window_cmd_view_databases (GtkAction *action,
- GdictWindow *window)
+gdict_window_cmd_view_databases (GSimpleAction *action,
+ GVariant *parameter,
+ gpointer user_data)
+
{
+ GdictWindow *window = user_data;
g_assert (GDICT_IS_WINDOW (window));
gdict_sidebar_view_page (GDICT_SIDEBAR (window->sidebar),
@@ -1128,9 +1186,12 @@ gdict_window_cmd_view_databases (GtkAction *action,
}
static void
-gdict_window_cmd_view_strategies (GtkAction *action,
- GdictWindow *window)
+gdict_window_cmd_view_strategies (GSimpleAction *action,
+ GVariant *parameter,
+ gpointer user_data)
+
{
+ GdictWindow *window = user_data;
g_assert (GDICT_IS_WINDOW (window));
gdict_sidebar_view_page (GDICT_SIDEBAR (window->sidebar),
@@ -1139,9 +1200,12 @@ gdict_window_cmd_view_strategies (GtkAction *action,
}
static void
-gdict_window_cmd_view_sources (GtkAction *action,
- GdictWindow *window)
+gdict_window_cmd_view_sources (GSimpleAction *action,
+ GVariant *parameter,
+ gpointer user_data)
+
{
+ GdictWindow *window = user_data;
g_assert (GDICT_IS_WINDOW (window));
gdict_sidebar_view_page (GDICT_SIDEBAR (window->sidebar),
@@ -1150,9 +1214,11 @@ gdict_window_cmd_view_sources (GtkAction *action,
}
static void
-gdict_window_cmd_go_first_def (GtkAction *action,
- GdictWindow *window)
+gdict_window_cmd_go_first_def (GSimpleAction *action,
+ GVariant *parameter,
+ gpointer user_data)
{
+ GdictWindow *window = user_data;
g_assert (GDICT_IS_WINDOW (window));
window->last_definition = 0;
@@ -1161,9 +1227,11 @@ gdict_window_cmd_go_first_def (GtkAction *action,
}
static void
-gdict_window_cmd_go_previous_def (GtkAction *action,
- GdictWindow *window)
+gdict_window_cmd_go_previous_def (GSimpleAction *action,
+ GVariant *parameter,
+ gpointer user_data)
{
+ GdictWindow *window = user_data;
g_assert (GDICT_IS_WINDOW (window));
if (window->last_definition == 0)
@@ -1175,9 +1243,11 @@ gdict_window_cmd_go_previous_def (GtkAction *action,
}
static void
-gdict_window_cmd_go_next_def (GtkAction *action,
- GdictWindow *window)
+gdict_window_cmd_go_next_def (GSimpleAction *action,
+ GVariant *parameter,
+ gpointer user_data)
{
+ GdictWindow *window = user_data;
g_assert (GDICT_IS_WINDOW (window));
if (window->max_definition == -1)
@@ -1192,9 +1262,11 @@ gdict_window_cmd_go_next_def (GtkAction *action,
}
static void
-gdict_window_cmd_go_last_def (GtkAction *action,
- GdictWindow *window)
+gdict_window_cmd_go_last_def (GSimpleAction *action,
+ GVariant *parameter,
+ gpointer user_data)
{
+ GdictWindow *window = user_data;
g_assert (GDICT_IS_WINDOW (window));
if (window->max_definition == -1)
@@ -1206,9 +1278,12 @@ gdict_window_cmd_go_last_def (GtkAction *action,
}
static void
-gdict_window_cmd_help_contents (GtkAction *action,
- GdictWindow *window)
+gdict_window_cmd_help_contents (GSimpleAction *action,
+ GVariant *parameter,
+ gpointer user_data)
+
{
+ GdictWindow *window = user_data;
GError *err = NULL;
g_return_if_fail (GDICT_IS_WINDOW (window));
@@ -1225,105 +1300,106 @@ gdict_window_cmd_help_contents (GtkAction *action,
}
static void
-gdict_window_cmd_help_about (GtkAction *action,
- GdictWindow *window)
+gdict_window_cmd_help_about (GSimpleAction *action,
+ GVariant *parameter,
+ gpointer user_data)
+
{
+ GdictWindow *window = user_data;
g_assert (GDICT_IS_WINDOW (window));
gdict_show_about_dialog (GTK_WIDGET (window));
}
static void
-gdict_window_cmd_lookup (GtkAction *action,
- GdictWindow *window)
+gdict_window_cmd_lookup (gpointer user_data)
+
{
+ GdictWindow *window = user_data;
g_assert (GDICT_IS_WINDOW (window));
gtk_widget_grab_focus (window->entry);
}
static void
-gdict_window_cmd_escape (GtkAction *action,
- GdictWindow *window)
+gdict_window_cmd_escape (gpointer user_data)
+
{
+ GdictWindow *window = user_data;
g_assert (GDICT_IS_WINDOW (window));
gdict_defbox_set_show_find (GDICT_DEFBOX (window->defbox), FALSE);
}
-static const GtkActionEntry entries[] =
+static void
+gdict_window_cmd_slash (gpointer user_data)
{
- { "File", NULL, N_("_File"), NULL, NULL, NULL },
- { "Edit", NULL, N_("_Edit"), NULL, NULL, NULL },
- { "View", NULL, N_("_View"), NULL, NULL, NULL },
- { "Go", NULL, N_("_Go"), NULL, NULL, NULL },
- { "Help", NULL, N_("_Help"), NULL, NULL, NULL },
+ GdictWindow *window = user_data;
+ g_assert (GDICT_IS_WINDOW (window));
+
+ gdict_defbox_set_show_find (GDICT_DEFBOX (window->defbox), TRUE);
+}
+static const GActionEntry entries[] =
+{
/* File menu */
- { "FileNew", "document-new", N_("_New"), "<control>N",
- N_("New look up"), G_CALLBACK (gdict_window_cmd_file_new) },
- { "FileSaveAs", "document-save-as", N_("_Save a Copy..."), NULL, NULL,
- G_CALLBACK (gdict_window_cmd_save_as) },
- { "FilePreview", NULL, N_("P_review..."), "<control><shift>P",
- N_("Preview this document"), G_CALLBACK (gdict_window_cmd_file_preview) },
- { "FilePrint", "document-print", N_("_Print..."), "<control>P",
- N_("Print this document"), G_CALLBACK (gdict_window_cmd_file_print) },
- { "FileCloseWindow", "window-close", N_("_Close"), "<control>W", NULL,
- G_CALLBACK (gdict_window_cmd_file_close_window) },
+ { "FileNew", gdict_window_cmd_file_new, NULL, NULL, NULL },
+ { "FileSaveAs", gdict_window_cmd_save_as, NULL, NULL, NULL },
+ { "FilePreview", gdict_window_cmd_file_preview, NULL, NULL, NULL },
+ { "FilePrint", gdict_window_cmd_file_print, NULL, NULL, NULL },
+ { "FileCloseWindow", gdict_window_cmd_file_close_window, NULL, NULL, NULL },
/* Edit menu */
- { "EditCopy", "edit-copy", N_("_Copy"), "<control>C", NULL,
- G_CALLBACK (gdict_window_cmd_edit_copy) },
- { "EditSelectAll", NULL, N_("Select _All"), "<control>A", NULL,
- G_CALLBACK (gdict_window_cmd_edit_select_all) },
- { "EditFind", "edit-find", N_("_Find"), "<control>F",
- N_("Find a word or phrase in the document"),
- G_CALLBACK (gdict_window_cmd_edit_find) },
- { "EditFindNext", NULL, N_("Find Ne_xt"), "<control>G", NULL,
- G_CALLBACK (gdict_window_cmd_edit_find_next) },
- { "EditFindPrevious", NULL, N_("Find Pre_vious"), "<control><shift>G", NULL,
- G_CALLBACK (gdict_window_cmd_edit_find_previous) },
- { "EditPreferences", "preferences-desktop", N_("_Preferences"), NULL, NULL,
- G_CALLBACK (gdict_window_cmd_edit_preferences) },
+ { "EditCopy", gdict_window_cmd_edit_copy, NULL, NULL, NULL },
+ { "EditSelectAll", gdict_window_cmd_edit_select_all, NULL, NULL, NULL },
+ { "EditFind", gdict_window_cmd_edit_find, NULL, NULL, NULL },
+ { "EditFindNext", gdict_window_cmd_edit_find_next, NULL, NULL, NULL },
+ { "EditFindPrevious", gdict_window_cmd_edit_find_previous, NULL, NULL, NULL },
+ { "EditPreferences", gdict_window_cmd_edit_preferences, NULL, NULL, NULL },
/* Go menu */
- { "GoPreviousDef", "go-previous", N_("_Previous Definition"), "<control>Page_Up",
- N_("Go to the previous definition"), G_CALLBACK (gdict_window_cmd_go_previous_def) },
- { "GoNextDef", "go-next", N_("_Next Definition"), "<control>Page_Down",
- N_("Go to the next definition"), G_CALLBACK (gdict_window_cmd_go_next_def) },
- { "GoFirstDef", "go-first", N_("_First Definition"), "<control>Home",
- N_("Go to the first definition"), G_CALLBACK (gdict_window_cmd_go_first_def) },
- { "GoLastDef", "go-last", N_("_Last Definition"), "<control>End",
- N_("Go to the last definition"), G_CALLBACK (gdict_window_cmd_go_last_def) },
+ { "GoPreviousDef", gdict_window_cmd_go_previous_def, NULL, NULL, NULL },
+ { "GoNextDef", gdict_window_cmd_go_next_def, NULL, NULL, NULL },
+ { "GoFirstDef", gdict_window_cmd_go_first_def, NULL, NULL, NULL },
+ { "GoLastDef", gdict_window_cmd_go_last_def, NULL, NULL, NULL },
/* View menu */
- { "ViewSpeller", NULL, N_("Similar _Words"), "<control>T", NULL,
- G_CALLBACK (gdict_window_cmd_view_speller), },
- { "ViewSource", NULL, N_("Dictionary Sources"), "<control>D", NULL,
- G_CALLBACK (gdict_window_cmd_view_sources), },
- { "ViewDB", NULL, N_("Available _Databases"), "<control>B", NULL,
- G_CALLBACK (gdict_window_cmd_view_databases), },
- { "ViewStrat", NULL, N_("Available St_rategies"), "<control>R", NULL,
- G_CALLBACK (gdict_window_cmd_view_strategies), },
+ { "ViewSidebar", sidebar_activate_toggle, NULL, "false", gdict_window_cmd_view_sidebar },
+ { "ViewStatusbar", statusbar_activate_toggle, NULL, "false", gdict_window_cmd_view_statusbar },
+ { "ViewSpeller", gdict_window_cmd_view_speller, NULL, NULL, NULL },
+ { "ViewSource", gdict_window_cmd_view_sources, NULL, NULL, NULL },
+ { "ViewDB", gdict_window_cmd_view_databases, NULL, NULL, NULL },
+ { "ViewStrat", gdict_window_cmd_view_strategies, NULL, NULL, NULL },
/* Help menu */
- { "HelpContents", "help-browser", N_("_Contents"), "F1", NULL,
- G_CALLBACK (gdict_window_cmd_help_contents) },
- { "HelpAbout", "help-about", N_("_About"), NULL, NULL,
- G_CALLBACK (gdict_window_cmd_help_about) },
-
- /* Accelerators */
- { "Lookup", NULL, "", "<control>L", NULL, G_CALLBACK (gdict_window_cmd_lookup) },
- { "Escape", NULL, "", "Escape", "", G_CALLBACK (gdict_window_cmd_escape) },
- { "Slash", "edit-find", NULL, "slash", NULL, G_CALLBACK (gdict_window_cmd_edit_find) },
+ { "HelpContents", gdict_window_cmd_help_contents, NULL, NULL, NULL },
+ { "HelpAbout", gdict_window_cmd_help_about, NULL, NULL, NULL },
};
-static const GtkToggleActionEntry toggle_entries[] = {
- /* View menu */
- { "ViewSidebar", NULL, N_("_Sidebar"), "F9", NULL,
- G_CALLBACK (gdict_window_cmd_view_sidebar), FALSE },
- { "ViewStatusbar", NULL, N_("S_tatusbar"), NULL, NULL,
- G_CALLBACK (gdict_window_cmd_view_statusbar), FALSE },
+static const struct {
+ guint keyval;
+ GdkModifierType modifier;
+ const gchar *widget_id;
+} menu_keybindings [] = {
+ { GDK_KEY_N, GDK_CONTROL_MASK, "new_item" },
+ { GDK_KEY_S, GDK_SHIFT_MASK | GDK_CONTROL_MASK, "preview_item" },
+ { GDK_KEY_P, GDK_CONTROL_MASK, "print_item" },
+ { GDK_KEY_W, GDK_CONTROL_MASK, "close_item" },
+ { GDK_KEY_C, GDK_CONTROL_MASK, "copy_item" },
+ { GDK_KEY_A, GDK_CONTROL_MASK, "select_item" },
+ { GDK_KEY_F, GDK_CONTROL_MASK, "find_item" },
+ { GDK_KEY_G, GDK_CONTROL_MASK, "find_next_item" },
+ { GDK_KEY_G, GDK_SHIFT_MASK | GDK_CONTROL_MASK, "find_previous_item" },
+ { GDK_KEY_Page_Up, GDK_CONTROL_MASK, "go_up_item" },
+ { GDK_KEY_Page_Down, GDK_CONTROL_MASK, "go_down_item" },
+ { GDK_KEY_Home, GDK_CONTROL_MASK, "go_home_item" },
+ { GDK_KEY_End, GDK_CONTROL_MASK, "go_end_item" },
+ { GDK_KEY_F9, 0, "side_item" },
+ { GDK_KEY_T, GDK_CONTROL_MASK, "speller_item" },
+ { GDK_KEY_D, GDK_CONTROL_MASK, "sources_item" },
+ { GDK_KEY_B, GDK_CONTROL_MASK, "db_item" },
+ { GDK_KEY_R, GDK_CONTROL_MASK, "strategies_item" },
+ { GDK_KEY_F1, 0, "help_item" }
};
static gboolean
@@ -1331,7 +1407,7 @@ gdict_window_delete_event_cb (GtkWidget *widget,
GdkEvent *event,
gpointer user_data)
{
- gdict_window_cmd_file_close_window (NULL, GDICT_WINDOW (widget));
+ gdict_window_cmd_file_close_window (NULL, NULL, GDICT_WINDOW (widget));
return FALSE;
}
@@ -1602,12 +1678,15 @@ gdict_window_constructor (GType type,
GtkWidget *frame1, *frame2;
GtkWidget *vbox;
GtkWidget *button;
- GtkActionGroup *action_group;
+ GtkWidget *item;
+ GActionGroup *action_group;
GtkAccelGroup *accel_group;
PangoFontDescription *font_desc;
gchar *font_name;
GError *error;
GtkAllocation allocation;
+ GClosure *lookup, *escape, *slash;
+ int i;
object = G_OBJECT_CLASS (gdict_window_parent_class)->constructor (type, n_construct_properties, construct_params);
window = GDICT_WINDOW (object);
@@ -1622,24 +1701,20 @@ gdict_window_constructor (GType type,
gtk_widget_show (window->main_box);
/* build menus */
- action_group = gtk_action_group_new ("MenuActions");
+ action_group = (GActionGroup*)g_simple_action_group_new ();
window->action_group = action_group;
- gtk_action_group_set_translation_domain (action_group, NULL);
- gtk_action_group_add_actions (action_group, entries,
- G_N_ELEMENTS (entries),
- window);
- gtk_action_group_add_toggle_actions (action_group, toggle_entries,
- G_N_ELEMENTS (toggle_entries),
- window);
-
- window->ui_manager = gtk_ui_manager_new ();
- gtk_ui_manager_insert_action_group (window->ui_manager, action_group, 0);
-
- accel_group = gtk_ui_manager_get_accel_group (window->ui_manager);
+ g_action_map_add_action_entries (G_ACTION_MAP (action_group),
+ entries, G_N_ELEMENTS (entries),
+ window);
+
+ window->ui_manager = gtk_builder_new ();
+ gtk_widget_insert_action_group (GTK_WIDGET (window), "win", action_group);
+
+ accel_group = gtk_accel_group_new ();
gtk_window_add_accel_group (GTK_WINDOW (window), accel_group);
error = NULL;
- if (!gtk_ui_manager_add_ui_from_file (window->ui_manager,
+ if (!gtk_builder_add_from_file (window->ui_manager,
PKGDATADIR "/mate-dictionary-ui.xml",
&error))
{
@@ -1648,7 +1723,7 @@ gdict_window_constructor (GType type,
}
else
{
- window->menubar = gtk_ui_manager_get_widget (window->ui_manager, "/MainMenu");
+ window->menubar = (GtkWidget *)gtk_builder_get_object (window->ui_manager, "dictionarymenubar");
gtk_box_pack_start (GTK_BOX (window->main_box), window->menubar, FALSE, FALSE, 0);
gtk_widget_show (window->menubar);
@@ -1656,6 +1731,23 @@ gdict_window_constructor (GType type,
gdict_window_ensure_menu_state (window);
}
+ for (i = 0; i < G_N_ELEMENTS (menu_keybindings); i++)
+ {
+ item = (GtkWidget*)gtk_builder_get_object (window->ui_manager, menu_keybindings[i].widget_id);
+ gtk_widget_add_accelerator (item, "activate", accel_group,
+ menu_keybindings[i].keyval,
+ menu_keybindings[i].modifier,
+ GTK_ACCEL_VISIBLE);
+ }
+ lookup = g_cclosure_new_swap (G_CALLBACK (gdict_window_cmd_lookup), window, NULL);
+ gtk_accel_group_connect (accel_group, GDK_KEY_L, GDK_CONTROL_MASK, 0, lookup);
+
+ escape = g_cclosure_new_swap (G_CALLBACK (gdict_window_cmd_escape), window, NULL);
+ gtk_accel_group_connect (accel_group, GDK_KEY_Escape, 0, 0, escape);
+
+ slash = g_cclosure_new_swap (G_CALLBACK (gdict_window_cmd_slash), window, NULL);
+ gtk_accel_group_connect (accel_group, GDK_KEY_slash, 0, 0, slash);
+
vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 6);
gtk_container_set_border_width (GTK_CONTAINER (vbox), 6);
gtk_container_add (GTK_CONTAINER (window->main_box), vbox);
@@ -1808,10 +1900,10 @@ gdict_window_constructor (GType type,
if (window->sidebar_visible)
{
- GtkAction *action;
+ GAction *action;
- action = gtk_action_group_get_action (window->action_group, "ViewSidebar");
- gtk_toggle_action_set_active (GTK_TOGGLE_ACTION (action), TRUE);
+ action = g_action_map_lookup_action (G_ACTION_MAP (window->action_group), "ViewSidebar");
+ g_simple_action_set_state (G_SIMPLE_ACTION (action), g_variant_new_boolean (TRUE));
gtk_widget_show (window->sidebar_frame);
}
@@ -1819,10 +1911,10 @@ gdict_window_constructor (GType type,
gtk_box_pack_end (GTK_BOX (window->main_box), window->status, FALSE, FALSE, 0);
if (window->statusbar_visible)
{
- GtkAction *action;
+ GAction *action;
- action = gtk_action_group_get_action (window->action_group, "ViewStatusbar");
- gtk_toggle_action_set_active (GTK_TOGGLE_ACTION (action), TRUE);
+ action = g_action_map_lookup_action (G_ACTION_MAP (window->action_group), "ViewStatusbar");
+ g_simple_action_set_state (G_SIMPLE_ACTION (action), g_variant_new_boolean (TRUE));
gtk_widget_show (window->status);
}
@@ -2035,10 +2127,10 @@ gdict_window_new (GdictWindowAction action,
g_return_val_if_fail (GDICT_IS_SOURCE_LOADER (loader), NULL);
retval = g_object_new (GDICT_TYPE_WINDOW,
- "action", action,
+ "action", action,
"source-loader", loader,
- "source-name", source_name,
- NULL);
+ "source-name", source_name,
+ NULL);
window = GDICT_WINDOW (retval);
diff --git a/mate-dictionary/src/gdict-window.h b/mate-dictionary/src/gdict-window.h
index 5e27e60c..0fd8e3fc 100644
--- a/mate-dictionary/src/gdict-window.h
+++ b/mate-dictionary/src/gdict-window.h
@@ -66,8 +66,8 @@ struct _GdictWindow
GtkWidget *status;
GtkWidget *progress;
- GtkUIManager *ui_manager;
- GtkActionGroup *action_group;
+ GtkBuilder *ui_manager;
+ GActionGroup *action_group;
GtkEntryCompletion *completion;
GtkListStore *completion_model;