app/config/gimpguiconfig.[ch] Added new GUI option: snapping distance

2004-02-18  Simon Budig  <simon@gimp.org>

	* app/config/gimpguiconfig.[ch]
	* app/config/gimprc-blurbs.h: Added new GUI option: snapping distance

	* app/gui/preferences-dialog.c: add a preferences widget

	* app/tools/gimpmovetool.c
	* app/display/gimpdisplayshell.c: use it for snapping.
This commit is contained in:
Simon Budig 2004-02-18 20:31:11 +00:00 committed by Simon Budig
parent fb1213290f
commit 097801d7a7
8 changed files with 71 additions and 16 deletions

View File

@ -1,3 +1,13 @@
2004-02-18 Simon Budig <simon@gimp.org>
* app/config/gimpguiconfig.[ch]
* app/config/gimprc-blurbs.h: Added new GUI option: snapping distance
* app/gui/preferences-dialog.c: add a preferences widget
* app/tools/gimpmovetool.c
* app/display/gimpdisplayshell.c: use it for snapping.
2004-02-18 Simon Budig <simon@gimp.org>
* app/display/gimpdisplayshell.c

View File

@ -64,6 +64,7 @@ enum
PROP_0,
PROP_TRANSPARENCY_SIZE,
PROP_TRANSPARENCY_TYPE,
PROP_SNAP_DISTANCE,
PROP_DEFAULT_THRESHOLD,
PROP_INFO_WINDOW_PER_DISPLAY,
PROP_TRUST_DIRTY_FLAG,
@ -139,6 +140,10 @@ gimp_gui_config_class_init (GimpGuiConfigClass *klass)
"transparency-type", TRANSPARENCY_TYPE_BLURB,
GIMP_TYPE_CHECK_TYPE, GIMP_GRAY_CHECKS,
0);
GIMP_CONFIG_INSTALL_PROP_INT (object_class, PROP_SNAP_DISTANCE,
"snap-distance", DEFAULT_SNAP_DISTANCE_BLURB,
1, 255, 8,
0);
GIMP_CONFIG_INSTALL_PROP_INT (object_class, PROP_DEFAULT_THRESHOLD,
"default-threshold", DEFAULT_THRESHOLD_BLURB,
0, 255, 15,
@ -265,6 +270,9 @@ gimp_gui_config_set_property (GObject *object,
case PROP_TRANSPARENCY_TYPE:
gui_config->transparency_type = g_value_get_enum (value);
break;
case PROP_SNAP_DISTANCE:
gui_config->snap_distance = g_value_get_int (value);
break;
case PROP_DEFAULT_THRESHOLD:
gui_config->default_threshold = g_value_get_int (value);
break;
@ -354,6 +362,9 @@ gimp_gui_config_get_property (GObject *object,
case PROP_TRANSPARENCY_TYPE:
g_value_set_enum (value, gui_config->transparency_type);
break;
case PROP_SNAP_DISTANCE:
g_value_set_int (value, gui_config->snap_distance);
break;
case PROP_DEFAULT_THRESHOLD:
g_value_set_int (value, gui_config->default_threshold);
break;

View File

@ -42,6 +42,7 @@ struct _GimpGuiConfig
GimpCheckSize transparency_size;
GimpCheckType transparency_type;
gint snap_distance;
gint default_threshold;
gboolean info_window_per_display;
gboolean trust_dirty_flag;

View File

@ -66,6 +66,10 @@ N_("When enabled, this will ensure that each pixel of an image gets " \
"Specify a default palette. The palette is searched for in the " \
"specified palette path."
#define DEFAULT_SNAP_DISTANCE_BLURB \
N_("This is the distance in pixels where Guide and Grid snapping " \
"activates.")
#define DEFAULT_THRESHOLD_BLURB \
N_("Tools such as fuzzy-select and bucket fill find regions based on a " \
"seed-fill algorithm. The seed fill starts at the intially selected " \

View File

@ -1351,6 +1351,15 @@ prefs_dialog_new (Gimp *gimp,
&child_iter,
page_index++);
/* Snapping Distance */
vbox2 = prefs_frame_new (_("Guide and Grid Snapping"),
GTK_CONTAINER (vbox), FALSE);
table = prefs_table_new (1, GTK_CONTAINER (vbox2), FALSE);
prefs_spin_button_add (object, "snap-distance", 1.0, 5.0, 0,
_("_Snap Distance:"),
GTK_TABLE (table), 0);
/* Contiguous Regions */
vbox2 = prefs_frame_new (_("Finding Contiguous Regions"),
GTK_CONTAINER (vbox), FALSE);

View File

@ -34,6 +34,7 @@
#include "config/gimpconfig.h"
#include "config/gimpconfig-utils.h"
#include "config/gimpdisplayconfig.h"
#include "config/gimpguiconfig.h"
#include "core/gimp.h"
#include "core/gimpbuffer.h"
@ -94,9 +95,6 @@ enum
};
#define SNAP_WIDTH 8.0
/* local function prototypes */
static void gimp_display_shell_class_init (GimpDisplayShellClass *klass);
@ -1037,6 +1035,9 @@ gimp_display_shell_snap_coords (GimpDisplayShell *shell,
{
gboolean snapped;
gint tx, ty;
gint snap_distance;
snap_distance = GIMP_GUI_CONFIG (shell->gdisp->gimage->gimp->config)->snap_distance;
if (snap_width > 0 && snap_height > 0)
{
@ -1049,8 +1050,8 @@ gimp_display_shell_snap_coords (GimpDisplayShell *shell,
snap_height,
&tx,
&ty,
FUNSCALEX (shell, SNAP_WIDTH),
FUNSCALEY (shell, SNAP_WIDTH),
FUNSCALEX (shell, snap_distance),
FUNSCALEY (shell, snap_distance),
snap_to_guides,
snap_to_grid);
}
@ -1061,8 +1062,8 @@ gimp_display_shell_snap_coords (GimpDisplayShell *shell,
coords->y + snap_offset_y,
&tx,
&ty,
FUNSCALEX (shell, SNAP_WIDTH),
FUNSCALEY (shell, SNAP_WIDTH),
FUNSCALEX (shell, snap_distance),
FUNSCALEY (shell, snap_distance),
snap_to_guides,
snap_to_grid);
}

View File

@ -1351,6 +1351,15 @@ prefs_dialog_new (Gimp *gimp,
&child_iter,
page_index++);
/* Snapping Distance */
vbox2 = prefs_frame_new (_("Guide and Grid Snapping"),
GTK_CONTAINER (vbox), FALSE);
table = prefs_table_new (1, GTK_CONTAINER (vbox2), FALSE);
prefs_spin_button_add (object, "snap-distance", 1.0, 5.0, 0,
_("_Snap Distance:"),
GTK_TABLE (table), 0);
/* Contiguous Regions */
vbox2 = prefs_frame_new (_("Finding Contiguous Regions"),
GTK_CONTAINER (vbox), FALSE);

View File

@ -26,6 +26,9 @@
#include "tools-types.h"
#include "config/gimpguiconfig.h"
#include "core/gimp.h"
#include "core/gimpimage.h"
#include "core/gimpimage-guides.h"
#include "core/gimplayer.h"
@ -51,9 +54,6 @@
#include "gimp-intl.h"
#define SNAP_WIDTH 8.0
/* local function prototypes */
static void gimp_move_tool_class_init (GimpMoveToolClass *klass);
@ -294,10 +294,14 @@ gimp_move_tool_button_press (GimpTool *tool,
}
else
{
gint snap_distance;
snap_distance = GIMP_GUI_CONFIG (gdisp->gimage->gimp->config)->snap_distance;
if (gimp_display_shell_get_show_guides (shell) &&
(guide = gimp_image_find_guide (gdisp->gimage, coords->x, coords->y,
FUNSCALEX (shell, SNAP_WIDTH),
FUNSCALEY (shell, SNAP_WIDTH))))
FUNSCALEX (shell, snap_distance),
FUNSCALEY (shell, snap_distance))))
{
move->guide = guide;
move->moving_guide = TRUE;
@ -569,9 +573,12 @@ gimp_move_tool_oper_update (GimpTool *tool,
gimp_display_shell_get_show_guides (shell) &&
shell->proximity)
{
gint snap_distance;
snap_distance = GIMP_GUI_CONFIG (gdisp->gimage->gimp->config)->snap_distance;
guide = gimp_image_find_guide (gdisp->gimage, coords->x, coords->y,
FUNSCALEX (shell, SNAP_WIDTH),
FUNSCALEY (shell, SNAP_WIDTH));
FUNSCALEX (shell, snap_distance),
FUNSCALEY (shell, snap_distance));
}
if (move->guide && move->guide != guide)
@ -643,11 +650,14 @@ gimp_move_tool_cursor_update (GimpTool *tool,
{
GimpGuide *guide;
GimpLayer *layer;
gint snap_distance;
snap_distance = GIMP_GUI_CONFIG (gdisp->gimage->gimp->config)->snap_distance;
if (gimp_display_shell_get_show_guides (shell) &&
(guide = gimp_image_find_guide (gdisp->gimage, coords->x, coords->y,
FUNSCALEX (shell, SNAP_WIDTH),
FUNSCALEY (shell, SNAP_WIDTH))))
FUNSCALEX (shell, snap_distance),
FUNSCALEY (shell, snap_distance))))
{
cursor = GDK_HAND2;
tool_cursor = GIMP_HAND_TOOL_CURSOR;