[gimp] app: more GimpGradientEditor cleanup



commit b8e75a0201ac55b95d97518c2d72e65d67d13c0f
Author: Michael Natterer <mitch gimp org>
Date:   Sun Jun 24 16:24:16 2018 +0200

    app: more GimpGradientEditor cleanup
    
    Let the split and replicate segments dialogs keep their own data and
    don't use GimpGradientEditor struct members. Remove redundant members
    and indent the struct.

 app/actions/gradient-editor-commands.c | 81 +++++++++++++++++++---------------
 app/widgets/gimpgradienteditor.c       | 41 +++++------------
 app/widgets/gimpgradienteditor.h       | 45 +++++++------------
 3 files changed, 73 insertions(+), 94 deletions(-)
---
diff --git a/app/actions/gradient-editor-commands.c b/app/actions/gradient-editor-commands.c
index 5e0b4a89db..316de325c4 100644
--- a/app/actions/gradient-editor-commands.c
+++ b/app/actions/gradient-editor-commands.c
@@ -20,6 +20,7 @@
 #include <gegl.h>
 #include <gtk/gtk.h>
 
+#include "libgimpmath/gimpmath.h"
 #include "libgimpwidgets/gimpwidgets.h"
 
 #include "actions-types.h"
@@ -364,6 +365,7 @@ gradient_editor_replicate_cmd_callback (GtkAction *action,
 {
   GimpGradientEditor  *editor      = GIMP_GRADIENT_EDITOR (data);
   GimpDataEditor      *data_editor = GIMP_DATA_EDITOR (data);
+  GimpGradient        *gradient;
   GimpGradientSegment *left;
   GimpGradientSegment *right;
   GtkWidget           *dialog;
@@ -374,7 +376,7 @@ gradient_editor_replicate_cmd_callback (GtkAction *action,
   const gchar         *title;
   const gchar         *desc;
 
-  gimp_gradient_editor_get_selection (editor, NULL, &left, &right);
+  gimp_gradient_editor_get_selection (editor, &gradient, &left, &right);
 
   if (left == right)
     {
@@ -387,19 +389,19 @@ gradient_editor_replicate_cmd_callback (GtkAction *action,
       desc  = _("Replicate Gradient Selection");
     }
 
-  dialog =
-    gimp_viewable_dialog_new (GIMP_VIEWABLE (data_editor->data),
-                              data_editor->context,
-                              title, "gimp-gradient-segment-replicate",
-                              GIMP_ICON_GRADIENT, desc,
-                              GTK_WIDGET (editor),
-                              gimp_standard_help_func,
-                              GIMP_HELP_GRADIENT_EDITOR_REPLICATE,
+  dialog = gimp_viewable_dialog_new (GIMP_VIEWABLE (gradient),
+                                     data_editor->context,
+                                     title,
+                                     "gimp-gradient-segment-replicate",
+                                     GIMP_ICON_GRADIENT, desc,
+                                     GTK_WIDGET (editor),
+                                     gimp_standard_help_func,
+                                     GIMP_HELP_GRADIENT_EDITOR_REPLICATE,
 
-                              _("_Cancel"),    GTK_RESPONSE_CANCEL,
-                              _("_Replicate"), GTK_RESPONSE_OK,
+                                     _("_Cancel"),    GTK_RESPONSE_CANCEL,
+                                     _("_Replicate"), GTK_RESPONSE_OK,
 
-                              NULL);
+                                     NULL);
 
   gimp_dialog_set_alternative_button_order (GTK_DIALOG (dialog),
                                             GTK_RESPONSE_OK,
@@ -428,8 +430,7 @@ gradient_editor_replicate_cmd_callback (GtkAction *action,
   gtk_widget_show (label);
 
   /*  Scale  */
-  editor->replicate_times = 2;
-  scale_data  = GTK_ADJUSTMENT (gtk_adjustment_new (2.0, 2.0, 21.0, 1.0, 1.0, 1.0));
+  scale_data = GTK_ADJUSTMENT (gtk_adjustment_new (2.0, 2.0, 21.0, 1.0, 1.0, 1.0));
 
   scale = gtk_scale_new (GTK_ORIENTATION_HORIZONTAL, scale_data);
   gtk_scale_set_digits (GTK_SCALE (scale), 0);
@@ -437,9 +438,7 @@ gradient_editor_replicate_cmd_callback (GtkAction *action,
   gtk_box_pack_start (GTK_BOX (vbox), scale, FALSE, TRUE, 4);
   gtk_widget_show (scale);
 
-  g_signal_connect (scale_data, "value-changed",
-                    G_CALLBACK (gimp_int_adjustment_update),
-                    &editor->replicate_times);
+  g_object_set_data (G_OBJECT (dialog), "adjustment", scale_data);
 
   gtk_widget_set_sensitive (GTK_WIDGET (editor), FALSE);
   gimp_ui_manager_update (gimp_editor_get_ui_manager (GIMP_EDITOR (editor)),
@@ -475,6 +474,7 @@ gradient_editor_split_uniformly_cmd_callback (GtkAction *action,
 {
   GimpGradientEditor  *editor      = GIMP_GRADIENT_EDITOR (data);
   GimpDataEditor      *data_editor = GIMP_DATA_EDITOR (data);
+  GimpGradient        *gradient;
   GimpGradientSegment *left;
   GimpGradientSegment *right;
   GtkWidget           *dialog;
@@ -485,7 +485,7 @@ gradient_editor_split_uniformly_cmd_callback (GtkAction *action,
   const gchar         *title;
   const gchar         *desc;
 
-  gimp_gradient_editor_get_selection (editor, NULL, &left, &right);
+  gimp_gradient_editor_get_selection (editor, &gradient, &left, &right);
 
   if (left == right)
     {
@@ -498,19 +498,19 @@ gradient_editor_split_uniformly_cmd_callback (GtkAction *action,
       desc  = _("Split Gradient Segments Uniformly");
     }
 
-  dialog =
-    gimp_viewable_dialog_new (GIMP_VIEWABLE (data_editor->data),
-                              data_editor->context,
-                              title, "gimp-gradient-segment-split-uniformly",
-                              GIMP_ICON_GRADIENT, desc,
-                              GTK_WIDGET (editor),
-                              gimp_standard_help_func,
-                              GIMP_HELP_GRADIENT_EDITOR_SPLIT_UNIFORM,
+  dialog = gimp_viewable_dialog_new (GIMP_VIEWABLE (gradient),
+                                     data_editor->context,
+                                     title,
+                                     "gimp-gradient-segment-split-uniformly",
+                                     GIMP_ICON_GRADIENT, desc,
+                                     GTK_WIDGET (editor),
+                                     gimp_standard_help_func,
+                                     GIMP_HELP_GRADIENT_EDITOR_SPLIT_UNIFORM,
 
-                              _("_Cancel"), GTK_RESPONSE_CANCEL,
-                              _("_Split"),  GTK_RESPONSE_OK,
+                                     _("_Cancel"), GTK_RESPONSE_CANCEL,
+                                     _("_Split"),  GTK_RESPONSE_OK,
 
-                              NULL);
+                                     NULL);
 
   gimp_dialog_set_alternative_button_order (GTK_DIALOG (dialog),
                                             GTK_RESPONSE_OK,
@@ -540,7 +540,6 @@ gradient_editor_split_uniformly_cmd_callback (GtkAction *action,
   gtk_widget_show (label);
 
   /*  Scale  */
-  editor->split_parts = 2;
   scale_data = GTK_ADJUSTMENT (gtk_adjustment_new (2.0, 2.0, 21.0, 1.0, 1.0, 1.0));
 
   scale = gtk_scale_new (GTK_ORIENTATION_HORIZONTAL, scale_data);
@@ -549,9 +548,7 @@ gradient_editor_split_uniformly_cmd_callback (GtkAction *action,
   gtk_box_pack_start (GTK_BOX (vbox), scale, FALSE, FALSE, 4);
   gtk_widget_show (scale);
 
-  g_signal_connect (scale_data, "value-changed",
-                    G_CALLBACK (gimp_int_adjustment_update),
-                    &editor->split_parts);
+  g_object_set_data (G_OBJECT (dialog), "adjustment", scale_data);
 
   gtk_widget_set_sensitive (GTK_WIDGET (editor), FALSE);
   gimp_ui_manager_update (gimp_editor_get_ui_manager (GIMP_EDITOR (editor)),
@@ -658,6 +655,13 @@ gradient_editor_split_uniform_response (GtkWidget          *widget,
                                         gint                response_id,
                                         GimpGradientEditor *editor)
 {
+  GtkAdjustment *adjustment;
+  gint           split_parts;
+
+  adjustment = g_object_get_data (G_OBJECT (widget), "adjustment");
+
+  split_parts = RINT (gtk_adjustment_get_value (adjustment));
+
   gtk_widget_destroy (widget);
   gtk_widget_set_sensitive (GTK_WIDGET (editor), TRUE);
   gimp_ui_manager_update (gimp_editor_get_ui_manager (GIMP_EDITOR (editor)),
@@ -675,7 +679,7 @@ gradient_editor_split_uniform_response (GtkWidget          *widget,
       gimp_gradient_segment_range_split_uniform (gradient,
                                                  data_editor->context,
                                                  left, right,
-                                                 editor->split_parts,
+                                                 split_parts,
                                                  editor->blend_color_space,
                                                  &left, &right);
 
@@ -688,6 +692,13 @@ gradient_editor_replicate_response (GtkWidget          *widget,
                                     gint                response_id,
                                     GimpGradientEditor *editor)
 {
+  GtkAdjustment *adjustment;
+  gint           replicate_times;
+
+  adjustment = g_object_get_data (G_OBJECT (widget), "adjustment");
+
+  replicate_times = RINT (gtk_adjustment_get_value (adjustment));
+
   gtk_widget_destroy (widget);
   gtk_widget_set_sensitive (GTK_WIDGET (editor), TRUE);
   gimp_ui_manager_update (gimp_editor_get_ui_manager (GIMP_EDITOR (editor)),
@@ -703,7 +714,7 @@ gradient_editor_replicate_response (GtkWidget          *widget,
 
       gimp_gradient_segment_range_replicate (gradient,
                                              left, right,
-                                             editor->replicate_times,
+                                             replicate_times,
                                              &left, &right);
 
       gimp_gradient_editor_set_selection (editor, left, right);
diff --git a/app/widgets/gimpgradienteditor.c b/app/widgets/gimpgradienteditor.c
index b71d0a1972..a2476eb238 100644
--- a/app/widgets/gimpgradienteditor.c
+++ b/app/widgets/gimpgradienteditor.c
@@ -318,10 +318,6 @@ gimp_gradient_editor_init (GimpGradientEditor *editor)
   gtk_container_add (GTK_CONTAINER (frame), vbox);
   gtk_widget_show (vbox);
 
-  /* Gradient view */
-  editor->view_last_x      = 0;
-  editor->view_button_down = FALSE;
-
   data_editor->view = gimp_view_new_full_by_types (NULL,
                                                    GIMP_TYPE_VIEW,
                                                    GIMP_TYPE_GRADIENT,
@@ -348,16 +344,6 @@ gimp_gradient_editor_init (GimpGradientEditor *editor)
                               editor);
 
   /* Gradient control */
-  editor->control_drag_segment = NULL;
-  editor->control_sel_l        = NULL;
-  editor->control_sel_r        = NULL;
-  editor->control_drag_mode    = GRAD_DRAG_NONE;
-  editor->control_click_time   = 0;
-  editor->control_compress     = FALSE;
-  editor->control_last_x       = 0;
-  editor->control_last_gx      = 0.0;
-  editor->control_orig_pos     = 0.0;
-
   editor->control = gtk_drawing_area_new ();
   gtk_widget_set_size_request (editor->control, -1, GRAD_CONTROL_HEIGHT);
   gtk_widget_set_events (editor->control, GRAD_CONTROL_EVENT_MASK);
@@ -426,13 +412,6 @@ gimp_gradient_editor_init (GimpGradientEditor *editor)
   editor->hint_label3 = gradient_hint_label_add (GTK_BOX (hint_vbox));
   editor->hint_label4 = gradient_hint_label_add (GTK_BOX (hint_vbox));
 
-  /* Initialize other data */
-  editor->left_saved_segments = NULL;
-  editor->left_saved_dirty    = FALSE;
-
-  editor->right_saved_segments = NULL;
-  editor->right_saved_dirty    = FALSE;
-
   /* Black, 50% Gray, White, Clear */
   gimp_rgba_set (&editor->saved_colors[0], 0.0, 0.0, 0.0, GIMP_OPACITY_OPAQUE);
   gimp_rgba_set (&editor->saved_colors[1], 0.5, 0.5, 0.5, GIMP_OPACITY_OPAQUE);
@@ -596,8 +575,8 @@ gimp_gradient_editor_edit_left_color (GimpGradientEditor *editor)
       editor->control_sel_l->left_color_type != GIMP_GRADIENT_COLOR_FIXED)
     return;
 
-  editor->left_saved_dirty    = gimp_data_is_dirty (GIMP_DATA (gradient));
-  editor->left_saved_segments = gradient_editor_save_selection (editor);
+  editor->saved_dirty    = gimp_data_is_dirty (GIMP_DATA (gradient));
+  editor->saved_segments = gradient_editor_save_selection (editor);
 
   editor->color_dialog =
     gimp_color_dialog_new (GIMP_VIEWABLE (gradient),
@@ -640,8 +619,8 @@ gimp_gradient_editor_edit_right_color (GimpGradientEditor *editor)
       editor->control_sel_r->right_color_type != GIMP_GRADIENT_COLOR_FIXED)
     return;
 
-  editor->right_saved_dirty    = gimp_data_is_dirty (GIMP_DATA (gradient));
-  editor->right_saved_segments = gradient_editor_save_selection (editor);
+  editor->saved_dirty    = gimp_data_is_dirty (GIMP_DATA (gradient));
+  editor->saved_segments = gradient_editor_save_selection (editor);
 
   editor->color_dialog =
     gimp_color_dialog_new (GIMP_VIEWABLE (gradient),
@@ -1038,7 +1017,7 @@ gradient_editor_left_color_update (GimpColorDialog      *dialog,
                                          color,
                                          &editor->control_sel_r->right_color,
                                          TRUE, TRUE);
-      gimp_gradient_segments_free (editor->left_saved_segments);
+      gimp_gradient_segments_free (editor->saved_segments);
       gtk_widget_destroy (editor->color_dialog);
       editor->color_dialog = NULL;
       gtk_widget_set_sensitive (GTK_WIDGET (editor), TRUE);
@@ -1047,8 +1026,8 @@ gradient_editor_left_color_update (GimpColorDialog      *dialog,
       break;
 
     case GIMP_COLOR_DIALOG_CANCEL:
-      gradient_editor_replace_selection (editor, editor->left_saved_segments);
-      if (! editor->left_saved_dirty)
+      gradient_editor_replace_selection (editor, editor->saved_segments);
+      if (! editor->saved_dirty)
         gimp_data_clean (GIMP_DATA (gradient));
       gimp_viewable_invalidate_preview (GIMP_VIEWABLE (gradient));
       gtk_widget_destroy (editor->color_dialog);
@@ -1086,7 +1065,7 @@ gradient_editor_right_color_update (GimpColorDialog      *dialog,
                                          &editor->control_sel_l->left_color,
                                          color,
                                          TRUE, TRUE);
-      gimp_gradient_segments_free (editor->right_saved_segments);
+      gimp_gradient_segments_free (editor->saved_segments);
       gtk_widget_destroy (editor->color_dialog);
       editor->color_dialog = NULL;
       gtk_widget_set_sensitive (GTK_WIDGET (editor), TRUE);
@@ -1095,8 +1074,8 @@ gradient_editor_right_color_update (GimpColorDialog      *dialog,
       break;
 
     case GIMP_COLOR_DIALOG_CANCEL:
-      gradient_editor_replace_selection (editor, editor->right_saved_segments);
-      if (! editor->right_saved_dirty)
+      gradient_editor_replace_selection (editor, editor->saved_segments);
+      if (! editor->saved_dirty)
         gimp_data_clean (GIMP_DATA (gradient));
       gimp_viewable_invalidate_preview (GIMP_VIEWABLE (gradient));
       gtk_widget_destroy (editor->color_dialog);
diff --git a/app/widgets/gimpgradienteditor.h b/app/widgets/gimpgradienteditor.h
index eb0f11bd76..9cce775614 100644
--- a/app/widgets/gimpgradienteditor.h
+++ b/app/widgets/gimpgradienteditor.h
@@ -49,26 +49,23 @@ typedef struct _GimpGradientEditorClass GimpGradientEditorClass;
 
 struct _GimpGradientEditor
 {
-  GimpDataEditor  parent_instance;
+  GimpDataEditor          parent_instance;
 
-  GtkWidget      *current_color;
-  GtkWidget      *hint_label1;
-  GtkWidget      *hint_label2;
-  GtkWidget      *hint_label3;
-  GtkWidget      *hint_label4;
-  GtkWidget      *scrollbar;
-  GtkWidget      *control;
+  GtkWidget              *current_color;
+  GtkWidget              *hint_label1;
+  GtkWidget              *hint_label2;
+  GtkWidget              *hint_label3;
+  GtkWidget              *hint_label4;
+  GtkWidget              *scrollbar;
+  GtkWidget              *control;
 
   /*  Zoom and scrollbar  */
-  guint           zoom_factor;
-  GtkAdjustment  *scroll_data;
-
-  /*  Color dialog  */
-  GtkWidget      *color_dialog;
+  guint                   zoom_factor;
+  GtkAdjustment          *scroll_data;
 
   /*  Gradient view  */
-  gint            view_last_x;
-  gboolean        view_button_down;
+  gint                    view_last_x;
+  gboolean                view_button_down;
 
   /*  Gradient control  */
   GimpGradientSegment    *control_drag_segment; /* Segment which is being dragged */
@@ -83,21 +80,13 @@ struct _GimpGradientEditor
 
   GimpGradientBlendColorSpace  blend_color_space;
 
-  /*  Split uniformly dialog  */
-  gint          split_parts;
-
-  /*  Replicate dialog  */
-  gint          replicate_times;
-
   /*  Saved colors  */
-  GimpRGB       saved_colors[GRAD_NUM_COLORS];
-
-  /*  Color dialogs  */
-  GimpGradientSegment *left_saved_segments;
-  gboolean             left_saved_dirty;
+  GimpRGB                 saved_colors[GRAD_NUM_COLORS];
 
-  GimpGradientSegment *right_saved_segments;
-  gboolean             right_saved_dirty;
+  /*  Color dialog  */
+  GtkWidget              *color_dialog;
+  GimpGradientSegment    *saved_segments;
+  gboolean                saved_dirty;
 };
 
 struct _GimpGradientEditorClass


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]