2004-08-26 Michael Natterer <mitch@gimp.org>
* app/core/gimpitem.c (gimp_item_stroke): implement the whole
paint_options fiddling here instead of in each subclass and pass
either GimpStrokeOptions or GimpPaintOptions (instead of
GimpStrokeOptions or GimpPaintInfo) to GimpItem::stroke().
Also copied code (that needs to be abstracted to a utility
function) from the tool_manager which makes sure we really use the
global brush, pattern etc. if these options are checked in prefs.
Fixes bug #150716.
* app/core/gimpchannel.c (gimp_channel_stroke)
* app/vectors/gimpvectors.c (gimp_vectors_stroke): removed the
duplicated code mentioned above and simply use the paint_options
passed.
2004-08-26 Sven Neumann <sven@gimp.org>
* app/sanity.c (sanity_check_filename_encoding): try to convert
the result of gimp_directory() to UTF-8 and bail out with a
moderately helpful error message if this conversion fails. Works
around bug #150917. Also marked these strings for translation.
2004-08-26 Sven Neumann <sven@gimp.org>
* app/tools/gimp-tools.c (gimp_tools_register): set the paintbrush
as the default tool as suggested in bug #151091.
2004-08-25 Sven Neumann <sven@gimp.org>
* app/widgets/gimperrordialog.[ch] (gimp_error_dialog_add): stop
adding message boxes and redirect messages to stderr if there are
too many messages.
2004-08-25 Sven Neumann <sven@gimp.org>
* app/widgets/gimpmessagebox.[ch]: added gimp_message_box_repeat().
* app/widgets/Makefile.am
* app/widgets/widgets-types.h
* app/widgets/gimperrordialog.[ch]: added new dialog that adds a new
GimpMessageBox for each message added. Fixes bug #92604.
* app/widgets/gimpwidgets-utils.[ch]: removed old gimp_message_box()
functionality.
* app/gui/gui.c (gui_abort): use a GimpMessageBox in a GimpDialog.
* app/gui/dialogs-constructors.[ch]
* app/gui/dialogs.c: manage GimpErrorDialog as singleton.
* app/gui/gui-vtable.c (gui_message): use the new error dialog.
* app/core/gimp-gui.c (gimp_message): substitue "GIMP" for a NULL
domain.
* app/widgets/gimperrorconsole.c (gimp_error_console_add): fail
when being called with a NULL domain.
* app/display/gimpnavigationview.c
* app/display/gimpnavigationview.h: renamed these files to...
* app/display/gimpnavigationeditor.c
* app/display/gimpnavigationeditor.h: ... these files, and of course
changed GimpNavigationView to GimpNavigationEditor since it is really
inherited from GimpEditor anyway.
This will leave the gimp_navigation_view namespace for the renaming
from gimp_navigation_preview.
* app/display/Makefile.am
* app/display/display-types.h
* app/display/gimpdisplayshell-callbacks.c
* app/gui/dialogs-constructors.c: Changed accordlingly.
2004-08-25 Michael Natterer <mitch@gimp.org>
* app/display/gimpdisplayshell-title.c
(gimp_display_shell_format_title): print bad '%' sequences
literally instead of warning (g_warning() is for programming
errors only and must never be triggered by bad or intermediate
user input). Fixes bug #150676
2004-08-24 Sven Neumann <sven@gimp.org>
* app/widgets/gimpmessagebox.c: put the icon to the right for RTL
layouts.
* app/display/gimpdisplayshell-close.c
* app/gui/quit-dialog.c: use a GimpMessageBox.
2004-08-24 Sven Neumann <sven@gimp.org>
* app/widgets/gimpmessagebox.[ch]: added API to change the labels.
Modeled after the proposed new API for GtkMessageDialog.
* app/widgets/gimpwidgets-utils.c: changed accordingly.
2004-08-24 Sven Neumann <sven@gimp.org>
* app/widgets/Makefile.am
* app/widgets/widgets-types.h
* app/widgets/gimpmessagebox.[ch]: added new widget GimpMessageBox.
* app/widgets/gimpwidgets-utils.c: use it for message dialogs.
2004-08-22 Simon Budig <simon@gimp.org>
* app/vectors/gimpbezierstroke.c: Implemented the ellipse basic
shape differently to avoid possible rounding issues with
the _arcto () command.
* app/vectors/gimpvectors-import.c: properly close the rounded
rectangles.
2004-08-21 Sven Neumann <sven@gimp.org>
* app/vectors/gimpvectors-import.c (parse_svg_transform): support
optional center coordinates for the "rotate" transformations.
(parse_svg_transform): apply transformations in reverse order. The
SVG spec is rather confusing here.
2004-08-21 Sven Neumann <sven@gimp.org>
* app/vectors/gimpbezierstroke.c (gimp_bezier_stroke_arcto): fixed
a bug I introduced with my last commit.
* app/vectors/gimpvectors-import.c: added support for the basic
SVG shape "rect". Fixed handling of SVG lengths in basic shapes.
2004-08-21 Sven Neumann <sven@gimp.org>
* app/vectors/gimpbezierstroke.[ch]: added new function
gimp_bezier_stroke_new_ellipse() that provides a simple API to
create a bezier stroke that represents an ellipse.
* app/vectors/gimpvectors-import.c: added support for the basic
SVG shapes "circle" and "ellipse".
2004-08-21 Sven Neumann <sven@gimp.org>
* app/vectors/gimpvectors-import.c: added support for importing
the basic SVG shape "line". Other shapes will follow...
2004-08-21 Sven Neumann <sven@gimp.org>
* app/actions/layers-actions.[ch]
* app/actions/layers-commands.[ch]
* app/widgets/gimplayertreeview.c: added actions to handle layer
masks as suggested in bug #150446.
* menus/layers-menu.xml: added menu entries for new actions,
commented out raise/lower menu entries.
2004-08-18 Sven Neumann <sven@gimp.org>
* app/gui/color-notebook.c: no need to set a size_request here.
* libgimpwidgets/gimpcolorselection.c: HIG-ified spacings.
* libgimpwidgets/gimpcolorscales.c
* modules/colorsel_cmyk.c: don't set a minimum width on the color
scales. Improves behaviour for narrow color dockables.
2004-08-18 Sven Neumann <sven@gimp.org>
* app/widgets/gimphelp-ids.h: define GIMP_HELP_DOCK_SEPARATOR.
* app/widgets/gimpdock.c
* app/widgets/gimpdockable.c: help-ids are never used directly,
use the defines from app/widgets/gimphelp-ids.h instead.
2004-08-17 Sven Neumann <sven@gimp.org>
* app/plug-in/plug-in-progress.c (plug_in_progress_start): reset
the "cancel" signal handler id when a new progress is set.
2004-08-17 Sven Neumann <sven@gimp.org>
* app/plug-in/plug-in-progress.c
* app/plug-in/plug-in-run.c
* app/plug-in/plug-in.c: don't keep a strong reference to the
GimpProgress object, instead use a weak reference and deal with
the progress being destroyed while the plug-in is running.
Fixes bug #150194.
2004-08-12 Michael Natterer <mitch@gimp.org>
* app/widgets/gimpmenufactory.c (gimp_menu_factory_manager_new):
make sure that all actions, even if they have no menu proxy, can
be invoked by their accelerators. Fixes bug #149938.
* app/widgets/gimpimagedock.c (gimp_image_dock_constructor):
removed the same code here.
* app/widgets/gimpactionview.[ch] (gimp_action_view_dispose): new
function which disconnects from "accel_changed" of the accel_group
before upchaining (== before emitting "destroy").
The above changes make this one redundant, but since the crash in
bug #149938 was triggered by "accel_changed" emitted in the middle
of g_object_unref(tree_model), it feels better to be paranoic here
(fiddling with objects in destruction is no fun).
(gimp_action_view_accel_edited): don't warn if assigning the same
accel to the same action again.
(gimp_action_view_new): don't leak all accel_closures.
2004-08-12 Sven Neumann <sven@gimp.org>
* app/actions/context-actions.c: changed the icons to indicate
what part of the context is affected by the action. Looks better
in the shortcut editor.
2004-08-11 Michael Natterer <mitch@gimp.org>
* app/widgets/gimpcontainercombobox.[ch]
* app/widgets/gimpcontainertreeview.c: when removing the last item
from the view, manually clear all GimpCellRendererViewables'
"renderer" properties; otherwise we have stale GimpPreviewRenderers
with still-refed viewables hanging around in the cells.
Works around GTK+ bug #149906.
2004-08-11 Michael Natterer <mitch@gimp.org>
Restored sane sorting order for menus which are created
entirely by plug-ins (like Xtns/Script-Fu/...).
* app/menus/plug-in-menus.c (plug_in_menus_build_path): made it
return the built path. For each sub-menu created, add a "Menus"
placeholder and a separator. Make sure all sub-menus end up in the
"Menus" placeholder. More readable because we can use the path
returned by the recursive invocation now.
(plug_in_menus_add_proc): simplified by using the path
plug_in_menus_build_path() returns.
2004-08-11 Michael Natterer <mitch@gimp.org>
* app/plug-in/plug-in-message.c
* app/plug-in/plug-in-run.c (plug_in_temp_run)
* libgimp/gimp.c (gimp_temp_proc_run): removed ENABLE_TEMP_RETURN
#define and all code which was in #ifndef ENABLE_TEMP_RETURN.
2004-08-11 Michael Natterer <mitch@gimp.org>
* app/core/gimp-gui.[ch]: added "display_ID" to gimp_new_progress().
* app/gui/gui-vtable.c: changed accordingly.
* app/plug-in/plug-in-progress.[ch]: reenabled showing the
progress in a particular display.
2004-08-11 Michael Natterer <mitch@gimp.org>
* app/core/gimpdrawable-blend.c
* app/core/gimpprogress.c: some progress cleanup.
* app/display/gimpstatusbar.c (gimp_statusbar_progress_start): no
need to warn if there is already a progress active, just silently
return NULL as all other GimpProgressInterface implementors.
* app/plug-in/plug-in-progress.c: several progress fixes.
It's still a mess.
* plug-ins/common/url.c: don't show progress depending on
run_mode. Run the actual file plug-in with the same run_mode we
were invoked with.
2004-08-11 Michael Natterer <mitch@gimp.org>
* app/widgets/gimpthumbbox.c (gimp_thumb_box_create_thumbnails):
fixed annoying resizing when thumbnailing exactly one image.
2004-08-11 Michael Natterer <mitch@gimp.org>
* app/widgets/Makefile.am
* app/widgets/widgets-types.h
* app/widgets/gimpprogressbox.[ch]: new GtkVBox subclass featuring
a label and a progressbar. Implements GimpProgressIterface.
* app/widgets/gimpprogressdialog.[ch]: replaced label and progress
by a GimpProgressBox. Delegate most progress functionality to it.
* app/widgets/gimpwidgets-utils.[ch]: factored out utility
function gimp_dialog_set_sensitive().
* app/widgets/gimpfiledialog.c (gimp_file_dialog_set_sensitive):
use it.
* app/gui/file-open-location-dialog.c (file_open_location_response):
embed the called file procedure's progress using a GimpProgressBox.
2004-08-10 Michael Natterer <mitch@gimp.org>
* app/widgets/gimpfiledialog.[ch]
(gimp_file_dialog_set_sensitive): new function which works on all
widgets in the dialog except the cancel button.
Remember if the active progress is cancelable and added two
booleans "busy" and "canceled". Added GtkDialog::response()
implementation which, if the dialog is busy, cancels the active
progress and sets the dialog's "canceled" state.
Moved the progress bar right above the action area so it is next
to the cancel button and in the same place for both open and save
dialogs.
* app/gui/file-open-dialog.c
* app/gui/file-save-dialog.c: use the new API to make image loading
and saving cancelable again.
* app/widgets/gimpthumbbox.c: use the same stuff to make
thumbnailing cancelable. Increased the minimum height a bit so it
doesn't resize when the progress bars are shown.
2004-08-10 Michael Natterer <mitch@gimp.org>
Redid the whole internal progress stuff: don't pass around
progress_callback and progress_data; instead, provide a
pointer to a GimpProgressInterface which can be implemented
by a variety of backends.
Addresses (but not yet fixes) bugs #6010, #97266 and #135185.
* app/display/Makefile.am
* app/display/gimpprogress.[ch]: removed the old progress hack.
* app/core/Makefile.am
* app/core/core-types.h
* app/core/gimpprogress.[ch]: implement GimpProgressInterface.
* app/widgets/Makefile.am
* app/widgets/widgets-types.h
* app/widgets/gimpprogressdialog.[ch]: the standalone progress
dialog as widget implementing GimpProgressInterface.
* app/display/gimpdisplay.c
* app/display/gimpstatusbar.[ch]
* app/widgets/gimpfiledialog.[ch]
* app/widgets/gimpthumbbox.[ch]: added GimpProgressInterface
implementation to these classes.
* app/core/gimp-gui.[ch]
* app/gui/gui-vtable.c: replaced the old progress vtable entries
by two new to create and destroy a GimpProgressDialog in case
no other progress is available.
* app/pdb/procedural_db.[ch]
* app/plug-in/plug-in-run.[ch]
* tools/pdbgen/app.pl: pass a GimpProgress to all PDB wrappers and
all plug-ins.
* app/plug-in/plug-in.[ch]
* app/plug-in/plug-ins.c
* app/plug-in/plug-in-message.c
* app/plug-in/plug-in-progress.c: handle the case there the
plug-in was crated with a progress as well as the case where it
wasn't.
* app/app_procs.c
* app/batch.c
* app/xcf/xcf.c
* app/file/file-open.[ch]
* app/file/file-save.[ch]
* app/widgets/gimphelp.c
* app/widgets/gimpbrushselect.c
* app/widgets/gimpfontselect.c
* app/widgets/gimpgradientselect.c
* app/widgets/gimppaletteselect.c
* app/widgets/gimppatternselect.c: changed accordingly.
* app/core/gimpimagefile.[ch]
* app/display/gimpdisplayshell-dnd.c
* app/gui/file-open-dialog.c
* app/gui/file-open-location-dialog.c
* app/gui/file-save-dialog.c
* app/widgets/gimplayertreeview.c
* app/widgets/gimptoolbox-dnd.c: pass a GimpProgress to all file
related functions. Embed the progress in the file dialog where
possible.
* app/core/gimpdrawable-blend.[ch]
* app/core/gimpdrawable-transform.[ch]
* app/core/gimpimage-convert.[ch]
* app/core/gimpimage-flip.[ch]
* app/core/gimpimage-resize.[ch]
* app/core/gimpimage-rotate.[ch]
* app/core/gimpimage-scale.[ch]
* app/core/gimpitem-linked.[ch]
* app/core/gimpitem.[ch]
* app/core/gimpchannel.c
* app/core/gimpdrawable.c
* app/core/gimplayer.c
* app/core/gimpselection.c
* app/vectors/gimpvectors.c: replaced callback/data by GimpProgress.
* app/tools/gimpblendtool.c
* app/tools/gimptransformtool.c
* app/gui/convert-dialog.c
* app/actions/documents-commands.c
* app/actions/file-commands.c
* app/actions/image-commands.c
* app/actions/layers-commands.c
* app/actions/plug-in-commands.c
* app/actions/vectors-commands.c
* tools/pdbgen/pdb/convert.pdb
* tools/pdbgen/pdb/edit.pdb
* tools/pdbgen/pdb/image.pdb
* tools/pdbgen/pdb/layer.pdb: changed callers accordingly.
* app/pdb/*_cmds.c: regenerated.