2008-05-21 Sven Neumann <sven@gimp.org>
* app/base/desaturate.[ch]: changed to take a pointer as first
argument as all PixelProcessor functions.
* app/core/gimpdrawable-desaturate.c: changed accordingly.
* app/tools/gimpdesaturatetool.[ch]: added legacy code path.
svn path=/trunk/; revision=25730
2008-05-21 Sven Neumann <sven@gimp.org>
* app/base/Makefile.am
* app/base/desaturate.[ch]: moved legacy desaturate code here.
* app/core/gimpdrawable-desaturate.c: use the code in app/base.
svn path=/trunk/; revision=25728
2008-05-21 Michael Natterer <mitch@gimp.org>
* app/gegl/gimpoperationdesaturate.c
(gimp_operation_desaturate_process): bail out if there is no
config object.
svn path=/trunk/; revision=25727
2008-05-21 Sven Neumann <sven@gimp.org>
Add Desaturate as an image-map tool with live preview (bug #533808):
* app/gegl/Makefile.am
* app/gegl/gegl-types.h
* app/gegl/gimpdesaturateconfig.[ch]: added config object for the
desaturate point filter.
* app/gegl/gimpoperationdesaturate.[ch]: derive from
GimpOperationPointFilter. Unrolled the inner loop.
* app/core/gimpdrawable-desaturate.c: changed accordingly.
* app/tools/Makefile.am
* app/tools/gimpdesaturatetool.[ch]: added desaturate as an
imagemap tool. So far only the GEGL code path is implemented.
* app/tools/gimp-tools.c: register the new tool.
* app/dialogs/dialogs.c: register the new tool dialog.
* app/dialogs/Makefile.am
* app/dialogs/desaturate-dialog.[ch]: removed the desaturate dialog.
* app/actions/drawable-actions.c
* app/actions/drawable-commands.[ch]: removed action
"drawable-desaturate".
* app/widgets/gimphelp-ids.h: changed help IDs accordingly.
* menus/image-menu.xml.in: replaced "drawable-desaturate" with
"tools-desaturate".
* libgimpwidgets/gimpstock.h: added a define for
GIMP_STOCK_TOOL_DESATURATE.
svn path=/trunk/; revision=25726
2008-05-20 Michael Natterer <mitch@gimp.org>
* app/core/Makefile.am
* app/core/core-types.h
* app/core/gimpimagemapconfig.[ch]: new GimpViewable subclass
which has a "time" property. Sets the object's name to a date
string if a time != 0 gets set. Has a compare function which first
sorts the objects with a timestamp in MRU order and then the
objects without timestamp by name.
* app/gegl/gimpbrightnesscontrastconfig.[ch]
* app/gegl/gimpcolorbalanceconfig.[ch]
* app/gegl/gimpcolorizeconfig.[ch]
* app/gegl/gimpcurvesconfig.[ch]
* app/gegl/gimphuesaturationconfig.[ch]
* app/gegl/gimplevelsconfig.[ch]
* app/gegl/gimpposterizeconfig.[ch]
* app/gegl/gimpthresholdconfig.[ch]: derive from GimpImageMapConfig.
* app/tools/gimpimagemaptool.c: sort the settings container with
above compare function.
* app/tools/gimpimagemaptool-settings.c: add utility functions
for loading and saving the settings container. In the settings
combo, add a separator between MRU items and favorites.
* app/Makefile.am: make the thing link.
svn path=/trunk/; revision=25724
2008-05-20 Michael Natterer <mitch@gimp.org>
* app/core/gimplist.c (gimp_list_uniquefy_name): don't crash if an
object has a NULL name. Move variables to local scopes. Remove
redundant casts.
svn path=/trunk/; revision=25723
2008-05-20 Martin Nordholts <martinn@svn.gnome.org>
* app/tools/gimpfreeselecttool.c: Increase handle size to 12
pixels (the same size as for the Paths Tool).
svn path=/trunk/; revision=25722
2008-05-20 Martin Nordholts <martinn@svn.gnome.org>
Added statusbar help-messages for the Free Select Tool.
* app/tools/gimpfreeselecttool.c
(gimp_free_select_tool_oper_update): Don't bail out if
tool->display is NULL, instead modify the underlying logic to deal
with this.
svn path=/trunk/; revision=25721
2008-05-20 Michael Natterer <mitch@gimp.org>
* app/tools/gimpimagemaptool.c (gimp_image_map_tool_add_recent):
unref the new settings object after adding it to the recent
container.
* app/tools/gimpimagemaptool-settings.c: add a "Save to Favorites"
button which pops a string entry dialog and saves the current
settings to the recent container.
svn path=/trunk/; revision=25719
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
2008-05-20 Sven Neumann <sven@gimp.org>
* app/widgets/Makefile.am
* app/widgets/gimptoggleaction.[ch]
* app/widgets/gimpradioaction.[ch]: added new action types derived
from GtkToggleAction and GtkRadioAction. These types override the
"connect_proxy" method to enable tooltips in menus.
* app/widgets/gimpactiongroup.c: use the new action types.
* app/actions/dockable-actions.c: added a tooltip for the
"dockable-lock-tab" action.
svn path=/trunk/; revision=25717
2008-05-19 Sven Neumann <sven@gimp.org>
* app/widgets/gimpdockable.[ch]
* app/widgets/gimpdockbook.[ch]: added a "locked" propery to
GimpDockable. A locked dockable cannot be moved by drag-n-drop.
Allows users to protect their dockables from accidental changes,
mainly when working with a tablet.
* app/widgets/gimpsessioninfo-dockable.[ch]: store the "locked"
property in the session info.
* app/actions/dockable-actions.c
* app/actions/dockable-commands.[ch]: added an action for
toggling
the "locked" state.
* app/widgets/gimphelp-ids.h: new help-id "gimp-dock-tab-lock".
* menus/dockable-menu.xml.in: show the new menu item.
* app/actions/plug-in-actions.c: formatting.
svn path=/trunk/; revision=25715
2008-05-19 Michael Natterer <mitch@gimp.org>
Unabstract image map tool settings load/save a bit before it's
turned into generic load/save for all image map tools:
* app/gegl/gimpcurvesconfig.[ch]
* app/gegl/gimplevelsconfig.[ch]: add GError** to save_cruft()
functions.
* app/tools/gimpimagemaptool.[ch]: add GError to
::settings_save(), changed "file" parameter of ::settings_load()
and ::settings_save() to "filename", removed
gimp_image_map_tool_load_save() utility function and moved the
code to the settings_load() and settings_save() utility functions.
* app/tools/gimpcurvestool.c
* app/tools/gimplevelstool.c: changed accordingly. Open and close
the settings files here.
svn path=/trunk/; revision=25714
2008-05-19 Michael Natterer <mitch@gimp.org>
* app/core/gimpcurve.c
(gimp_curve_set_n_points)
(gimp_curve_set_n_samples): set "identity" to TRUE if appropriate.
(gimp_curve_calculate): don't set it to TRUE when there are no
control points.
svn path=/trunk/; revision=25708
2008-05-19 Sven Neumann <sven@gimp.org>
* app/core/gimpcurve-map.c (gimp_curve_map_pixels): fixed the call
to memcpy() in the CURVE_NONE case.
svn path=/trunk/; revision=25707
2008-05-18 Michael Natterer <mitch@gimp.org>
* app/core/gimpcurve.c: implement (de)serializing of the points
and samples arrays using GValueArray. Set "identity" to FALSE
after deserializing.
svn path=/trunk/; revision=25704
2008-05-18 Michael Natterer <mitch@gimp.org>
* libgimpconfig/gimpconfig-serialize.[ch]
* libgimpconfig/gimpconfig.def: add
gimp_config_serialize_property_by_name().
* app/gegl/gimpcolorbalanceconfig.c
* app/gegl/gimpcurvesconfig.c
* app/gegl/gimphuesaturationconfig.c
* app/gegl/gimplevelsconfig.c: implement serialize() and
deserialize() and make sure the properties which change when the
channel/range property changes are handled correctly. Not too
ugly but it's still a hack...
svn path=/trunk/; revision=25703
2008-05-18 Michael Natterer <mitch@gimp.org>
* app/tools/gimpimagemaptool.c: made the lists of recent settings
persistent. Note that the settings of tools that modify multiple
channels or ranges are saved incompletely because their settings
still lack custom serialize() implementations. Work in progress.
svn path=/trunk/; revision=25702
2008-05-18 Michael Natterer <mitch@gimp.org>
* app/core/gimptoolinfo.[ch]: add
gimp_tool_info_build_options_filename() which creates a filename
under $GIMPDIR/tool-options/ with an optional suffix.
* app/core/gimptooloptions.c
* app/core/gimptoolpresets.c: use it and remove own build_filename()
functions.
svn path=/trunk/; revision=25701
2008-05-18 Michael Natterer <mitch@gimp.org>
* app/core/gimpstrokeoptions.[ch]: renamed public function
set_dash_pattern() to take_dash_pattern() to clarify memory
management of the passed GArray.
* app/widgets/gimpdasheditor.c
* app/widgets/gimpstrokeeditor.c: changed accordingly.
svn path=/trunk/; revision=25700
2008-05-18 Michael Natterer <mitch@gimp.org>
* app/core/gimpcurve.c: implement the GimpConfig interface and add
the code for equal(), reset() and copy() from GimpCurvesConfig.
* app/gegl/gimpcurvesconfig.c: remove the copied code and use
GimpConfig methods to compare, reset and copy curve objects.
svn path=/trunk/; revision=25699
2008-05-18 Martin Nordholts <martinn@svn.gnome.org>
Applied patch from Alexia Death that makes velocity dynamics
controlled scale properly recalculate the brush mask when
necessary (bug #533618).
* app/paint/gimpbrushcore.[ch] (gimp_brush_core_scale_mask): A
change in scale requires a recalculation of the cached brush mask.
svn path=/trunk/; revision=25696
2008-05-18 Martin Nordholts <martinn@svn.gnome.org>
Merged the Polygon Select Tool capabilities with the Free Select
Tool. Among the things still to do is improved help texts, more
suitable graphics, and cursor mangement, but the core
functionality is in place. Thanks to Alexia Death for initial
testing. It will also be neccesary to do some work to adapt the
Foreground Select Tool to the new Free Select Tool implementation.
Quick instructions on how the tool works:
o A click adds a polygonal segment, a drag adds a free-hand
segment
o Return-key commits, Escape-key cancels, Backspace-key removes
last segment
o You can grab and move segment vertices
o You can cancel both a move, and the creation of a segment
* app/tools/gimpfreeselecttool.[ch]: More or less
reimplemented. We keep a sequential array of all the points in the
polygon (including the free segments), and we have another array
with point indices that we use to represent the segments. On top
of this we have a few helper functions that tries to abstract away
the pretty raw nature of the implementation.
* app/tools/gimpforegroundselecttool.[ch]: Keep track on its own
last_coord, and adjust to the new implementation of the Free
Select Tool. Still needs some work, for example handling that the
Free Select Tool now resets GimpTool::display.
(gimp_foreground_select_tool_key_press): Pass on key event to
parent class when appropriate. (Bails out too early though...)
svn path=/trunk/; revision=25693
* app/core/gimpdrawable-operation.c:
* app/core/gimpimagemap.c: Make the created GEGL graphs have the
"dont-cache" property set to avoid unneeded caches.
svn path=/trunk/; revision=25689
2008-05-17 Michael Natterer <mitch@gimp.org>
* app/widgets/gimpwidgets-constructors.[ch]: add new function
gimp_stock_button_new() which creates a button with icon and label
which is *not* the stock_id's label.
* app/dialogs/preferences-dialog.c (prefs_button_add)
* app/tools/gimplevelstool.c (gimp_levels_tool_dialog): use it.
svn path=/trunk/; revision=25688
2008-05-17 Michael Natterer <mitch@gimp.org>
* app/widgets/gimphelp-ids.h: add help IDs for the stuff in the
Windows menu.
* app/actions/windows-actions.c: use them.
svn path=/trunk/; revision=25687
2008-05-17 Michael Natterer <mitch@gimp.org>
* app/dialogs/file-save-dialog.c (file_save_dialog_response): fix
crash (don't dereference dialog after it has been destroyed). Also
put back code that sets the dialog back to sensitive if it still
exists.
svn path=/trunk/; revision=25686
2008-05-17 Michael Natterer <mitch@gimp.org>
* app/actions/windows-actions.c: add tooltips to the menu items of
open and recently closed docks.
* app/widgets/gimpaction.c: connect to "notify::tooltip" and make
sure gimp_help_set_help_data() gets called when the action's
tooltip changes.
svn path=/trunk/; revision=25684
2008-05-16 Sven Neumann <sven@gimp.org>
* app/core/gimpimagemap.c: added some basic benchmarking code.
Will become optional but for now it is enabled by default.
svn path=/trunk/; revision=25679
2008-05-16 Sven Neumann <sven@gimp.org>
* app/display/gimpdisplayoptions.c: disable rulers by default as
suggested by Peter. Please give feedback.
svn path=/trunk/; revision=25675
2008-05-16 Michael Natterer <mitch@gimp.org>
* app/dialogs/dialogs.c (dialogs_load_recent_docks): reverse the
list after loading so it keeps its order.
* app/menus/windows-menu.c (windows_menu_setup)
(windows_menu_recent_add): keep the recent docks menu in MRU
order.
svn path=/trunk/; revision=25672
2008-05-16 Michael Natterer <mitch@gimp.org>
Implement the presistent menu of recently closed docks, still
somewhat hackish but fully functional. Fixes bug #132744.
* app/actions/dialogs-actions.c
* app/actions/dialogs-commands.[ch]
* menus/image-menu.xml.in: remove the menu items that were
creating the hardcoded preconfigured docks.
* app/dialogs/dialogs.[ch]: add GimpContainer of recently closed
docks and API to load and save it.
* app/gui/session.c: call the recent dock load and save functions.
* app/widgets/gimpsessioninfo.[ch]: implement the GimpConfig interface
and (de)serialize via proper interface methods.
* app/gui/session.c
* app/widgets/gimpdialogfactory.c: use the GimpConfig API
to (de)serialize session infos and added the code that was
formerly in the info's (de)serialize functions but didn't belong
there.
* app/widgets/gimpaction.[ch]: add "max-width-chars" property and
set it on proxy menu item labels.
* app/actions/windows-actions.[ch]
* app/actions/windows-commands.[ch]
* app/menus/windows-menu.c: add actions and menu of recently
closed docks and code to restore the dock when the menu items are
selected. Use above new action property to ensure a minimum
width of the menu.
* app/widgets/gimpmenudock.c: use '-' instead of '|' for
separating notebooks in the window title. Menu items don't like '|'.
* app/widgets/gimpdock.c: removed the confirmation dialog when
closing docks and simply add them to the recent docks container.
This code is totally misplaced and will move to another file soon.
svn path=/trunk/; revision=25671
2008-05-14 Sven Neumann <sven@gimp.org>
* app/core/gimpcurve.c (gimp_curve_plot): don't write over the end
of the samples array. Someone should review this code. It looks
as if the loop could be rewritten in a safer and cleaner way.
svn path=/trunk/; revision=25670
2008-05-14 Sven Neumann <sven@gimp.org>
* app/widgets/gimpcurveview.c (gimp_curve_view_motion_notify):
fixed use of uninitialized value.
svn path=/trunk/; revision=25668
2008-05-14 Michael Natterer <mitch@gimp.org>
* app/menus/windows-menu.c
* app/actions/windows-actions.c
* menus/image-menu.xml.in: move the list of dockable dialogs and
the list of recent docks to submenus and keep the list of open
image windows and docks at the "Windows" menu toplevel. The list
of recent docks doesn't exist yet, its contents are fake.
svn path=/trunk/; revision=25666
2008-05-14 Sven Neumann <sven@gimp.org>
* app/core/gimpbrushclipboard.c
(gimp_brush_clipboard_buffer_changed): for an opaque buffer,
initialize the brush mask with 255 instead of 0. Fixes bug
#532886.
svn path=/trunk/; revision=25661