app/tools/Makefile.am new files containing all the recent settings and
2008-05-20 Michael Natterer <mitch@gimp.org> * app/tools/Makefile.am * app/tools/gimpimagemaptool-settings.[ch]: new files containing all the recent settings and settings load/save GUI and code. Got rid of shortcut loading/saving using shift+click. Added default implementations of ::settings_load() and ::settings_save(). The GUI is currently horrible, work in progress! * app/tools/gimpimagemaptool.c: removed the settings code here. * app/tools/gimpcurvestool.c * app/tools/gimplevelstool.c: don't pack the load and save buttons, this is done generically for all tools now. * app/tools/gimpbrightnesscontrasttool.c * app/tools/gimpcolorbalancetool.c * app/tools/gimpcolorizetool.c * app/tools/gimphuesaturationtool.c * app/tools/gimpposterizetool.c * app/tools/gimpthresholdtool.c: set the load/save related members of GimpImageMapToolClass. svn path=/trunk/; revision=25718
This commit is contained in:

committed by
Michael Natterer

parent
9a63a43566
commit
353283b8e8
23
ChangeLog
23
ChangeLog
@ -1,3 +1,26 @@
|
||||
2008-05-20 Michael Natterer <mitch@gimp.org>
|
||||
|
||||
* app/tools/Makefile.am
|
||||
* app/tools/gimpimagemaptool-settings.[ch]: new files containing
|
||||
all the recent settings and settings load/save GUI and code. Got
|
||||
rid of shortcut loading/saving using shift+click. Added default
|
||||
implementations of ::settings_load() and ::settings_save().
|
||||
The GUI is currently horrible, work in progress!
|
||||
|
||||
* app/tools/gimpimagemaptool.c: removed the settings code here.
|
||||
|
||||
* app/tools/gimpcurvestool.c * app/tools/gimplevelstool.c: don't
|
||||
pack the load and save buttons, this is done generically for all
|
||||
tools now.
|
||||
|
||||
* app/tools/gimpbrightnesscontrasttool.c
|
||||
* app/tools/gimpcolorbalancetool.c
|
||||
* app/tools/gimpcolorizetool.c
|
||||
* app/tools/gimphuesaturationtool.c
|
||||
* app/tools/gimpposterizetool.c
|
||||
* app/tools/gimpthresholdtool.c: set the load/save related members
|
||||
of GimpImageMapToolClass.
|
||||
|
||||
2008-05-20 Sven Neumann <sven@gimp.org>
|
||||
|
||||
* app/widgets/Makefile.am
|
||||
|
@ -90,6 +90,8 @@ libapptools_a_sources = \
|
||||
gimpimagemapoptions.h \
|
||||
gimpimagemaptool.c \
|
||||
gimpimagemaptool.h \
|
||||
gimpimagemaptool-settings.c \
|
||||
gimpimagemaptool-settings.h \
|
||||
gimpinkoptions-gui.c \
|
||||
gimpinkoptions-gui.h \
|
||||
gimpinktool.c \
|
||||
|
@ -122,18 +122,23 @@ gimp_brightness_contrast_tool_class_init (GimpBrightnessContrastToolClass *klass
|
||||
GimpToolClass *tool_class = GIMP_TOOL_CLASS (klass);
|
||||
GimpImageMapToolClass *im_tool_class = GIMP_IMAGE_MAP_TOOL_CLASS (klass);
|
||||
|
||||
object_class->finalize = gimp_brightness_contrast_tool_finalize;
|
||||
object_class->finalize = gimp_brightness_contrast_tool_finalize;
|
||||
|
||||
tool_class->initialize = gimp_brightness_contrast_tool_initialize;
|
||||
tool_class->button_press = gimp_brightness_contrast_tool_button_press;
|
||||
tool_class->button_release = gimp_brightness_contrast_tool_button_release;
|
||||
tool_class->motion = gimp_brightness_contrast_tool_motion;
|
||||
tool_class->initialize = gimp_brightness_contrast_tool_initialize;
|
||||
tool_class->button_press = gimp_brightness_contrast_tool_button_press;
|
||||
tool_class->button_release = gimp_brightness_contrast_tool_button_release;
|
||||
tool_class->motion = gimp_brightness_contrast_tool_motion;
|
||||
|
||||
im_tool_class->shell_desc = _("Adjust Brightness and Contrast");
|
||||
im_tool_class->shell_desc = _("Adjust Brightness and Contrast");
|
||||
im_tool_class->settings_name = "brightness-contrast";
|
||||
im_tool_class->load_dialog_title = _("Load Brightness-Contrast settings");
|
||||
im_tool_class->load_button_tip = _("Load brightness-contrast settings from file");
|
||||
im_tool_class->save_dialog_title = _("Save Brightness-Contrast settings");
|
||||
im_tool_class->save_button_tip = _("Save brightness-contrast settings to file");
|
||||
|
||||
im_tool_class->get_operation = gimp_brightness_contrast_tool_get_operation;
|
||||
im_tool_class->map = gimp_brightness_contrast_tool_map;
|
||||
im_tool_class->dialog = gimp_brightness_contrast_tool_dialog;
|
||||
im_tool_class->get_operation = gimp_brightness_contrast_tool_get_operation;
|
||||
im_tool_class->map = gimp_brightness_contrast_tool_map;
|
||||
im_tool_class->dialog = gimp_brightness_contrast_tool_dialog;
|
||||
}
|
||||
|
||||
static void
|
||||
|
@ -106,16 +106,21 @@ gimp_color_balance_tool_class_init (GimpColorBalanceToolClass *klass)
|
||||
GimpToolClass *tool_class = GIMP_TOOL_CLASS (klass);
|
||||
GimpImageMapToolClass *im_tool_class = GIMP_IMAGE_MAP_TOOL_CLASS (klass);
|
||||
|
||||
object_class->finalize = gimp_color_balance_tool_finalize;
|
||||
object_class->finalize = gimp_color_balance_tool_finalize;
|
||||
|
||||
tool_class->initialize = gimp_color_balance_tool_initialize;
|
||||
tool_class->initialize = gimp_color_balance_tool_initialize;
|
||||
|
||||
im_tool_class->shell_desc = _("Adjust Color Balance");
|
||||
im_tool_class->shell_desc = _("Adjust Color Balance");
|
||||
im_tool_class->settings_name = "color-balance";
|
||||
im_tool_class->load_dialog_title = _("Load Color Balance Settings");
|
||||
im_tool_class->load_button_tip = _("Load color balance settings from file");
|
||||
im_tool_class->save_dialog_title = _("Save Color Balance Settings");
|
||||
im_tool_class->save_button_tip = _("Save color balance settings to file");
|
||||
|
||||
im_tool_class->get_operation = gimp_color_balance_tool_get_operation;
|
||||
im_tool_class->map = gimp_color_balance_tool_map;
|
||||
im_tool_class->dialog = gimp_color_balance_tool_dialog;
|
||||
im_tool_class->reset = gimp_color_balance_tool_reset;
|
||||
im_tool_class->get_operation = gimp_color_balance_tool_get_operation;
|
||||
im_tool_class->map = gimp_color_balance_tool_map;
|
||||
im_tool_class->dialog = gimp_color_balance_tool_dialog;
|
||||
im_tool_class->reset = gimp_color_balance_tool_reset;
|
||||
}
|
||||
|
||||
static void
|
||||
|
@ -101,15 +101,20 @@ gimp_colorize_tool_class_init (GimpColorizeToolClass *klass)
|
||||
GimpToolClass *tool_class = GIMP_TOOL_CLASS (klass);
|
||||
GimpImageMapToolClass *im_tool_class = GIMP_IMAGE_MAP_TOOL_CLASS (klass);
|
||||
|
||||
object_class->finalize = gimp_colorize_tool_finalize;
|
||||
object_class->finalize = gimp_colorize_tool_finalize;
|
||||
|
||||
tool_class->initialize = gimp_colorize_tool_initialize;
|
||||
tool_class->initialize = gimp_colorize_tool_initialize;
|
||||
|
||||
im_tool_class->shell_desc = _("Colorize the Image");
|
||||
im_tool_class->shell_desc = _("Colorize the Image");
|
||||
im_tool_class->settings_name = "colorize";
|
||||
im_tool_class->load_dialog_title = _("Load Colorize Settings");
|
||||
im_tool_class->load_button_tip = _("Load colorize settings from file");
|
||||
im_tool_class->save_dialog_title = _("Save Colorsize Settings");
|
||||
im_tool_class->save_button_tip = _("Save colorize settings to file");
|
||||
|
||||
im_tool_class->get_operation = gimp_colorize_tool_get_operation;
|
||||
im_tool_class->map = gimp_colorize_tool_map;
|
||||
im_tool_class->dialog = gimp_colorize_tool_dialog;
|
||||
im_tool_class->get_operation = gimp_colorize_tool_get_operation;
|
||||
im_tool_class->map = gimp_colorize_tool_map;
|
||||
im_tool_class->dialog = gimp_colorize_tool_dialog;
|
||||
}
|
||||
|
||||
static void
|
||||
|
@ -422,7 +422,6 @@ gimp_curves_tool_dialog (GimpImageMapTool *image_map_tool)
|
||||
GtkWidget *table;
|
||||
GtkWidget *button;
|
||||
GtkWidget *bar;
|
||||
gint padding;
|
||||
|
||||
vbox = image_map_tool->main_vbox;
|
||||
|
||||
@ -546,24 +545,6 @@ gimp_curves_tool_dialog (GimpImageMapTool *image_map_tool)
|
||||
gtk_box_pack_end (GTK_BOX (vbox), hbox, FALSE, FALSE, 0);
|
||||
gtk_widget_show (hbox);
|
||||
|
||||
/* Horizontal button box for load / save */
|
||||
frame = gimp_frame_new (_("All Channels"));
|
||||
gtk_box_pack_start (GTK_BOX (hbox), frame, FALSE, FALSE, 0);
|
||||
gtk_widget_show (frame);
|
||||
|
||||
bbox = gtk_hbutton_box_new ();
|
||||
gtk_box_set_spacing (GTK_BOX (bbox), 4);
|
||||
gtk_container_add (GTK_CONTAINER (frame), bbox);
|
||||
gtk_widget_show (bbox);
|
||||
|
||||
gtk_box_pack_start (GTK_BOX (bbox), image_map_tool->load_button,
|
||||
FALSE, FALSE, 0);
|
||||
gtk_widget_show (image_map_tool->load_button);
|
||||
|
||||
gtk_box_pack_start (GTK_BOX (bbox), image_map_tool->save_button,
|
||||
FALSE, FALSE, 0);
|
||||
gtk_widget_show (image_map_tool->save_button);
|
||||
|
||||
/* The radio box for selecting the curve type */
|
||||
frame = gimp_frame_new (_("Curve Type"));
|
||||
gtk_box_pack_end (GTK_BOX (hbox), frame, FALSE, FALSE, 0);
|
||||
@ -574,13 +555,6 @@ gimp_curves_tool_dialog (GimpImageMapTool *image_map_tool)
|
||||
G_CALLBACK (curves_curve_type_callback),
|
||||
tool,
|
||||
&tool->curve_type);
|
||||
|
||||
gtk_widget_style_get (bbox, "child-internal-pad-x", &padding, NULL);
|
||||
|
||||
gimp_enum_stock_box_set_child_padding (hbox, padding, -1);
|
||||
|
||||
gtk_container_set_border_width (GTK_CONTAINER (hbox), 2);
|
||||
|
||||
gtk_container_add (GTK_CONTAINER (frame), hbox);
|
||||
gtk_widget_show (hbox);
|
||||
}
|
||||
|
@ -114,16 +114,21 @@ gimp_hue_saturation_tool_class_init (GimpHueSaturationToolClass *klass)
|
||||
GimpToolClass *tool_class = GIMP_TOOL_CLASS (klass);
|
||||
GimpImageMapToolClass *im_tool_class = GIMP_IMAGE_MAP_TOOL_CLASS (klass);
|
||||
|
||||
object_class->finalize = gimp_hue_saturation_tool_finalize;
|
||||
object_class->finalize = gimp_hue_saturation_tool_finalize;
|
||||
|
||||
tool_class->initialize = gimp_hue_saturation_tool_initialize;
|
||||
tool_class->initialize = gimp_hue_saturation_tool_initialize;
|
||||
|
||||
im_tool_class->shell_desc = _("Adjust Hue / Lightness / Saturation");
|
||||
im_tool_class->shell_desc = _("Adjust Hue / Lightness / Saturation");
|
||||
im_tool_class->settings_name = "hue-saturation";
|
||||
im_tool_class->load_dialog_title = _("Load Hue-Saturation Settings");
|
||||
im_tool_class->load_button_tip = _("Load hue-saturation settings from file");
|
||||
im_tool_class->save_dialog_title = _("Save Hue-Saturation Settings");
|
||||
im_tool_class->save_button_tip = _("Save hue-saturation settings to file");
|
||||
|
||||
im_tool_class->get_operation = gimp_hue_saturation_tool_get_operation;
|
||||
im_tool_class->map = gimp_hue_saturation_tool_map;
|
||||
im_tool_class->dialog = gimp_hue_saturation_tool_dialog;
|
||||
im_tool_class->reset = gimp_hue_saturation_tool_reset;
|
||||
im_tool_class->get_operation = gimp_hue_saturation_tool_get_operation;
|
||||
im_tool_class->map = gimp_hue_saturation_tool_map;
|
||||
im_tool_class->dialog = gimp_hue_saturation_tool_dialog;
|
||||
im_tool_class->reset = gimp_hue_saturation_tool_reset;
|
||||
}
|
||||
|
||||
static void
|
||||
|
436
app/tools/gimpimagemaptool-settings.c
Normal file
436
app/tools/gimpimagemaptool-settings.c
Normal file
@ -0,0 +1,436 @@
|
||||
/* GIMP - The GNU Image Manipulation Program
|
||||
* Copyright (C) 1995 Spencer Kimball and Peter Mattis
|
||||
*
|
||||
* gimpimagemaptool-settings.c
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
*/
|
||||
|
||||
#include "config.h"
|
||||
|
||||
#include <errno.h>
|
||||
|
||||
#include <glib/gstdio.h>
|
||||
#include <gegl.h>
|
||||
#include <gtk/gtk.h>
|
||||
|
||||
#include "libgimpbase/gimpbase.h"
|
||||
#include "libgimpconfig/gimpconfig.h"
|
||||
#include "libgimpwidgets/gimpwidgets.h"
|
||||
|
||||
#include "tools-types.h"
|
||||
|
||||
#include "core/gimp.h"
|
||||
#include "core/gimpcontext.h"
|
||||
#include "core/gimplist.h"
|
||||
#include "core/gimptoolinfo.h"
|
||||
|
||||
#include "widgets/gimpcontainercombobox.h"
|
||||
#include "widgets/gimpcontainerview.h"
|
||||
|
||||
#include "gimpimagemapoptions.h"
|
||||
#include "gimpimagemaptool.h"
|
||||
#include "gimpimagemaptool-settings.h"
|
||||
|
||||
#include "gimp-intl.h"
|
||||
|
||||
|
||||
/* local function prototypes */
|
||||
|
||||
static void gimp_image_map_tool_recent_selected (GimpContainerView *view,
|
||||
GimpViewable *object,
|
||||
gpointer insert_data,
|
||||
GimpImageMapTool *tool);
|
||||
|
||||
static void gimp_image_map_tool_load_clicked (GtkWidget *widget,
|
||||
GimpImageMapTool *tool);
|
||||
static void gimp_image_map_tool_save_clicked (GtkWidget *widget,
|
||||
GimpImageMapTool *tool);
|
||||
|
||||
static void gimp_image_map_tool_settings_dialog (GimpImageMapTool *im_tool,
|
||||
const gchar *title,
|
||||
gboolean save);
|
||||
|
||||
static gboolean gimp_image_map_tool_settings_load (GimpImageMapTool *tool,
|
||||
const gchar *filename);
|
||||
static gboolean gimp_image_map_tool_settings_save (GimpImageMapTool *tool,
|
||||
const gchar *filename);
|
||||
|
||||
|
||||
/* public functions */
|
||||
|
||||
gboolean
|
||||
gimp_image_map_tool_dialog_add_settings (GimpImageMapTool *image_map_tool)
|
||||
{
|
||||
GimpImageMapToolClass *klass;
|
||||
GimpToolInfo *tool_info;
|
||||
GtkWidget *hbox;
|
||||
GtkWidget *label;
|
||||
GtkWidget *combo;
|
||||
|
||||
klass = GIMP_IMAGE_MAP_TOOL_GET_CLASS (image_map_tool);
|
||||
|
||||
tool_info = GIMP_TOOL (image_map_tool)->tool_info;
|
||||
|
||||
if (gimp_container_num_children (klass->recent_settings) == 0)
|
||||
{
|
||||
gchar *filename;
|
||||
GError *error = NULL;
|
||||
|
||||
filename = gimp_tool_info_build_options_filename (tool_info,
|
||||
".settings");
|
||||
|
||||
if (tool_info->gimp->be_verbose)
|
||||
g_print ("Parsing '%s'\n", gimp_filename_to_utf8 (filename));
|
||||
|
||||
if (! gimp_config_deserialize_file (GIMP_CONFIG (klass->recent_settings),
|
||||
filename,
|
||||
NULL, &error))
|
||||
{
|
||||
if (error->code != GIMP_CONFIG_ERROR_OPEN_ENOENT)
|
||||
gimp_message (tool_info->gimp, NULL, GIMP_MESSAGE_ERROR,
|
||||
"%s", error->message);
|
||||
|
||||
g_clear_error (&error);
|
||||
}
|
||||
|
||||
gimp_list_reverse (GIMP_LIST (klass->recent_settings));
|
||||
|
||||
g_free (filename);
|
||||
}
|
||||
|
||||
hbox = gtk_hbox_new (FALSE, 4);
|
||||
gtk_box_pack_start (GTK_BOX (image_map_tool->main_vbox), hbox,
|
||||
FALSE, FALSE, 0);
|
||||
gtk_widget_show (hbox);
|
||||
|
||||
label = gtk_label_new (_("Recent Settings:"));
|
||||
gtk_box_pack_start (GTK_BOX (hbox), label, FALSE, FALSE, 0);
|
||||
gtk_widget_show (label);
|
||||
|
||||
combo = gimp_container_combo_box_new (klass->recent_settings,
|
||||
GIMP_CONTEXT (tool_info->tool_options),
|
||||
16, 0);
|
||||
gtk_box_pack_start (GTK_BOX (hbox), combo, TRUE, TRUE, 0);
|
||||
gtk_widget_show (combo);
|
||||
|
||||
gimp_help_set_help_data (combo, _("Pick a setting from the list"),
|
||||
NULL);
|
||||
|
||||
g_signal_connect_after (combo, "select-item",
|
||||
G_CALLBACK (gimp_image_map_tool_recent_selected),
|
||||
image_map_tool);
|
||||
|
||||
/* The load/save hbox */
|
||||
|
||||
hbox = gtk_hbox_new (FALSE, 4);
|
||||
gtk_box_pack_start (GTK_BOX (image_map_tool->main_vbox), hbox,
|
||||
FALSE, FALSE, 0);
|
||||
gtk_widget_show (hbox);
|
||||
|
||||
image_map_tool->load_button = g_object_new (GIMP_TYPE_BUTTON,
|
||||
"label", GTK_STOCK_OPEN,
|
||||
"use-stock", TRUE,
|
||||
"use-underline", TRUE,
|
||||
NULL);
|
||||
gtk_box_pack_start (GTK_BOX (hbox), image_map_tool->load_button,
|
||||
FALSE, FALSE, 0);
|
||||
gtk_widget_show (image_map_tool->load_button);
|
||||
|
||||
g_signal_connect (image_map_tool->load_button, "clicked",
|
||||
G_CALLBACK (gimp_image_map_tool_load_clicked),
|
||||
image_map_tool);
|
||||
|
||||
if (klass->load_button_tip)
|
||||
gimp_help_set_help_data (image_map_tool->load_button,
|
||||
klass->load_button_tip, NULL);
|
||||
|
||||
image_map_tool->save_button = g_object_new (GIMP_TYPE_BUTTON,
|
||||
"label", GTK_STOCK_SAVE,
|
||||
"use-stock", TRUE,
|
||||
"use-underline", TRUE,
|
||||
NULL);
|
||||
gtk_box_pack_start (GTK_BOX (hbox), image_map_tool->save_button,
|
||||
FALSE, FALSE, 0);
|
||||
gtk_widget_show (image_map_tool->save_button);
|
||||
|
||||
g_signal_connect (image_map_tool->save_button, "clicked",
|
||||
G_CALLBACK (gimp_image_map_tool_save_clicked),
|
||||
image_map_tool);
|
||||
|
||||
if (klass->save_button_tip)
|
||||
gimp_help_set_help_data (image_map_tool->save_button,
|
||||
klass->save_button_tip, NULL);
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
gboolean
|
||||
gimp_image_map_tool_real_settings_load (GimpImageMapTool *tool,
|
||||
const gchar *filename,
|
||||
GError **error)
|
||||
{
|
||||
gboolean success;
|
||||
|
||||
if (GIMP_TOOL (tool)->tool_info->gimp->be_verbose)
|
||||
g_print ("Parsing '%s'\n", gimp_filename_to_utf8 (filename));
|
||||
|
||||
success = gimp_config_deserialize_file (GIMP_CONFIG (tool->config),
|
||||
filename,
|
||||
NULL, error);
|
||||
|
||||
return success;
|
||||
}
|
||||
|
||||
gboolean
|
||||
gimp_image_map_tool_real_settings_save (GimpImageMapTool *tool,
|
||||
const gchar *filename,
|
||||
GError **error)
|
||||
{
|
||||
GimpImageMapToolClass *klass = GIMP_IMAGE_MAP_TOOL_GET_CLASS (tool);
|
||||
gchar *header;
|
||||
gchar *footer;
|
||||
gboolean success;
|
||||
|
||||
header = g_strdup_printf ("GIMP %s tool settings", klass->settings_name);
|
||||
footer = g_strdup_printf ("end of %s tool settings", klass->settings_name);
|
||||
|
||||
if (GIMP_TOOL (tool)->tool_info->gimp->be_verbose)
|
||||
g_print ("Writing '%s'\n", gimp_filename_to_utf8 (filename));
|
||||
|
||||
success = gimp_config_serialize_to_file (GIMP_CONFIG (tool->config),
|
||||
filename,
|
||||
header, footer,
|
||||
NULL, error);
|
||||
|
||||
g_free (header);
|
||||
g_free (footer);
|
||||
|
||||
return success;
|
||||
}
|
||||
|
||||
|
||||
/* private functions */
|
||||
|
||||
static void
|
||||
gimp_image_map_tool_recent_selected (GimpContainerView *view,
|
||||
GimpViewable *object,
|
||||
gpointer insert_data,
|
||||
GimpImageMapTool *tool)
|
||||
{
|
||||
if (object)
|
||||
{
|
||||
gimp_config_copy (GIMP_CONFIG (object),
|
||||
GIMP_CONFIG (tool->config), 0);
|
||||
|
||||
gimp_container_view_select_item (view, NULL);
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
gimp_image_map_tool_load_clicked (GtkWidget *widget,
|
||||
GimpImageMapTool *tool)
|
||||
{
|
||||
GimpImageMapToolClass *klass = GIMP_IMAGE_MAP_TOOL_GET_CLASS (tool);
|
||||
|
||||
gimp_image_map_tool_settings_dialog (tool, klass->load_dialog_title, FALSE);
|
||||
}
|
||||
|
||||
static void
|
||||
gimp_image_map_tool_save_clicked (GtkWidget *widget,
|
||||
GimpImageMapTool *tool)
|
||||
{
|
||||
GimpImageMapToolClass *klass = GIMP_IMAGE_MAP_TOOL_GET_CLASS (tool);
|
||||
|
||||
gimp_image_map_tool_settings_dialog (tool, klass->save_dialog_title, TRUE);
|
||||
}
|
||||
|
||||
static void
|
||||
settings_dialog_response (GtkWidget *dialog,
|
||||
gint response_id,
|
||||
GimpImageMapTool *tool)
|
||||
{
|
||||
gboolean save;
|
||||
|
||||
save = GPOINTER_TO_INT (g_object_get_data (G_OBJECT (dialog), "save"));
|
||||
|
||||
if (response_id == GTK_RESPONSE_OK)
|
||||
{
|
||||
gchar *filename;
|
||||
|
||||
filename = gtk_file_chooser_get_filename (GTK_FILE_CHOOSER (dialog));
|
||||
|
||||
if (save)
|
||||
gimp_image_map_tool_settings_save (tool, filename);
|
||||
else
|
||||
gimp_image_map_tool_settings_load (tool, filename);
|
||||
|
||||
g_free (filename);
|
||||
}
|
||||
|
||||
if (save)
|
||||
gtk_widget_set_sensitive (tool->load_button, TRUE);
|
||||
else
|
||||
gtk_widget_set_sensitive (tool->save_button, TRUE);
|
||||
|
||||
gtk_widget_destroy (dialog);
|
||||
}
|
||||
|
||||
static void
|
||||
gimp_image_map_tool_settings_dialog (GimpImageMapTool *tool,
|
||||
const gchar *title,
|
||||
gboolean save)
|
||||
{
|
||||
GimpImageMapOptions *options = GIMP_IMAGE_MAP_TOOL_GET_OPTIONS (tool);
|
||||
GtkFileChooser *chooser;
|
||||
const gchar *settings_name;
|
||||
gchar *folder;
|
||||
|
||||
settings_name = GIMP_IMAGE_MAP_TOOL_GET_CLASS (tool)->settings_name;
|
||||
|
||||
g_return_if_fail (settings_name != NULL);
|
||||
|
||||
if (tool->settings_dialog)
|
||||
{
|
||||
gtk_window_present (GTK_WINDOW (tool->settings_dialog));
|
||||
return;
|
||||
}
|
||||
|
||||
if (save)
|
||||
gtk_widget_set_sensitive (tool->load_button, FALSE);
|
||||
else
|
||||
gtk_widget_set_sensitive (tool->save_button, FALSE);
|
||||
|
||||
tool->settings_dialog =
|
||||
gtk_file_chooser_dialog_new (title, GTK_WINDOW (tool->shell),
|
||||
save ?
|
||||
GTK_FILE_CHOOSER_ACTION_SAVE :
|
||||
GTK_FILE_CHOOSER_ACTION_OPEN,
|
||||
|
||||
GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL,
|
||||
save ? GTK_STOCK_SAVE : GTK_STOCK_OPEN,
|
||||
GTK_RESPONSE_OK,
|
||||
|
||||
NULL);
|
||||
|
||||
chooser = GTK_FILE_CHOOSER (tool->settings_dialog);
|
||||
|
||||
g_object_set_data (G_OBJECT (chooser), "save", GINT_TO_POINTER (save));
|
||||
|
||||
gtk_window_set_role (GTK_WINDOW (chooser), "gimp-load-save-settings");
|
||||
gtk_window_set_position (GTK_WINDOW (chooser), GTK_WIN_POS_MOUSE);
|
||||
|
||||
g_object_add_weak_pointer (G_OBJECT (chooser),
|
||||
(gpointer) &tool->settings_dialog);
|
||||
|
||||
gtk_window_set_destroy_with_parent (GTK_WINDOW (chooser), TRUE);
|
||||
|
||||
gtk_dialog_set_default_response (GTK_DIALOG (chooser), GTK_RESPONSE_OK);
|
||||
|
||||
if (save)
|
||||
gtk_file_chooser_set_do_overwrite_confirmation (chooser, TRUE);
|
||||
|
||||
g_signal_connect (chooser, "response",
|
||||
G_CALLBACK (settings_dialog_response),
|
||||
tool);
|
||||
g_signal_connect (chooser, "delete-event",
|
||||
G_CALLBACK (gtk_true),
|
||||
NULL);
|
||||
|
||||
folder = g_build_filename (gimp_directory (), settings_name, NULL);
|
||||
|
||||
if (g_file_test (folder, G_FILE_TEST_IS_DIR))
|
||||
{
|
||||
gtk_file_chooser_add_shortcut_folder (chooser, folder, NULL);
|
||||
}
|
||||
else
|
||||
{
|
||||
g_free (folder);
|
||||
folder = g_strdup (g_get_home_dir ());
|
||||
}
|
||||
|
||||
if (options->settings)
|
||||
gtk_file_chooser_set_filename (chooser, options->settings);
|
||||
else
|
||||
gtk_file_chooser_set_current_folder (chooser, folder);
|
||||
|
||||
g_free (folder);
|
||||
|
||||
gimp_help_connect (tool->settings_dialog, gimp_standard_help_func,
|
||||
GIMP_TOOL (tool)->tool_info->help_id, NULL);
|
||||
|
||||
gtk_widget_show (tool->settings_dialog);
|
||||
}
|
||||
|
||||
static gboolean
|
||||
gimp_image_map_tool_settings_load (GimpImageMapTool *tool,
|
||||
const gchar *filename)
|
||||
{
|
||||
GimpImageMapToolClass *tool_class = GIMP_IMAGE_MAP_TOOL_GET_CLASS (tool);
|
||||
GError *error = NULL;
|
||||
|
||||
g_return_val_if_fail (tool_class->settings_load != NULL, FALSE);
|
||||
|
||||
if (! tool_class->settings_load (tool, filename, &error))
|
||||
{
|
||||
gimp_message (GIMP_TOOL (tool)->tool_info->gimp, G_OBJECT (tool->shell),
|
||||
GIMP_MESSAGE_ERROR, error->message);
|
||||
g_clear_error (&error);
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
gimp_image_map_tool_preview (tool);
|
||||
|
||||
g_object_set (GIMP_TOOL_GET_OPTIONS (tool),
|
||||
"settings", filename,
|
||||
NULL);
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
static gboolean
|
||||
gimp_image_map_tool_settings_save (GimpImageMapTool *tool,
|
||||
const gchar *filename)
|
||||
{
|
||||
GimpImageMapToolClass *tool_class = GIMP_IMAGE_MAP_TOOL_GET_CLASS (tool);
|
||||
GError *error = NULL;
|
||||
gchar *display_name;
|
||||
|
||||
g_return_val_if_fail (tool_class->settings_save != NULL, FALSE);
|
||||
|
||||
if (! tool_class->settings_save (tool, filename, &error))
|
||||
{
|
||||
gimp_message (GIMP_TOOL (tool)->tool_info->gimp, G_OBJECT (tool->shell),
|
||||
GIMP_MESSAGE_ERROR, error->message);
|
||||
g_clear_error (&error);
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
display_name = g_filename_display_name (filename);
|
||||
gimp_message (GIMP_TOOL (tool)->tool_info->gimp,
|
||||
G_OBJECT (GIMP_TOOL (tool)->display),
|
||||
GIMP_MESSAGE_INFO,
|
||||
_("Settings saved to '%s'"),
|
||||
display_name);
|
||||
g_free (display_name);
|
||||
|
||||
g_object_set (GIMP_TOOL_GET_OPTIONS (tool),
|
||||
"settings", filename,
|
||||
NULL);
|
||||
|
||||
return TRUE;
|
||||
}
|
35
app/tools/gimpimagemaptool-settings.h
Normal file
35
app/tools/gimpimagemaptool-settings.h
Normal file
@ -0,0 +1,35 @@
|
||||
/* GIMP - The GNU Image Manipulation Program
|
||||
* Copyright (C) 1995 Spencer Kimball and Peter Mattis
|
||||
*
|
||||
* gimpimagemaptool-settings.h
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
*/
|
||||
|
||||
#ifndef __GIMP_IMAGE_MAP_TOOL_SETTINGS_H__
|
||||
#define __GIMP_IMAGE_MAP_TOOL_SETTINGS_H__
|
||||
|
||||
|
||||
gboolean gimp_image_map_tool_dialog_add_settings (GimpImageMapTool *image_map_tool);
|
||||
|
||||
gboolean gimp_image_map_tool_real_settings_load (GimpImageMapTool *tool,
|
||||
const gchar *filename,
|
||||
GError **error);
|
||||
gboolean gimp_image_map_tool_real_settings_save (GimpImageMapTool *tool,
|
||||
const gchar *filename,
|
||||
GError **error);
|
||||
|
||||
|
||||
#endif /* __GIMP_IMAGE_MAP_TOOL_SETTINGS_H__ */
|
@ -18,9 +18,6 @@
|
||||
|
||||
#include "config.h"
|
||||
|
||||
#include <errno.h>
|
||||
|
||||
#include <glib/gstdio.h>
|
||||
#include <gegl.h>
|
||||
#include <gtk/gtk.h>
|
||||
#include <gdk/gdkkeysyms.h>
|
||||
@ -41,8 +38,6 @@
|
||||
#include "core/gimpprojection.h"
|
||||
#include "core/gimptoolinfo.h"
|
||||
|
||||
#include "widgets/gimpcontainercombobox.h"
|
||||
#include "widgets/gimpcontainerview.h"
|
||||
#include "widgets/gimpdialogfactory.h"
|
||||
#include "widgets/gimptooldialog.h"
|
||||
#include "widgets/gimpwidgets-utils.h"
|
||||
@ -53,6 +48,7 @@
|
||||
|
||||
#include "gimpcoloroptions.h"
|
||||
#include "gimpimagemaptool.h"
|
||||
#include "gimpimagemaptool-settings.h"
|
||||
#include "gimptoolcontrol.h"
|
||||
#include "tool_manager.h"
|
||||
|
||||
@ -98,31 +94,12 @@ static void gimp_image_map_tool_response (GtkWidget *widget,
|
||||
gint response_id,
|
||||
GimpImageMapTool *im_tool);
|
||||
|
||||
static void gimp_image_map_tool_recent_selected (GimpContainerView *view,
|
||||
GimpViewable *object,
|
||||
gpointer insert_data,
|
||||
GimpImageMapTool *tool);
|
||||
|
||||
static void gimp_image_map_tool_load_clicked (GtkWidget *widget,
|
||||
GimpImageMapTool *tool);
|
||||
static void gimp_image_map_tool_load_ext_clicked (GtkWidget *widget,
|
||||
GdkModifierType state,
|
||||
GimpImageMapTool *tool);
|
||||
static void gimp_image_map_tool_save_clicked (GtkWidget *widget,
|
||||
GimpImageMapTool *tool);
|
||||
static void gimp_image_map_tool_save_ext_clicked (GtkWidget *widget,
|
||||
GdkModifierType state,
|
||||
GimpImageMapTool *tool);
|
||||
|
||||
static void gimp_image_map_tool_settings_dialog (GimpImageMapTool *im_tool,
|
||||
const gchar *title,
|
||||
gboolean save);
|
||||
static void gimp_image_map_tool_notify_preview (GObject *config,
|
||||
GParamSpec *pspec,
|
||||
GimpImageMapTool *im_tool);
|
||||
static void gimp_image_map_tool_gegl_notify (GObject *config,
|
||||
const GParamSpec *pspec,
|
||||
GimpImageMapTool *im_tool);
|
||||
static void gimp_image_map_tool_notify_preview (GObject *config,
|
||||
GParamSpec *pspec,
|
||||
GimpImageMapTool *im_tool);
|
||||
static void gimp_image_map_tool_gegl_notify (GObject *config,
|
||||
const GParamSpec *pspec,
|
||||
GimpImageMapTool *im_tool);
|
||||
|
||||
|
||||
static GimpColorToolClass *parent_class = NULL;
|
||||
@ -186,8 +163,8 @@ gimp_image_map_tool_class_init (GimpImageMapToolClass *klass)
|
||||
klass->map = NULL;
|
||||
klass->dialog = NULL;
|
||||
klass->reset = NULL;
|
||||
klass->settings_load = NULL;
|
||||
klass->settings_save = NULL;
|
||||
klass->settings_load = gimp_image_map_tool_real_settings_load;
|
||||
klass->settings_save = gimp_image_map_tool_real_settings_save;
|
||||
}
|
||||
|
||||
static void
|
||||
@ -323,60 +300,7 @@ gimp_image_map_tool_initialize (GimpTool *tool,
|
||||
gtk_container_add (GTK_CONTAINER (GTK_DIALOG (shell)->vbox), vbox);
|
||||
|
||||
if (image_map_tool->config)
|
||||
{
|
||||
GtkWidget *hbox;
|
||||
GtkWidget *label;
|
||||
GtkWidget *combo;
|
||||
|
||||
if (gimp_container_num_children (klass->recent_settings) == 0)
|
||||
{
|
||||
gchar *filename;
|
||||
GError *error = NULL;
|
||||
|
||||
filename = gimp_tool_info_build_options_filename (tool->tool_info,
|
||||
".settings");
|
||||
|
||||
if (tool->tool_info->gimp->be_verbose)
|
||||
g_print ("Parsing '%s'\n", gimp_filename_to_utf8 (filename));
|
||||
|
||||
if (! gimp_config_deserialize_file (GIMP_CONFIG (klass->recent_settings),
|
||||
filename,
|
||||
NULL, &error))
|
||||
{
|
||||
if (error->code != GIMP_CONFIG_ERROR_OPEN_ENOENT)
|
||||
gimp_message (tool->tool_info->gimp, NULL, GIMP_MESSAGE_ERROR,
|
||||
"%s", error->message);
|
||||
|
||||
g_clear_error (&error);
|
||||
}
|
||||
|
||||
gimp_list_reverse (GIMP_LIST (klass->recent_settings));
|
||||
|
||||
g_free (filename);
|
||||
}
|
||||
|
||||
hbox = gtk_hbox_new (FALSE, 4);
|
||||
gtk_box_pack_start (GTK_BOX (image_map_tool->main_vbox), hbox,
|
||||
FALSE, FALSE, 0);
|
||||
gtk_widget_show (hbox);
|
||||
|
||||
label = gtk_label_new (_("Recent Settings:"));
|
||||
gtk_box_pack_start (GTK_BOX (hbox), label, FALSE, FALSE, 0);
|
||||
gtk_widget_show (label);
|
||||
|
||||
combo = gimp_container_combo_box_new (klass->recent_settings,
|
||||
GIMP_CONTEXT (tool_info->tool_options),
|
||||
16, 0);
|
||||
gtk_box_pack_start (GTK_BOX (hbox), combo, TRUE, TRUE, 0);
|
||||
gtk_widget_show (combo);
|
||||
|
||||
gimp_help_set_help_data (combo, _("Pick a setting from the list"),
|
||||
NULL);
|
||||
|
||||
g_signal_connect_after (combo, "select-item",
|
||||
G_CALLBACK (gimp_image_map_tool_recent_selected),
|
||||
image_map_tool);
|
||||
}
|
||||
gimp_image_map_tool_dialog_add_settings (image_map_tool);
|
||||
|
||||
/* The preview toggle */
|
||||
toggle = gimp_prop_check_button_new (G_OBJECT (tool_info->tool_options),
|
||||
@ -391,64 +315,6 @@ gimp_image_map_tool_initialize (GimpTool *tool,
|
||||
G_CALLBACK (gimp_image_map_tool_notify_preview),
|
||||
image_map_tool, 0);
|
||||
|
||||
if (klass->load_dialog_title)
|
||||
{
|
||||
image_map_tool->load_button =
|
||||
g_object_new (GIMP_TYPE_BUTTON,
|
||||
"label", GTK_STOCK_OPEN,
|
||||
"use-stock", TRUE,
|
||||
"use-underline", TRUE,
|
||||
NULL);
|
||||
|
||||
g_signal_connect (image_map_tool->load_button, "clicked",
|
||||
G_CALLBACK (gimp_image_map_tool_load_clicked),
|
||||
image_map_tool);
|
||||
g_signal_connect (image_map_tool->load_button, "extended-clicked",
|
||||
G_CALLBACK (gimp_image_map_tool_load_ext_clicked),
|
||||
image_map_tool);
|
||||
|
||||
if (klass->load_button_tip)
|
||||
{
|
||||
gchar *str = g_strdup_printf ("%s\n"
|
||||
"(%s) %s",
|
||||
klass->load_button_tip,
|
||||
gimp_get_mod_string (GDK_SHIFT_MASK),
|
||||
_("Quick Load"));
|
||||
|
||||
gimp_help_set_help_data (image_map_tool->load_button, str, NULL);
|
||||
g_free (str);
|
||||
}
|
||||
}
|
||||
|
||||
if (klass->save_dialog_title)
|
||||
{
|
||||
image_map_tool->save_button =
|
||||
g_object_new (GIMP_TYPE_BUTTON,
|
||||
"label", GTK_STOCK_SAVE,
|
||||
"use-stock", TRUE,
|
||||
"use-underline", TRUE,
|
||||
NULL);
|
||||
|
||||
g_signal_connect (image_map_tool->save_button, "clicked",
|
||||
G_CALLBACK (gimp_image_map_tool_save_clicked),
|
||||
image_map_tool);
|
||||
g_signal_connect (image_map_tool->save_button, "extended-clicked",
|
||||
G_CALLBACK (gimp_image_map_tool_save_ext_clicked),
|
||||
image_map_tool);
|
||||
|
||||
if (klass->save_button_tip)
|
||||
{
|
||||
gchar *str = g_strdup_printf ("%s\n"
|
||||
"(%s) %s",
|
||||
klass->save_button_tip,
|
||||
gimp_get_mod_string (GDK_SHIFT_MASK),
|
||||
_("Quick Save"));
|
||||
|
||||
gimp_help_set_help_data (image_map_tool->save_button, str, NULL);
|
||||
g_free (str);
|
||||
}
|
||||
}
|
||||
|
||||
/* Fill in subclass widgets */
|
||||
gimp_image_map_tool_dialog (image_map_tool);
|
||||
|
||||
@ -468,7 +334,7 @@ gimp_image_map_tool_initialize (GimpTool *tool,
|
||||
|
||||
gtk_widget_show (image_map_tool->shell);
|
||||
|
||||
image_map_tool->drawable = drawable;
|
||||
image_map_tool->drawable = drawable;
|
||||
|
||||
gimp_image_map_tool_create_map (image_map_tool);
|
||||
|
||||
@ -633,67 +499,6 @@ gimp_image_map_tool_create_map (GimpImageMapTool *tool)
|
||||
tool);
|
||||
}
|
||||
|
||||
static gboolean
|
||||
gimp_image_map_tool_settings_load (GimpImageMapTool *tool,
|
||||
const gchar *filename)
|
||||
{
|
||||
GimpImageMapToolClass *tool_class = GIMP_IMAGE_MAP_TOOL_GET_CLASS (tool);
|
||||
GError *error = NULL;
|
||||
|
||||
g_return_val_if_fail (tool_class->settings_load != NULL, FALSE);
|
||||
|
||||
if (! tool_class->settings_load (tool, filename, &error))
|
||||
{
|
||||
gimp_message (GIMP_TOOL (tool)->tool_info->gimp, G_OBJECT (tool->shell),
|
||||
GIMP_MESSAGE_ERROR, error->message);
|
||||
g_clear_error (&error);
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
gimp_image_map_tool_preview (tool);
|
||||
|
||||
g_object_set (GIMP_TOOL_GET_OPTIONS (tool),
|
||||
"settings", filename,
|
||||
NULL);
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
static gboolean
|
||||
gimp_image_map_tool_settings_save (GimpImageMapTool *tool,
|
||||
const gchar *filename)
|
||||
{
|
||||
GimpImageMapToolClass *tool_class = GIMP_IMAGE_MAP_TOOL_GET_CLASS (tool);
|
||||
GError *error = NULL;
|
||||
gchar *display_name;
|
||||
|
||||
g_return_val_if_fail (tool_class->settings_save != NULL, FALSE);
|
||||
|
||||
if (! tool_class->settings_save (tool, filename, &error))
|
||||
{
|
||||
gimp_message (GIMP_TOOL (tool)->tool_info->gimp, G_OBJECT (tool->shell),
|
||||
GIMP_MESSAGE_ERROR, error->message);
|
||||
g_clear_error (&error);
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
display_name = g_filename_display_name (filename);
|
||||
gimp_message (GIMP_TOOL (tool)->tool_info->gimp,
|
||||
G_OBJECT (GIMP_TOOL (tool)->display),
|
||||
GIMP_MESSAGE_INFO,
|
||||
_("Settings saved to '%s'"),
|
||||
display_name);
|
||||
g_free (display_name);
|
||||
|
||||
g_object_set (GIMP_TOOL_GET_OPTIONS (tool),
|
||||
"settings", filename,
|
||||
NULL);
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
static void
|
||||
gimp_image_map_tool_flush (GimpImageMap *image_map,
|
||||
GimpImageMapTool *image_map_tool)
|
||||
@ -833,21 +638,6 @@ gimp_image_map_tool_response (GtkWidget *widget,
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
gimp_image_map_tool_recent_selected (GimpContainerView *view,
|
||||
GimpViewable *object,
|
||||
gpointer insert_data,
|
||||
GimpImageMapTool *tool)
|
||||
{
|
||||
if (object)
|
||||
{
|
||||
gimp_config_copy (GIMP_CONFIG (object),
|
||||
GIMP_CONFIG (tool->config), 0);
|
||||
|
||||
gimp_container_view_select_item (view, NULL);
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
gimp_image_map_tool_notify_preview (GObject *config,
|
||||
GParamSpec *pspec,
|
||||
@ -901,182 +691,6 @@ gimp_image_map_tool_preview (GimpImageMapTool *image_map_tool)
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
settings_dialog_response (GtkWidget *dialog,
|
||||
gint response_id,
|
||||
GimpImageMapTool *tool)
|
||||
{
|
||||
gboolean save;
|
||||
|
||||
save = GPOINTER_TO_INT (g_object_get_data (G_OBJECT (dialog), "save"));
|
||||
|
||||
if (response_id == GTK_RESPONSE_OK)
|
||||
{
|
||||
gchar *filename;
|
||||
|
||||
filename = gtk_file_chooser_get_filename (GTK_FILE_CHOOSER (dialog));
|
||||
|
||||
if (save)
|
||||
gimp_image_map_tool_settings_save (tool, filename);
|
||||
else
|
||||
gimp_image_map_tool_settings_load (tool, filename);
|
||||
|
||||
g_free (filename);
|
||||
}
|
||||
|
||||
if (save)
|
||||
gtk_widget_set_sensitive (tool->load_button, TRUE);
|
||||
else
|
||||
gtk_widget_set_sensitive (tool->save_button, TRUE);
|
||||
|
||||
gtk_widget_destroy (dialog);
|
||||
}
|
||||
|
||||
static void
|
||||
gimp_image_map_tool_load_clicked (GtkWidget *widget,
|
||||
GimpImageMapTool *tool)
|
||||
{
|
||||
GimpImageMapToolClass *klass = GIMP_IMAGE_MAP_TOOL_GET_CLASS (tool);
|
||||
|
||||
gimp_image_map_tool_settings_dialog (tool, klass->load_dialog_title, FALSE);
|
||||
}
|
||||
|
||||
static void
|
||||
gimp_image_map_tool_load_ext_clicked (GtkWidget *widget,
|
||||
GdkModifierType state,
|
||||
GimpImageMapTool *tool)
|
||||
{
|
||||
if (state & GDK_SHIFT_MASK)
|
||||
{
|
||||
gchar *filename;
|
||||
|
||||
g_object_get (GIMP_TOOL_GET_OPTIONS (tool),
|
||||
"settings", &filename,
|
||||
NULL);
|
||||
|
||||
if (filename)
|
||||
{
|
||||
gimp_image_map_tool_settings_load (tool, filename);
|
||||
g_free (filename);
|
||||
}
|
||||
else
|
||||
{
|
||||
gimp_image_map_tool_load_clicked (widget, tool);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
gimp_image_map_tool_save_clicked (GtkWidget *widget,
|
||||
GimpImageMapTool *tool)
|
||||
{
|
||||
GimpImageMapToolClass *klass = GIMP_IMAGE_MAP_TOOL_GET_CLASS (tool);
|
||||
|
||||
gimp_image_map_tool_settings_dialog (tool, klass->save_dialog_title, TRUE);
|
||||
}
|
||||
|
||||
static void
|
||||
gimp_image_map_tool_save_ext_clicked (GtkWidget *widget,
|
||||
GdkModifierType state,
|
||||
GimpImageMapTool *tool)
|
||||
{
|
||||
if (state & GDK_SHIFT_MASK)
|
||||
{
|
||||
gchar *filename;
|
||||
|
||||
g_object_get (GIMP_TOOL_GET_OPTIONS (tool),
|
||||
"settings", &filename,
|
||||
NULL);
|
||||
|
||||
if (filename)
|
||||
{
|
||||
gimp_image_map_tool_settings_save (tool, filename);
|
||||
g_free (filename);
|
||||
}
|
||||
else
|
||||
{
|
||||
gimp_image_map_tool_save_clicked (widget, tool);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
gimp_image_map_tool_settings_dialog (GimpImageMapTool *tool,
|
||||
const gchar *title,
|
||||
gboolean save)
|
||||
{
|
||||
GimpImageMapOptions *options = GIMP_IMAGE_MAP_TOOL_GET_OPTIONS (tool);
|
||||
GtkFileChooser *chooser;
|
||||
const gchar *settings_name;
|
||||
gchar *folder;
|
||||
|
||||
settings_name = GIMP_IMAGE_MAP_TOOL_GET_CLASS (tool)->settings_name;
|
||||
|
||||
g_return_if_fail (settings_name != NULL);
|
||||
|
||||
if (tool->settings_dialog)
|
||||
{
|
||||
gtk_window_present (GTK_WINDOW (tool->settings_dialog));
|
||||
return;
|
||||
}
|
||||
|
||||
if (save)
|
||||
gtk_widget_set_sensitive (tool->load_button, FALSE);
|
||||
else
|
||||
gtk_widget_set_sensitive (tool->save_button, FALSE);
|
||||
|
||||
tool->settings_dialog =
|
||||
gtk_file_chooser_dialog_new (title, GTK_WINDOW (tool->shell),
|
||||
save ?
|
||||
GTK_FILE_CHOOSER_ACTION_SAVE :
|
||||
GTK_FILE_CHOOSER_ACTION_OPEN,
|
||||
|
||||
GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL,
|
||||
save ? GTK_STOCK_SAVE : GTK_STOCK_OPEN,
|
||||
GTK_RESPONSE_OK,
|
||||
|
||||
NULL);
|
||||
|
||||
chooser = GTK_FILE_CHOOSER (tool->settings_dialog);
|
||||
|
||||
g_object_set_data (G_OBJECT (chooser), "save", GINT_TO_POINTER (save));
|
||||
|
||||
gtk_window_set_role (GTK_WINDOW (chooser), "gimp-load-save-settings");
|
||||
gtk_window_set_position (GTK_WINDOW (chooser), GTK_WIN_POS_MOUSE);
|
||||
|
||||
g_object_add_weak_pointer (G_OBJECT (chooser),
|
||||
(gpointer) &tool->settings_dialog);
|
||||
|
||||
gtk_window_set_destroy_with_parent (GTK_WINDOW (chooser), TRUE);
|
||||
|
||||
gtk_dialog_set_default_response (GTK_DIALOG (chooser), GTK_RESPONSE_OK);
|
||||
|
||||
if (save)
|
||||
gtk_file_chooser_set_do_overwrite_confirmation (chooser, TRUE);
|
||||
|
||||
g_signal_connect (chooser, "response",
|
||||
G_CALLBACK (settings_dialog_response),
|
||||
tool);
|
||||
g_signal_connect (chooser, "delete-event",
|
||||
G_CALLBACK (gtk_true),
|
||||
NULL);
|
||||
|
||||
folder = g_build_filename (gimp_directory (), settings_name, NULL);
|
||||
gtk_file_chooser_add_shortcut_folder (chooser, folder, NULL);
|
||||
|
||||
if (options->settings)
|
||||
gtk_file_chooser_set_filename (chooser, options->settings);
|
||||
else
|
||||
gtk_file_chooser_set_current_folder (chooser, folder);
|
||||
|
||||
g_free (folder);
|
||||
|
||||
gimp_help_connect (tool->settings_dialog, gimp_standard_help_func,
|
||||
GIMP_TOOL (tool)->tool_info->help_id, NULL);
|
||||
|
||||
gtk_widget_show (tool->settings_dialog);
|
||||
}
|
||||
|
||||
static void
|
||||
gimp_image_map_tool_gegl_notify (GObject *config,
|
||||
const GParamSpec *pspec,
|
||||
|
@ -637,19 +637,6 @@ gimp_levels_tool_dialog (GimpImageMapTool *image_map_tool)
|
||||
gtk_container_add (GTK_CONTAINER (frame), hbox);
|
||||
gtk_widget_show (hbox);
|
||||
|
||||
hbbox = gtk_hbutton_box_new ();
|
||||
gtk_box_set_spacing (GTK_BOX (hbbox), 4);
|
||||
gtk_box_pack_start (GTK_BOX (hbox), hbbox, FALSE, FALSE, 0);
|
||||
gtk_widget_show (hbbox);
|
||||
|
||||
gtk_box_pack_start (GTK_BOX (hbbox), image_map_tool->load_button,
|
||||
FALSE, FALSE, 0);
|
||||
gtk_widget_show (image_map_tool->load_button);
|
||||
|
||||
gtk_box_pack_start (GTK_BOX (hbbox), image_map_tool->save_button,
|
||||
FALSE, FALSE, 0);
|
||||
gtk_widget_show (image_map_tool->save_button);
|
||||
|
||||
hbbox = gtk_hbox_new (FALSE, 6);
|
||||
gtk_box_pack_end (GTK_BOX (hbox), hbbox, FALSE, FALSE, 0);
|
||||
gtk_widget_show (hbbox);
|
||||
|
@ -96,15 +96,20 @@ gimp_posterize_tool_class_init (GimpPosterizeToolClass *klass)
|
||||
GimpToolClass *tool_class = GIMP_TOOL_CLASS (klass);
|
||||
GimpImageMapToolClass *im_tool_class = GIMP_IMAGE_MAP_TOOL_CLASS (klass);
|
||||
|
||||
object_class->finalize = gimp_posterize_tool_finalize;
|
||||
object_class->finalize = gimp_posterize_tool_finalize;
|
||||
|
||||
tool_class->initialize = gimp_posterize_tool_initialize;
|
||||
tool_class->initialize = gimp_posterize_tool_initialize;
|
||||
|
||||
im_tool_class->shell_desc = _("Posterize (Reduce Number of Colors)");
|
||||
im_tool_class->shell_desc = _("Posterize (Reduce Number of Colors)");
|
||||
im_tool_class->settings_name = "posterize";
|
||||
im_tool_class->load_dialog_title = _("Load Posterize Settings");
|
||||
im_tool_class->load_button_tip = _("Load posterize settings from file");
|
||||
im_tool_class->save_dialog_title = _("Save Posterize Settings");
|
||||
im_tool_class->save_button_tip = _("Save posterize settings to file");
|
||||
|
||||
im_tool_class->get_operation = gimp_posterize_tool_get_operation;
|
||||
im_tool_class->map = gimp_posterize_tool_map;
|
||||
im_tool_class->dialog = gimp_posterize_tool_dialog;
|
||||
im_tool_class->get_operation = gimp_posterize_tool_get_operation;
|
||||
im_tool_class->map = gimp_posterize_tool_map;
|
||||
im_tool_class->dialog = gimp_posterize_tool_dialog;
|
||||
}
|
||||
|
||||
static void
|
||||
|
@ -102,15 +102,20 @@ gimp_threshold_tool_class_init (GimpThresholdToolClass *klass)
|
||||
GimpToolClass *tool_class = GIMP_TOOL_CLASS (klass);
|
||||
GimpImageMapToolClass *im_tool_class = GIMP_IMAGE_MAP_TOOL_CLASS (klass);
|
||||
|
||||
object_class->finalize = gimp_threshold_tool_finalize;
|
||||
object_class->finalize = gimp_threshold_tool_finalize;
|
||||
|
||||
tool_class->initialize = gimp_threshold_tool_initialize;
|
||||
tool_class->initialize = gimp_threshold_tool_initialize;
|
||||
|
||||
im_tool_class->shell_desc = _("Apply Threshold");
|
||||
im_tool_class->shell_desc = _("Apply Threshold");
|
||||
im_tool_class->settings_name = "threshold";
|
||||
im_tool_class->load_dialog_title = _("Load Threshold Settings");
|
||||
im_tool_class->load_button_tip = _("Load threshold settings from file");
|
||||
im_tool_class->save_dialog_title = _("Save Threshold Settings");
|
||||
im_tool_class->save_button_tip = _("Save threshold settings to file");
|
||||
|
||||
im_tool_class->get_operation = gimp_threshold_tool_get_operation;
|
||||
im_tool_class->map = gimp_threshold_tool_map;
|
||||
im_tool_class->dialog = gimp_threshold_tool_dialog;
|
||||
im_tool_class->get_operation = gimp_threshold_tool_get_operation;
|
||||
im_tool_class->map = gimp_threshold_tool_map;
|
||||
im_tool_class->dialog = gimp_threshold_tool_dialog;
|
||||
}
|
||||
|
||||
static void
|
||||
|
Reference in New Issue
Block a user