Reorganize tool modes to be { ADD_TRANSFORM, MOVE, REMOVE }, where
ADD_TRANSFORM is the default and allows to add handles *and* transform
the image in one click-drag. MOVE moves handles without transforming
(shift) and REMOVE removes handles (control). Also improve cursors to
accurately show the result of a click.
Add new tool GimpHandleTransformTool which allows to freely place up
to 4 handles on the image, then move any one of them, which transforms
the image so that the remaining handles keep their position.
Did quite some cleanup on the code before pushing --Mitch
Move the extraction graph from the foreground select tool there.
Enable the PDB wrapper again, using default values for now.
Some sytle cleanup in the foreground select tool.
On tool change, we used to simply halt tools before switching to the
new one, which meant losing ongoing live-previewed tool changes, like
transforms, warps and color corrections. This change makes them being
applied to the image instead before switching to the new tool:
Add enum value GIMP_TOOL_ACTION_COMMIT that is passed to
GimpTool::control() before tool switching. Handle the new enum value
in all tools, and actually commit the previewed stuff. This changes
the behavior of GimpCageTool, GimpImageMapTool, GimpTransformTool and
GimpWarpTool.
- don't include <gdk-pixbuf/gdk-pixbuf.h> in headers in app/
- instead, include it in many .c files instead of <glib-object.h>,
finally acknowledging the fact that app/ depends on gdk-pixbuf almost
globally
- fix up includes as if libgimpbase depended in GIO, which it soon will
Turn the "Preview type" combo into a simple "Show image" toggle and
enable the "No guides" choice in the guides combo. Remove unused enum
GimpTransformPreviewType. This way the preview and guide/grid controls
are strictly separate and much less confusing.
* app/tools/tools-enums.[ch]: add enum GimpClipboardAction which can be
{ CUT, COPY, PASTE }
* app/tools/gimptool.[ch]
* app/tools/tool_manager.[ch]: add GimpTool::clipboard_action() which
returns a boolean indicating whether the tool handled the action.
* app/tools/gimptexttool.c: implement clipboard_action().
* app/actions/edit-commands.c: try the active tool first in the cut,
copy and paste callbacks.
* app/tools/tools-enums.[ch]: add enum GimpButtonPressType which can
be { NORMAL, DOUBLE, TRIPLE }
* app/tools/gimptool.[ch]: add press_type paramater to GimpTool::button_press()
* app/tools/gimp*tool.c
* app/tools/tool_manager.[ch]: changed accordingly.
* app/tools/gimptoolcontrol.[ch]: add members and API so tools can choose
to receive double and triple clicks.
* app/display/gimpdisplayshell-callbacks.c (gimp_display_shell_tool_events):
dispatch double and triple clicks to tools if they want them, and if they
became active by the preceding normal button press.
2009-03-14 Sven Neumann <sven@gimp.org>
Bug 566443 – diagonal method guidelines for crop tool
* app/tools/tools-enums.[ch]
* app/tools/gimprectangletool.c
(gimp_rectangle_tool_draw_guides):
applied a slightly modified patch from Lukasz Hladowski, based
on
a patch from Tim Jedlicka. This adds diagonal guidelines as
described by Edwin Westhoff to the rectangle tools.
svn path=/trunk/; revision=28156
2008-11-06 Sven Neumann <sven@gimp.org>
* tools/gimp-mkenums: use NC_() to mark enum values for
translation.
Use a lower-case short form of the type name as translation
context.
* libgimp/libgimp-intl.h: define the NC_() macro as noop.
* libgimpbase/gimpbasetypes.[ch]
* libgimpbase/gimpbase.def: added new functions to set and
get a translation context on an enum type.
* app/base/Makefile.am
* app/core/Makefile.am
* app/display/Makefile.am
* app/paint/Makefile.am
* app/plug-in/Makefile.am
* app/text/Makefile.am
* app/tools/Makefile.am
* app/widgets/Makefile.am
* libgimp/Makefile.am
* libgimpbase/Makefile.am:
* libgimpconfig/Makefile.am
* libgimpthumb/Makefile.am
* libgimpwidgets/Makefile.am: register the translation context
with the enum types.
* app/display/display-enums.h
* libgimpbase/gimpbaseenums.h
* libgimpconfig/gimpcolorconfig-enums.h: removed old-style
explicit
translation context.
* app/base/base-enums.c
* app/core/core-enums.c
* app/display/display-enums.c
* app/paint/paint-enums.c
* app/plug-in/plug-in-enums.c
* app/text/text-enums.c
* app/tools/tools-enums.c
* app/widgets/widgets-enums.c
* libgimpbase/gimpbaseenums.c
* libgimpconfig/gimpcolorconfig-enums.c
* libgimpwidgets/gimpwidgetsenums.c: regenerated.
svn path=/trunk/; revision=27562
2007-11-24 Martin Nordholts <martinn@svn.gnome.org>
* app/tools/gimprectangletool.[ch]: Ported the internal
representation of the rectangle to gdouble:s instead of
gint:s. This solves problems like not being able to swap portrait
for landscape on very small rectangle and bug #442027, as well as
provides a nice base to solve other similar problems when they are
discovered. It is possible to choose what precision the
GimpRectangleTool:s will appear to have externally through a new
GimpRectanglePrecision enum and property, but the gdouble
precision mode still requires some work in order to be useful. In
the processes quite some refactoring has taken place, mostly
restructuring code and splitting larger functions into smaller
more managable ones.
(gimp_rectangle_tool_rect_rubber_banding_func)
(gimp_rectangle_tool_setup_snap_offsets)
(gimp_rectangle_tool_apply_fixed_rule)
(gimp_rectangle_tool_update_int_rect)
(gimp_rectangle_tool_get_public_rect): New helper functions.
* app/tools/tools-enums.h: Added GimpRectanglePrecision.
svn path=/trunk/; revision=24224
2007-08-04 Martin Nordholts <martinn@svn.gnome.org>
Update rectangle tool options to bring it closer to the spec. The
major change is the use of a 'Fixed:' check box and a 'Aspect
ratio/Width/Height/Size' combo box. The check box is togglable
with Shift while rubber-banding.
* app/tools/gimprectangletool.c
(gimp_rectangle_tool_active_modifier_key): Set other side also
when Shift is released.
(gimp_rectangle_tool_update_options): Don't supress updates of
tool options on fixed width/height/size
(gimp_rectangle_tool_apply_fixed_height)
(gimp_rectangle_tool_update_with_coord)
(gimp_rectangle_tool_handle_general_clamping): Use new tool option
interface and members.
* app/tools/gimprectangleoptions.[ch]
(gimp_rectangle_options_iface_base_init)
(gimp_rectangle_options_install_properties)
(gimp_rectangle_options_(get|set)_property): Remove and add
relevant properties.
(gimp_rectangle_options_private_finalize): Unref the new widgets
used in tool options.
(gimp_rectangle_options_fixed_rule_changed): New, update tool
options depending on current option state.
(gimp_rectangle_options_gui): Modified according to change log
entry summary.
(gimp_rectangle_options_unparent_fixed_rule_widgets): New helper.
(gimp_rectangle_options_fixed_rule_active): New, clients should
use this to find out if a certain fixed-mode is active.
* app/tools/tools-enums.[ch]: Added GimpRectangleToolFixedRule.
svn path=/trunk/; revision=23114
2007-03-10 Michael Natterer <mitch@gimp.org>
* app/tools/tools-enums.[ch] (enum GimpButtonReleaseType): added
value GIMP_BUTTON_RELEASE_NO_MOTION.
* app/tools/gimptool.[ch]: when click events are requested and the
click was too long for a "click" event, send a NO_MOTION event if
the pointer didn't move at all.
* app/tools/gimpbucketfilltool.c: treat NO_MOTION as tool
confirmation too.
* app/tools/gimpfreeselecttool.c: request click events and treat
both CLICK and NO_MOTION as tool confirmation.
* app/tools/gimprectangletool.c: ignore NO_MOTION.
svn path=/trunk/; revision=22091
2007-02-27 Michael Natterer <mitch@gimp.org>
Step one towards enabling tool cancellation by other means than
mouse button 3 and towards proper "clicked" semantics.
* app/tools/tools-enums.[ch]: added enum GimpButtonReleaseType
which can be one of { NORMAL, CANCEL, CLICK } (click is curently
unused).
* app/tools/gimptool.[ch] (GimpTool::button_release): added
"release_type" parameter.
(gimp_tool_button_release): if the state contains
GDK_BUTTON3_MASK, call the tool's button_release() with CANCEL,
use NORMAL otherwise.
* app/tools/gimpaligntool.c
* app/tools/gimpblendtool.c
* app/tools/gimpbrightnesscontrasttool.c
* app/tools/gimpbucketfilltool.c
* app/tools/gimpcolortool.c
* app/tools/gimpcroptool.c
* app/tools/gimpcurvestool.c
* app/tools/gimpeditselectiontool.c
* app/tools/gimpforegroundselecttool.c
* app/tools/gimpfreeselecttool.c
* app/tools/gimpiscissorstool.c
* app/tools/gimpmagnifytool.c
* app/tools/gimpmeasuretool.c
* app/tools/gimpmovetool.c
* app/tools/gimppainttool.c
* app/tools/gimprectangleselecttool.c
* app/tools/gimprectangletool.[ch]
* app/tools/gimpregionselecttool.c
* app/tools/gimptransformtool.c
* app/tools/gimpvectortool.c (button_release): added
"release_type" parameters and get rid of own checks for
GDK_BUTTON3_MASK.
svn path=/trunk/; revision=22015
2007-02-07 Michael Natterer <mitch@gimp.org>
* app/tools/tools-enums.[ch]: remove enum GimpColorPickMode...
* app/widgets/widgets-enums.[ch]: ...and add it here.
* app/widgets/gimpgradienteditor.c: merge separate functions for
picking FG and BG colors and update the new color area from the
merged function.
svn path=/trunk/; revision=21863
* app/tools/tools-enums.[ch]: add GimpRectangleConstraint
enum.
* app/tools/gimprectangletool.[ch]: replace "constrain"
boolean with "constraint" enum property. Implement
constraints in motion handler -- the implementation
is rather elegant but pretty tricky.
* app/tools/gimpcroptool.c: constrain to image bounds,
or to active drawable bounds if "current layer only"
option is checked.
* app/tools/gimpellipseselecttool.c
* app/tools/gimprectangleselecttool.c: no constraint.
This addresses bug #353936 -- I would say fixes it, but it
probably needs some fine-tuning. Also perhaps fixes
bug #329817 a bit better than before.
2006-06-05 Michael Natterer <mitch@gimp.org>
* app/tools/tools-enums.[ch]: removed enum GimpRectangleMode.
* app/tools/gimprectangletool.[ch]: added virtual function
GimpRectangleTool::cancel(). Added public wrapper for it. Removed
coordinates paramaters from gimp_rectangle_tool_execute(). Removed
gimp_rectangle_tool_response(), need to call either execute() or
cancel() now. Added gimp_rectangle_tool_halt() which disconnects
the tool from the display without canceling it.
* app/tools/gimpcroptool.c: changed accordingly.
* app/tools/gimpnewrectselecttool.c: moved the rectangle creating
code from the execute() implementation to the new function
gimp_new_rect_select_tool_rect_select(). Added cancel()
implementation which pops the remembered undo step if
appropriate. Call the new rect_select() wrapper from
rectangle_changed() so we don't create the rectangle on both
button_release *and* execute(), breaking modifiers and stuff.
2005-09-26 Michael Natterer <mitch@gimp.org>
Allow to disable the color picker info dialog. Fixes bug #315011:
* app/tools/tools-enums.[ch] (enum GimpColorPickerMode): added
value GIMP_COLOR_PICK_MODE_PALETTE.
* app/tools/gimpcolorpickeroptions.[ch]: deprecated property
"add-to-palette" and added property "use-info-window". Changed
tool options GUI accordingly.
* app/tools/gimpcolorpickertool.c
(gimp_color_picker_tool_modifier_key): made <shift> toggle
the use-info-window property.
(gimp_color_picker_tool_picked): moved palette picking code
into the pick_mode switch() statement.
* app/tools/gimpcolortool.c (gimp_color_tool_cursor_update):
show a "plus" cursor when adding to the palette.
2004-10-25 Michael Natterer <mitch@gimp.org>
Don't store human readable and translatable enum/flag strings in
GEnumValue's and GTypeValue's fields but attach them to their
GType using separate structs and utility functions:
* tools/gimp-mkenums: added params and perl voodoo to support
generating a second array of values, which is used by the
Makefiles below to create and register arrays of value
descriptions.
* libgimpbase/gimpbasetypes.[ch]: added API to attach/retreive
arrays of translatable strings to/from enum and flags types. Added
structs GimpEnumDesc and GimpFlagsDesc for that purpose.
* libgimpbase/gimputils.[ch]: changed existing enum utility
functions, added new ones and added a symmetric API for flags.
* app/base/Makefile.am
* app/core/Makefile.am
* app/display/Makefile.am
* app/paint/Makefile.am
* app/text/Makefile.am
* app/tools/Makefile.am
* app/widgets/Makefile.am
* libgimp/Makefile.am
* libgimpbase/Makefile.am: changed *-enums.c generation rules
accordingly.
* app/base/base-enums.c
* app/core/core-enums.c
* app/display/display-enums.c
* app/paint/paint-enums.c
* app/text/text-enums.c
* app/tools/tools-enums.c
* app/widgets/widgets-enums.c
* libgimpbase/gimpbaseenums.c: regenerated.
* app/widgets/gimpenumstore.c
* app/widgets/gimpenumwidgets.c
* app/widgets/gimptemplateeditor.c
* libgimpwidgets/gimppreviewarea.c: follow the enum utility
function API changes.
2004-07-28 Michael Natterer <mitch@gimp.org>
* app/core/core-enums.h: added still unused flags type
GimpDirtyMask.
* app/base/Makefile.am
* app/core/Makefile.am
* app/display/Makefile.am
* app/paint/Makefile.am
* app/text/Makefile.am
* app/tools/Makefile.am
* app/widgets/Makefile.am
* libgimpthumb/Makefile.am: changed calls to gimp-mkenums to
support GTypeFlags and to make the value arrays private to the
get_type() functions.
* app/base/base-enums.c
* app/core/core-enums.c
* app/display/display-enums.c
* app/paint/paint-enums.c
* app/text/text-enums.c
* app/tools/tools-enums.c
* app/widgets/widgets-enums.c: regenerated.
2004-07-02 Philip Lafleur <plafleur@cvs.gnome.org>
* app/tools/gimptransformoptions.[ch]:
* app/tools/gimptransformtool.c:
* app/tools/tools-enums.[ch]: Replaced "Preview" checkbutton with
a combobox with options "Outline", "Grid", "Image", and
"Image + Grid".
2003-10-25 Sven Neumann <sven@gimp.org>
* app/tools/tools-enums.[ch]: added GIMP_COLOR_PICK_MODE_NONE to
the GimpColorPickMode enum.
* app/tools/gimpcolorpickeroptions.[ch]: removed "update-toolbox"
property; the new enum value serves this role better.
* app/tools/gimpcolorpickertool.c: handle the new enum value.
* app/tools/gimpcolortool.c: default to GIMP_COLOR_PICK_MODE_NONE.
Don't set a cursor modifier for this value. Fixes tool cursor for
levels and curves tools.
* app/tools/gimppainttool.[ch]: added a function to conveniently
enable the color picker and set the pick mode at the same time.
* app/tools/gimpairbrushtool.c
* app/tools/gimppaintbrushtool.c
* app/tools/gimppenciltool.c
* app/tools/gimpsmudgetool.c: use the new function.
* app/tools/gimperasertool.c: enabled color picking in the eraser
tool but set the mode to GIMP_COLOR_PICK_MODE_BACKGROUND.
2003-10-19 Sven Neumann <sven@gimp.org>
* app/tools/gimpcropoptions.c
* app/tools/gimpmoveoptions.c: revert back to "Current".
* app/tools/tools-enums.[ch]: removed "Active" from the enum value
descriptions; it was misleading.
2003-09-26 Michael Natterer <mitch@gimp.org>
* tools/pdbgen/Makefile.am: don't scan "app/tools/tools-enums.h"
for PDB types since the PDB doesn't depend on app/tools/ any more.
* app/tools/tools-enums.h: removed lengthy "skip" vs. "pdb-skip"
comment. Removed "pdb-skip" from all enums. Renamed GimpCropType
to GimpCropMode, renamed the enum's values to GIMP_CROP_MODE_*.
* app/tools/tools-enums.c: regenerated.
* app/tools/gimpcropoptions.[ch]
* app/tools/gimpcroptool.c: changed accordingly.
2003-09-26 Michael Natterer <mitch@gimp.org>
Cleaned up all places which pick colors to work consistently: the
concept of an "active color" has disappeared, instead <ctrl> picks
the BG color all over the place (fixes bug #122931).
* app/tools/tools-enums.[ch]: added enum GimpColorPickMode which
can be one of { FOREGROUND, BACKGROUND }. Reordered enums so
non-registered ones are at the end of the file. Removed trailing
whitespace.
* app/tools/gimpcolorpickeroptions.[ch]: added a "pick-mode"
property and a GUI for it. Renamed the "update-active" property to
"update-toolbox".
* app/tools/gimpcolorpickertool.c: honor the new option. Toggle
pick-mode on <ctrl>.
* app/tools/gimpcolortool.[ch]: added pick_mode member and change
the cursor accordingly.
* app/widgets/gimpcolormapeditor.[ch]: added "GdkModifierType
state" to the "selected" signal. Removed the signal's default
implementation.
* app/gui/dialogs-constructors.c: fixed the signal handler which
lives here and set BG if <ctrl> was pressed.
* app/widgets/gimppaletteeditor.c: removed weird <ctrl> <->
active_color interaction and pick BG on <ctrl>. Don't change the
toolbox color when editing a color in the palette.
* app/widgets/gimptoolbox-color-area.[ch]: made the whole
active_color stuff private. Will remove these artefacts soon...
* app/gui/colormap-editor-menu.c
* app/gui/palette-editor-menu.c: added separate menu entries
for adding a color from the current FG and BG.
* app/gui/colormap-editor-commands.c
* app/gui/palette-editor-commands.[ch]: changed callbacks
accordingly.
* cursors/background.xbm
* cursors/background_mask.xbm
* cursors/foreground.xbm
* cursors/foreground_mask.xbm
* cursors/gimp-tool-cursors.xcf: moved the FG/BG cursor modifiers
closer to the upper right corner.
* app/widgets/gimpcursor.c: ignore the cursor modifiers' hotspots
since they are not relevant and I didn't save the hotspot in the
updated cursor files for that reason.
2003-08-29 Simon Budig <simon@gimp.org>
* app/vectors/gimpbezierstroke.c: Do not modify the selection
state of the anchors. When extending EXTEND_EDITABLE return
the anchor created (not the handle at the end of the list)
* app/tools/tools-enums.h: Added new mode-enum for the vector tool.
* app/tools/tools-enums.c: regenerated
* app/tools/gimpvectortool.[ch]: Implemented moving (Shortcuts
ALT and ALT+CTRL. The whole assignment of modifiers right now
gets revised. Right now you have to use the Tool options to
switch between the modes of operation. Connecting strokes now
works in Insert/Delete mode by clicking on startpoint and
dragging to target endpoint.
I will write a mail to gimp-devel when the shortcuts are
setteled a bit more. Sorry for the inconvenience.
2003-08-21 Simon Budig <simon@gimp.org>
* app/tools/tools-enums.h: Added enum for vector tool operation
mode
* app/tools/tools-enums.c: regenerated
* app/tools/gimpvectoroptions.[ch]: Use new enum.
Add "Polygonal" Option
* app/tools/gimpvectortool.c: New Option "Polygonal" that
places all newly generated handles at the position of their
anchor, effectively ensuring that only polygons can be created.
Cleaned up the editing states. It is now possible to move anchors
in the Insert/Delete mode. Cleaned up the associated cursors.
Fixed warning when Shift+Ctrl-Clicking on an inactive Anchor.
2003-07-01 Sven Neumann <sven@gimp.org>
* app/base/base-enums.h
* app/paint/paint-enums.h
* app/tools/tools-enums.h: use /*< pdb-skip, skip >*/, updated the
comment that explains how to use the trigraph sequences.
* app/tools/tools-enums.c: regenerated.
2003-05-31 Michael Natterer <mitch@gimp.org>
* app/tools/tools-enums.[ch]: added enum GimpTransformType which
can be one of { LAYER, SELECTION, PATH }
* app/tools/gimptransformoptions.[ch]: added a GimpTransformType
property to GimpTransformOptions. Added a GUI for the new
option.
* app/tools/gimpflipoptions.[ch]: derive it from
GimpTransformOptions and add the GUI here, too.
* app/tools/gimpfliptool.c
* app/tools/gimptransformtool.[ch]: added support for transforming
the selection. Added framework for transforming paths (still
unimplemented).
* app/tools/gimpselectionoptions.c: small cleanup.
* libgimpwidgets/gimpstock.[ch]
* themes/Default/images/Makefile.am
* themes/Default/images/stock-path-16.png
* themes/Default/images/stock-path-22.png
* themes/Default/images/stock-selection-16.png: new icons for the
new transform options buttons. Simply copied existing ones...
2003-05-16 Michael Natterer <mitch@gimp.org>
* app/core/gimpimage-mask.[ch] (gimp_image_mask_extract): added
"gboolean cut_image" parameter so we can float selections
without cutting them from the original drawable.
* app/gui/select-commands.c
* tools/pdbgen/pdb/selection.pdb: pass cut_image == TRUE.
* app/pdb/selection_cmds.c: regenerated.
* app/tools/tools-enums.[ch]: added SELECTION_MOVE_COPY value
to the SelectOps enum.
* app/tools/gimpselectiontool.c: use the new mode when
<ctrl>+<alt>-dragging a selction (yes, this is evil but there are
no modifiers left).
* app/tools/gimpeditselectiontool.[ch]: extended EditType enum by
EDIT_MASK_COPY_TO_LAYER_TRANSLATE and pass cut_image == FALSE if
it's passed to init_edit_selection().
* app/tools/gimpfreeselecttool.c
* app/tools/gimpfuzzyselecttool.c
* app/tools/gimprectselecttool.c: pass the new mode to
GimpEditSelectionTool.