[gimp/gimp-2-10] app: add gimp_tool_gui_add_button()
- From: Ell <ell src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gimp/gimp-2-10] app: add gimp_tool_gui_add_button()
- Date: Thu, 7 Mar 2019 21:28:09 +0000 (UTC)
commit 8d20b7c66521c782d3b1fbad5af4fa2eed8be1f1
Author: Ell <ell_se yahoo com>
Date: Thu Mar 7 16:01:08 2019 -0500
app: add gimp_tool_gui_add_button()
In GimpToolGui, add gimp_tool_gui_add_button() and
gimp_tool_gui_add_buttons_valist(), which allow adding dialog
buttons after construction.
(cherry picked from commit b23fae86f00c42e8ca2edcf7e480db88ca665aed)
app/display/gimptoolgui.c | 146 +++++++++++++++++++++++++++++++---------------
app/display/gimptoolgui.h | 6 ++
2 files changed, 104 insertions(+), 48 deletions(-)
---
diff --git a/app/display/gimptoolgui.c b/app/display/gimptoolgui.c
index 23bb00dafc..28c68d6968 100644
--- a/app/display/gimptoolgui.c
+++ b/app/display/gimptoolgui.c
@@ -84,28 +84,30 @@ struct _GimpToolGuiPrivate
#define GET_PRIVATE(gui) ((GimpToolGuiPrivate *) gimp_tool_gui_get_instance_private ((GimpToolGui *) (gui)))
-static void gimp_tool_gui_dispose (GObject *object);
-static void gimp_tool_gui_finalize (GObject *object);
-
-static void gimp_tool_gui_create_dialog (GimpToolGui *gui,
- GdkScreen *screen,
- gint monitor);
-static void gimp_tool_gui_update_buttons (GimpToolGui *gui);
-static void gimp_tool_gui_update_shell (GimpToolGui *gui);
-static void gimp_tool_gui_update_viewable (GimpToolGui *gui);
-
-static void gimp_tool_gui_dialog_response (GtkWidget *dialog,
- gint response_id,
- GimpToolGui *gui);
-static void gimp_tool_gui_canvas_resized (GtkWidget *canvas,
- GtkAllocation *allocation,
- GimpToolGui *gui);
-
-static ResponseEntry * response_entry_new (gint response_id,
- const gchar *button_text);
-static void response_entry_free (ResponseEntry *entry);
-static ResponseEntry * response_entry_find (GList *entries,
- gint response_id);
+static void gimp_tool_gui_dispose (GObject *object);
+static void gimp_tool_gui_finalize (GObject *object);
+
+static void gimp_tool_gui_create_dialog (GimpToolGui *gui,
+ GdkScreen *screen,
+ gint monitor);
+static void gimp_tool_gui_add_dialog_button (GimpToolGui *gui,
+ ResponseEntry *entry);
+static void gimp_tool_gui_update_buttons (GimpToolGui *gui);
+static void gimp_tool_gui_update_shell (GimpToolGui *gui);
+static void gimp_tool_gui_update_viewable (GimpToolGui *gui);
+
+static void gimp_tool_gui_dialog_response (GtkWidget *dialog,
+ gint response_id,
+ GimpToolGui *gui);
+static void gimp_tool_gui_canvas_resized (GtkWidget *canvas,
+ GtkAllocation *allocation,
+ GimpToolGui *gui);
+
+static ResponseEntry * response_entry_new (gint response_id,
+ const gchar *button_text);
+static void response_entry_free (ResponseEntry *entry);
+static ResponseEntry * response_entry_find (GList *entries,
+ gint response_id);
G_DEFINE_TYPE_WITH_PRIVATE (GimpToolGui, gimp_tool_gui, GIMP_TYPE_OBJECT)
@@ -254,16 +256,7 @@ gimp_tool_gui_new (GimpToolInfo *tool_info,
va_start (args, overlay);
- for (button_text = va_arg (args, const gchar *);
- button_text;
- button_text = va_arg (args, const gchar *))
- {
- gint response_id = va_arg (args, gint);
-
- private->response_entries = g_list_append (private->response_entries,
- response_entry_new (response_id,
- button_text));
- }
+ gimp_tool_gui_add_buttons_valist (gui, args);
va_end (args);
@@ -637,6 +630,45 @@ gimp_tool_gui_get_focus_on_map (GimpToolGui *gui)
return GET_PRIVATE (gui)->focus_on_map;
}
+void
+gimp_tool_gui_add_buttons_valist (GimpToolGui *gui,
+ va_list args)
+{
+ const gchar *button_text;
+ gint response_id;
+
+ g_return_if_fail (GIMP_IS_TOOL_GUI (gui));
+
+ while ((button_text = va_arg (args, const gchar *)))
+ {
+ response_id = va_arg (args, gint);
+
+ gimp_tool_gui_add_button (gui, button_text, response_id);
+ }
+}
+
+void
+gimp_tool_gui_add_button (GimpToolGui *gui,
+ const gchar *button_text,
+ gint response_id)
+{
+ GimpToolGuiPrivate *private;
+ ResponseEntry *entry;
+
+ g_return_if_fail (GIMP_IS_TOOL_GUI (gui));
+ g_return_if_fail (button_text != NULL);
+
+ private = GET_PRIVATE (gui);
+
+ entry = response_entry_new (response_id, button_text);
+
+ private->response_entries = g_list_append (private->response_entries,
+ entry);
+
+ if (private->dialog)
+ gimp_tool_gui_add_dialog_button (gui, entry);
+}
+
void
gimp_tool_gui_set_default_response (GimpToolGui *gui,
gint response_id)
@@ -747,14 +779,7 @@ gimp_tool_gui_create_dialog (GimpToolGui *gui,
{
ResponseEntry *entry = list->data;
- gimp_overlay_dialog_add_button (GIMP_OVERLAY_DIALOG (private->dialog),
- entry->button_text,
- entry->response_id);
-
- if (! entry->sensitive)
- gimp_overlay_dialog_set_response_sensitive (GIMP_OVERLAY_DIALOG (private->dialog),
- entry->response_id,
- FALSE);
+ gimp_tool_gui_add_dialog_button (gui, entry);
}
if (private->default_response != -1)
@@ -781,14 +806,7 @@ gimp_tool_gui_create_dialog (GimpToolGui *gui,
{
ResponseEntry *entry = list->data;
- gimp_dialog_add_button (GIMP_DIALOG (private->dialog),
- entry->button_text,
- entry->response_id);
-
- if (! entry->sensitive)
- gtk_dialog_set_response_sensitive (GTK_DIALOG (private->dialog),
- entry->response_id,
- FALSE);
+ gimp_tool_gui_add_dialog_button (gui, entry);
}
if (private->default_response != -1)
@@ -817,6 +835,38 @@ gimp_tool_gui_create_dialog (GimpToolGui *gui,
G_OBJECT (gui), 0);
}
+static void
+gimp_tool_gui_add_dialog_button (GimpToolGui *gui,
+ ResponseEntry *entry)
+{
+ GimpToolGuiPrivate *private = GET_PRIVATE (gui);
+
+ if (private->overlay)
+ {
+ gimp_overlay_dialog_add_button (GIMP_OVERLAY_DIALOG (private->dialog),
+ entry->button_text,
+ entry->response_id);
+
+ if (! entry->sensitive)
+ {
+ gimp_overlay_dialog_set_response_sensitive (
+ GIMP_OVERLAY_DIALOG (private->dialog),
+ entry->response_id, FALSE);
+ }
+ }
+ else
+ {
+ gimp_dialog_add_button (GIMP_DIALOG (private->dialog),
+ entry->button_text,
+ entry->response_id);
+
+ if (! entry->sensitive)
+ gtk_dialog_set_response_sensitive (GTK_DIALOG (private->dialog),
+ entry->response_id,
+ FALSE);
+ }
+}
+
static void
gimp_tool_gui_update_buttons (GimpToolGui *gui)
{
diff --git a/app/display/gimptoolgui.h b/app/display/gimptoolgui.h
index 1e86b4ea06..7b099a5b65 100644
--- a/app/display/gimptoolgui.h
+++ b/app/display/gimptoolgui.h
@@ -97,6 +97,12 @@ void gimp_tool_gui_set_focus_on_map (GimpToolGui *gui,
gboolean focus_on_map);
gboolean gimp_tool_gui_get_focus_on_map (GimpToolGui *gui);
+
+void gimp_tool_gui_add_buttons_valist (GimpToolGui *gui,
+ va_list args);
+void gimp_tool_gui_add_button (GimpToolGui *gui,
+ const gchar *button_text,
+ gint response_id);
void gimp_tool_gui_set_default_response (GimpToolGui *gui,
gint response_id);
void gimp_tool_gui_set_response_sensitive (GimpToolGui *gui,
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]