gimp/plug-ins/imagemap/imap_preferences.c

561 lines
18 KiB
C
Raw Normal View History

1999-09-07 00:03:20 +00:00
/*
* This is a plug-in for GIMP.
1999-09-07 00:03:20 +00:00
*
* Generates clickable image maps.
*
* Copyright (C) 1998-2005 Maurits Rijk m.rijk@chello.nl
1999-09-07 00:03:20 +00:00
*
* This program is free software: you can redistribute it and/or modify
1999-09-07 00:03:20 +00:00
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 3 of the License, or
1999-09-07 00:03:20 +00:00
* (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, see <https://www.gnu.org/licenses/>.
1999-09-07 00:03:20 +00:00
*
*/
#include "config.h"
1999-09-07 00:03:20 +00:00
#include <stdlib.h>
#include <string.h>
#include <glib/gstdio.h>
app/gimpprogress.c app/nav_window.c app/ops_buttons.c app/undo_history.c 2001-12-29 Michael Natterer <mitch@gimp.org> * app/gimpprogress.c * app/nav_window.c * app/ops_buttons.c * app/undo_history.c * app/display/gimpdisplayshell.c * app/gui/about-dialog.c * app/gui/brush-editor.c * app/gui/channels-commands.c * app/gui/color-area.c * app/gui/color-notebook.c * app/gui/color-select.c * app/gui/colormap-dialog.c * app/gui/convert-dialog.c * app/gui/device-status-dialog.c * app/gui/file-new-dialog.c * app/gui/file-open-dialog.c * app/gui/file-save-dialog.c * app/gui/gradient-editor.c * app/gui/info-dialog.c * app/gui/layers-commands.c * app/gui/module-browser.c * app/gui/offset-dialog.c * app/gui/palette-editor.c * app/gui/palettes-commands.c * app/gui/paths-dialog.c * app/gui/qmask-commands.c * app/gui/resize-dialog.c * app/gui/resolution-calibrate-dialog.c * app/gui/splash.c * app/gui/tips-dialog.c * app/gui/toolbox.c * app/gui/user-install-dialog.c * app/tools/gimpbrightnesscontrasttool.c * app/tools/gimpbycolorselecttool.c * app/tools/gimpcolorbalancetool.c * app/tools/gimpcolorpickertool.c * app/tools/gimpcroptool.c * app/tools/gimpcurvestool.c * app/tools/gimphuesaturationtool.c * app/tools/gimpinktool.c * app/tools/gimplevelstool.c * app/tools/gimpposterizetool.c * app/tools/gimprotatetool.c * app/tools/gimpthresholdtool.c * app/tools/paint_options.c * app/tools/selection_options.c * app/widgets/gimpchannellistview.c * app/widgets/gimpcolorpanel.c * app/widgets/gimpcomponentlistitem.c * app/widgets/gimpconstrainedhwrapbox.c * app/widgets/gimpcontainergridview.c * app/widgets/gimpcontainerlistview.c * app/widgets/gimpcontainermenuimpl.c * app/widgets/gimpdialogfactory.c * app/widgets/gimpdnd.c * app/widgets/gimpdock.c * app/widgets/gimpdockbook.c * app/widgets/gimpdrawablelistitem.c * app/widgets/gimpdrawablelistview.c * app/widgets/gimpfontselection-dialog.c * app/widgets/gimphistogramview.c * app/widgets/gimpitemfactory.c * app/widgets/gimplayerlistitem.c * app/widgets/gimplistitem.[ch] * app/widgets/gimpmenuitem.c * app/widgets/gimppreview.[ch] * app/widgets/gtkhwrapbox.c * app/widgets/gtkvwrapbox.c * app/widgets/gtkwrapbox.c * libgimp/gimpbrushmenu.c * libgimp/gimpexport.c * libgimp/gimpgradientmenu.c * libgimp/gimpmenu.c * libgimp/gimppatternmenu.c * libgimpwidgets/gimpbutton.c * libgimpwidgets/gimpchainbutton.[ch] * libgimpwidgets/gimpcolorarea.h * libgimpwidgets/gimpcolorbutton.c * libgimpwidgets/gimpfileselection.c * libgimpwidgets/gimphelpui.c * libgimpwidgets/gimpoffsetarea.c * libgimpwidgets/gimppatheditor.c * libgimpwidgets/gimppixmap.h * libgimpwidgets/gimpquerybox.c * libgimpwidgets/gimpstock.[ch] * libgimpwidgets/gimpwidgets.h * plug-ins/FractalExplorer/Dialogs.c * plug-ins/FractalExplorer/Events.c * plug-ins/FractalExplorer/FractalExplorer.c * plug-ins/Lighting/lighting_ui.c * plug-ins/MapObject/mapobject_ui.c * plug-ins/bmp/bmpwrite.c * plug-ins/dbbrowser/dbbrowser_utils.c * plug-ins/fits/fits.c * plug-ins/flame/flame.c * plug-ins/fp/fp_gtk.c * plug-ins/fp/fp_misc.c * plug-ins/gfig/gfig.c * plug-ins/gflare/gflare.c * plug-ins/gfli/gfli.c * plug-ins/gimpressionist/*.c * plug-ins/imagemap/*.[ch] * plug-ins/maze/maze_face.c * plug-ins/mosaic/mosaic.c * plug-ins/pagecurl/pagecurl.c * plug-ins/print/print_gimp.h * plug-ins/rcm/rcm_callback.c * plug-ins/rcm/rcm_dialog.c * plug-ins/rcm/rcm_misc.c * plug-ins/script-fu/script-fu-console.c * plug-ins/script-fu/script-fu-scripts.c * plug-ins/script-fu/script-fu-server.c * plug-ins/sel2path/sel2path.c * plug-ins/sel2path/sel2path_adv_dialog.c * plug-ins/sgi/sgi.c * plug-ins/webbrowser/webbrowser.c * plug-ins/xjt/xjt.c * plug-ins/common/[A-n]*.c: compile with GTK_DISABLE_DEPRECATED defined. Not everything is fully ported yet, had to #undef GTK_DISABLE_DEPRECATED in many places and added #warnings when doing so. * pixmaps/Makefile.am * pixmaps/chain.xpm: removed. * themes/Default/Makefile.am * themes/Default/images/Makefile.am * themes/Default/images/stock-button-hchain-broken.png * themes/Default/images/stock-button-hchain.png * themes/Default/images/stock-button-vchain-broken.png * themes/Default/images/stock-button-vchain.png: new stock icons.
2001-12-29 13:26:29 +00:00
#include "libgimp/gimp.h"
#include "libgimp/gimpui.h"
app/gimpprogress.c app/nav_window.c app/ops_buttons.c app/undo_history.c 2001-12-29 Michael Natterer <mitch@gimp.org> * app/gimpprogress.c * app/nav_window.c * app/ops_buttons.c * app/undo_history.c * app/display/gimpdisplayshell.c * app/gui/about-dialog.c * app/gui/brush-editor.c * app/gui/channels-commands.c * app/gui/color-area.c * app/gui/color-notebook.c * app/gui/color-select.c * app/gui/colormap-dialog.c * app/gui/convert-dialog.c * app/gui/device-status-dialog.c * app/gui/file-new-dialog.c * app/gui/file-open-dialog.c * app/gui/file-save-dialog.c * app/gui/gradient-editor.c * app/gui/info-dialog.c * app/gui/layers-commands.c * app/gui/module-browser.c * app/gui/offset-dialog.c * app/gui/palette-editor.c * app/gui/palettes-commands.c * app/gui/paths-dialog.c * app/gui/qmask-commands.c * app/gui/resize-dialog.c * app/gui/resolution-calibrate-dialog.c * app/gui/splash.c * app/gui/tips-dialog.c * app/gui/toolbox.c * app/gui/user-install-dialog.c * app/tools/gimpbrightnesscontrasttool.c * app/tools/gimpbycolorselecttool.c * app/tools/gimpcolorbalancetool.c * app/tools/gimpcolorpickertool.c * app/tools/gimpcroptool.c * app/tools/gimpcurvestool.c * app/tools/gimphuesaturationtool.c * app/tools/gimpinktool.c * app/tools/gimplevelstool.c * app/tools/gimpposterizetool.c * app/tools/gimprotatetool.c * app/tools/gimpthresholdtool.c * app/tools/paint_options.c * app/tools/selection_options.c * app/widgets/gimpchannellistview.c * app/widgets/gimpcolorpanel.c * app/widgets/gimpcomponentlistitem.c * app/widgets/gimpconstrainedhwrapbox.c * app/widgets/gimpcontainergridview.c * app/widgets/gimpcontainerlistview.c * app/widgets/gimpcontainermenuimpl.c * app/widgets/gimpdialogfactory.c * app/widgets/gimpdnd.c * app/widgets/gimpdock.c * app/widgets/gimpdockbook.c * app/widgets/gimpdrawablelistitem.c * app/widgets/gimpdrawablelistview.c * app/widgets/gimpfontselection-dialog.c * app/widgets/gimphistogramview.c * app/widgets/gimpitemfactory.c * app/widgets/gimplayerlistitem.c * app/widgets/gimplistitem.[ch] * app/widgets/gimpmenuitem.c * app/widgets/gimppreview.[ch] * app/widgets/gtkhwrapbox.c * app/widgets/gtkvwrapbox.c * app/widgets/gtkwrapbox.c * libgimp/gimpbrushmenu.c * libgimp/gimpexport.c * libgimp/gimpgradientmenu.c * libgimp/gimpmenu.c * libgimp/gimppatternmenu.c * libgimpwidgets/gimpbutton.c * libgimpwidgets/gimpchainbutton.[ch] * libgimpwidgets/gimpcolorarea.h * libgimpwidgets/gimpcolorbutton.c * libgimpwidgets/gimpfileselection.c * libgimpwidgets/gimphelpui.c * libgimpwidgets/gimpoffsetarea.c * libgimpwidgets/gimppatheditor.c * libgimpwidgets/gimppixmap.h * libgimpwidgets/gimpquerybox.c * libgimpwidgets/gimpstock.[ch] * libgimpwidgets/gimpwidgets.h * plug-ins/FractalExplorer/Dialogs.c * plug-ins/FractalExplorer/Events.c * plug-ins/FractalExplorer/FractalExplorer.c * plug-ins/Lighting/lighting_ui.c * plug-ins/MapObject/mapobject_ui.c * plug-ins/bmp/bmpwrite.c * plug-ins/dbbrowser/dbbrowser_utils.c * plug-ins/fits/fits.c * plug-ins/flame/flame.c * plug-ins/fp/fp_gtk.c * plug-ins/fp/fp_misc.c * plug-ins/gfig/gfig.c * plug-ins/gflare/gflare.c * plug-ins/gfli/gfli.c * plug-ins/gimpressionist/*.c * plug-ins/imagemap/*.[ch] * plug-ins/maze/maze_face.c * plug-ins/mosaic/mosaic.c * plug-ins/pagecurl/pagecurl.c * plug-ins/print/print_gimp.h * plug-ins/rcm/rcm_callback.c * plug-ins/rcm/rcm_dialog.c * plug-ins/rcm/rcm_misc.c * plug-ins/script-fu/script-fu-console.c * plug-ins/script-fu/script-fu-scripts.c * plug-ins/script-fu/script-fu-server.c * plug-ins/sel2path/sel2path.c * plug-ins/sel2path/sel2path_adv_dialog.c * plug-ins/sgi/sgi.c * plug-ins/webbrowser/webbrowser.c * plug-ins/xjt/xjt.c * plug-ins/common/[A-n]*.c: compile with GTK_DISABLE_DEPRECATED defined. Not everything is fully ported yet, had to #undef GTK_DISABLE_DEPRECATED in many places and added #warnings when doing so. * pixmaps/Makefile.am * pixmaps/chain.xpm: removed. * themes/Default/Makefile.am * themes/Default/images/Makefile.am * themes/Default/images/stock-button-hchain-broken.png * themes/Default/images/stock-button-hchain.png * themes/Default/images/stock-button-vchain-broken.png * themes/Default/images/stock-button-vchain.png: new stock icons.
2001-12-29 13:26:29 +00:00
1999-10-24 20:57:17 +00:00
#include "imap_command.h"
1999-09-07 00:03:20 +00:00
#include "imap_file.h"
#include "imap_main.h"
1999-10-24 20:57:17 +00:00
#include "imap_menu.h"
1999-09-07 00:03:20 +00:00
#include "imap_misc.h"
1999-10-24 20:57:17 +00:00
#include "imap_mru.h"
1999-09-07 00:03:20 +00:00
#include "imap_preferences.h"
#include "imap_ui_grid.h"
1999-09-07 00:03:20 +00:00
#include "libgimp/stdplugins-intl.h"
typedef struct {
2011-02-21 11:51:47 +01:00
DefaultDialog_t *dialog;
GtkWidget *notebook;
GtkWidget *ncsa;
GtkWidget *cern;
GtkWidget *csim;
GtkWidget *prompt_for_area_info;
GtkWidget *require_default_url;
GtkWidget *show_area_handle;
GtkWidget *keep_circles_round;
GtkWidget *show_url_tip;
GtkWidget *use_doublesized;
GtkWidget *undo_levels;
GtkWidget *mru_size;
GtkWidget *normal_fg;
GtkWidget *normal_bg;
GtkWidget *selected_fg;
GtkWidget *selected_bg;
2011-02-21 15:45:26 +01:00
GtkWidget *interactive_fg;
GtkWidget *interactive_bg;
2011-02-21 11:51:47 +01:00
GtkWidget *threshold;
GtkWidget *auto_convert;
PreferencesData_t *old_data;
} PreferencesDialog_t;
static void get_button_colors (PreferencesDialog_t *dialog,
2011-02-21 11:51:47 +01:00
ColorSelData_t *colors);
1999-09-07 00:03:20 +00:00
static gint
parse_map_type(void)
{
char *token = strtok(NULL, " )");
if (!strcmp(token, "ncsa"))
return NCSA;
else if (!strcmp(token, "cern"))
return CERN;
return CSIM;
}
static gint
parse_yes_no(void)
{
char *token = strtok(NULL, " )");
return (gint) strcmp(token, "no");
}
static gint
parse_int(void)
{
char *token = strtok(NULL, " )");
return (gint) atoi(token);
}
static void
parse_color(GdkRGBA *color)
1999-09-07 00:03:20 +00:00
{
color->red = (gdouble) parse_int() / 255.0;
color->green = (gdouble) parse_int() / 255.0;
color->blue = (gdouble) parse_int() / 255.0;
color->alpha = 1.0;
1999-09-07 00:03:20 +00:00
}
static void
parse_mru_entry(void)
{
char *filename = strtok(NULL, " )");
mru_add(get_mru(), filename);
}
static void
parse_line(PreferencesData_t *data, char *line)
{
char *token;
ColorSelData_t *colors = &data->colors;
2011-02-21 11:51:47 +01:00
line++; /* Skip '(' */
1999-09-07 00:03:20 +00:00
token = strtok(line, " ");
if (!strcmp(token, "default-map-type")) {
data->default_map_type = parse_map_type();
}else if (!strcmp(token, "prompt-for-area-info")) {
data->prompt_for_area_info = parse_yes_no();
} else if (!strcmp(token, "require-default-url")) {
data->require_default_url = parse_yes_no();
} else if (!strcmp(token, "show-area-handle")) {
data->show_area_handle = parse_yes_no();
} else if (!strcmp(token, "keep-circles-round")) {
data->keep_circles_round = parse_yes_no();
} else if (!strcmp(token, "show-url-tip")) {
data->show_url_tip = parse_yes_no();
} else if (!strcmp(token, "use-doublesized")) {
data->use_doublesized = parse_yes_no();
1999-10-24 20:57:17 +00:00
} else if (!strcmp(token, "mru-size")) {
data->mru_size = parse_int();
if (data->mru_size < 1)
2011-02-21 11:51:47 +01:00
data->mru_size = 1;
1999-10-24 20:57:17 +00:00
} else if (!strcmp(token, "undo-levels")) {
data->undo_levels = parse_int();
if (data->undo_levels < 1)
2011-02-21 11:51:47 +01:00
data->undo_levels = 1;
1999-09-07 00:03:20 +00:00
} else if (!strcmp(token, "normal-fg-color")) {
parse_color(&colors->normal_fg);
} else if (!strcmp(token, "normal-bg-color")) {
parse_color(&colors->normal_bg);
} else if (!strcmp(token, "selected-fg-color")) {
parse_color(&colors->selected_fg);
} else if (!strcmp(token, "selected-bg-color")) {
parse_color(&colors->selected_bg);
2011-02-21 15:45:26 +01:00
} else if (!strcmp(token, "interactive-fg-color")) {
parse_color(&colors->interactive_fg);
} else if (!strcmp(token, "interactive-bg-color")) {
parse_color(&colors->interactive_bg);
1999-09-07 00:03:20 +00:00
} else if (!strcmp(token, "mru-entry")) {
parse_mru_entry();
} else {
/* Unrecognized, just ignore rest of line */
}
}
gboolean
preferences_load(PreferencesData_t *data)
{
FILE *in;
char buf[256];
GFile *file;
file = gimp_directory_file ("imagemaprc", NULL);
in = g_fopen (g_file_peek_path (file), "rb");
g_object_unref (file);
if (in)
{
while (fgets (buf, sizeof (buf), in))
{
if (*buf != '\n' && *buf != '#')
{
parse_line (data, buf);
}
}
fclose (in);
1999-09-07 00:03:20 +00:00
return TRUE;
}
return FALSE;
1999-09-07 00:03:20 +00:00
}
void
preferences_save(PreferencesData_t *data)
{
FILE *out;
GFile *file;
1999-09-07 00:03:20 +00:00
ColorSelData_t *colors = &data->colors;
file = gimp_directory_file ("imagemaprc", NULL);
1999-09-07 00:03:20 +00:00
out = g_fopen(g_file_peek_path (file), "wb");
if (out)
{
fprintf(out, "# Image map plug-in resource file\n\n");
if (data->default_map_type == NCSA)
2011-02-21 11:51:47 +01:00
fprintf(out, "(default-map-type ncsa)\n");
else if (data->default_map_type == CERN)
2011-02-21 11:51:47 +01:00
fprintf(out, "(default-map-type cern)\n");
else
2011-02-21 11:51:47 +01:00
fprintf(out, "(default-map-type csim)\n");
1999-09-07 00:03:20 +00:00
fprintf(out, "(prompt-for-area-info %s)\n",
(data->prompt_for_area_info) ? "yes" : "no");
fprintf(out, "(require-default-url %s)\n",
(data->require_default_url) ? "yes" : "no");
fprintf(out, "(show-area-handle %s)\n",
(data->show_area_handle) ? "yes" : "no");
fprintf(out, "(keep-circles-round %s)\n",
(data->keep_circles_round) ? "yes" : "no");
fprintf(out, "(show-url-tip %s)\n",
(data->show_url_tip) ? "yes" : "no");
fprintf(out, "(use-doublesized %s)\n",
(data->use_doublesized) ? "yes" : "no");
fprintf(out, "(undo-levels %d)\n", data->undo_levels);
fprintf(out, "(mru-size %d)\n", data->mru_size);
fprintf(out, "(normal-fg-color %d %d %d)\n",
ROUND (colors->normal_fg.red * 255.0),
ROUND (colors->normal_fg.green * 255.0),
ROUND (colors->normal_fg.blue * 255.0));
fprintf(out, "(normal-bg-color %d %d %d)\n",
ROUND (colors->normal_bg.red * 255.0),
ROUND (colors->normal_bg.green * 255.0),
ROUND (colors->normal_bg.blue * 255.0));
fprintf(out, "(selected-fg-color %d %d %d)\n",
ROUND (colors->selected_fg.red * 255.0),
ROUND (colors->selected_fg.green * 255.0),
ROUND (colors->selected_fg.blue * 255.0));
fprintf(out, "(selected-bg-color %d %d %d)\n",
ROUND (colors->selected_bg.red * 255.0),
ROUND (colors->selected_bg.green * 255.0),
ROUND (colors->selected_bg.blue * 255.0));
fprintf(out, "(interactive-fg-color %d %d %d)\n",
ROUND (colors->interactive_fg.red * 255.0),
ROUND (colors->interactive_fg.green * 255.0),
ROUND (colors->interactive_fg.blue * 255.0));
fprintf(out, "(interactive-bg-color %d %d %d)\n",
ROUND (colors->interactive_bg.red * 255.0),
ROUND (colors->interactive_bg.green * 255.0),
ROUND (colors->interactive_bg.blue * 255.0));
mru_write(get_mru(), out);
fclose(out);
}
else
{
do_file_error_dialog (_("Couldn't save resource file:"),
gimp_file_get_utf8_name (file));
}
g_object_unref (file);
1999-09-07 00:03:20 +00:00
}
static void
preferences_ok_cb (gpointer data)
1999-09-07 00:03:20 +00:00
{
PreferencesDialog_t *param = (PreferencesDialog_t*) data;
PreferencesData_t *old_data = param->old_data;
ColorSelData_t *colors = &old_data->colors;
1999-10-24 20:57:17 +00:00
MRU_t *mru = get_mru();
1999-09-07 00:03:20 +00:00
if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(param->cern)))
old_data->default_map_type = CERN;
else if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(param->ncsa)))
old_data->default_map_type = NCSA;
else
old_data->default_map_type = CSIM;
old_data->prompt_for_area_info = gtk_toggle_button_get_active(
GTK_TOGGLE_BUTTON(param->prompt_for_area_info));
old_data->require_default_url = gtk_toggle_button_get_active(
GTK_TOGGLE_BUTTON(param->require_default_url));
old_data->show_area_handle = gtk_toggle_button_get_active(
GTK_TOGGLE_BUTTON(param->show_area_handle));
old_data->keep_circles_round = gtk_toggle_button_get_active(
GTK_TOGGLE_BUTTON(param->keep_circles_round));
old_data->show_url_tip = gtk_toggle_button_get_active(
GTK_TOGGLE_BUTTON(param->show_url_tip));
old_data->use_doublesized = gtk_toggle_button_get_active(
GTK_TOGGLE_BUTTON(param->use_doublesized));
old_data->mru_size =
gtk_spin_button_get_value_as_int (GTK_SPIN_BUTTON(param->mru_size));
old_data->undo_levels =
gtk_spin_button_get_value_as_int (GTK_SPIN_BUTTON(param->undo_levels));
mru_set_size (mru, old_data->mru_size);
command_list_set_undo_level (old_data->undo_levels);
1999-10-24 20:57:17 +00:00
get_button_colors (param, colors);
1999-09-07 00:03:20 +00:00
set_sash_size(old_data->use_doublesized);
2011-02-21 15:45:26 +01:00
preview_redraw();
1999-09-07 00:03:20 +00:00
}
static void
get_button_color (GtkWidget *button,
GdkRGBA *rgba)
1999-09-07 00:03:20 +00:00
{
GeglColor *color;
gdouble rgb[3];
color = gimp_color_button_get_color (GIMP_COLOR_BUTTON (button));
gegl_color_get_pixel (color, babl_format ("R'G'B' double"), rgb);
rgba->red = rgb[0];
rgba->green = rgb[1];
rgba->blue = rgb[2];
rgba->alpha = 1.0;
g_object_unref (color);
1999-09-07 00:03:20 +00:00
}
static void
get_button_colors(PreferencesDialog_t *dialog, ColorSelData_t *colors)
1999-09-07 00:03:20 +00:00
{
get_button_color (dialog->normal_fg, &colors->normal_fg);
get_button_color (dialog->normal_bg, &colors->normal_bg);
get_button_color (dialog->selected_fg, &colors->selected_fg);
get_button_color (dialog->selected_bg, &colors->selected_bg);
2011-02-21 15:45:26 +01:00
get_button_color (dialog->interactive_fg, &colors->interactive_fg);
get_button_color (dialog->interactive_bg, &colors->interactive_bg);
1999-09-07 00:03:20 +00:00
}
static void
set_button_color (GtkWidget *button,
GdkRGBA *rgba)
1999-09-07 00:03:20 +00:00
{
GeglColor *color = gegl_color_new (NULL);
gegl_color_set_rgba_with_space (color, rgba->red, rgba->green, rgba->blue, rgba->alpha, NULL);
gimp_color_button_set_color (GIMP_COLOR_BUTTON (button), color);
g_object_unref (color);
1999-09-07 00:03:20 +00:00
}
static void
set_button_colors(PreferencesDialog_t *dialog,
ColorSelData_t *colors)
1999-09-07 00:03:20 +00:00
{
set_button_color (dialog->normal_fg, &colors->normal_fg);
set_button_color (dialog->normal_bg, &colors->normal_bg);
set_button_color (dialog->selected_fg, &colors->selected_fg);
set_button_color (dialog->selected_bg, &colors->selected_bg);
2011-02-21 15:45:26 +01:00
set_button_color (dialog->interactive_fg, &colors->interactive_fg);
set_button_color (dialog->interactive_bg, &colors->interactive_bg);
1999-09-07 00:03:20 +00:00
}
static GtkWidget*
create_tab (GtkWidget *notebook, const gchar *label)
1999-09-07 00:03:20 +00:00
{
GtkWidget *grid;
GtkWidget *vbox;
2011-09-30 12:17:53 +02:00
vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 1);
gtk_widget_show (vbox);
1999-09-07 00:03:20 +00:00
grid = gtk_grid_new ();
gtk_box_pack_start (GTK_BOX (vbox), grid, FALSE, FALSE, 0);
gtk_container_set_border_width (GTK_CONTAINER(grid), 12);
gtk_grid_set_row_spacing (GTK_GRID (grid), 6);
gtk_grid_set_column_spacing (GTK_GRID (grid), 6);
gtk_widget_show (grid);
1999-09-07 00:03:20 +00:00
gtk_notebook_append_page (GTK_NOTEBOOK (notebook), vbox,
gtk_label_new_with_mnemonic (label));
return grid;
}
static void
create_general_tab(PreferencesDialog_t *data, GtkWidget *notebook)
{
GtkWidget *grid = create_tab (notebook, _("General"));
GtkWidget *frame;
GtkWidget *hbox;
frame = gimp_frame_new( _("Default Map Type"));
1999-09-07 00:03:20 +00:00
gtk_widget_show(frame);
gtk_grid_attach (GTK_GRID (grid), frame, 0, 0, 2, 1);
2011-09-30 12:17:53 +02:00
hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 1);
1999-09-07 00:03:20 +00:00
gtk_container_add(GTK_CONTAINER(frame), hbox);
gtk_widget_show(hbox);
data->ncsa = gtk_radio_button_new_with_mnemonic_from_widget(NULL, "_NCSA");
1999-09-07 00:03:20 +00:00
gtk_box_pack_start(GTK_BOX(hbox), data->ncsa, TRUE, TRUE, 10);
gtk_widget_show(data->ncsa);
data->cern = gtk_radio_button_new_with_mnemonic_from_widget(
GTK_RADIO_BUTTON(data->ncsa), "C_ERN");
1999-09-07 00:03:20 +00:00
gtk_box_pack_start(GTK_BOX(hbox), data->cern, TRUE, TRUE, 10);
gtk_widget_show(data->cern);
data->csim = gtk_radio_button_new_with_mnemonic_from_widget(
GTK_RADIO_BUTTON(data->cern), "C_SIM");
1999-09-07 00:03:20 +00:00
gtk_box_pack_start(GTK_BOX(hbox), data->csim, TRUE, TRUE, 10);
gtk_widget_show(data->csim);
data->prompt_for_area_info =
create_check_button_in_grid (grid, 1, 0, _("_Prompt for area info"));
data->require_default_url =
create_check_button_in_grid (grid, 2, 0, _("_Require default URL"));
data->show_area_handle =
create_check_button_in_grid (grid, 3, 0, _("Show area _handles"));
data->keep_circles_round =
create_check_button_in_grid (grid, 4, 0, _("_Keep NCSA circles true"));
1999-09-07 00:03:20 +00:00
data->show_url_tip =
create_check_button_in_grid (grid, 5, 0, _("Show area URL _tip"));
data->use_doublesized =
create_check_button_in_grid (grid, 6, 0,
2011-02-21 11:51:47 +01:00
_("_Use double-sized grab handles"));
1999-09-07 00:03:20 +00:00
gtk_widget_show(frame);
}
1999-10-24 20:57:17 +00:00
static void
create_menu_tab(PreferencesDialog_t *data, GtkWidget *notebook)
{
GtkWidget *grid = create_tab (notebook, _("Menu"));
1999-10-24 20:57:17 +00:00
GtkWidget *label;
label = create_label_in_grid (grid, 0, 0,
2011-02-21 11:51:47 +01:00
_("Number of _undo levels (1 - 99):"));
data->undo_levels = create_spin_button_in_grid (grid, label, 0, 1, 1, 1,
2011-02-21 11:51:47 +01:00
99);
1999-10-24 20:57:17 +00:00
label = create_label_in_grid (grid, 1, 0,
2011-02-21 11:51:47 +01:00
_("Number of M_RU entries (1 - 16):"));
data->mru_size = create_spin_button_in_grid (grid, label, 1, 1, 1, 1, 16);
1999-10-24 20:57:17 +00:00
}
1999-09-07 00:03:20 +00:00
static GtkWidget*
create_color_field (PreferencesDialog_t *data, GtkWidget *grid, gint row,
gint col)
1999-09-07 00:03:20 +00:00
{
GeglColor *color = gegl_color_new ("black");
GtkWidget *area = gimp_color_button_new (_("Select Color"), 16, 8, color,
GIMP_COLOR_AREA_FLAT);
gimp_color_button_set_update (GIMP_COLOR_BUTTON (area), TRUE);
gtk_grid_attach (GTK_GRID (grid), area, col, row, 1, 1);
gtk_widget_show (area);
1999-09-07 00:03:20 +00:00
g_object_unref (color);
1999-09-07 00:03:20 +00:00
return area;
}
static void
create_colors_tab(PreferencesDialog_t *data, GtkWidget *notebook)
{
GtkWidget *grid = create_tab (notebook, _("Colors"));
create_label_in_grid (grid, 0, 0, _("Normal:"));
data->normal_fg = create_color_field(data, grid, 0, 1);
data->normal_bg = create_color_field(data, grid, 0, 2);
1999-09-07 00:03:20 +00:00
create_label_in_grid (grid, 1, 0, _("Selected:"));
data->selected_fg = create_color_field(data, grid, 1, 1);
data->selected_bg = create_color_field(data, grid, 1, 2);
2011-02-21 15:45:26 +01:00
create_label_in_grid (grid, 2, 0, _("Interaction:"));
data->interactive_fg = create_color_field(data, grid, 2, 1);
data->interactive_bg = create_color_field(data, grid, 2, 2);
}
#ifdef _NOT_READY_YET_
static void
create_contiguous_regions_tab(PreferencesDialog_t *data, GtkWidget *notebook)
{
GtkWidget *grid = create_tab (notebook, _("Co_ntiguous Region"));
GtkWidget *label;
1999-09-07 00:03:20 +00:00
label = create_label_in_grid (grid, 0, 0,
2011-02-21 11:51:47 +01:00
_("_Threshold:"));
data->auto_convert =
create_check_button_in_grid (grid, 1, 0, _("_Automatically convert"));
1999-09-07 00:03:20 +00:00
}
#endif
1999-09-07 00:03:20 +00:00
static PreferencesDialog_t*
Fix a bunch of warnings from Sparse: 2004-11-13 Manish Singh <yosh@gimp.org> Fix a bunch of warnings from Sparse: * app/actions/dockable-commands.c * app/actions/layers-actions.c * app/actions/view-commands.c * app/base/pixel-surround.c * app/config/gimpconfig-utils.c * app/config/gimpscanner.c * app/core/gimpbrushgenerated.c * app/core/gimpcontainer.c * app/core/gimpimage.c * app/dialogs/palette-import-dialog.c * app/file/gimprecentlist.c * app/plug-in/plug-in-params.c * app/text/gimptext-compat.c * app/text/gimptext-parasite.c * app/vectors/gimpbezierstroke.c * app/vectors/gimpstroke.c * app/widgets/gimpcellrendereraccel.c * app/widgets/gimpselectiondata.c * app/xcf/xcf.c * libgimp/gimp.c * libgimpthumb/gimpthumb-utils.c * libgimpthumb/gimpthumbnail.c * modules/cdisplay_proof.c * plug-ins/Lighting/lighting_ui.c * plug-ins/common/csource.c * plug-ins/common/glasstile.c * plug-ins/common/nova.c * plug-ins/common/pcx.c * plug-ins/common/pnm.c * plug-ins/common/randomize.c * plug-ins/common/screenshot.c * plug-ins/common/sel_gauss.c * plug-ins/common/spheredesigner.c * plug-ins/common/wind.c * plug-ins/gfig/gfig-dialog.c * plug-ins/gfig/gfig-dobject.c * plug-ins/gimpressionist/gimpressionist.c * plug-ins/ifscompose/ifscompose.c * plug-ins/print/gimp_main_window.c * plug-ins/print/print.c: Cleanup integer vs. pointer confusion. * app/base/temp-buf.c * app/dialogs/about-dialog.c * plug-ins/common/bumpmap.c * plug-ins/common/jigsaw.c * plug-ins/gfig/gfig-dobject.c: Cosmetic cleanups. * app/config/gimpconfig-deserialize.c * app/config/gimpconfig-path.c * app/config/gimpconfigwriter.c * app/core/gimpgradient.c * app/tools/gimpdrawtool.c * plug-ins/common/nlfilt.c * plug-ins/common/unsharp.c * plug-ins/common/zealouscrop.c: Define inline functions before they are used. * app/core/gimpdrawable-blend.c: PixelRegion definition was changed some time ago, but the initialization here didn't change. Fix it. * app/plug-in/plug-in-rc.c (plug_in_extra_deserialize): No need to assign token twice in a row. * libgimpbase/gimpdatafiles.c (gimp_datafiles_read_directories): No need to initialize file_data, since the code fills out all the fields. * plug-ins/common/CML_explorer.c * plug-ins/common/vpropagate.c: Declare function pointers fully. * plug-ins/common/grid.c (pix_composite): G_INLINE_FUNC isn't needed, we assume we can use the "inline" keyword always. * plug-ins/common/psd_save.c * plug-ins/common/vinvert.c * plug-ins/gfig/gfig-arc.c * plug-ins/gfig/gfig-bezier.c * plug-ins/gfig/gfig-circle.c * plug-ins/gfig/gfig-dialog.c * plug-ins/gfig/gfig-dobject.c * plug-ins/gfig/gfig-ellipse.c * plug-ins/gfig/gfig-line.c * plug-ins/gfig/gfig-poly.c * plug-ins/gfig/gfig-spiral.c * plug-ins/gfig/gfig-star.c * plug-ins/gfig/gfig.c * plug-ins/gimpressionist/orientmap.c * plug-ins/gimpressionist/placement.c * plug-ins/gimpressionist/sizemap.c * plug-ins/imagemap/imap_grid.c * plug-ins/imagemap/imap_main.c * plug-ins/imagemap/imap_preferences.c * plug-ins/imagemap/imap_settings.c * plug-ins/maze/maze.c * plug-ins/sel2path/curve.c * plug-ins/sel2path/fit.c * plug-ins/sel2path/pxl-outline.c * plug-ins/sel2path/spline.c * plug-ins/xjt/xjt.c: Functions with no args should be declared with (void). * plug-ins/common/retinex.c (MSRCR): Initialize max_preview to quiet the compiler.
2004-11-14 02:50:33 +00:00
create_preferences_dialog(void)
1999-09-07 00:03:20 +00:00
{
PreferencesDialog_t *data = g_new(PreferencesDialog_t, 1);
DefaultDialog_t *dialog;
GtkWidget *notebook;
2000-02-17 08:36:46 +00:00
data->dialog = dialog = make_default_dialog( _("General Preferences"));
1999-09-07 00:03:20 +00:00
default_dialog_set_ok_cb(dialog, preferences_ok_cb, (gpointer) data);
1999-09-07 00:03:20 +00:00
data->notebook = notebook = gtk_notebook_new();
gtk_box_pack_start (GTK_BOX (data->dialog->vbox), notebook, TRUE, TRUE, 0);
1999-09-07 00:03:20 +00:00
create_general_tab(data, notebook);
1999-10-24 20:57:17 +00:00
create_menu_tab(data, notebook);
1999-09-07 00:03:20 +00:00
create_colors_tab(data, notebook);
#ifdef _NOT_READY_YET_
create_contiguous_regions_tab(data, notebook);
#endif
1999-09-07 00:03:20 +00:00
gtk_widget_show(notebook);
return data;
}
void
do_preferences_dialog (GSimpleAction *action,
GVariant *parameter,
gpointer user_data)
1999-09-07 00:03:20 +00:00
{
static PreferencesDialog_t *dialog;
PreferencesData_t *old_data;
GtkWidget *map_type;
if (!dialog) {
dialog = create_preferences_dialog();
}
need to link with pangof2 2001-09-22 Hans Breuer <hans@breuer.org> * app/makefile.msc : need to link with pangof2 * app/display/display-funcs.h : new file to provide prototype gdisplays_selection_visibility () * app/core/gimpimage-mask.c : * app/core/gimplayer.c : use it * app/core/makefile.msc : generate gimpmarshal.[hc] * app/gui/makefile.msc : add error-console-dialog.obj, also more trying for building as dll * app/tools/gimpinktool.c(965) : avoid "fatal error C1021: invalid preprocessor command 'warning'", by wrapping it in #ifdef __GNUC__ * app/tools/makefile.msc : add FREETYPE2_CFLAGS * app/widgets/gimpfontselction-dialog.c : use g_strcasecmp () * app/tools/makefile.msc : add FREETYPE2_CFLAGS and gimpfontselction* * libgimp/gimp.def : * libgimpwidgets/gimpwidgets.def : updated externals * libgimpwidgets/makefile.msc : add gimpstock * plug-ins/makefile.msc : gflare doesn't require EXTRA_gflare anymore * plug-ins/common/spheredesigner.c : * plug-ins/helpbrowser/helpbrowser.c : * plug-ins/imagemap/imap_main.c : remove _help_accel from gimp_help_connect () * plug-ins/gap/gap_mov_dialog.c : * plug-ins/gap/gap_navigator_dialog.c : remove references to use_xshm and gimp_color_cube () * plug-ins/gfig/gfig.c : don't access ->klass, but use G_OBJECT_GET_CLASS * plug-ins/gimpressionist/repaint.c : the GtkButton::child field is moved to the parent GtkBin. * plug-ins/ifscompose/ifscompose.c : the GtkStyle::font field isn't public anymore, use accessor gtk_style_get_font () * plug-ins/imagemap/imap_preferences.c : reflect GTK2 API change gtk_notebook_set_current_page ()
2001-09-22 19:47:27 +00:00
gtk_notebook_set_current_page(GTK_NOTEBOOK(dialog->notebook), 0);
1999-09-07 00:03:20 +00:00
dialog->old_data = old_data = get_preferences();
if (old_data->default_map_type == CERN)
map_type = dialog->cern;
else if (old_data->default_map_type == NCSA)
map_type = dialog->ncsa;
else
map_type = dialog->csim;
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(map_type), TRUE);
gtk_toggle_button_set_active(
GTK_TOGGLE_BUTTON(dialog->prompt_for_area_info),
old_data->prompt_for_area_info);
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(dialog->require_default_url),
2011-02-21 11:51:47 +01:00
old_data->require_default_url);
1999-09-07 00:03:20 +00:00
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(dialog->show_area_handle),
2011-02-21 11:51:47 +01:00
old_data->show_area_handle);
1999-09-07 00:03:20 +00:00
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(dialog->keep_circles_round),
2011-02-21 11:51:47 +01:00
old_data->keep_circles_round);
1999-09-07 00:03:20 +00:00
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(dialog->show_url_tip),
2011-02-21 11:51:47 +01:00
old_data->show_url_tip);
1999-09-07 00:03:20 +00:00
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(dialog->use_doublesized),
2011-02-21 11:51:47 +01:00
old_data->use_doublesized);
gtk_spin_button_set_value(GTK_SPIN_BUTTON(dialog->undo_levels),
2011-02-21 11:51:47 +01:00
old_data->undo_levels);
gtk_spin_button_set_value(GTK_SPIN_BUTTON(dialog->mru_size),
2011-02-21 11:51:47 +01:00
old_data->mru_size);
1999-10-24 20:57:17 +00:00
set_button_colors(dialog, &old_data->colors);
1999-09-07 00:03:20 +00:00
default_dialog_show(dialog->dialog);
}