Instead of including dialogs/dialogs.h everywhere, introduce
gimp_dialog_factory_get_singleton(). The dialog factory singleton is
still initialized by dialogs.c though.
Right now the assumption is that we never will have another dialog
factory instance around. There were so many problems before when we
had four of them, so let's just keep one of them around.
Rename back global_dock_window_factory to
global_dock_factory. Renaming to global_dock_window_factory was done
under the assumption that there would be a separate factory that would
create non-toplevel dockables, but I don't expect this to happen in
the forseeable future.
* app/core/gimpimage.[ch]: make the parent parameter public in
add_layer(), add_layers(), add_channel() and add_vectors().
* app/vectors/gimpvectors-import.[ch]: add parent parameters to
the vectors import functions.
* app/core/gimpchannelundo.[ch]
* app/core/gimplayerundo.[ch]
* app/vectors/gimpvectorsundo.[ch]
* app/core/gimpimage-undo-push.[ch]: remember the parent item when
removing layers, channels and vectors.
* app/actions/channels-commands.c
* app/actions/debug-commands.c
* app/actions/edit-commands.c
* app/actions/layers-commands.c
* app/actions/vectors-commands.c
* app/core/gimp-edit.c
* app/core/gimpimage-duplicate.c
* app/core/gimpimage-merge.c
* app/core/gimpimage-quick-mask.c
* app/core/gimplayer-floating-sel.c
* app/core/gimpselection.c
* app/core/gimptemplate.c
* app/dialogs/file-open-dialog.c
* app/display/gimpdisplayshell-dnd.c
* app/text/gimptext-compat.c
* app/tools/gimptexttool.c
* app/tools/gimpvectortool.c
* app/widgets/gimptoolbox-dnd.c
* app/xcf/xcf-load.c
* tools/pdbgen/pdb/image.pdb
* tools/pdbgen/pdb/paths.pdb
* tools/pdbgen/pdb/vectors.pdb: pass NULL as parent item to above
functions and add FIXMEs all over the place because there is some
more hacking needed to make adding with index = -1 (on top of the
current item) work again.
* app/pdb/image-cmds.c
* app/pdb/paths-cmds.c
* app/pdb/vectors-cmds.c: regenerated.
* app/core/gimpimage-duplicate.c: duplicate the original image's
tree structure in the copy.
* app/widgets/gimpitemtreeview.[ch]: add parent to GimpAddItemFunc,
add utility function gimp_item_tree_view_get_drop_index() which
figures where to add something dropped to an item tree.
* app/widgets/gimpchanneltreeview.c
* app/widgets/gimplayertreeview.c
* app/widgets/gimpvectorstreeview.c: changed accordingly, using above
new GimpItemTreeView API.
* 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.
2009-01-17 Michael Natterer <mitch@gimp.org>
* all files with a GPL header and all COPYING files:
Change licence to GPLv3 (and to LGPLv3 for libgimp).
Cleaned up some copyright headers and regenerated the parsers in
the ImageMap plugin.
svn path=/trunk/; revision=27913
2008-10-09 Michael Natterer <mitch@gimp.org>
Add GEGL_CFLAGS and #includes as if gimpdrawable.h and gimpimage.h
had a GEGL dependency (they will have in the next commit, but I
wanted to keep the commit separate).
* app/dialogs/Makefile.am
* app/file/Makefile.am
* app/gui/Makefile.am
* app/menus/Makefile.am
* app/paint/Makefile.am
* app/plug-in/Makefile.am
* app/text/Makefile.am
* app/vectors/Makefile.am
* app/widgets/Makefile.am
* app/xcf/Makefile.am: add GEGL_CFLAGS.
* app/actions/*.c
* app/core/*.c
* app/dialogs/*.c
* app/display/*.c
* app/file/*.c
* app/gui/*.c
* app/menus/*.c
* app/paint/*.c
* app/pdb/gimppdb-utils.c
* app/pdb/gimpprocedure.c
* app/plug-in/*.c
* app/text/*.c
* app/tools/*.c
* app/vectors/*.c
* app/widgets/*.c
* app/xcf/*.c: add <gegl.h> or replace <glib-object.h> by <gegl.h>
to all files which include a drawable subclass or gimpimage.h
* tools/pdbgen/app.pl: include <gegl.h> instead of <glib-object.h>
in all generated files.
* app/pdb/*-cmds.c: regenerated.
* data/images/gimp-splash.png: the goat is still sleeping.
By Aurore Derriennic.
svn path=/trunk/; revision=27202
2008-10-09 Michael Natterer <mitch@gimp.org>
Remove the last code duplication from the undo system (or if not
the last then at least the most ugly):
* app/core/gimpimage.[ch] (gimp_image_add_layer,channel,vectors):
add "gboolean push_undo" parameter and add the item without
touching undo if it's TRUE. Changed assertions from
g_object_is_floating() to !gimp_item_is_attached() so they also
take items from the undo stack and not only newly created ones.
(gimp_image_remove_layer,channel,vectors): add "push_undo"
parameter here too. Also add a "new_active" parameter where an
optional new active item can be passed.
(gimp_image_remove_layer,channel): these functions must not be
called with push_undo=FALSE and a floating selection attached to
the layer/channel. This can't currently happen; added warnings in
case other code is changed and makes it happen anyway.
* app/core/gimpchannelundo.c
* app/core/gimplayerundo.c
* app/vectors/gimpvectorsundo.c: use above functions to add/remove
items instead of duplicating (parts of) their code. Pass
push_undo=FALSE and the previously active item to the remove()
functions.
* app/actions/channels-commands.c
* app/actions/edit-commands.c
* app/actions/layers-commands.c
* app/actions/vectors-commands.c
* app/core/gimp-edit.c
* app/core/gimpchannelundo.c
* app/core/gimpimage-crop.c
* app/core/gimpimage-duplicate.c
* app/core/gimpimage-merge.c
* app/core/gimpimage-quick-mask.c
* app/core/gimpimage-scale.c
* app/core/gimplayer-floating-sel.c
* app/core/gimplayerundo.c
* app/core/gimpselection.c
* app/core/gimptemplate.c
* app/display/gimpdisplayshell-dnd.c
* app/text/gimptext-compat.c
* app/tools/gimptexttool.c
* app/tools/gimpvectortool.c
* app/vectors/gimpvectors-import.c
* app/vectors/gimpvectorsundo.c
* app/widgets/gimpchanneltreeview.c
* app/widgets/gimpitemtreeview.[ch]
* app/widgets/gimplayertreeview.c
* app/widgets/gimptoolbox-dnd.c
* app/widgets/gimpvectorstreeview.c
* app/xcf/xcf-load.c
* tools/pdbgen/pdb/image.pdb
* tools/pdbgen/pdb/paths.pdb: changed accordingly (pass TRUE
unless it's a new image like when loading and XCF file).
* app/pdb/image-cmds.c
* app/pdb/paths-cmds.c: regenerated.
svn path=/trunk/; revision=27200
2008-03-18 Michael Natterer <mitch@gimp.org>
First draft of the "no image open" window, which is implemented as
a display without image (a view with NULL model). Didn't change
the display's appearance yet so I can first make sure the display
without image works properly in all details before hiding these
details.
* app/core/gimp-gui.[ch]: add "gimp" parameter to display_create()
and allow "image" to be NULL.
* app/core/gimpcontext.c (gimp_context_real_set_display): a
display's image can be NULL now.
* app/display/gimpdisplay.[ch]: add Gimp and GimpDisplayConfig
members. Add Gimp parameter to gimp_display_shell_new(). Changed
gimp_display_reconnect() to gimp_display_set_image() and allow to
set a NULL image.
* app/gui/gui-vtable.c (gui_display_create): if there is a single
display without an image, call gimp_display_set_image() on that
display instead of creating a new one.
* app/display/gimpdisplayshell-close.c: if the last display is
closed, don't close it but make it empty. Factored out that code
to gimp_display_shell_really_close().
* app/display/gimpdisplayshell-dnd.c: when dropping uris on an
empty display, open the first one into that display and the other
ones as layers of the newly opened image. This is consistent with
dropping on an existing image but maybe needs some discussion.
* app/display/gimpdisplayshell-callbacks.c: bail out early in the
tool event callback so tools never have to deal with empty
displays. In expose(), draw the drop zone on the empty display.
* app/display/gimpdisplayshell-title.c: set the empty display's
title to "Gimp - Drop Files".
* app/display/gimpdisplay-foreach.c
* app/display/gimpdisplay-handlers.c
* app/display/gimpdisplayshell-appearance.c
* app/display/gimpdisplayshell-autoscroll.c
* app/display/gimpdisplayshell-callbacks.c
* app/display/gimpdisplayshell-cursor.c
* app/display/gimpdisplayshell-dnd.c
* app/display/gimpdisplayshell-draw.c
* app/display/gimpdisplayshell-filter-dialog.c
* app/display/gimpdisplayshell-handlers.c
* app/display/gimpdisplayshell-layer-select.c
* app/display/gimpdisplayshell-preview.c
* app/display/gimpdisplayshell-render.c
* app/display/gimpdisplayshell-scale.c
* app/display/gimpdisplayshell-scroll.c
* app/display/gimpdisplayshell-selection.c
* app/display/gimpdisplayshell-title.c
* app/display/gimpdisplayshell.c
* app/display/gimpnavigationeditor.c
* app/display/gimpstatusbar.c: use display->gimp and
display->config instead of going via the image. Guard against
empty displays in some few places (most places can't be
called). Where needed, use the canvas' dimensions instead of the
image's dimensions so scroll offsets and scrollbars still have
sane values instead of the last image's ones.
* app/actions/actions.c (action_data_get_gimp)
(action_data_get_context): use display->gimp instead of
display->image->gimp.
* app/actions/edit-commands.c (edit_paste_cmd_callback): redirect
to "paste as new" if there is an empty display.
* app/actions/tools-commands.c (tools_select_cmd_callback): don't
initialize the new tool on an empty display.
* app/actions/view-actions.c (view_actions_update): changed lots
of sensitivity settings to be insensitive when there is no image
(instead of no display).
* app/actions/view-commands.c: use the display's config object
instead of gimp's.
svn path=/trunk/; revision=25113
2008-03-04 Sven Neumann <sven@gimp.org>
* app/actions/edit-commands.c (edit_copy_visible_cmd_callback)
(edit_cut_cmd_callback): added statusbar messages informing the
user that pixels have been transferred to the clipboard.
svn path=/trunk/; revision=25035
2007-12-14 Michael Natterer <mitch@gimp.org>
* app/core/gimp-edit.[ch]: added GErrors when functions can fail.
* app/actions/edit-commands.c: handle the returned errors.
* tools/pdbgen/pdb/edit.pdb: same here (*don't* pass the error as
usual since these functions never fail but have a boolean return
value indicating success instead; ugly, but better than having the
gimp_message() calls in the core). Also changed the named buffer
cut and copy functions to do the same (never fail but return a
NULL buffer name on failure), so they behave as documented.
* app/pdb/edit_cmds.c: regenerated.
svn path=/trunk/; revision=24362
2007-02-18 Sven Neumann <sven@gimp.org>
* app/actions/edit-commands.c (edit_copy_cmd_callback): show an
informational message in the statusbar. There is otherwise no
indication that something has happened.
svn path=/trunk/; revision=21940
2006-10-21 Michael Natterer <mitch@gimp.org>
Added "Edit -> Fade" which allows to modify the paint mode and
opacity of the last drawable operation (fill, plugins etc.).
Started from a patch by Bill Skaggs. Fixes bug #170707.
* app/base/base-enums.[ch] (enum GimpLayerModeEffects): register
the values REPLACE_MODE, ERASE_MODE and ANTI_ERASE_MODE with
the type system.
* app/widgets/gimppropwidgets.[ch]
* app/widgets/gimpwidgets-constructors.[ch]: added "gboolean
with_replace_modes" to the paint mode menu constructors.
* app/tools/gimppaintoptions-gui.c
* app/widgets/gimpbrushselect.c
* app/widgets/gimplayertreeview.c: pass with_replace_modes = FALSE.
* app/core/gimpdrawableundo.[ch]: added members which keep tiles,
paint mode and opacity of the pasted pixels.
* app/core/gimpimage-undo.[ch] (gimp_image_undo_get_fadeable):
returns a GimpUndo suitable for a fade operation, or NULL.
* app/core/gimp-edit.[ch] (gimp_edit_fade): implements the actual
fade by undoing the last operation and then re-applying the pixels
with different paint mode and opacity.
* app/core/gimpdrawable-combine.c: store the pasted pixels in
the GimpDrawableUndo.
* app/actions/edit-actions.c
* app/actions/edit-commands.[ch]: action and callback for fade.
* app/dialogs/Makefile.am
* app/dialogs/fade-dialog.[ch]: the fade dialog.
* app/widgets/gimphelp-ids.h: the fade help ID.
* menus/image-menu.xml.in: added a menu entry in "Edit".
2006-10-09 Michael Natterer <mitch@gimp.org>
Added message severities and make sure all messages are routed
through a central function, so redirecting to the error console or
stderr work again:
* app/core/core-enums.[ch]: added enum GimpMessageSeverity { INFO,
WARNING, ERROR }.
* app/core/gimp.[ch] (gimp_message)
(gimp_message_valist): added severity parameter. Changed
"GimpProgress *progress" parameter to "GObject *handler", where
"handler" can be either a GimpProgress, a GtkWidget or NULL.
* app/core/gimp-gui.[ch] (gimp_show_message): ditto. Honor
--console-messages again. Always dispatch to the GUI message
handler first if it exists.
* app/gui/gui-message.[ch]: pass severity parameters around.
(gui_message_error_dialog): if "handler" is a progress, dispatch
the message to it first. If it is a widget (and *not* a progress),
use a GtkMessageDialog on top of that widget's toplevel. Fall
back to the usual GimpErrorDialog otherwise.
* app/core/gimpprogress.[ch] (gimp_progress_message): added
severity parameter. Also added boolean return value to the virtual
function so it can decide to fail if it can't handle the message.
* app/display/gimpdisplay.c: implement GimpProgress::message() and
redirect the message to GimpDisplayShell.
* app/display/gimpdisplayshell-progress.c: implement
GimpProgress::message() and redirect the message to GimpStatusbar
if it is not an error and if the status bar is visible.
* app/display/gimpstatusbar.[ch]: implement GimpProgress::message(),
but fail on messages that contain a newline. Show the right icons
for the message severities (work in progress).
* app/display/gimpdisplayshell.[ch]: removed
gimp_display_shell_message() and its _valist() variant.
* app/widgets/gimperrorconsole.[ch]: show the right icons for the
message severities.
* app/widgets/gimpthumbbox.c (gimp_thumb_box_progress_message):
return TRUE to swallow all messages.
* app/widgets/gimpwidgets-utils.[ch]: removed
gimp_show_message_dialog(). Added gimp_get_message_stock_id().
* app/errors.c
* app/actions/edit-commands.c
* app/actions/error-console-commands.c
* app/actions/file-commands.c
* app/actions/select-commands.c
* app/actions/text-editor-commands.c
* app/actions/vectors-commands.c
* app/core/gimpimage-convert.c
* app/core/gimpimagefile.c
* app/dialogs/convert-dialog.c
* app/dialogs/file-open-dialog.c
* app/dialogs/file-open-location-dialog.c
* app/dialogs/file-save-dialog.c
* app/dialogs/palette-import-dialog.c
* app/dialogs/stroke-dialog.c
* app/display/gimpdisplayshell-dnd.c
* app/pdb/gimppdb.c
* app/plug-in/gimpplugin.c
* app/tools/gimpimagemaptool.c
* app/tools/gimptool.c
* app/tools/gimpvectortool.c
* app/widgets/gimpactionview.c
* app/widgets/gimpcontrollerlist.c
* app/widgets/gimppdbdialog.c
* app/widgets/gimpvectorstreeview.c
* app/xcf/xcf-load.c
* app/xcf/xcf-save.c
* app/xcf/xcf.c
* tools/pdbgen/pdb/brush.pdb
* tools/pdbgen/pdb/gradient.pdb
* tools/pdbgen/pdb/image.pdb
* tools/pdbgen/pdb/message.pdb
* tools/pdbgen/pdb/palette.pdb: added severity parameter to
gimp_message() calls. Convert all calls to
gimp_show_message_dialog() and gimp_display_shell_message() to
gimp_message(). Also converted some more g_message() calls.
* app/pdb/brush_cmds.c
* app/pdb/gradient_cmds.c
* app/pdb/image_cmds.c
* app/pdb/message_cmds.c
* app/pdb/palette_cmds.c: regenerated.
2006-09-28 Sven Neumann <sven@gimp.org>
* app/display/gimpdisplayshell.[ch]: added
gimp_display_shell_message() and a valist variant and decide here
where the message is shown.
* app/actions/edit-commands.c (edit_paste)
* app/tools/gimptool.c (gimp_tool_message): use the new message API.
2006-09-22 Michael Natterer <mitch@gimp.org>
* app/display/gimpstatusbar.[ch]: changed all message setting
functions to use printf-style argument lists. Added new API to
show a temporary message that stays on top regardless of any other
message activity and disappears after 3 seconds.
* app/actions/edit-commands.c: show a statusbar message when
pasting fails because the clipboard contains no image data. Pop a
dialog when "Paste as New" fails. Addresses bug #357059 for
internal functions.
* app/display/gimpdisplayshell-title.c
* app/gui/gui.c
* app/tools/gimptool.c: changed accordingly.
Finally implemented the suggestion in bug #144854, of
"strong" undo/redo commands that continue undoing so long
as they only encounter visibility changes.
* app/actions/edit-actions.c
* app/actions/edit-commands.c
* app/actions/edit-commands.h: added "strong undo"
and "strong redo" commands/actions.
* app/core/gimpimage-undo.[ch]: added functions
gimp_image_strong_undo() and gimp_image_strong_redo().
* app/core/gimpundo.[ch]: added utility function
gimp_undo_is_weak().
* app/widgets/gimphelp-ids.h:added id's.
* menus/image-menu.xml.in: added to edit menu,
bound to C-S-z and C-S-y.
This will no doubt need tweaking, but I will consider it
to fix bug #144854.
2005-09-05 Michael Natterer <mitch@gimp.org>
* app/actions/edit-actions.c
* app/actions/edit-commands.[ch]
* menus/image-menu.xml.in: applied modified patch from David
Gowers which adds an "edit-named-copy-visible" actions and its
menu item. Addresses bug #315130.
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-07-08 Michael Natterer <mitch@gimp.org>
* app/actions/edit-commands.c
* app/actions/tool-options-commands.c: made the "Reset all tool
options" and "Clear undo history" dialogs modal and simplified the
code to use gimp_dialog_run() instead of a separate callback
function.
2005-05-21 Sven Neumann <sven@gimp.org>
Allow to paste a new image using Ctrl-V (bug 169477):
* menus/toolbox-menu.xml.in: added an accelerator for "edit-paste".
* app/actions/edit-actions.c: keep "edit-paste" always enabled,
even if no image is present.
* app/actions/edit-commands.c (edit_paste_cmd_callback): forward
to "edit-paste-as-new" if we are being called from the toolbox.
2005-05-16 Michael Natterer <mitch@gimp.org>
* app/widgets/gimpclipboard.[ch]: added gimp_clipboard_has_svg()
and gimp_clipboard_get_svg().
* app/actions/edit-commands.c (edit_paste_cmd_callback): enabled
pasting of SVG data using gimp_vectors_import_buffer().
2005-05-07 Sven Neumann <sven@gimp.org>
* app/actions/edit-commands.c (edit_undo_clear_cmd_callback): tell
the user how much memory will be freed by clearing the undo history.
2004-12-12 Michael Natterer <mitch@gimp.org>
* app/paint-funcs/paint-funcs.[ch]: added new function
copy_region_nocow() as a workaround for the fact that sharing
tiles with the projection is heavily broken.
* app/base/tile-manager.c (tile_invalidate): added a warning when
entering the code path that breaks badly.
* app/core/gimp-edit.[ch]: added gimp_edit_copy_visible(), using
the non-COW copying function above.
* app/widgets/gimphelp-ids.h: added GIMP_HELP_COPY_VISIBLE.
* app/actions/edit-actions.c
* app/actions/edit-commands.[ch]: added action & callback for
"edit-copy-visible".
* menus/image-menu.xml.in: added "edit-copy-visible" to the image
menu.
* tools/pdbgen/pdb/edit.pdb: added gimp_edit_copy_visible()
PDB wrapper.
* app/pdb/edit_cmds.c
* app/pdb/internal_procs.c
* libgimp/gimpedit_pdb.[ch]: regenerated.
* plug-ins/script-fu/scripts/copy-visible.scm: removed all code
and made it a backward compat wrapper around gimp-edit-copy-visible.
Fixes bug #138662.