[gimp/gimp-2-10] app: more GimpGradientEditor cleanup



commit 5feabfd1e044ff3223d38a75484692922da03cf9
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.
    
    (cherry picked from commit b8e75a0201ac55b95d97518c2d72e65d67d13c0f)

 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 38d838218e..31a5904c65 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);
 
   gtk_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);
 
   gtk_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 b2f721d114..fe14b43ec2 100644
--- a/app/widgets/gimpgradienteditor.c
+++ b/app/widgets/gimpgradienteditor.c
@@ -322,10 +322,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,
@@ -352,16 +348,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);
@@ -430,13 +416,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);
@@ -600,8 +579,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),
@@ -644,8 +623,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),
@@ -1022,7 +1001,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);
@@ -1031,8 +1010,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);
@@ -1070,7 +1049,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);
@@ -1079,8 +1058,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 9a58a9d15b..ad71f82824 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]