[gimp] app: reduce code duplication in the filling/stroking code
- From: Michael Natterer <mitch src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gimp] app: reduce code duplication in the filling/stroking code
- Date: Sun, 30 Oct 2016 16:04:47 +0000 (UTC)
commit bd8f15a758db13fbab2b7c8412ab588cb98f524b
Author: Michael Natterer <mitch gimp org>
Date: Sun Oct 30 17:02:59 2016 +0100
app: reduce code duplication in the filling/stroking code
Move most of the fill/stroke callback code to items-commands.[ch] and
call the new functions from the respective selection and vectors
files.
app/actions/items-commands.c | 265 +++++++++++++++++++++++++++++++++
app/actions/items-commands.h | 61 ++++++--
app/actions/select-commands.c | 277 ++++++-----------------------------
app/actions/vectors-commands.c | 319 ++++++++--------------------------------
4 files changed, 415 insertions(+), 507 deletions(-)
---
diff --git a/app/actions/items-commands.c b/app/actions/items-commands.c
index 738e04a..0825c7c 100644
--- a/app/actions/items-commands.c
+++ b/app/actions/items-commands.c
@@ -20,18 +20,45 @@
#include <gegl.h>
#include <gtk/gtk.h>
+#include "libgimpconfig/gimpconfig.h"
+
#include "actions-types.h"
+#include "config/gimpdialogconfig.h"
+
+#include "core/gimp.h"
+#include "core/gimpcontext.h"
#include "core/gimpimage.h"
#include "core/gimpimage-undo.h"
#include "core/gimpitem.h"
#include "core/gimpitemundo.h"
+#include "dialogs/dialogs.h"
+#include "dialogs/fill-dialog.h"
+#include "dialogs/stroke-dialog.h"
+
+#include "actions.h"
#include "items-commands.h"
#include "gimp-intl.h"
+/* local function prototypes */
+
+static void items_fill_callback (GtkWidget *dialog,
+ GimpItem *item,
+ GimpDrawable *drawable,
+ GimpContext *context,
+ GimpFillOptions *options,
+ gpointer user_data);
+static void items_stroke_callback (GtkWidget *dialog,
+ GimpItem *item,
+ GimpDrawable *drawable,
+ GimpContext *context,
+ GimpStrokeOptions *options,
+ gpointer user_data);
+
+
/* public functions */
void
@@ -156,3 +183,241 @@ items_color_tag_cmd_callback (GtkAction *action,
gimp_image_flush (image);
}
}
+
+void
+items_fill_cmd_callback (GtkAction *action,
+ GimpImage *image,
+ GimpItem *item,
+ const gchar *dialog_key,
+ const gchar *dialog_title,
+ const gchar *dialog_icon_name,
+ const gchar *dialog_help_id,
+ gpointer data)
+{
+ GimpDrawable *drawable;
+ GtkWidget *dialog;
+ GtkWidget *widget;
+ return_if_no_widget (widget, data);
+
+ drawable = gimp_image_get_active_drawable (image);
+
+ if (! drawable)
+ {
+ gimp_message_literal (image->gimp,
+ G_OBJECT (widget), GIMP_MESSAGE_WARNING,
+ _("There is no active layer or channel to fill."));
+ return;
+ }
+
+ dialog = dialogs_get_dialog (G_OBJECT (item), dialog_key);
+
+ if (! dialog)
+ {
+ GimpDialogConfig *config = GIMP_DIALOG_CONFIG (image->gimp->config);
+
+ dialog = fill_dialog_new (item,
+ drawable,
+ action_data_get_context (data),
+ dialog_title,
+ dialog_icon_name,
+ dialog_help_id,
+ widget,
+ config->fill_options,
+ items_fill_callback,
+ NULL);
+
+ dialogs_attach_dialog (G_OBJECT (item), dialog_key, dialog);
+ }
+
+ gtk_window_present (GTK_WINDOW (dialog));
+}
+
+void
+items_fill_last_vals_cmd_callback (GtkAction *action,
+ GimpImage *image,
+ GimpItem *item,
+ gpointer data)
+{
+ GimpDrawable *drawable;
+ GimpDialogConfig *config;
+ GtkWidget *widget;
+ GError *error = NULL;
+ return_if_no_widget (widget, data);
+
+ drawable = gimp_image_get_active_drawable (image);
+
+ if (! drawable)
+ {
+ gimp_message_literal (image->gimp,
+ G_OBJECT (widget), GIMP_MESSAGE_WARNING,
+ _("There is no active layer or channel to fill."));
+ return;
+ }
+
+ config = GIMP_DIALOG_CONFIG (image->gimp->config);
+
+ if (! gimp_item_fill (item, drawable,
+ config->fill_options, TRUE, NULL, &error))
+ {
+ gimp_message_literal (image->gimp, G_OBJECT (widget),
+ GIMP_MESSAGE_WARNING, error->message);
+ g_clear_error (&error);
+ }
+ else
+ {
+ gimp_image_flush (image);
+ }
+}
+
+void
+items_stroke_cmd_callback (GtkAction *action,
+ GimpImage *image,
+ GimpItem *item,
+ const gchar *dialog_key,
+ const gchar *dialog_title,
+ const gchar *dialog_icon_name,
+ const gchar *dialog_help_id,
+ gpointer data)
+{
+ GimpDrawable *drawable;
+ GtkWidget *dialog;
+ GtkWidget *widget;
+ return_if_no_widget (widget, data);
+
+ drawable = gimp_image_get_active_drawable (image);
+
+ if (! drawable)
+ {
+ gimp_message_literal (image->gimp,
+ G_OBJECT (widget), GIMP_MESSAGE_WARNING,
+ _("There is no active layer or channel to stroke to."));
+ return;
+ }
+
+ dialog = dialogs_get_dialog (G_OBJECT (item), dialog_key);
+
+ if (! dialog)
+ {
+ GimpDialogConfig *config = GIMP_DIALOG_CONFIG (image->gimp->config);
+
+ dialog = stroke_dialog_new (item,
+ drawable,
+ action_data_get_context (data),
+ dialog_title,
+ dialog_icon_name,
+ dialog_help_id,
+ widget,
+ config->stroke_options,
+ items_stroke_callback,
+ NULL);
+
+ dialogs_attach_dialog (G_OBJECT (item), dialog_key, dialog);
+ }
+
+ gtk_window_present (GTK_WINDOW (dialog));
+}
+
+void
+items_stroke_last_vals_cmd_callback (GtkAction *action,
+ GimpImage *image,
+ GimpItem *item,
+ gpointer data)
+{
+ GimpDrawable *drawable;
+ GimpDialogConfig *config;
+ GtkWidget *widget;
+ GError *error = NULL;
+ return_if_no_widget (widget, data);
+
+ drawable = gimp_image_get_active_drawable (image);
+
+ if (! drawable)
+ {
+ gimp_message_literal (image->gimp,
+ G_OBJECT (widget), GIMP_MESSAGE_WARNING,
+ _("There is no active layer or channel to stroke to."));
+ return;
+ }
+
+ config = GIMP_DIALOG_CONFIG (image->gimp->config);
+
+ if (! gimp_item_stroke (item, drawable,
+ action_data_get_context (data),
+ config->stroke_options, NULL,
+ TRUE, NULL, &error))
+ {
+ gimp_message_literal (image->gimp, G_OBJECT (widget),
+ GIMP_MESSAGE_WARNING, error->message);
+ g_clear_error (&error);
+ }
+ else
+ {
+ gimp_image_flush (image);
+ }
+}
+
+
+/* private functions */
+
+static void
+items_fill_callback (GtkWidget *dialog,
+ GimpItem *item,
+ GimpDrawable *drawable,
+ GimpContext *context,
+ GimpFillOptions *options,
+ gpointer user_data)
+{
+ GimpDialogConfig *config = GIMP_DIALOG_CONFIG (context->gimp->config);
+ GimpImage *image = gimp_item_get_image (item);
+ GError *error = NULL;
+
+ gimp_config_sync (G_OBJECT (options),
+ G_OBJECT (config->fill_options), 0);
+
+ if (! gimp_item_fill (item, drawable, options, TRUE, NULL, &error))
+ {
+ gimp_message_literal (context->gimp,
+ G_OBJECT (dialog),
+ GIMP_MESSAGE_WARNING,
+ error ? error->message : "NULL");
+
+ g_clear_error (&error);
+ return;
+ }
+
+ gimp_image_flush (image);
+
+ gtk_widget_destroy (dialog);
+}
+
+static void
+items_stroke_callback (GtkWidget *dialog,
+ GimpItem *item,
+ GimpDrawable *drawable,
+ GimpContext *context,
+ GimpStrokeOptions *options,
+ gpointer data)
+{
+ GimpDialogConfig *config = GIMP_DIALOG_CONFIG (context->gimp->config);
+ GimpImage *image = gimp_item_get_image (item);
+ GError *error = NULL;
+
+ gimp_config_sync (G_OBJECT (options),
+ G_OBJECT (config->stroke_options), 0);
+
+ if (! gimp_item_stroke (item, drawable, context, options, NULL,
+ TRUE, NULL, &error))
+ {
+ gimp_message_literal (context->gimp,
+ G_OBJECT (dialog),
+ GIMP_MESSAGE_WARNING,
+ error ? error->message : "NULL");
+
+ g_clear_error (&error);
+ return;
+ }
+
+ gimp_image_flush (image);
+
+ gtk_widget_destroy (dialog);
+}
diff --git a/app/actions/items-commands.h b/app/actions/items-commands.h
index d9ac8ba..de28cff 100644
--- a/app/actions/items-commands.h
+++ b/app/actions/items-commands.h
@@ -19,23 +19,50 @@
#define __ITEMS_COMMANDS_H__
-void items_visible_cmd_callback (GtkAction *action,
- GimpImage *image,
- GimpItem *item);
-void items_linked_cmd_callback (GtkAction *action,
- GimpImage *image,
- GimpItem *item);
-void items_lock_content_cmd_callback (GtkAction *action,
- GimpImage *image,
- GimpItem *item);
-void items_lock_position_cmd_callback (GtkAction *action,
- GimpImage *image,
- GimpItem *item);
-
-void items_color_tag_cmd_callback (GtkAction *action,
- GimpImage *image,
- GimpItem *item,
- GimpColorTag color_tag);
+void items_visible_cmd_callback (GtkAction *action,
+ GimpImage *image,
+ GimpItem *item);
+void items_linked_cmd_callback (GtkAction *action,
+ GimpImage *image,
+ GimpItem *item);
+void items_lock_content_cmd_callback (GtkAction *action,
+ GimpImage *image,
+ GimpItem *item);
+void items_lock_position_cmd_callback (GtkAction *action,
+ GimpImage *image,
+ GimpItem *item);
+
+void items_color_tag_cmd_callback (GtkAction *action,
+ GimpImage *image,
+ GimpItem *item,
+ GimpColorTag color_tag);
+
+void items_fill_cmd_callback (GtkAction *action,
+ GimpImage *image,
+ GimpItem *item,
+ const gchar *dialog_key,
+ const gchar *dialog_title,
+ const gchar *dialog_icon_name,
+ const gchar *dialog_help_id,
+ gpointer data);
+void items_fill_last_vals_cmd_callback (GtkAction *action,
+ GimpImage *image,
+ GimpItem *item,
+ gpointer data);
+
+void items_stroke_cmd_callback (GtkAction *action,
+ GimpImage *image,
+ GimpItem *item,
+ const gchar *dialog_key,
+ const gchar *dialog_title,
+ const gchar *dialog_icon_name,
+ const gchar *dialog_help_id,
+ gpointer data);
+void items_stroke_last_vals_cmd_callback (GtkAction *action,
+ GimpImage *image,
+ GimpItem *item,
+ gpointer data);
+
#endif /* __ITEMS_COMMANDS_H__ */
diff --git a/app/actions/select-commands.c b/app/actions/select-commands.c
index d0a5793..cbbdc1f 100644
--- a/app/actions/select-commands.c
+++ b/app/actions/select-commands.c
@@ -21,7 +21,6 @@
#include <gtk/gtk.h>
#include "libgimpmath/gimpmath.h"
-#include "libgimpconfig/gimpconfig.h"
#include "libgimpwidgets/gimpwidgets.h"
#include "actions-types.h"
@@ -32,7 +31,6 @@
#include "core/gimpchannel.h"
#include "core/gimpimage.h"
#include "core/gimpselection.h"
-#include "core/gimpstrokeoptions.h"
#include "widgets/gimphelp-ids.h"
#include "widgets/gimpdialogfactory.h"
@@ -43,10 +41,9 @@
#include "display/gimpdisplayshell.h"
#include "dialogs/dialogs.h"
-#include "dialogs/fill-dialog.h"
-#include "dialogs/stroke-dialog.h"
#include "actions.h"
+#include "items-commands.h"
#include "select-commands.h"
#include "gimp-intl.h"
@@ -54,34 +51,22 @@
/* local function prototypes */
-static void select_feather_callback (GtkWidget *widget,
- gdouble size,
- GimpUnit unit,
- gpointer data);
-static void select_border_callback (GtkWidget *widget,
- gdouble size,
- GimpUnit unit,
- gpointer data);
-static void select_grow_callback (GtkWidget *widget,
- gdouble size,
- GimpUnit unit,
- gpointer data);
-static void select_shrink_callback (GtkWidget *widget,
- gdouble size,
- GimpUnit unit,
- gpointer data);
-static void select_fill_callback (GtkWidget *dialog,
- GimpItem *item,
- GimpDrawable *drawable,
- GimpContext *context,
- GimpFillOptions *options,
- gpointer data);
-static void select_stroke_callback (GtkWidget *dialog,
- GimpItem *item,
- GimpDrawable *drawable,
- GimpContext *context,
- GimpStrokeOptions *options,
- gpointer data);
+static void select_feather_callback (GtkWidget *widget,
+ gdouble size,
+ GimpUnit unit,
+ gpointer data);
+static void select_border_callback (GtkWidget *widget,
+ gdouble size,
+ GimpUnit unit,
+ gpointer data);
+static void select_grow_callback (GtkWidget *widget,
+ gdouble size,
+ GimpUnit unit,
+ gpointer data);
+static void select_shrink_callback (GtkWidget *widget,
+ gdouble size,
+ GimpUnit unit,
+ gpointer data);
/* public functions */
@@ -397,171 +382,58 @@ void
select_fill_cmd_callback (GtkAction *action,
gpointer data)
{
- GimpImage *image;
- GimpDrawable *drawable;
- GtkWidget *widget;
- GtkWidget *dialog;
+ GimpImage *image;
return_if_no_image (image, data);
- return_if_no_widget (widget, data);
- drawable = gimp_image_get_active_drawable (image);
-
- if (! drawable)
- {
- gimp_message_literal (image->gimp,
- G_OBJECT (widget), GIMP_MESSAGE_WARNING,
- _("There is no active layer or channel to fill."));
- return;
- }
-
-#define FILL_DIALOG_KEY "gimp-selection-fill-dialog"
-
- dialog = dialogs_get_dialog (G_OBJECT (drawable), FILL_DIALOG_KEY);
-
- if (! dialog)
- {
- GimpDialogConfig *config = GIMP_DIALOG_CONFIG (image->gimp->config);
-
- dialog = fill_dialog_new (GIMP_ITEM (gimp_image_get_mask (image)),
- drawable,
- action_data_get_context (data),
- _("Fill Selection Outline"),
- GIMP_STOCK_TOOL_BUCKET_FILL,
- GIMP_HELP_SELECTION_FILL,
- widget,
- config->fill_options,
- select_fill_callback,
- NULL);
-
- dialogs_attach_dialog (G_OBJECT (drawable), FILL_DIALOG_KEY, dialog);
- }
-
- gtk_window_present (GTK_WINDOW (dialog));
+ items_fill_cmd_callback (action,
+ image, GIMP_ITEM (gimp_image_get_mask (image)),
+ "gimp-selection-fill-dialog",
+ _("Fill Selection Outline"),
+ GIMP_STOCK_TOOL_BUCKET_FILL,
+ GIMP_HELP_SELECTION_FILL,
+ data);
}
void
select_fill_last_vals_cmd_callback (GtkAction *action,
gpointer data)
{
- GimpImage *image;
- GimpDrawable *drawable;
- GtkWidget *widget;
- GimpDialogConfig *config;
- GError *error = NULL;
+ GimpImage *image;
return_if_no_image (image, data);
- return_if_no_widget (widget, data);
-
- drawable = gimp_image_get_active_drawable (image);
-
- if (! drawable)
- {
- gimp_message_literal (image->gimp,
- G_OBJECT (widget), GIMP_MESSAGE_WARNING,
- _("There is no active layer or channel to fill."));
- return;
- }
- config = GIMP_DIALOG_CONFIG (image->gimp->config);
-
- if (! gimp_item_fill (GIMP_ITEM (gimp_image_get_mask (image)),
- drawable, config->fill_options, TRUE, NULL, &error))
- {
- gimp_message_literal (image->gimp,
- G_OBJECT (widget), GIMP_MESSAGE_WARNING,
- error->message);
- g_clear_error (&error);
- }
- else
- {
- gimp_image_flush (image);
- }
+ items_fill_last_vals_cmd_callback (action,
+ image,
+ GIMP_ITEM (gimp_image_get_mask (image)),
+ data);
}
void
select_stroke_cmd_callback (GtkAction *action,
gpointer data)
{
- GimpImage *image;
- GimpDrawable *drawable;
- GtkWidget *widget;
- GtkWidget *dialog;
+ GimpImage *image;
return_if_no_image (image, data);
- return_if_no_widget (widget, data);
-
- drawable = gimp_image_get_active_drawable (image);
-
- if (! drawable)
- {
- gimp_message_literal (image->gimp,
- G_OBJECT (widget), GIMP_MESSAGE_WARNING,
- _("There is no active layer or channel to stroke to."));
- return;
- }
-
-#define STROKE_DIALOG_KEY "gimp-selection-stroke-dialog"
-
- dialog = dialogs_get_dialog (G_OBJECT (drawable), STROKE_DIALOG_KEY);
-
- if (! dialog)
- {
- GimpDialogConfig *config = GIMP_DIALOG_CONFIG (image->gimp->config);
-
- dialog = stroke_dialog_new (GIMP_ITEM (gimp_image_get_mask (image)),
- drawable,
- action_data_get_context (data),
- _("Stroke Selection"),
- GIMP_STOCK_SELECTION_STROKE,
- GIMP_HELP_SELECTION_STROKE,
- widget,
- config->stroke_options,
- select_stroke_callback,
- NULL);
-
- dialogs_attach_dialog (G_OBJECT (drawable), STROKE_DIALOG_KEY, dialog);
- }
- gtk_window_present (GTK_WINDOW (dialog));
+ items_stroke_cmd_callback (action,
+ image, GIMP_ITEM (gimp_image_get_mask (image)),
+ "gimp-selection-stroke-dialog",
+ _("Stroke Selection"),
+ GIMP_STOCK_SELECTION_STROKE,
+ GIMP_HELP_SELECTION_STROKE,
+ data);
}
void
select_stroke_last_vals_cmd_callback (GtkAction *action,
gpointer data)
{
- GimpImage *image;
- GimpDrawable *drawable;
- GimpContext *context;
- GtkWidget *widget;
- GimpDialogConfig *config;
- GError *error = NULL;
+ GimpImage *image;
return_if_no_image (image, data);
- return_if_no_context (context, data);
- return_if_no_widget (widget, data);
-
- drawable = gimp_image_get_active_drawable (image);
-
- if (! drawable)
- {
- gimp_message_literal (image->gimp,
- G_OBJECT (widget), GIMP_MESSAGE_WARNING,
- _("There is no active layer or channel to stroke to."));
- return;
- }
-
- config = GIMP_DIALOG_CONFIG (image->gimp->config);
- if (! gimp_item_stroke (GIMP_ITEM (gimp_image_get_mask (image)),
- drawable, context, config->stroke_options, NULL,
- TRUE, NULL, &error))
- {
- gimp_message_literal (image->gimp,
- G_OBJECT (widget), GIMP_MESSAGE_WARNING,
- error->message);
- g_clear_error (&error);
- }
- else
- {
- gimp_image_flush (image);
- }
+ items_stroke_last_vals_cmd_callback (action,
+ image,
+ GIMP_ITEM (gimp_image_get_mask (image)),
+ data);
}
@@ -743,66 +615,3 @@ select_shrink_callback (GtkWidget *widget,
TRUE);
gimp_image_flush (image);
}
-
-static void
-select_fill_callback (GtkWidget *dialog,
- GimpItem *item,
- GimpDrawable *drawable,
- GimpContext *context,
- GimpFillOptions *options,
- gpointer data)
-{
- GimpDialogConfig *config = GIMP_DIALOG_CONFIG (context->gimp->config);
- GimpImage *image = gimp_item_get_image (item);
- GError *error = NULL;
-
- gimp_config_sync (G_OBJECT (options),
- G_OBJECT (config->fill_options), 0);
-
- if (! gimp_item_fill (item, drawable, options, TRUE, NULL, &error))
- {
- gimp_message_literal (context->gimp,
- G_OBJECT (dialog),
- GIMP_MESSAGE_WARNING,
- error ? error->message : "NULL");
-
- g_clear_error (&error);
- return;
- }
-
- gimp_image_flush (image);
-
- gtk_widget_destroy (dialog);
-}
-
-static void
-select_stroke_callback (GtkWidget *dialog,
- GimpItem *item,
- GimpDrawable *drawable,
- GimpContext *context,
- GimpStrokeOptions *options,
- gpointer data)
-{
- GimpDialogConfig *config = GIMP_DIALOG_CONFIG (context->gimp->config);
- GimpImage *image = gimp_item_get_image (item);
- GError *error = NULL;
-
- gimp_config_sync (G_OBJECT (options),
- G_OBJECT (config->stroke_options), 0);
-
- if (! gimp_item_stroke (item, drawable, context, options, NULL,
- TRUE, NULL, &error))
- {
- gimp_message_literal (context->gimp,
- G_OBJECT (dialog),
- GIMP_MESSAGE_WARNING,
- error ? error->message : "NULL");
-
- g_clear_error (&error);
- return;
- }
-
- gimp_image_flush (image);
-
- gtk_widget_destroy (dialog);
-}
diff --git a/app/actions/vectors-commands.c b/app/actions/vectors-commands.c
index 50ae22a..58ac21a 100644
--- a/app/actions/vectors-commands.c
+++ b/app/actions/vectors-commands.c
@@ -37,10 +37,8 @@
#include "core/gimpimage.h"
#include "core/gimpimage-merge.h"
#include "core/gimpimage-undo.h"
-#include "core/gimpitemundo.h"
#include "core/gimpparamspecs.h"
#include "core/gimpprogress.h"
-#include "core/gimpstrokeoptions.h"
#include "core/gimptoolinfo.h"
#include "pdb/gimppdb.h"
@@ -60,8 +58,6 @@
#include "tools/tool_manager.h"
#include "dialogs/dialogs.h"
-#include "dialogs/fill-dialog.h"
-#include "dialogs/stroke-dialog.h"
#include "dialogs/vectors-export-dialog.h"
#include "dialogs/vectors-import-dialog.h"
#include "dialogs/vectors-options-dialog.h"
@@ -75,53 +71,41 @@
/* local function prototypes */
-static void vectors_new_callback (GtkWidget *dialog,
- GimpImage *image,
- GimpVectors *vectors,
- GimpContext *context,
- const gchar *vectors_name,
- gboolean vectors_visible,
- gboolean vectors_linked,
- GimpColorTag vectors_color_tag,
- gboolean vectors_lock_content,
- gboolean vectors_lock_position,
- gpointer user_data);
-static void vectors_edit_attributes_callback (GtkWidget *dialog,
- GimpImage *image,
- GimpVectors *vectors,
- GimpContext *context,
- const gchar *vectors_name,
- gboolean vectors_visible,
- gboolean vectors_linked,
- GimpColorTag vectors_color_tag,
- gboolean vectors_lock_content,
- gboolean vectors_lock_position,
- gpointer user_data);
-static void vectors_fill_callback (GtkWidget *dialog,
- GimpItem *item,
- GimpDrawable *drawable,
- GimpContext *context,
- GimpFillOptions *options,
- gpointer user_data);
-static void vectors_stroke_callback (GtkWidget *dialog,
- GimpItem *item,
- GimpDrawable *drawable,
- GimpContext *context,
- GimpStrokeOptions *options,
- gpointer user_data);
-static void vectors_import_callback (GtkWidget *dialog,
- GimpImage *image,
- GFile *file,
- GFile *import_folder,
- gboolean merge_vectors,
- gboolean scale_vectors,
- gpointer user_data);
-static void vectors_export_callback (GtkWidget *dialog,
- GimpImage *image,
- GFile *file,
- GFile *export_folder,
- gboolean active_only,
- gpointer user_data);
+static void vectors_new_callback (GtkWidget *dialog,
+ GimpImage *image,
+ GimpVectors *vectors,
+ GimpContext *context,
+ const gchar *vectors_name,
+ gboolean vectors_visible,
+ gboolean vectors_linked,
+ GimpColorTag vectors_color_tag,
+ gboolean vectors_lock_content,
+ gboolean vectors_lock_position,
+ gpointer user_data);
+static void vectors_edit_attributes_callback (GtkWidget *dialog,
+ GimpImage *image,
+ GimpVectors *vectors,
+ GimpContext *context,
+ const gchar *vectors_name,
+ gboolean vectors_visible,
+ gboolean vectors_linked,
+ GimpColorTag vectors_color_tag,
+ gboolean vectors_lock_content,
+ gboolean vectors_lock_position,
+ gpointer user_data);
+static void vectors_import_callback (GtkWidget *dialog,
+ GimpImage *image,
+ GFile *file,
+ GFile *import_folder,
+ gboolean merge_vectors,
+ gboolean scale_vectors,
+ gpointer user_data);
+static void vectors_export_callback (GtkWidget *dialog,
+ GimpImage *image,
+ GFile *file,
+ GFile *export_folder,
+ gboolean active_only,
+ gpointer user_data);
/* public functions */
@@ -431,173 +415,60 @@ void
vectors_fill_cmd_callback (GtkAction *action,
gpointer data)
{
- GimpImage *image;
- GimpVectors *vectors;
- GimpDrawable *drawable;
- GtkWidget *widget;
- GtkWidget *dialog;
+ GimpImage *image;
+ GimpVectors *vectors;
return_if_no_vectors (image, vectors, data);
- return_if_no_widget (widget, data);
-
- drawable = gimp_image_get_active_drawable (image);
- if (! drawable)
- {
- gimp_message_literal (image->gimp,
- G_OBJECT (widget), GIMP_MESSAGE_WARNING,
- _("There is no active layer or channel to fill."));
- return;
- }
-
-#define FILL_DIALOG_KEY "gimp-vectors-fill-dialog"
-
- dialog = dialogs_get_dialog (G_OBJECT (drawable), FILL_DIALOG_KEY);
-
- if (! dialog)
- {
- GimpDialogConfig *config = GIMP_DIALOG_CONFIG (image->gimp->config);
-
- dialog = fill_dialog_new (GIMP_ITEM (vectors),
- drawable,
- action_data_get_context (data),
- _("Fill Path"),
- GIMP_STOCK_TOOL_BUCKET_FILL,
- GIMP_HELP_PATH_FILL,
- widget,
- config->fill_options,
- vectors_fill_callback,
- NULL);
-
- dialogs_attach_dialog (G_OBJECT (drawable), FILL_DIALOG_KEY, dialog);
- }
-
- gtk_window_present (GTK_WINDOW (dialog));
+ items_fill_cmd_callback (action,
+ image, GIMP_ITEM (vectors),
+ "gimp-vectors-fill-dialog",
+ _("Fill Path"),
+ GIMP_STOCK_TOOL_BUCKET_FILL,
+ GIMP_HELP_PATH_FILL,
+ data);
}
void
vectors_fill_last_vals_cmd_callback (GtkAction *action,
gpointer data)
{
- GimpImage *image;
- GimpVectors *vectors;
- GimpDrawable *drawable;
- GtkWidget *widget;
- GimpDialogConfig *config;
- GError *error = NULL;
+ GimpImage *image;
+ GimpVectors *vectors;
return_if_no_vectors (image, vectors, data);
- return_if_no_widget (widget, data);
-
- drawable = gimp_image_get_active_drawable (image);
-
- if (! drawable)
- {
- gimp_message_literal (image->gimp,
- G_OBJECT (widget), GIMP_MESSAGE_WARNING,
- _("There is no active layer or channel to fill."));
- return;
- }
- config = GIMP_DIALOG_CONFIG (image->gimp->config);
-
- if (! gimp_item_fill (GIMP_ITEM (vectors),
- drawable, config->fill_options, TRUE, NULL, &error))
- {
- gimp_message_literal (image->gimp, G_OBJECT (widget),
- GIMP_MESSAGE_WARNING, error->message);
- g_clear_error (&error);
- }
- else
- {
- gimp_image_flush (image);
- }
+ items_fill_last_vals_cmd_callback (action,
+ image, GIMP_ITEM (vectors),
+ data);
}
void
vectors_stroke_cmd_callback (GtkAction *action,
gpointer data)
{
- GimpImage *image;
- GimpVectors *vectors;
- GimpDrawable *drawable;
- GtkWidget *widget;
- GtkWidget *dialog;
+ GimpImage *image;
+ GimpVectors *vectors;
return_if_no_vectors (image, vectors, data);
- return_if_no_widget (widget, data);
-
- drawable = gimp_image_get_active_drawable (image);
-
- if (! drawable)
- {
- gimp_message_literal (image->gimp,
- G_OBJECT (widget), GIMP_MESSAGE_WARNING,
- _("There is no active layer or channel to stroke to."));
- return;
- }
-
-#define STROKE_DIALOG_KEY "gimp-vectors-stroke-dialog"
-
- dialog = dialogs_get_dialog (G_OBJECT (drawable), STROKE_DIALOG_KEY);
-
- if (! dialog)
- {
- GimpDialogConfig *config = GIMP_DIALOG_CONFIG (image->gimp->config);
- dialog = stroke_dialog_new (GIMP_ITEM (vectors),
- drawable,
- action_data_get_context (data),
- _("Stroke Path"),
- GIMP_STOCK_PATH_STROKE,
- GIMP_HELP_PATH_STROKE,
- widget,
- config->stroke_options,
- vectors_stroke_callback,
- NULL);
-
- dialogs_attach_dialog (G_OBJECT (drawable), STROKE_DIALOG_KEY, dialog);
- }
-
- gtk_window_present (GTK_WINDOW (dialog));
+ items_stroke_cmd_callback (action,
+ image, GIMP_ITEM (vectors),
+ "gimp-vectors-stroke-dialog",
+ _("Stroke Path"),
+ GIMP_STOCK_PATH_STROKE,
+ GIMP_HELP_PATH_STROKE,
+ data);
}
void
vectors_stroke_last_vals_cmd_callback (GtkAction *action,
gpointer data)
{
- GimpImage *image;
- GimpVectors *vectors;
- GimpDrawable *drawable;
- GimpContext *context;
- GtkWidget *widget;
- GimpDialogConfig *config;
- GError *error = NULL;
+ GimpImage *image;
+ GimpVectors *vectors;
return_if_no_vectors (image, vectors, data);
- return_if_no_context (context, data);
- return_if_no_widget (widget, data);
-
- drawable = gimp_image_get_active_drawable (image);
- if (! drawable)
- {
- gimp_message_literal (image->gimp,
- G_OBJECT (widget), GIMP_MESSAGE_WARNING,
- _("There is no active layer or channel to stroke to."));
- return;
- }
-
- config = GIMP_DIALOG_CONFIG (image->gimp->config);
-
- if (! gimp_item_stroke (GIMP_ITEM (vectors),
- drawable, context, config->stroke_options, NULL,
- TRUE, NULL, &error))
- {
- gimp_message_literal (image->gimp, G_OBJECT (widget),
- GIMP_MESSAGE_WARNING, error->message);
- g_clear_error (&error);
- }
- else
- {
- gimp_image_flush (image);
- }
+ items_stroke_last_vals_cmd_callback (action,
+ image, GIMP_ITEM (vectors),
+ data);
}
void
@@ -874,70 +745,6 @@ vectors_edit_attributes_callback (GtkWidget *dialog,
}
static void
-vectors_fill_callback (GtkWidget *dialog,
- GimpItem *item,
- GimpDrawable *drawable,
- GimpContext *context,
- GimpFillOptions *options,
- gpointer user_data)
-{
- GimpDialogConfig *config = GIMP_DIALOG_CONFIG (context->gimp->config);
- GimpImage *image = gimp_item_get_image (item);
- GError *error = NULL;
-
- gimp_config_sync (G_OBJECT (options),
- G_OBJECT (config->fill_options), 0);
-
- if (! gimp_item_fill (item, drawable, options, TRUE, NULL, &error))
- {
- gimp_message_literal (context->gimp,
- G_OBJECT (dialog),
- GIMP_MESSAGE_WARNING,
- error ? error->message : "NULL");
-
- g_clear_error (&error);
- return;
- }
-
- gimp_image_flush (image);
-
- gtk_widget_destroy (dialog);
-}
-
-
-static void
-vectors_stroke_callback (GtkWidget *dialog,
- GimpItem *item,
- GimpDrawable *drawable,
- GimpContext *context,
- GimpStrokeOptions *options,
- gpointer data)
-{
- GimpDialogConfig *config = GIMP_DIALOG_CONFIG (context->gimp->config);
- GimpImage *image = gimp_item_get_image (item);
- GError *error = NULL;
-
- gimp_config_sync (G_OBJECT (options),
- G_OBJECT (config->stroke_options), 0);
-
- if (! gimp_item_stroke (item, drawable, context, options, NULL,
- TRUE, NULL, &error))
- {
- gimp_message_literal (context->gimp,
- G_OBJECT (dialog),
- GIMP_MESSAGE_WARNING,
- error ? error->message : "NULL");
-
- g_clear_error (&error);
- return;
- }
-
- gimp_image_flush (image);
-
- gtk_widget_destroy (dialog);
-}
-
-static void
vectors_import_callback (GtkWidget *dialog,
GimpImage *image,
GFile *file,
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]