2003-04-17 Sven Neumann <sven@gimp.org>
* app/core/gimpimage-contiguous-region.c
(find_contiguous_region_helper): applied patch from Pedro Gimeno
that fixes bug #51883.
* plug-ins/common/bumpmap.c (bumpmap): applied patch from Pedro
Gimeno that fixes bug #52543.
2003-04-17 Michael Natterer <mitch@gimp.org>
* app/core/gimpimage-guides.c (gimp_image_add_x,y): new functions
snapping to one axis only.
(gimp_image_snap_rectangle): use them to enable snapping the
rectangle to all its corners, not just the NW and SE one.
2003-04-14 Simon Budig <simon@gimp.org>
* app/vectors/gimpstroke.[ch]
* app/vectors/gimpvectors.[ch]: Changed vectors->strokes to a
GList and removed stroke->next. Implemented stuff for duplicating
strokes. Duplicating a vector works now.
* app/tools/gimpvectortool.c: added not-yet-used function to
determine where a click has been. Refcounting stuff changed.
* app/core/gimpimage-mask-select.c
* app/paint/gimppaintcore-stroke.c: Changed accordingly.
2003-04-13 Michael Natterer <mitch@gimp.org>
* app/core/gimptemplate.c (gimp_template_notify): invalidate
the preview when the stock_id changes.
* app/widgets/gimptemplateeditor.[ch]: added an optional entry
to edit the template's name.
* app/widgets/gimptemplateview.[ch]: added a "duplicate" button and
function pointers for creating templates, editing templates and
creating images from templates.
* app/gui/file-new-dialog.[ch] (file_new_dialog_create): added an
optional template parameter.
* app/gui/file-commands.c: pass template == NULL.
* app/gui/templates-menu.c: added a "Duplicate Template" menu entry.
* app/gui/templates-commands.[ch]: added the callback for the
duplicate menu item. Added "New Template" and "Edit Template"
dialogs. Added a function which opens a file_new_dialog with
a template preselected.
* app/gui/dialogs-constructors.c: let GimpTemplateView know
about the functions.
2003-04-13 Michael Natterer <mitch@gimp.org>
* app/core/gimpcontext.c (gimp_context_deserialize_property)
* app/core/gimpcontainer.c (gimp_container_deserialize): g_free()
the string returned by gimp_scanner_parse_string(). Replace
NULL object names by "".
2003-04-12 Michael Natterer <mitch@gimp.org>
* app/config/gimpconfig-params.h: made object properties
G_PARAM_READWRITE by default. Added flag GIMP_PARAM_AGGREGATE
which indicates that an object property is not a reference but a
real part of its owner.
* app/config/gimpconfig-deserialize.c: g_object_set_property()
object properties only if they are not GIMP_PARAM_AGGREGATE.
* app/config/gimpconfig-utils.c (gimp_config_copy_properties,
gimp_config_reset_properties): copy and reset GIMP_PARAM_AGGREGATE
object properties correctly.
* app/config/gimpconfig-serialize.c: don't call
gimp_config_writer_open/close() for properties which are handled
by a GimpConfigIface::serialize_property() implementation.
* app/core/gimpcontext.c: removed exlicit G_PARAM_WRITABLE from
object properties since that's the default now. Call
gimp_config_writer_open/close() when serializing properties.
* app/core/gimpviewable.c (gimp_viewable_get_property): use
gimp_viewable_get_stock_id().
(gimp_viewable_set_stock_id): set stock_id to NULL if the new
stock_id is the same as viewable_class->default_stock_id.
Added serialize_property() which skips stock_id serialization
if it is NULL.
* app/tools/gimptextoptions.c: made the "text" property
GIMP_PARAM_AGGREGATE. Added gimp_text_options_set_property()
(which does nothing).
* app/widgets/gimptemplateeditor.[ch]: added an optional
GimpViewableButton to change the template's icon.
* app/gui/file-new-dialog.c: create it with the icon button so it
gets some testing.
2003-04-10 Michael Natterer <mitch@gimp.org>
* app/core/gimpcontext.[ch]: added gimp_context_type_to_prop_name().
* app/widgets/Makefile.am
* app/widgets/widgets-types.h
* app/widgets/gimpviewablebutton.[ch]: new widget implementing
the wheel-scrollable preview button.
* app/tools/gimptextoptions.c
* app/tools/paint_options.[ch]: removed the code implementing the
same and use GimpViewableButton.
* app/tools/tool_manager.c: added the font to the context
properties which are remembered per tool. Added an evil hack
using g_object_set_data() to pass the global_dock_factory to
tool option GUI constructors.
2003-04-09 Michael Natterer <mitch@gimp.org>
* app/core/gimpimage.c (gimp_image_remove_channel): say
"Remove Channel" when pushing the undo, not "Remove Layer".
2003-04-08 Michael Natterer <mitch@gimp.org>
* app/core/gimpviewable.[ch]: added vitrual function
GimpViewable::get_description() which returns the string that
should be presented to the user plus an optional tooltip with more
information. The default implementation just returns the object's
name and no tooltip.
* app/core/gimpbrush.c
* app/core/gimpbuffer.c
* app/core/gimpimage.c
* app/core/gimppalette.c
* app/core/gimppattern.c
* app/core/gimptoolinfo.c: implement get_description().
* app/core/gimpimagefile.[ch]: ditto. Renamed
gimp_imagefile_get_description() to
gimp_imagefile_get_desc_string(). Well, um, gimme a better name...
* app/gui/file-open-dialog.c: changed accordingly.
* app/file/file-utils.[ch]: renamed readXVThumb() to
file_utils_readXVThumb().
* tools/pdbgen/pdb/fileops.pdb: changed accordingly.
* app/widgets/widgets-types.h: removed GimpItemGetNameFunc typedef.
* app/widgets/gimpcontainerview-utils.[ch]: removed the the actual
get_name_funcs. They now live in the core as
GimpViewable::get_description() implementations.
* app/widgets/gimpcontainermenu.[ch]
* app/widgets/gimpcontainergridview.c
* app/widgets/gimpcontainermenuimpl.c
* app/widgets/gimpcontainertreeview.c
* app/widgets/gimpcontainerview.[ch]
* app/widgets/gimpmenuitem.[ch]
* app/widgets/gimpviewabledialog.c: removed get_name_func stuff
and use gimp_viewable_get_description().
* app/widgets/gimpcontainermenu.[ch]: added "preview_border_width"
to gimp_container_menu_set_preview_size().
* app/widgets/gimpimagedock.c: changed accordingly.
* app/pdb/fileops_cmds.c: regenerated.
2003-04-07 Michael Natterer <mitch@gimp.org>
* app/core/gimplayer.c (gimp_layer_apply_mask): call
gimp_viewable_invalidate_preview() on the layer, not on the image
(fixes bug #108960).
2003-04-06 Michael Natterer <mitch@gimp.org>
* app/core/gimplist.[ch]: added gimp_list_uniquefy_name() utility
function.
* app/core/gimpdatalist.c
* app/core/gimpitem.c: use it here instead of duplicating almost
the same code.
* app/widgets/Makefile.am
* app/widgets/widgets-types.h
* app/widgets/gimptemplateview.[ch]: new widget for editing the
template list.
* app/gui/dialogs-constructors.c: use it.
* app/gui/Makefile.am
* app/gui/templates-commands.[ch]
* app/gui/templates-menu.[ch]: new files implementing the context
menu for the template list.
* app/gui/menus.c: register the new menu with the menu factory.
* app/gui/file-commands.c (file_new_template_callback): uniquefy
the new template's name.
* app/gui/documents-commands.c: fixed typo.
2003-04-06 Michael Natterer <mitch@gimp.org>
* app/core/gimpgradient.c (gimp_gradient_get_color_at): fixed bug
spotted by Pedro Gimeno by moving the alpha calculation to the
bottom so it is not affected by rgb->hsv->rgb conversions
(bug #110053).
2003-04-05 Michael Natterer <mitch@gimp.org>
* app/config/gimpconfig-utils.c (gimp_config_reset_properties):
reset object properties only if they are GIMP_PARAM_SERIALIZABLE.
* app/core/gimpcontext.[ch]: added a GimpTemplate property.
* app/gui/dialogs-constructors.[ch]
* app/gui/dialogs.c: added a template dialog.
* app/gui/dialogs-menu.c
* app/gui/image-menu.c
* app/gui/toolbox-menu.c: and menu entries to open it.
* app/widgets/gimpdnd.[ch]: added DND for GimpTemplates.
2003-04-05 Michael Natterer <mitch@gimp.org>
* app/core/gimp-templates.c (gimp_templates_load):
gimp_list_reverse() after loading so it is in the right order.
2003-04-04 Michael Natterer <mitch@gimp.org>
* libgimpbase/gimplimits.h: reduced GIMP_MAX_IMAGE_SIZE to 2^18.
* libgimpbase/gimputils.[ch]: added gimp_memsize_to_string()
utility function (which is definitely broken on 64bit systems).
* app/core/gimpimage-new.[ch]: removed
gimp_image_new_get_memsize_string() and gimp_image_new_create_image().
Renamed gimp_image_new_template_new() to
gimp_image_new_get_last_template().
* app/core/gimpimagefile.c
* app/display/gimpdisplayshell-title.c: changed accordingly.
* app/core/gimp-templates.c: changed filename from "templates"
to "templaterc".
* app/core/gimp.[ch]
* app/core/gimpimage-duplicate.c: don't include "gimpimage-new.h".
* app/core/gimptemplate.[ch]: removed
gimp_template_calc_memsize(). Instead, added the size and a
boolean indicating that it is valid to the GimpTemplate
struct. Added GObject::notify() implementation and update the
values there.
* app/widgets/gimppropwidgets.c: connect to the unit property
correctly.
* app/gui/file-new-dialog.c: changed accordingly. Disconnect
from the template's "notify" signal while changing all values.
2003-04-04 Sven Neumann <sven@gimp.org>
Applied a patch from yvind Kols that adds supersampling to the
transform operations (bug #109817):
* app/base/tile-manager-private.h
* app/base/tile-manager.[ch]: cache the last accessed tile and use
it to optimize read_pixel_data_1().
* app/core/gimpdrawable-transform-utils.c
* app/core/gimpdrawable-transform.c: changed the resampling
behavior when scaling down.
2003-04-03 Michael Natterer <mitch@gimp.org>
Added preliminary support for image templates. Not finished
yet. Addresses bug #96059. Now we need a volunteer to create
a nice collection of default templates...
* app/core/Makefile.am
* app/core/core-types.h
* app/core/gimptemplate.[ch]
* app/core/gimp-templates.[ch]: new files implementing the new
GimpTemplate object and the list of available image templates.
* app/core/gimp.[ch]: keep a container of templates around.
* app/core/gimpimage-new.[ch]: ported to use GimpTemplate. Removed
struct GimpImageNewValues.
* app/widgets/gimpcontainermenuimpl.c: changed to show the
"(none)" item for a NULL selection also, not only for an empty
container.
* app/widgets/gimppropwidgets.[ch]: added
gimp_prop_size_entry_connect() which connects an externally
created GimpSizeEntry to object properties. Fixed the size entry
code to actually work.
* app/gui/image-menu.c
* app/gui/file-commands.[ch]: added "Save as Template" which
creates a new template from any image's properties.
* app/gui/file-new-dialog.c: use prop_widgets and GimpTemplate.
Offer the available templates in a menu at the top of the dialog.
2003-04-02 Michael Natterer <mitch@gimp.org>
* app/core/gimpimagefile.c: reverted my last "fix" and fixed the
real bug: "tEXt::Thumb::Size" is optional, so don't fail if it's
not present. Plugged some memleaks.
2003-04-01 Michael Natterer <mitch@gimp.org>
* app/core/gimpmarshal.list: added VOID__DOUBLE_DOUBLE
* app/widgets/gimpnavigationpreview.[ch]: applied patch from
Pedro Gimeno that fixes mapping of preview scroll offsets to
image scroll offsets. Changed the x, y, width, height members
from gint to gdouble. Changed the external API to use exact
doubles instead of rounded ints.
* app/display/gimpnavigationview.c: speak to the navigation
preview in exact double values.
Alltogether fixes bug #109648.
2003-03-30 Michael Natterer <mitch@gimp.org>
* app/core/gimpimage-resize.c (gimp_image_resize): fixed to check
the *new* guide position to be within bounds, not the old
one. Cleanup.
* app/core/gimpimage-undo-push.c (undo_pop_image_guide): undo
guide removal and moves manually instead of calling
gimp_image_[add|move]_guide() because the latter may run into
g_return_if_fail(position <= gimage->width/height) if the undo
step is part of a resize or crop undo group.
2003-03-30 Michael Natterer <mitch@gimp.org>
* app/core/gimpimage-guides.c
* tools/pdbgen/pdb/guides.pdb: fixed to accept guide->position ==
image->width/height. Guides live *between* pixels, so they must be
able to exist right of/below the image's rightmost/bottom pixel.
* app/core/gimpimage-crop.c (gimp_image_crop_adjust_guides):
fixed guide iteration to not crash when the current guide is
removed from the image (fixes bug #109533).
* app/pdb/guides_cmds.c: regenerated.
2003-03-28 Michael Natterer <mitch@gimp.org>
* app/core/gimpimage-guides.[ch]: added "position" and "push_undo"
parameters to gimp_image_add_[vh]guide(). Start with a refcount
of 1, not 0 (EEK). Added gimp_image_guide_[un]ref(). Added
"position" parameter to gimp_image_add_guide(). Added new
function gimp_image_move_guide(). All functions push guide
undos correctly and call gimp_image_update_guide() so this
doesn't need to be done by callers.
* app/core/gimpimage-crop.c
* app/core/gimpimage-duplicate.c
* app/core/gimpimage-resize.c
* app/core/gimpimage-undo-push.c
* app/core/gimpimage.c
* app/tools/gimpmeasuretool.c
* app/xcf/xcf-load.c
* tools/pdbgen/pdb/guides.pdb: greatly simplyfied all places which
modify guides: don't fiddle with undo and guide properties
manually but simply use the API provided.
* app/tools/gimpmovetool.[ch]: ditto. Changed everything to
create/move the guide on button_release, not button_press. Enable
canceling the operation by clicking button3 before releasing
button1. Keep the guide drawn at its old position until the move
is finished (fixes bug #75349 and bug #109267).
* app/pdb/guides_cmds.c: regenerated.
2003-03-28 Michael Natterer <mitch@gimp.org>
* app/core/gimpimagefile.c (gimp_imagefile_save_thumbnail):
call gimp_imagefile_update() on success. Ensures that the
previews are updated whenever we write the thumbnail.
2003-03-27 Sven Neumann <sven@gimp.org>
* app/core/gimplist.[ch]: added new function gimp_list_sort().
* app/text/gimpfontlist.c (gimp_font_list_restore): sort the list
after all fonts have been added instead of keeping the list in
order while inserting
2003-03-27 Sven Neumann <sven@gimp.org>
* app/core/gimpmarshal.list: added a new marshaller.
* app/widgets/gimpcontainergridview.[ch]: added a "move_cursor"
signal and added keybindings for PageUp/PageDown and Home/End.
2003-03-25 Michael Natterer <mitch@gimp.org>
* app/config/gimpcoreconfig.[ch]: added "gchar *default_font".
* app/config/gimprc-blurbs.h: and its blurb.
* app/core/gimp.[ch]: keep a GimpFontList around.
* app/core/gimpcontext.[ch]: added a GimpFont and all needed
fonctions to let it work like brush, pattern etc.
* app/core/gimpdatalist.c: cosmetic.
2003-03-25 Sven Neumann <sven@gimp.org>
* app/text/gimptext.c: include locale.h for setlocale().
* app/base/Makefile.am
* app/core/Makefile.am
* app/display/Makefile.am
* app/widgets/Makefile.am: changed rules that generate enums code
to include gimp-intl.h instead of libgimp-intl.h.
* tools/pdbgen/app.pl
* tools/pdbgen/pdb/*.pdb: include gimp-intl.h.
2003-03-25 Sven Neumann <sven@gimp.org>
* Makefile.am
* gimpintl.h: removed this header file.
* gimpmiscui.c: include libgimp-intl.h.
* gimp.c (gimp_main): call setlocale() and bind to the libgimp
textdomain so that plug-ins don't need to do that explicitely.
* libgimp/stdplugins-intl.h: added the functionality that used to
live in gimpintl.h and removed the libgimp related stuff. Got rid
of the INIT_I18N_UI() macro.
* plug-ins/*/*.c: removed all occurances of INIT_I18N_UI().
Plug-ins simply call INIT_I18N() once in their run() function.
* plug-ins/script-fu/script-fu-intl.h: added the functionality
that used to live in gimpintl.h and removed the libgimp related
stuff.
* app/Makefile.am
* app/gimp-intl.h: new file that defines the gettext macros for
the GIMP core.
* app/*/*.c: include gimp-intl.h instead of libgimp/gimpintl.h.
* plug-ins/script-fu/scripts/test-sphere.scm: fixed typos.
2003-03-25 Michael Natterer <mitch@gimp.org>
* app/core/gimpimage.[ch]: added new functions
gimp_image_active_[layer|channel|vectors]_changed() which emit the
resp. signals.
* app/core/gimpimage-undo-push.c (undo_pop_layer,channel,vectors):
fixed them to not leave the image's active layer, channel, vectors
pointers undefined (fixes bug #109110). Call gimp_item_removed()
from all of them.
* app/core/gimpimage-qmask.c: cleanup.
2003-03-24 Michael Natterer <mitch@gimp.org>
* app/core/gimpimage.c: use GIMP_STOCK_IMAGE as default_stock_id.
* app/widgets/gimppreviewrendererimage.[ch]: use GimpChannelType
to specify the channel to render and convert it to the pixel index
using gimp_image_get_component_index() when needed. Use the new
red, green, blue, gray and alpha icons when layer_previews is
FALSE.
* app/widgets/gimpcomponenteditor.c: changed accordingly.
2003-03-24 Michael Natterer <mitch@gimp.org>
* app/core/Makefile.am
* app/core/gimpimage-preview.[ch]: moved the image preview code
to separate files.
* app/core/gimpimage.c: removed the functions here. Removed the
new utility function gimp_image_previews_resize() because it
did exactly what gimp_image_size_changed() should do. Moved
the missing bits to gimp_image_size_changed().
* app/core/gimplayer.c (gimp_layer_apply_mask): call
gimp_viewable_invalidate_preview() only if we don't call
gimp_drawable_update(). Calling them both is redundant.
2003-03-23 Sven Neumann <sven@gimp.org>
* app/core/gimplayer.c
* app/gui/image-menu.c
* app/gui/layers-menu.c: there doesn't seem to be a good reason to
disallow the creation of layer masks on indexed images.
2003-03-23 Michael Natterer <mitch@gimp.org>
* app/core/gimpchannel.c (gimp_channel_new_from_component): use
gimp_image_get_component_index() instead of doing the switch()es
manually.
2003-03-22 Michael Natterer <mitch@gimp.org>
* app/core/gimpdrawable-preview.c
* app/core/gimpimage.c (get_preview_size): return square
dimensions in config->layer_previews is FALSE (except if the size
is requested for a popup).
(get_popup_size): don't crete popups if config->layer_previews
is FALSE.
* app/core/gimpimage.c: added utility function
gimp_image_previews_resize() and call it on "notify::layer-previews".
Calls gimp_viewable_size_changed() on all drawables of the image
and on the image itself. Ensures that drawable/image previews
toggle their size correctly when toggling layer_previews.
* app/widgets/gimpselectioneditor.c: create the selection preview
as a popup so it keeps the image's aspect ratio when
layer_previews is FALSE.
2003-03-22 Sven Neumann <sven@gimp.org>
* themes/Default/images/stock-channel-16.png
* themes/Default/images/stock-channel-24.png
* themes/Default/images/stock-layer-16.png
* themes/Default/images/stock-layer-24.png: new icons provided by
Jimmac.
* themes/Default/images/stock-eye-12.png
* themes/Default/images/stock-linked-12.png: tiny visibility and
linked icons that I created from Jimmac's small versions by
scaling them down. Should probably be redone.
* libgimpwidgets/gimpstock.[ch]: allow to register multiple sizes
for the same stock_id. Added new icons.
* app/core/gimpchannel.c
* app/core/gimplayer.c: set default stock_ids so the new icons are
used when layer previews are disabled.
2003-03-20 Sven Neumann <sven@gimp.org>
* app/core/gimpimage-new.c (gimp_image_new_values_new): default
the fill_type to GIMP_BACKGROUND_FILL (as in gimp_initialize()).
* app/gui/file-commands.c
* app/gui/file-new-dialog.c: made more dialogs transient for their
parent window.
* app/widgets/gimpcontainertreeview.c
* app/widgets/gimpimageeditor.c
* app/widgets/gimpundoeditor.c: simplified a little bit.
2003-03-20 Sven Neumann <sven@gimp.org>
* libgimpwidgets/gimpbutton.[ch]: pass the modifier mask as
GdkModifierType instead of guint.
* app/core/gimpmarshal.list
* app/widgets/gimpcellrenderertoggle.c
* app/widgets/gimpcellrendererviewable.c
* app/widgets/gimppreview.c: use proper marshallers for signals
that take flags as parameters.
* app/core/gimpcontext.c: added the G_SIGNAL_TYPE_STATIC_SCOPE flag
to the GimpRGB signal parameter.
2003-03-20 Sven Neumann <sven@gimp.org>
* libgimpwidgets/libgimpwidgets.types
* libgimpwidgets/tmpl/gimpbutton.sgml
* libgimpwidgets/tmpl/gimppickbutton.sgml: improved.
2003-03-20 Michael Natterer <mitch@gimp.org>
* app/display/gimpdisplay.[ch]: removed gdisp->draw_guides
and gdisp->snap_to_guides.
* app/display/gimpdisplayshell.[ch]: added shell->snap_to_guides.
Added the state of guide, selection and active_layer visibility to
the GimpDisplayShellVisibility struct so they can be configured
separately for fullscreen mode. Update the popup_factory in
gimp_display_shell_real_scaled() only if this is the active
display.
* app/display/gimpdisplayshell-appearance.[ch]: added accessors
for selection, active_layer and guide visibility.
* app/display/gimpdisplayshell-selection.[ch]: changed
accordingly. Changed the selection and active_layer toggle
functions to *_set_hidden().
* app/display/gimpdisplayshell-callbacks.c
* app/gui/image-menu.c
* app/gui/view-commands.c
* app/tools/gimpeditselectiontool.c
* app/tools/gimpmovetool.c: changed accordingly.
* app/gui/gui.c (gui_display_new): update the menubar_factory
*after* making the new display the active one.