[gimp/nielsdg/plug-ins-migrate-gtkaction: 5/5] plug-ins: fix the new unit editor (!655).
- From: Jehan <jehanp src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gimp/nielsdg/plug-ins-migrate-gtkaction: 5/5] plug-ins: fix the new unit editor (!655).
- Date: Tue, 11 Oct 2022 22:11:26 +0000 (UTC)
commit e4e87d65ca4f00617d5e4230fde53baffff6908e
Author: Jehan <jehan girinstud io>
Date: Tue Oct 11 21:18:48 2022 +0200
plug-ins: fix the new unit editor (!655).
- Don't forget to run gimp_ui_init() to get GIMP's styling in plug-ins.
- Process the "key-press-event" signal so that Escape key closes the window (as
it used to before the MR commit).
- Expand vertically the tree view, otherwise resizing the window leaves a lot of
ugly empty space, even though the tree view is still shown incomplete with a
scrollbar.
- Fix the Help button (which was doing nothing).
- Use full words for the "Refresh" and "Help" buttons, rather than icons. Text
is usually prefered for UI discoverability/understandability, unless there is
a space issue (i.e. too many icons for all of them to be words).
- Add a "OK" button too, and reorder the buttons similarly to how we usually
order them.
- Minor coding style fixes (alignments…).
plug-ins/common/unit-editor.c | 91 ++++++++++++++++++++++++++++++-------------
1 file changed, 64 insertions(+), 27 deletions(-)
---
diff --git a/plug-ins/common/unit-editor.c b/plug-ins/common/unit-editor.c
index 7b29cdb81a..cf0fbe1240 100644
--- a/plug-ins/common/unit-editor.c
+++ b/plug-ins/common/unit-editor.c
@@ -79,23 +79,29 @@ static GimpValueArray * editor_run (GimpProcedure *procedure
const GimpValueArray *args,
gpointer run_data);
-static GimpUnit new_unit_dialog (GtkWindow *main_window,
- GimpUnit template);
-static void on_app_activate (GApplication *gapp,
- gpointer user_data);
-static void new_unit_action (GSimpleAction *action,
- GVariant *param,
- gpointer user_data);
-static void duplicate_unit_action (GSimpleAction *action,
- GVariant *param,
- gpointer user_data);
-static void refresh_action (GSimpleAction *action,
- GVariant *param,
- gpointer user_data);
-static void saved_toggled_callback (GtkCellRendererToggle *celltoggle,
- gchar *path_string,
- GtkListStore *list_store);
-static void unit_list_init (GtkTreeView *tv);
+static GimpUnit new_unit_dialog (GtkWindow *main_window,
+ GimpUnit template);
+static void on_app_activate (GApplication *gapp,
+ gpointer user_data);
+
+static gboolean unit_editor_key_press_event (GtkWidget *window,
+ GdkEventKey *event,
+ gpointer user_data);
+static void unit_editor_help_clicked (GtkWidget *window);
+
+static void new_unit_action (GSimpleAction *action,
+ GVariant *param,
+ gpointer user_data);
+static void duplicate_unit_action (GSimpleAction *action,
+ GVariant *param,
+ gpointer user_data);
+static void refresh_action (GSimpleAction *action,
+ GVariant *param,
+ gpointer user_data);
+static void saved_toggled_callback (GtkCellRendererToggle *celltoggle,
+ gchar *path_string,
+ GtkListStore *list_store);
+static void unit_list_init (GtkTreeView *tv);
G_DEFINE_TYPE (GimpUnitEditor, gimp_unit_editor, GIMP_TYPE_PLUG_IN)
@@ -244,22 +250,28 @@ on_app_activate (GApplication *gapp, gpointer user_data)
gtk_header_bar_set_has_subtitle (GTK_HEADER_BAR (headerbar), FALSE);
gtk_header_bar_set_show_close_button (GTK_HEADER_BAR (headerbar), TRUE);
- button = gtk_button_new_from_icon_name (GIMP_ICON_VIEW_REFRESH,
- GTK_ICON_SIZE_BUTTON);
+ button = gtk_button_new_with_mnemonic (_("_Refresh"));
gtk_actionable_set_action_name (GTK_ACTIONABLE (button), "win.refresh");
- gtk_widget_set_tooltip_text (button, _("Refresh"));
gtk_widget_show (button);
gtk_header_bar_pack_start (GTK_HEADER_BAR (headerbar), button);
if (gimp_show_help_button ())
{
- button = gtk_button_new_from_icon_name (GIMP_ICON_HELP,
- GTK_ICON_SIZE_BUTTON);
- gtk_widget_set_tooltip_text (button, _("Help"));
+ button = gtk_button_new_with_mnemonic (_("_Help"));
+ g_signal_connect_swapped (button, "clicked",
+ G_CALLBACK (unit_editor_help_clicked),
+ self->window);
gtk_widget_show (button);
- gtk_header_bar_pack_end (GTK_HEADER_BAR (headerbar), button);
+ gtk_header_bar_pack_start (GTK_HEADER_BAR (headerbar), button);
}
+ button = gtk_button_new_with_mnemonic (_("_OK"));
+ g_signal_connect_swapped (button, "clicked",
+ G_CALLBACK (gtk_widget_destroy),
+ self->window);
+ gtk_widget_show (button);
+ gtk_header_bar_pack_end (GTK_HEADER_BAR (headerbar), button);
+
gtk_window_set_titlebar (self->window, headerbar);
gtk_widget_show (headerbar);
@@ -299,6 +311,7 @@ on_app_activate (GApplication *gapp, gpointer user_data)
gtk_widget_set_size_request (self->tv, -1, 220);
gtk_container_add (GTK_CONTAINER (scrolled_win), self->tv);
+ gtk_widget_set_vexpand (self->tv, TRUE);
gtk_widget_show (self->tv);
rend = gtk_cell_renderer_toggle_new ();
@@ -352,9 +365,31 @@ on_app_activate (GApplication *gapp, gpointer user_data)
unit_list_init (GTK_TREE_VIEW (self->tv));
+ g_signal_connect (self->window, "key-press-event",
+ G_CALLBACK (unit_editor_key_press_event),
+ NULL);
+
gtk_widget_show (GTK_WIDGET (self->window));
}
+static gboolean
+unit_editor_key_press_event (GtkWidget *window,
+ GdkEventKey *event,
+ gpointer user_data)
+{
+ if (event->state == 0 &&
+ event->keyval == GDK_KEY_Escape)
+ gtk_widget_destroy (GTK_WIDGET (window));
+
+ return FALSE;
+}
+
+static void
+unit_editor_help_clicked (GtkWidget *window)
+{
+ gimp_standard_help_func (PLUG_IN_PROC, window);
+}
+
static GimpValueArray *
editor_run (GimpProcedure *procedure,
const GimpValueArray *args,
@@ -362,6 +397,8 @@ editor_run (GimpProcedure *procedure,
{
GimpUnitEditor *editor = GIMP_UNIT_EDITOR (run_data);
+ gimp_ui_init (PLUG_IN_BINARY);
+
editor->app = gtk_application_new (NULL, G_APPLICATION_FLAGS_NONE);
g_signal_connect (editor->app, "activate", G_CALLBACK (on_app_activate), editor);
@@ -401,9 +438,9 @@ new_unit_dialog (GtkWindow *main_window,
NULL);
gimp_dialog_set_alternative_button_order (GTK_DIALOG (dialog),
- GTK_RESPONSE_OK,
- GTK_RESPONSE_CANCEL,
- -1);
+ GTK_RESPONSE_OK,
+ GTK_RESPONSE_CANCEL,
+ -1);
grid = gtk_grid_new ();
gtk_grid_set_row_spacing (GTK_GRID (grid), 6);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]