[gimp] app: FG select: reorder functions to match all other tools



commit ebc4910a7c697f66fd0cfaf8c2c550a2033aaa50
Author: Michael Natterer <mitch gimp org>
Date:   Fri Apr 18 21:52:38 2014 +0200

    app: FG select: reorder functions to match all other tools

 app/tools/gimpforegroundselecttool.c |  434 +++++++++++++++++-----------------
 1 files changed, 217 insertions(+), 217 deletions(-)
---
diff --git a/app/tools/gimpforegroundselecttool.c b/app/tools/gimpforegroundselecttool.c
index dabe833..0560d13 100644
--- a/app/tools/gimpforegroundselecttool.c
+++ b/app/tools/gimpforegroundselecttool.c
@@ -78,10 +78,25 @@ static gboolean  gimp_foreground_select_tool_initialize  (GimpTool         *tool
 static void   gimp_foreground_select_tool_control        (GimpTool         *tool,
                                                           GimpToolAction    action,
                                                           GimpDisplay      *display);
-static void   gimp_foreground_select_tool_oper_update    (GimpTool         *tool,
+static void   gimp_foreground_select_tool_button_press   (GimpTool         *tool,
                                                           const GimpCoords *coords,
+                                                          guint32           time,
+                                                          GdkModifierType   state,
+                                                          GimpButtonPressType press_type,
+                                                          GimpDisplay      *display);
+static void   gimp_foreground_select_tool_button_release (GimpTool         *tool,
+                                                          const GimpCoords *coords,
+                                                          guint32           time,
+                                                          GdkModifierType   state,
+                                                          GimpButtonReleaseType release_type,
+                                                          GimpDisplay      *display);
+static void   gimp_foreground_select_tool_motion         (GimpTool         *tool,
+                                                          const GimpCoords *coords,
+                                                          guint32           time,
                                                           GdkModifierType   state,
-                                                          gboolean          proximity,
+                                                          GimpDisplay      *display);
+static gboolean  gimp_foreground_select_tool_key_press   (GimpTool         *tool,
+                                                          GdkEventKey      *kevent,
                                                           GimpDisplay      *display);
 static void   gimp_foreground_select_tool_modifier_key   (GimpTool         *tool,
                                                           GdkModifierType   key,
@@ -94,28 +109,13 @@ static void   gimp_foreground_select_tool_active_modifier_key
                                                           gboolean          press,
                                                           GdkModifierType   state,
                                                           GimpDisplay      *display);
-static void   gimp_foreground_select_tool_cursor_update  (GimpTool         *tool,
-                                                          const GimpCoords *coords,
-                                                          GdkModifierType   state,
-                                                          GimpDisplay      *display);
-static gboolean  gimp_foreground_select_tool_key_press   (GimpTool         *tool,
-                                                          GdkEventKey      *kevent,
-                                                          GimpDisplay      *display);
-static void   gimp_foreground_select_tool_button_press   (GimpTool         *tool,
-                                                          const GimpCoords *coords,
-                                                          guint32           time,
-                                                          GdkModifierType   state,
-                                                          GimpButtonPressType press_type,
-                                                          GimpDisplay      *display);
-static void   gimp_foreground_select_tool_button_release (GimpTool         *tool,
+static void   gimp_foreground_select_tool_oper_update    (GimpTool         *tool,
                                                           const GimpCoords *coords,
-                                                          guint32           time,
                                                           GdkModifierType   state,
-                                                          GimpButtonReleaseType release_type,
+                                                          gboolean          proximity,
                                                           GimpDisplay      *display);
-static void   gimp_foreground_select_tool_motion         (GimpTool         *tool,
+static void   gimp_foreground_select_tool_cursor_update  (GimpTool         *tool,
                                                           const GimpCoords *coords,
-                                                          guint32           time,
                                                           GdkModifierType   state,
                                                           GimpDisplay      *display);
 static void   gimp_foreground_select_tool_options_notify (GimpTool         *tool,
@@ -186,14 +186,14 @@ gimp_foreground_select_tool_class_init (GimpForegroundSelectToolClass *klass)
 
   tool_class->initialize          = gimp_foreground_select_tool_initialize;
   tool_class->control             = gimp_foreground_select_tool_control;
-  tool_class->oper_update         = gimp_foreground_select_tool_oper_update;
-  tool_class->modifier_key        = gimp_foreground_select_tool_modifier_key;
-  tool_class->active_modifier_key = gimp_foreground_select_tool_active_modifier_key;
-  tool_class->cursor_update       = gimp_foreground_select_tool_cursor_update;
-  tool_class->key_press           = gimp_foreground_select_tool_key_press;
   tool_class->button_press        = gimp_foreground_select_tool_button_press;
   tool_class->button_release      = gimp_foreground_select_tool_button_release;
   tool_class->motion              = gimp_foreground_select_tool_motion;
+  tool_class->key_press           = gimp_foreground_select_tool_key_press;
+  tool_class->modifier_key        = gimp_foreground_select_tool_modifier_key;
+  tool_class->active_modifier_key = gimp_foreground_select_tool_active_modifier_key;
+  tool_class->oper_update         = gimp_foreground_select_tool_oper_update;
+  tool_class->cursor_update       = gimp_foreground_select_tool_cursor_update;
   tool_class->options_notify      = gimp_foreground_select_tool_options_notify;
 
   draw_tool_class->draw           = gimp_foreground_select_tool_draw;
@@ -335,129 +335,118 @@ gimp_foreground_select_tool_control (GimpTool       *tool,
 }
 
 static void
-gimp_foreground_select_tool_oper_update (GimpTool         *tool,
-                                         const GimpCoords *coords,
-                                         GdkModifierType   state,
-                                         gboolean          proximity,
-                                         GimpDisplay      *display)
+gimp_foreground_select_tool_button_press (GimpTool            *tool,
+                                          const GimpCoords    *coords,
+                                          guint32              time,
+                                          GdkModifierType      state,
+                                          GimpButtonPressType  press_type,
+                                          GimpDisplay         *display)
 {
-  GimpForegroundSelectTool    *fg_select    = GIMP_FOREGROUND_SELECT_TOOL (tool);
-  GimpForegroundSelectOptions *options;
-  const gchar                 *status_stage = NULL;
-  const gchar                 *status_mode  = NULL;
-
-  options = GIMP_FOREGROUND_SELECT_TOOL_GET_OPTIONS (fg_select);
-
-  GIMP_TOOL_CLASS (parent_class)->oper_update (tool, coords, state, proximity,
-                                               display);
+  GimpForegroundSelectTool *fg_select = GIMP_FOREGROUND_SELECT_TOOL (tool);
+  GimpDrawTool             *draw_tool = GIMP_DRAW_TOOL (tool);
 
   if (fg_select->state == MATTING_STATE_FREE_SELECT)
     {
-      if (GIMP_SELECTION_TOOL (tool)->function == SELECTION_SELECT)
-        status_stage = _("Roughly outline the object to extract");
+      GIMP_TOOL_CLASS (parent_class)->button_press (tool, coords, time, state,
+                                                    press_type, display);
     }
   else
     {
-      GimpDrawTool *draw_tool = GIMP_DRAW_TOOL (tool);
+      GimpVector2 point = gimp_vector2_new (coords->x, coords->y);
 
       gimp_draw_tool_pause (draw_tool);
 
+      if (gimp_draw_tool_is_active (draw_tool) && draw_tool->display != display)
+        gimp_draw_tool_stop (draw_tool);
+
+      gimp_tool_control_activate (tool->control);
+
       fg_select->last_coords = *coords;
 
-      gimp_draw_tool_resume (draw_tool);
+      g_return_if_fail (fg_select->stroke == NULL);
+      fg_select->stroke = g_array_new (FALSE, FALSE, sizeof (GimpVector2));
 
-      if (options->draw_mode == GIMP_MATTING_DRAW_MODE_FOREGROUND)
-        status_mode = _("Selecting foreground,");
-      else if (options->draw_mode == GIMP_MATTING_DRAW_MODE_BACKGROUND)
-        status_mode = _("Selecting background,");
-      else
-        status_mode = _("Selecting unknown,");
+      g_array_append_val (fg_select->stroke, point);
 
-      if (fg_select->state == MATTING_STATE_PAINT_TRIMAP)
-        status_stage = _("press Enter to preview.");
-      else
-        status_stage = _("press Escape to exit preview or Enter to apply.");
-    }
+      if (!gimp_draw_tool_is_active (draw_tool))
+        gimp_draw_tool_start (draw_tool, display);
 
-  if (proximity && status_stage)
-    {
-      if (status_mode)
-        gimp_tool_replace_status (tool, display, "%s %s", status_mode, status_stage);
-      else
-        gimp_tool_replace_status (tool, display, "%s", status_stage);
+      gimp_draw_tool_resume (draw_tool);
     }
 }
 
 static void
-gimp_foreground_select_tool_modifier_key (GimpTool        *tool,
-                                          GdkModifierType  key,
-                                          gboolean         press,
-                                          GdkModifierType  state,
-                                          GimpDisplay     *display)
+gimp_foreground_select_tool_button_release (GimpTool              *tool,
+                                            const GimpCoords      *coords,
+                                            guint32                time,
+                                            GdkModifierType        state,
+                                            GimpButtonReleaseType  release_type,
+                                            GimpDisplay           *display)
 {
   GimpForegroundSelectTool *fg_select = GIMP_FOREGROUND_SELECT_TOOL (tool);
 
   if (fg_select->state == MATTING_STATE_FREE_SELECT)
     {
-      GIMP_TOOL_CLASS (parent_class)->modifier_key (tool, key, press, state,
-                                                    display);
+      GIMP_TOOL_CLASS (parent_class)->button_release (tool, coords, time, state,
+                                                      release_type, display);
     }
   else
     {
-#if 0
-      if (key == gimp_get_toggle_behavior_mask ())
-        {
-          GimpForegroundSelectOptions *options;
+      gimp_draw_tool_pause (GIMP_DRAW_TOOL (tool));
 
-          options = GIMP_FOREGROUND_SELECT_TOOL_GET_OPTIONS (tool);
+      gimp_tool_control_halt (tool->control);
 
-          g_object_set (options,
-                        "background", ! options->background,
-                        NULL);
+      if (release_type == GIMP_BUTTON_RELEASE_CANCEL)
+        {
+          gimp_foreground_select_tool_cancel_paint (fg_select);
         }
-#endif
+      else
+        {
+          gimp_foreground_select_tool_stroke_paint (fg_select);
+
+          if (fg_select->state == MATTING_STATE_PREVIEW_MASK)
+            gimp_foreground_select_tool_preview (fg_select, display);
+          else
+            gimp_foreground_select_tool_set_trimap (fg_select, display);
+        }
+
+      gimp_draw_tool_resume (GIMP_DRAW_TOOL (tool));
     }
 }
 
 static void
-gimp_foreground_select_tool_active_modifier_key (GimpTool        *tool,
-                                                 GdkModifierType  key,
-                                                 gboolean         press,
-                                                 GdkModifierType  state,
-                                                 GimpDisplay     *display)
+gimp_foreground_select_tool_motion (GimpTool         *tool,
+                                    const GimpCoords *coords,
+                                    guint32           time,
+                                    GdkModifierType   state,
+                                    GimpDisplay      *display)
 {
   GimpForegroundSelectTool *fg_select = GIMP_FOREGROUND_SELECT_TOOL (tool);
 
   if (fg_select->state == MATTING_STATE_FREE_SELECT)
     {
-      GIMP_TOOL_CLASS (parent_class)->active_modifier_key (tool, key, press,
-                                                           state, display);
+      GIMP_TOOL_CLASS (parent_class)->motion (tool, coords, time, state,
+                                              display);
     }
-}
+  else
+    {
+      GimpVector2 *last = &g_array_index (fg_select->stroke,
+                                          GimpVector2,
+                                          fg_select->stroke->len - 1);
 
-static void
-gimp_foreground_select_tool_cursor_update (GimpTool         *tool,
-                                           const GimpCoords *coords,
-                                           GdkModifierType   state,
-                                           GimpDisplay      *display)
-{
-  GimpForegroundSelectTool *fg_select = GIMP_FOREGROUND_SELECT_TOOL (tool);
+      gimp_draw_tool_pause (GIMP_DRAW_TOOL (tool));
 
-  if (fg_select->state == MATTING_STATE_PAINT_TRIMAP)
-    {
-      switch (GIMP_SELECTION_TOOL (tool)->function)
+      fg_select->last_coords = *coords;
+
+      if (last->x != (gint) coords->x || last->y != (gint) coords->y)
         {
-        case SELECTION_MOVE_MASK:
-        case SELECTION_MOVE:
-        case SELECTION_MOVE_COPY:
-        case SELECTION_ANCHOR:
-          return;
-        default:
-          break;
+          GimpVector2 point = gimp_vector2_new (coords->x, coords->y);
+
+          g_array_append_val (fg_select->stroke, point);
         }
-    }
 
-  GIMP_TOOL_CLASS (parent_class)->cursor_update (tool, coords, state, display);
+      gimp_draw_tool_resume (GIMP_DRAW_TOOL (tool));
+    }
 }
 
 static gboolean
@@ -505,163 +494,129 @@ gimp_foreground_select_tool_key_press (GimpTool    *tool,
 }
 
 static void
-gimp_foreground_select_tool_button_press (GimpTool            *tool,
-                                          const GimpCoords    *coords,
-                                          guint32              time,
-                                          GdkModifierType      state,
-                                          GimpButtonPressType  press_type,
-                                          GimpDisplay         *display)
+gimp_foreground_select_tool_modifier_key (GimpTool        *tool,
+                                          GdkModifierType  key,
+                                          gboolean         press,
+                                          GdkModifierType  state,
+                                          GimpDisplay     *display)
 {
   GimpForegroundSelectTool *fg_select = GIMP_FOREGROUND_SELECT_TOOL (tool);
-  GimpDrawTool             *draw_tool = GIMP_DRAW_TOOL (tool);
 
   if (fg_select->state == MATTING_STATE_FREE_SELECT)
     {
-      GIMP_TOOL_CLASS (parent_class)->button_press (tool, coords, time, state,
-                                                    press_type, display);
+      GIMP_TOOL_CLASS (parent_class)->modifier_key (tool, key, press, state,
+                                                    display);
     }
   else
     {
-      GimpVector2 point = gimp_vector2_new (coords->x, coords->y);
-
-      gimp_draw_tool_pause (draw_tool);
-
-      if (gimp_draw_tool_is_active (draw_tool) && draw_tool->display != display)
-        gimp_draw_tool_stop (draw_tool);
-
-      gimp_tool_control_activate (tool->control);
-
-      fg_select->last_coords = *coords;
-
-      g_return_if_fail (fg_select->stroke == NULL);
-      fg_select->stroke = g_array_new (FALSE, FALSE, sizeof (GimpVector2));
-
-      g_array_append_val (fg_select->stroke, point);
+#if 0
+      if (key == gimp_get_toggle_behavior_mask ())
+        {
+          GimpForegroundSelectOptions *options;
 
-      if (!gimp_draw_tool_is_active (draw_tool))
-        gimp_draw_tool_start (draw_tool, display);
+          options = GIMP_FOREGROUND_SELECT_TOOL_GET_OPTIONS (tool);
 
-      gimp_draw_tool_resume (draw_tool);
+          g_object_set (options,
+                        "background", ! options->background,
+                        NULL);
+        }
+#endif
     }
 }
 
 static void
-gimp_foreground_select_tool_button_release (GimpTool              *tool,
-                                            const GimpCoords      *coords,
-                                            guint32                time,
-                                            GdkModifierType        state,
-                                            GimpButtonReleaseType  release_type,
-                                            GimpDisplay           *display)
+gimp_foreground_select_tool_active_modifier_key (GimpTool        *tool,
+                                                 GdkModifierType  key,
+                                                 gboolean         press,
+                                                 GdkModifierType  state,
+                                                 GimpDisplay     *display)
 {
   GimpForegroundSelectTool *fg_select = GIMP_FOREGROUND_SELECT_TOOL (tool);
 
   if (fg_select->state == MATTING_STATE_FREE_SELECT)
     {
-      GIMP_TOOL_CLASS (parent_class)->button_release (tool, coords, time, state,
-                                                      release_type, display);
+      GIMP_TOOL_CLASS (parent_class)->active_modifier_key (tool, key, press,
+                                                           state, display);
     }
-  else
-    {
-      gimp_draw_tool_pause (GIMP_DRAW_TOOL (tool));
+}
 
-      gimp_tool_control_halt (tool->control);
+static void
+gimp_foreground_select_tool_oper_update (GimpTool         *tool,
+                                         const GimpCoords *coords,
+                                         GdkModifierType   state,
+                                         gboolean          proximity,
+                                         GimpDisplay      *display)
+{
+  GimpForegroundSelectTool    *fg_select    = GIMP_FOREGROUND_SELECT_TOOL (tool);
+  GimpForegroundSelectOptions *options;
+  const gchar                 *status_stage = NULL;
+  const gchar                 *status_mode  = NULL;
 
-      if (release_type == GIMP_BUTTON_RELEASE_CANCEL)
-        {
-          gimp_foreground_select_tool_cancel_paint (fg_select);
-        }
-      else
-        {
-          gimp_foreground_select_tool_stroke_paint (fg_select);
+  options = GIMP_FOREGROUND_SELECT_TOOL_GET_OPTIONS (fg_select);
 
-          if (fg_select->state == MATTING_STATE_PREVIEW_MASK)
-            gimp_foreground_select_tool_preview (fg_select, display);
-          else
-            gimp_foreground_select_tool_set_trimap (fg_select, display);
-        }
+  GIMP_TOOL_CLASS (parent_class)->oper_update (tool, coords, state, proximity,
+                                               display);
 
-      gimp_draw_tool_resume (GIMP_DRAW_TOOL (tool));
+  if (fg_select->state == MATTING_STATE_FREE_SELECT)
+    {
+      if (GIMP_SELECTION_TOOL (tool)->function == SELECTION_SELECT)
+        status_stage = _("Roughly outline the object to extract");
     }
-}
+  else
+    {
+      GimpDrawTool *draw_tool = GIMP_DRAW_TOOL (tool);
 
-static void
-gimp_foreground_select_tool_response (GimpToolGui              *gui,
-                                      gint                      response_id,
-                                      GimpForegroundSelectTool *fg_select)
-{
-  GimpTool    *tool    = GIMP_TOOL (fg_select);
-  GimpDisplay *display = tool->display;
+      gimp_draw_tool_pause (draw_tool);
 
-  switch (response_id)
-    {
-    case RESPONSE_PREVIEW:
-      if (fg_select->state == MATTING_STATE_PREVIEW_MASK)
-        gimp_foreground_select_tool_set_trimap (fg_select, display);
-      else
-        gimp_foreground_select_tool_preview (fg_select, display);
-      break;
+      fg_select->last_coords = *coords;
 
-    case RESPONSE_APPLY:
-      if (fg_select->state != MATTING_STATE_PREVIEW_MASK)
-        gimp_foreground_select_tool_preview (fg_select, display);
-      gimp_foreground_select_tool_apply (fg_select, display);
-      break;
+      gimp_draw_tool_resume (draw_tool);
 
-    default:
-      gimp_tool_control (tool, GIMP_TOOL_ACTION_HALT, display);
-      break;
-    }
-}
+      if (options->draw_mode == GIMP_MATTING_DRAW_MODE_FOREGROUND)
+        status_mode = _("Selecting foreground,");
+      else if (options->draw_mode == GIMP_MATTING_DRAW_MODE_BACKGROUND)
+        status_mode = _("Selecting background,");
+      else
+        status_mode = _("Selecting unknown,");
 
-static void
-gimp_foreground_select_tool_update_gui (GimpForegroundSelectTool *fg_select)
-{
-  if (fg_select->state == MATTING_STATE_PAINT_TRIMAP)
-    {
-      gimp_tool_gui_set_description (fg_select->gui, _("Paint mask"));
+      if (fg_select->state == MATTING_STATE_PAINT_TRIMAP)
+        status_stage = _("press Enter to preview.");
+      else
+        status_stage = _("press Escape to exit preview or Enter to apply.");
     }
-  else if (fg_select->state == MATTING_STATE_PREVIEW_MASK)
+
+  if (proximity && status_stage)
     {
-      gimp_tool_gui_set_description (fg_select->gui, _("Preview"));
+      if (status_mode)
+        gimp_tool_replace_status (tool, display, "%s %s", status_mode, status_stage);
+      else
+        gimp_tool_replace_status (tool, display, "%s", status_stage);
     }
-
-  gimp_tool_gui_set_response_sensitive (fg_select->gui, RESPONSE_PREVIEW, TRUE);
-  gimp_tool_gui_set_response_sensitive (fg_select->gui, RESPONSE_APPLY,   TRUE);
 }
 
 static void
-gimp_foreground_select_tool_motion (GimpTool         *tool,
-                                    const GimpCoords *coords,
-                                    guint32           time,
-                                    GdkModifierType   state,
-                                    GimpDisplay      *display)
+gimp_foreground_select_tool_cursor_update (GimpTool         *tool,
+                                           const GimpCoords *coords,
+                                           GdkModifierType   state,
+                                           GimpDisplay      *display)
 {
   GimpForegroundSelectTool *fg_select = GIMP_FOREGROUND_SELECT_TOOL (tool);
 
-  if (fg_select->state == MATTING_STATE_FREE_SELECT)
-    {
-      GIMP_TOOL_CLASS (parent_class)->motion (tool, coords, time, state,
-                                              display);
-    }
-  else
+  if (fg_select->state == MATTING_STATE_PAINT_TRIMAP)
     {
-      GimpVector2 *last = &g_array_index (fg_select->stroke,
-                                          GimpVector2,
-                                          fg_select->stroke->len - 1);
-
-      gimp_draw_tool_pause (GIMP_DRAW_TOOL (tool));
-
-      fg_select->last_coords = *coords;
-
-      if (last->x != (gint) coords->x || last->y != (gint) coords->y)
+      switch (GIMP_SELECTION_TOOL (tool)->function)
         {
-          GimpVector2 point = gimp_vector2_new (coords->x, coords->y);
-
-          g_array_append_val (fg_select->stroke, point);
+        case SELECTION_MOVE_MASK:
+        case SELECTION_MOVE:
+        case SELECTION_MOVE_COPY:
+        case SELECTION_ANCHOR:
+          return;
+        default:
+          break;
         }
-
-      gimp_draw_tool_resume (GIMP_DRAW_TOOL (tool));
     }
+
+  GIMP_TOOL_CLASS (parent_class)->cursor_update (tool, coords, state, display);
 }
 
 static void
@@ -1077,3 +1032,48 @@ gimp_foreground_select_tool_cancel_paint (GimpForegroundSelectTool *fg_select)
   g_array_free (fg_select->stroke, TRUE);
   fg_select->stroke = NULL;
 }
+
+static void
+gimp_foreground_select_tool_response (GimpToolGui              *gui,
+                                      gint                      response_id,
+                                      GimpForegroundSelectTool *fg_select)
+{
+  GimpTool    *tool    = GIMP_TOOL (fg_select);
+  GimpDisplay *display = tool->display;
+
+  switch (response_id)
+    {
+    case RESPONSE_PREVIEW:
+      if (fg_select->state == MATTING_STATE_PREVIEW_MASK)
+        gimp_foreground_select_tool_set_trimap (fg_select, display);
+      else
+        gimp_foreground_select_tool_preview (fg_select, display);
+      break;
+
+    case RESPONSE_APPLY:
+      if (fg_select->state != MATTING_STATE_PREVIEW_MASK)
+        gimp_foreground_select_tool_preview (fg_select, display);
+      gimp_foreground_select_tool_apply (fg_select, display);
+      break;
+
+    default:
+      gimp_tool_control (tool, GIMP_TOOL_ACTION_HALT, display);
+      break;
+    }
+}
+
+static void
+gimp_foreground_select_tool_update_gui (GimpForegroundSelectTool *fg_select)
+{
+  if (fg_select->state == MATTING_STATE_PAINT_TRIMAP)
+    {
+      gimp_tool_gui_set_description (fg_select->gui, _("Paint mask"));
+    }
+  else if (fg_select->state == MATTING_STATE_PREVIEW_MASK)
+    {
+      gimp_tool_gui_set_description (fg_select->gui, _("Preview"));
+    }
+
+  gimp_tool_gui_set_response_sensitive (fg_select->gui, RESPONSE_PREVIEW, TRUE);
+  gimp_tool_gui_set_response_sensitive (fg_select->gui, RESPONSE_APPLY,   TRUE);
+}


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