2005-12-20 Michael Natterer <mitch@gimp.org>
* libgimp/*.c
* libgimpconfig/*.c
* libgimpmodule/*.c
* libgimpthumb/*.c
* libgimpwidgets/*.c: port to G_DEFINE_TYPE() and friends. Some
related cleanup.
2005-12-13 Sven Neumann <sven@gimp.org>
* libgimpbase/gimpwire.[ch]: let the private wire methods live in
the GIMP namespace. Declare internal functions as such and prefix
them with an underscore.
* libgimp/gimp.c
* libgimp/gimptile.c
* libgimpbase/gimpbase.def
* libgimpbase/gimpprotocol.c
* app/plug-in/plug-in-message.[ch]
* app/plug-in/plug-in-run.c
* app/plug-in/plug-in.c: changed accordingly.
2005-12-06 Sven Neumann <sven@gimp.org>
* libgimp/gimpdrawablepreview.c (gimp_drawable_preview_destroy):
initialize all fields of the struct passed to gimp_set_data().
2005-11-22 Sven Neumann <sven@gimp.org>
* libgimp/gimpzoompreview.c: zoom on Ctrl-Scroll events.
* libgimpwidgets/gimpscrolledpreview.c
(gimp_scrolled_preview_area_event): correctly clamp adjustment
value on scroll events. Ignore scroll events when Ctrl is pressed.
2005-11-06 Sven Neumann <sven@gimp.org>
Added support for binary relocation by means of binreloc, largely
based on a patch by Hongli Lai:
* m4macros/Makefile.am
* m4macros/binreloc.m4: new file providing a macro to check for
binreloc support.
* acinclude.m4
* configure.in: use the macro.
* libgimpbase/Makefile.am
* libgimpbase/gimpreloc.[ch]: new files providing binreloc support
on Linux.
* libgimpbase/gimpenv.[ch]: use binreloc, provide a function to
initialize the environment machinery.
* libgimpbase/gimpbase.def: updated.
* app/Makefile.am: fiddle with the LDFLAGS for binreloc.
* app/main.c (main): gimp_env_init(FALSE).
* libgimp/gimp.c (gimp_main): gimp_env_init(TRUE).
2005-11-02 Michael Natterer <mitch@gimp.org>
* libgimp/gimpprocbrowserdialog.c (browser_search): added comment
that _("%d procedures") should be translated with a plural form
for *lots* of procedures. Fixes bug #320460.
* libgimp/gimpzoompreview.c: Enable selection masking, even if it
looks buggy. It looks to me that the bug is in
gimp_drawable_get_sub_preview (), not handling the selection drawable
as a normal drawable.
2005-10-06 Sven Neumann <sven@gimp.org>
* libgimp/gimpprocbrowserdialog.c: capitalization and other string
changes.
* libgimpwidgets/gimpbrowser.c: string unification. Set the
message label italic.
* plug-ins/common/plugin-browser.c: use ngettext() for plural forms.
* libgimp/gimpzoompreview.[ch]: added a new function:
gimp_zoom_preview_get_factor(), which is a proxy to get the zoom
factor of the zoom model used by the zoom preview.
Also renamed the zoom field of the private data of gimpzoompreview to
model, since it is a gimpzoommodel.
* libgimp/gimpui.def: added gimp_zoom_preview_get_factor.
* plug-ins/common/nova.c: use gimp_zoom_preview_get_factor to
correctly handle the position of the nova at various zoom level.
There still are problems if there is a selection before when running
this plugin.
* libgimpwidgets/gimpwidgetsmarshal.list: added VOID__DOUBLE_DOUBLE
marshaller.
* libgimpwidgets/gimpzoommodel.[ch]: new signal: "zoomed", emitted
when the zoom factor changes. This signal have the old factor and the
new factor as argument.
* libgimp/gimpzoompreview.c: use the "zoomed" signal instead of the
"notify::value" one. This allow to use the old and new factors to keep
the preview centered on the same point.
2005-09-29 Michael Natterer <mitch@gimp.org>
* tools/pdbgen/pdb/progress.pdb: removed the "wrap" from
gimp_progress_set_text() so it shows up as libgimp function again.
* libgimp/gimpprogress_pdb.[ch]: regenerated.
* libgimp/gimpprogress.[ch]: changed the old
gimp_progress_set_text() to gimp_progress_set_text_printf() and
added gimp_progress_init_printf(). (did this because the method of
calling init(NULL) followed by set_text("foo") caused popup
progress windows to be resized after they were shown).
* libgimp/gimp.def: changed accordingly.
* plug-ins/*/*.c: use gimp_progress_init_printf() instead of
init(NULL) plus set_text(foo) and changed users of set_text() to
use set_text_printf().
2005-09-28 Sven Neumann <sven@gimp.org>
* libgimpwidgets/gimppreview.[ch]: renamed newly added function to
gimp_preview_get_controls(). Increased row padding for controls.
* libgimpwidgets/gimpwidgets.def
* libgimp/gimpzoompreview.c: changed accordingly.
* libgimpbase/gimputils.c (gimp_enum_get_value): ref the enum
class instead of only peeking at it.
* libgimpwidgets/gimpzoommodel.c (gimp_zoom_button_new): set a
tooltip on zoom buttons that only show an icon.
2005-09-28 Sven Neumann <sven@gimp.org>
* libgimpwidgets/gimppreview.[ch]: added a hbox to the table and
the "Update Preview" checkbutton there. Added a function to access
this control box. Increased default size to 200.
* libgimpwidgets/gimpscrolledpreview.[ch]: added function
gimp_scrolled_preview_set_policy() to control when the scrollbars
should be shown.
* libgimpwidgets/gimpwidgets.def: updated.
* libgimp/gimpzoompreview.c: pack the zoom buttons into the
preview's control box. Commented out the label, it shows a bogus
zoom factor. Set scrollbar policy to ALWAYS to avoid resizing.
2005-09-27 Sven Neumann <sven@gimp.org>
* libgimp/gimpprocbrowserdialog.[ch]: let
gimp_proc_browser_dialog_new() take standard dialog parameters,
similar to gimp_dialog_new().
* plug-ins/common/procedure-browser.c
* plug-ins/pygimp/procbrowser.c
* plug-ins/script-fu/script-fu-console.c: changed accordingly.
2005-09-25 Sven Neumann <sven@gimp.org>
* libgimpwidgets/gimpwidgetsenums.[ch]: removed GimpZoomWidgetType.
* libgimpwidgets/gimpzoommodel.[ch]: removed gimp_zoom_widget_new()
in favor of gimp_zoom_button_new().
* libgimp/gimpzoompreview.c: changed accordingly.
* libgimpwidgets/gimpwidgets.def: updated.
* plug-ins/MapObject/mapobject_main.[ch]
* plug-ins/MapObject/mapobject_preview.c
* plug-ins/MapObject/mapobject_ui.c: use a GimpZoomModel and let
it create the zoom buttons.
* plug-ins/MapObject/mapobject_apply.c
* plug-ins/MapObject/mapobject_image.c
* plug-ins/MapObject/mapobject_shade.c: include "gimp/gimpui.h".
2005-09-24 Hans Breuer <hans@breuer.org>
* **makefile.msc : updated
* app/dialogs/user-install-dialog.c : only add the migrate page if
there is something to migrate from. Avoids on version being NULL.
* app/dialogs/file-save-dialog.c : the g_print() output was crashing
on the assumption that ->menu_label != NULL. It is for colorhtml.py.
* app/widgets/gimpselectiondata.c : use HAVE_UNISTD_H and move
* process.h definition by G_OS_WIN32 below it being defined
* app/widgets/gimpwidgets-utils.c(gimp_window_get_native) : cast
return value to (GdkNativeWindow) it is not necessary an int.
* libgimpwidgets/gimpwidgets.def : added gimp_zoom_type_get_type
* plug-ins/help/gimp-help-lookup.c : dynamic lookup of help_root
instead of hard-coding DATADIR/GIMP_HELP_PREFIX
* plug-ins/xjt/xjt.c : there is no pid_t with msvc, typedef one.
* libgimpwidgets/gimpwidgetsenums.h: remove the GIMP_ZOOM_LABEL value
from GimpZoomWidgetType.
* libgimpwidgets/gimpwidgetsenums.c: regenerated.
* libgimp/gimpzoompreview.c: provides two read only properties,
"fraction" and "percentage" to be used with prop widgets.
* libgimpwidgets/gimpzoommodel.c: use a gimp_prop_label to show the
zoom fraction.
* app/widgets/widgets-enums.h: Moved the GimpZoomType enum from here...
* libgimpwidgets/gimpwidgetsenums.h: ...to here.
* app/widgets/widgets-enums.c
* libgimpwidgets/gimpwidgetsenums.c: regenerated.
* app/display/gimpdisplayshell-scale.[ch]: removed
gimp_display_shell_scale_zoom_step and
gimp_display_shell_scale_get_fraction from here...
* libgimpwidgets/gimpzoommodel.[ch]: ... to here so we can use these
utility functions in plug-ins and in the core.
Also removed the step-size property since the zoom-model now use
gimp_zoom_model_zoom_step.
* app/actions/view-commands.c
* app/display/gimpdisplayshell-title.c
* app/display/gimpdisplayshell.c
* app/tools/gimpmagnifytool.c: modified accordingly.
* libgimp/gimpzoompreview.c: don't pass any argument to the
gimp_zoom_model_new function.
* libgimpwidgets/gimpwidgets.def: added gimp_zoom_model_zoom_step
(gimp_zoom_model_get_fraction was already there)
* devel-docs/app/app-sections.txt: removed
gimp_display_shell_scale_zoom_step and
gimp_display_shell_scale_get_fraction.
* libgimp/gimpzoompreview.[ch]: make use of private data instead of struct
members. Added a gimp_zoom_preview_get_drawable so we can still get the
drawable from a preview in plug-ins.
Also changed gimp_zoom_preview_get_data to gimp_zoom_preview_get_source,
to make it more obvious what it returns.
* libgimp/gimpui.def
* plug-ins/common/AlienMap2.c
* plug-ins/common/apply_lens.c
* plug-ins/common/blinds.c
* plug-ins/common/channel_mixer.c
* plug-ins/common/colorify.c
* plug-ins/common/flarefx.c
* plug-ins/common/illusion.c
* plug-ins/common/jigsaw.c
* plug-ins/common/mapcolor.c
* plug-ins/common/max_rgb.c
* plug-ins/common/nova.c
* plug-ins/common/polar.c
* plug-ins/common/retinex.c
* plug-ins/common/waves.c
* plug-ins/common/whirlpinch.c: changed accordingly.
* libgimpwidgets/gimpzoommodel.[ch]: use private data instead of
struct members. Added min-factor and max-factor properties so we can
set the zoom range. These can be set by a new utility function:
gimp_zoom_model_set_range.
* libgimpwidgets/gimpwidgets.def: added gimp_zoom_model_set_range.
* libgimp/gimpzoompreview.c: use gimp_zoom_model_set_range so we can
only zoom in.
* libgimpwidgets/gimpzoommodel.[ch]: New object to handle zoom
factor, and create widgets to control or view this value.
* libgimpwidgets/Makefile.am
* libgimpwidgets/gimpwidgets.h: Added gimpzoommodel.[ch].
* libgimpwidgets/gimpwidgetsenums.h: new enum: GimpZoomWidgetType.
This enumerate which knid of widget you can created from the zoom
model.
* libgimpwidgets/gimpwidgetsenums.c
* libgimpwidgets/gimpwidgetstypes.h: regenerated.
* libgimpwidgets/gimppreview.c: move the update toggle to the bottom
of the vbox.
* libgimp/Makefile.am
* libgimp/gimpui.h
* libgimp/gimpuitypes.h
* libgimp/gimpzoompreview.[ch]: New widget, derivated from
GimpScrolledPreview, which offer the same functionnalities as the
GimpAspectPreview widget plus zoom facilities.
* plug-ins/common/AlienMap2.c
* plug-ins/common/apply_lens.c
* plug-ins/common/blinds.c
* plug-ins/common/channel_mixer.c
* plug-ins/common/colorify.c
* plug-ins/common/flarefx.c
* plug-ins/common/illusion.c
* plug-ins/common/jigsaw.c
* plug-ins/common/mapcolor.c
* plug-ins/common/max_rgb.c
* plug-ins/common/nova.c
* plug-ins/common/polar.c
* plug-ins/common/retinex.c
* plug-ins/common/waves.c
* plug-ins/common/whirlpinch.c: use a GimpZoomPreview instead of a
GimpAspectPreview.
2005-09-09 Michael Natterer <mitch@gimp.org>
Added parent window API to the GimpProgress interface and to
the libgimp progress stuff. Might look strange, but does
the right thing in almost all cases (image window, file dialog,
script-fu dialog etc). Fixes bug #62988.
* app/core/gimpprogress.[ch]: added GimpProgress::get_window()
which should return a toplevel window ID if the progress is in a
window that wants to be the transient parent of plug-in dialogs.
* app/widgets/gimpwidgets-utils.[ch] (gimp_window_get_native): new
function which returns the window handle of a GtkWindow's GdkWindow.
* app/widgets/gimpfiledialog.c: implement ::get_window().
* app/display/gimpdisplay.[ch]: ditto. Removed window handle API.
* app/gui/gui-vtable.c: changed accordingly.
* libgimpbase/gimpbaseenums.[ch] (enum GimpProgressCommand):
added GIMP_PROGRESS_COMMAND_GET_WINDOW.
* app/plug-in/plug-in-progress.[ch] (plug_in_progress_get_window):
new function. Also renamed some functions to match the
GimpProgress interface, and not the legacy PDB procedure names.
* tools/pdbgen/pdb/progress.pdb
* app/core/gimppdbprogress.c: implement get_window() on both
sides of the wire, keeping backward compatibility (hopefully).
* libgimp/gimpprogress.[ch]: deprecated gimp_progress_install()
and added gimp_progress_install_vtable() which takes a vtable with
padding to be extensible. Added get_window() vtable entry and
dispatch it accordingly. Also added pulse() which was implemented
in a hackish way before. Everything is of course backward
compatible.
* libgimp/gimpprogressbar.c: inmplement the get_window() stuff
so a plug-in dialog containing a progress can be the transient
parent of another dialog in another plug-in.
* libgimp/gimpui.[ch] (gimp_ui_get_progress_window): new function
which returns a foreign GdkWindow of this plug-ins progress
window.
Renamed gimp_window_set_transient_for_default_display() to
gimp_window_set_transient() and make it use the progress' window
handle instead of the display's (which is the right thing to do in
almost all cases).
* libgimp/gimp.def
* libgimp/gimpui.def: add the new functions.
* tools/pdbgen/enums.pl
* app/pdb/internal_procs.c
* app/pdb/progress_cmds.c
* libgimp/gimpprogress_pdb.[ch]: regenerated.
* libgimp/gimpexport.c
* plug-ins/*/*.c: follow API change.
2005-09-05 Sven Neumann <sven@gimp.org>
Address bug #307971:
* app/core/gimp-gui.[ch]
* app/display/gimpdisplay.[ch]
* app/gui/gui-vtable.c
* tools/pdbgen/pdb/display.pdb: added PDB function to obtain a
window handle on an image display.
* app/pdb/display_cmds.c
* app/pdb/internal_procs.c
* libgimp/gimpdisplay_pdb.[ch]: regenerated.
* libgimp/gimpui.[ch]: added functions to set a GtkWindow transient
to an image display.
* plug-ins/common/gauss.c: use the new function exemplarily.
* libgimp/gimp.def
* libgimp/gimpui.def: updated.
2005-09-03 Michael Natterer <mitch@gimp.org>
* app/base/pixel-region.[ch]: some general cleanup.
(pixel_region_init_temp_buf)
(pixel_region_init_data): new functions which initialize pixel
regions on TempBufs and on raw contiguous arrays of pixel data.
(pixel_region_configure): fixed a bug that has probably been there
forever: when processing contiguous (non-tiled) data, interpret
the original x and y coordinates of the region as offsets into
the data. Before this fix, the initial x and y were simply ignored
(by using them in a broken way), thus always forcing the upper
left corner of the region being the beginning of the passed data.
Lots of code was working around this problem by setting the
pixel_region's data pointer to the proper starting pixel of the
region in the middle the buffer.
* libgimp/gimppixelrgn.c: some general cleanup.
(gimp_pixel_rgn_configure): same fix as above. Fortunately, nobody
seems to know that libgimp pixel regions can be used on arrays of
data, just as core ones. Only two plug-ins were using this
feature, and they are antique and written by spencer and federico,
respectively. They both don't use offsets into the buffers and are
not affected by this change. It's highly unlikely that anybody out
there knows/uses this feature, so it can IMHO be safely changed.
* app/base/temp-buf.c
* app/core/gimpbuffer.c
* app/core/gimpdrawable-combine.c
* app/core/gimpdrawable-preview.c
* app/core/gimpimage-preview.c
* app/core/gimplayer.c
* app/paint/gimpbrushcore.c
* app/paint/gimpclone.c
* app/paint/gimpconvolve.c
* app/paint/gimpdodgeburn.c
* app/paint/gimppaintcore.c
* app/paint/gimpsmudge.c
* app/tools/gimpiscissorstool.c
* app/tools/gimppainttool.c: use the pixel_region_init_foo()
functions instead of initializing regions of TempBufs and raw data
manually. Removed lots of workarounds for the broken offset
handling. The changed places of code are much more readable now.
2005-09-03 Michael Natterer <mitch@gimp.org>
* app/core/gimp-edit.[ch] (gimp_edit_paste_as_new): don't create a
display here.
(gimp_edit_named_cut)
(gimp_edit_named_copy)
(gimp_edit_named_copy_visible): new functions containing named
buffer wrappers around the functions affecting the global buffer
only.
* app/actions/edit-commands.c: use the new functions instead of
implementing them here, create a display for the image returned
by paste as new.
* app/actions/buffers-commands.c
* app/widgets/gimptoolbox-dnd.c: create displays here too.
* tools/pdbgen/pdb/edit.pdb: added wrappers for paste as new and
wrappers for all the cut/copy/paste named stuff.
Fixes bug #315130. Cleaned up and de-obfuscated.
* libgimp/gimp.def: changed accordingly.
* app/pdb/edit_cmds.c
* app/pdb/internal_procs.c
* libgimp/gimpedit_pdb.[ch]: regenerated.
2005-08-18 Sven Neumann <sven@gimp.org>
* plug-ins/common/procedure-browser.c (run): reverted last change.
* libgimp/gimpprocbrowserdialog.[ch]: emit new signal "row-activated"
instead of emitting "response" with GTK_RESPONSE_APPLY.
* plug-ins/pygimp/procbrowser.c
* plug-ins/script-fu/script-fu-console.c: connect to "row-activated"
and call gtk_dialog_response() with GTK_RESPONSE_APPLY.