示例#1
0
static gboolean
gimp_foreground_select_tool_key_press (GimpTool    *tool,
                                       GdkEventKey *kevent,
                                       GimpDisplay *display)
{
  GimpForegroundSelectTool *fg_select = GIMP_FOREGROUND_SELECT_TOOL (tool);

  if (display != tool->display)
    return FALSE;

  if (fg_select->state)
    {
      switch (kevent->keyval)
        {
        case GDK_KEY_Return:
        case GDK_KEY_KP_Enter:
        case GDK_KEY_ISO_Enter:
          gimp_foreground_select_tool_apply (fg_select, display);
          return TRUE;

        case GDK_KEY_Escape:
          gimp_tool_control (tool, GIMP_TOOL_ACTION_HALT, display);
          return TRUE;

        default:
          return FALSE;
        }
    }
  else
    {
      return GIMP_TOOL_CLASS (parent_class)->key_press (tool,
                                                        kevent,
                                                        display);
    }
}
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;

  if (response_id == 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);
    }
  else if (response_id == 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);
    }
  else if (response_id == RESPONSE_RESET)
    {
      gimp_tool_control (tool, GIMP_TOOL_ACTION_HALT, display);
    }

  gimp_foreground_select_tool_update_gui (fg_select);
}