2003-12-09 Michael Natterer <mitch@gimp.org>
* app/core/core-enums.h: changed GimpImageScaleCheckType enum
values to GIMP_IMAGE_SCALE_*.
* app/core/gimpimage-scale.c (gimp_image_scale_check): return
GIMP_IMAGE_SCALE_TOO_BIG only if we are scaling up.
* app/gui/image-commands.c: changed accordingly. Whitespace and
indentation cleanup.
2003-12-08 Dave Neary <bolsh@gimp.org>
* app/core/core-enums.h:
* app/core/gimpimage-scale.[ch]: Added the GimpImageScaleCheckType
enum and used it in gimp_image_scale_check() which used to be
gimp_image_check_scaling().
* app/gui/image_commands.c: Used the above when checking
scaling parameters to display a message if the image is too big
or too small after scaling. Closes bug #21028.
2003-11-26 Michael Natterer <mitch@gimp.org>
* app/core/core-enums.[ch]: added enum values
GIMP_ADD_ALPHA_MASK_TRANSFER and GIMP_UNDO_GROUP_LAYER_ADD_MASK.
* app/core/gimplayer.c (gimp_layer_create_mask): applied patch
from Pedro Gimeno which implements the new ADD_MASK type and
added undo. Fixes bug #127930.
* app/gui/layers-commands.c: push an undo group around layer mask
creation & adding since the creation may change the layer now.
* app/pdb/layer_cmds.c
* libgimp/gimpenums.h
* plug-ins/pygimp/gimpenums.py
* plug-ins/script-fu/script-fu-constants.c
* tools/pdbgen/enums.pl: regenerated.
2003-11-22 Sven Neumann <sven@gimp.org>
Fixed some selection editor problems (bug #127644):
* plug-ins/sel2path/sel2path.c: use the given image_ID, ignore the
drawable_ID. This plug-in doesn't operate on a drawable at all.
* plug-ins/imagemap/imap_main.c: pass a valid image_ID to sel2path.
* app/gui/vectors-commands.c: don't attempt to create a valid
drawable_ID for the call to sel2path since it isn't used anyway.
* app/core/gimpdrawable-stroke.c (gimp_drawable_stroke_boundary):
just return when being called with an empty boundary.
2003-11-21 Michael Natterer <mitch@gimp.org>
* libgimpwidgets/gimpcolordisplaystack.h: forgot to declare
gimp_color_display_stack_clone().
* app/display/gimpdisplayshell.[ch]: replaced the GList of
GimpColorDisplays by a single GimpColorDisplayStack.
* app/display/gimpdisplayshell-render.c
(gimp_display_shell_render): changed accordingly.
* app/display/gimpdisplayshell-filter.[ch]: reduced API to a
single function, gimp_display_shell_filter_set(), which exchanges
the whole filter stack. Idle update the display on
GimpColorDisplayStack::update().
* app/display/gimpdisplayshell-filter-dialog.[ch]: changed
accordingly. Return the created dialog instead of assigning
shell->filters_dialog.
* app/gui/view-commands.c (view_display_filters_cmd_callback): set
shell->filters_dialog here and raise it it if already
exists. Don't use the dialog factory to create it because it's a
transient dialog for the display which does not need to be session
managed.
* app/gui/dialogs-constructors.[ch]
* app/gui/dialogs.c: removed display filter dialog stuff.
2003-11-18 Michael Natterer <mitch@gimp.org>
* app/widgets/gimpdialogfactory.[ch]
(gimp_dialog_factory_dialog_raise): support '|'-separated lists of
dialog identifiers and raise any of them if it is already open, or
the first dialog in the list otherwise.
* app/gui/dialogs-commands.c (dialogs_create_dockable_cmd_callback):
removed the same functionality here.
* app/gui/edit-commands.c
* app/tools/gimppaintoptions-gui.c
* app/tools/gimptextoptions.c
* app/widgets/gimpdevicestatus.c
* app/widgets/gimptoolbox-indicator-area.c: pass lists of dialog
identifiers to gimp_dialog_factory_dialog_raise().
2003-11-17 Michael Natterer <mitch@gimp.org>
* app/gui/file-dialog-utils.[ch]
* app/gui/file-open-dialog.c
* app/gui/file-save-dialog.c
* app/gui/gradients-commands.c
* app/gui/vectors-commands.c
* app/tools/gimpcurvestool.c
* app/tools/gimplevelstool.c
* app/widgets/gimperrorconsole.c
* app/widgets/gimptexteditor.c
* libgimpwidgets/gimpfileselection.c: don't access the "ok_button"
and "cancel_button" members of GtkFileSelection. Instead, connect
to GtkDialog::response(). Feels better and reduces code which
depends on the to-be-deprecated GtkFileSelection. Changed border
widths to match the 6px border width of other GIMP dialogs.
File selections in plug-ins will follow...
2003-11-14 Manish Singh <yosh@gimp.org>
* libgimpwidgets/gimpwidgets.[ch]: implementedgimp_int_option_menu_new
and gimp_int_radio_group_new, which are the same as
gimp_option_menu_new2 and gimp_radio_group_new2, but they take
integers as values to map instead of gpointers, which avoids casts
in pretty much all uses of it in the tree.
* app/gui/image-commands.c
* app/gui/offset-dialog.c
* app/widgets/gimppropwidgets.c
* app/widgets/gimpwidgets-constructors.c
* libgimpwidgets/gimpmemsizeentry.c
* modules/cdisplay_colorblind.c
* plug-ins/FractalExplorer/Dialogs.c
* plug-ins/Lighting/lighting_ui.c
* plug-ins/MapObject/mapobject_ui.c
* plug-ins/common/AlienMap.c
* plug-ins/common/AlienMap2.c
* plug-ins/common/CML_explorer.c
* plug-ins/common/align_layers.c
* plug-ins/common/blinds.c
* plug-ins/common/borderaverage.c
* plug-ins/common/bumpmap.c
* plug-ins/common/curve_bend.c
* plug-ins/common/deinterlace.c
* plug-ins/common/edge.c
* plug-ins/common/emboss.c
* plug-ins/common/fractaltrace.c
* plug-ins/common/gif.c
* plug-ins/common/hot.c
* plug-ins/common/iwarp.c
* plug-ins/common/jigsaw.c
* plug-ins/common/jpeg.c
* plug-ins/common/lic.c
* plug-ins/common/mail.c
* plug-ins/common/max_rgb.c
* plug-ins/common/mblur.c
* plug-ins/common/mng.c
* plug-ins/common/mosaic.c
* plug-ins/common/nlfilt.c
* plug-ins/common/papertile.c
* plug-ins/common/pnm.c
* plug-ins/common/ps.c
* plug-ins/common/psp.c
* plug-ins/common/ripple.c
* plug-ins/common/shift.c
* plug-ins/common/sinus.c
* plug-ins/common/sparkle.c
* plug-ins/common/struc.c
* plug-ins/common/sunras.c
* plug-ins/common/tiff.c
* plug-ins/common/waves.c
* plug-ins/common/wind.c
* plug-ins/fits/fits.c
* plug-ins/flame/flame.c
* plug-ins/gfig/gfig.c
* plug-ins/gimpressionist/color.c
* plug-ins/gimpressionist/orientmap.c
* plug-ins/gimpressionist/placement.c
* plug-ins/maze/maze_face.c
* plug-ins/sgi/sgi.c: Use gimp_int_option_menu_new and
gimp_int_radio_group_new.
* plug-ins/common/CML_explorer.c: make function_graph_new take a
gpointer *data instead of a gpointer data, and properly pass an
int through it.
* plug-ins/common/mng.c: mark menu strings for translation.
* plug-ins/rcm/rcm.c: remove initialization for Success member
in RcmParams, since it's gone now.
2003-11-11 Michael Natterer <mitch@gimp.org>
* app/display/gimpdisplayshell-appearance.c: update
shell->popup_factory only if this is the active display or we will
change another display's options when creating a new display.
Fixes bug #126668.
* app/display/gimpdisplayshell-callbacks.c
* app/gui/view-commands.c
* app/tools/gimpimagemaptool.c: do the same here. Can't really
happen in these places but it's more correct to have the check
for the active display.
* app/display/gimpdisplay.c (gimp_display_flush_whenever): get the
active display from the user_context, not the current_context.
* app/gui/image-menu.c (image_menu_update): removed unused code.
2003-11-10 Michael Natterer <mitch@gimp.org>
* app/display/gimpdisplayshell-callbacks.c: removed the
"Move to Screen" hack.
* app/gui/dialogs-commands.[ch]
* app/gui/view-commands.[ch]
* app/gui/dialogs-menu.c
* app/gui/image-menu.c: added proper menu items to the
<Image>/View and the <Dialogs> menus so all image windows and
docks can be sent to other screens. Hide the menu items when
there is just one screen.
* app/widgets/gimphelp-ids.h: new help IDd for the new menu items.
2003-11-08 Michael Natterer <mitch@gimp.org>
To be multihead safe, each new window or menu needs to be
associated with a GdkScreen or it will pop up on the default
screen.
* libgimpwidgets/gimpquerybox.[ch]
* app/display/gimpdisplayshell-layer-select.[ch]
* app/widgets/widgets-types.h
* app/widgets/gimpitemfactory.[ch]
* app/widgets/gimpitemtreeview.[ch]
* app/widgets/gimptemplateview.[ch]
* app/widgets/gimptooldialog.[ch]
* app/widgets/gimpviewabledialog.[ch]
* app/gui/channels-commands.[ch]
* app/gui/color-notebook.[ch]
* app/gui/convert-dialog.[ch]
* app/gui/edit-commands.[ch]
* app/gui/grid-dialog.[ch]
* app/gui/image-commands.[ch]
* app/gui/info-dialog.[ch]
* app/gui/layers-commands.[ch]
* app/gui/offset-dialog.[ch]
* app/gui/resize-dialog.[ch]
* app/gui/stroke-dialog.[ch]
* app/gui/templates-commands.[ch]
* app/gui/vectors-commands.[ch]: added "GtkWidget *parent"
paramaters to all functions which create menus, popups or windows
and pass "parent" to gimp_dialog_new() or one of the various
wrappers around it. As a side effect, this fixes bug #61092.
* app/widgets/gimpdialogfactory.[ch]: added "GdkScreen *screen"
instead of "parent" here since there are no possible parent
windows on startup.
* app/display/gimpdisplayshell-callbacks.c
(gimp_display_shell_origin_button_press): added a quick hack to
send a display to another screen: click the origin button with the
middle mouse button.
* app/display/gimpdisplayshell.c
(gimp_display_shell_screen_changed): don't chain up
undonditionally (don't crash).
* libgimpwidgets/gimpdialog.c (gimp_dialog_new_valist): set the
dialog's screen from a non-GtkWidget parent widget. The rest of
non-window parent widget handling is still unimplemented.
* libgimpwidgets/gimpcolorbutton.c
* app/widgets/gimpcolormapeditor.c
* app/widgets/gimpcolorpanel.c
* app/widgets/gimpcomponenteditor.c
* app/widgets/gimpcontainereditor.c
* app/widgets/gimpcontainergridview.c
* app/widgets/gimpcontainerpopup.c
* app/widgets/gimpcontainertreeview.c
* app/widgets/gimpdatafactoryview.c
* app/widgets/gimpdevicestatus.c
* app/widgets/gimpdockable.c
* app/widgets/gimpdrawabletreeview.c
* app/widgets/gimperrorconsole.c
* app/widgets/gimpgradienteditor.c
* app/widgets/gimphelp.c
* app/widgets/gimppaletteeditor.c
* app/widgets/gimppreview-popup.c
* app/widgets/gimpselectioneditor.c
* app/widgets/gimpsessioninfo.c
* app/widgets/gimptoolbox-color-area.c
* app/widgets/gimptoolbox-indicator-area.c
* app/widgets/gimptoolbox.c
* app/widgets/gimptooloptionseditor.c
* app/widgets/gimpvectorstreeview.c
* app/widgets/gimpwidgets-utils.c
* app/display/gimpdisplayshell-scale.c
* app/display/gimpnavigationview.c
* app/gui/module-browser.c
* app/gui/dialogs-commands.c
* app/gui/dialogs-constructors.c
* app/gui/drawable-commands.c
* app/gui/file-commands.c
* app/gui/file-new-dialog.c
* app/gui/file-save-dialog.c
* app/gui/gradient-editor-commands.c
* app/gui/gui-vtable.c
* app/gui/gui.c
* app/gui/info-window.c
* app/gui/palette-import-dialog.c
* app/gui/palettes-commands.c
* app/gui/qmask-commands.c
* app/gui/select-commands.c
* app/gui/tool-options-commands.c
* app/gui/view-commands.c
* app/tools/gimpcolorpickertool.c
* app/tools/gimpcroptool.c
* app/tools/gimpimagemaptool.c
* app/tools/gimpmeasuretool.c
* app/tools/gimptransformtool.c
* plug-ins/FractalExplorer/FractalExplorer.c
* plug-ins/gfig/gfig.c
* plug-ins/gflare/gflare.c: changed addordingly. Changed all
menu_position funcs to place the menu on the right screen.
2003-11-07 Michael Natterer <mitch@gimp.org>
* libgimpbase/gimpprotocol.[ch]: added "wm_name", "wm_class",
"display_name" and "monitor_number" to the GPConfig message.
Increased protocol version number.
* libgimp/gimp.[ch] (gimp_config): read them from the GPConfig
message and remember them.
Added public accessors for the new config values.
* libgimp/gimpui.c (gimp_ui_init): pass wm_name and wm_class to
gtk_init() and export the display/screen to use to the
environment.
* app/core/gimp.[ch]: added vtable entries to get the values
from the GUI.
* app/gui/gui-vtable.c: implement the vtable entries.
* app/plug-in/plug-in-run.c: fill in the GPConfig values using
the new Gimp vtable functions.
* app/display/gimpdisplayshell-layer-select.c
* app/display/gimpdisplayshell.c
* app/gui/about-dialog.c
* app/gui/channels-commands.c
* app/gui/color-notebook.c
* app/gui/convert-dialog.c
* app/gui/file-dialog-utils.[ch]
* app/gui/file-new-dialog.c
* app/gui/file-open-dialog.c
* app/gui/file-save-dialog.c
* app/gui/gradient-editor-commands.c
* app/gui/gradients-commands.c
* app/gui/grid-dialog.c
* app/gui/image-commands.c
* app/gui/info-dialog.[ch]
* app/gui/info-window.c
* app/gui/layers-commands.c
* app/gui/module-browser.c
* app/gui/offset-dialog.c
* app/gui/palette-import-dialog.c
* app/gui/qmask-commands.c
* app/gui/resize-dialog.c
* app/gui/splash.c
* app/gui/stroke-dialog.c
* app/gui/templates-commands.c
* app/gui/tips-dialog.c
* app/gui/vectors-commands.c
* app/tools/gimpcurvestool.c
* app/tools/gimplevelstool.c
* app/widgets/gimpdock.c
* app/widgets/gimperrorconsole.c
* app/widgets/gimptexteditor.c
* app/widgets/gimptoolbox.c
* app/widgets/gimpviewabledialog.[ch]
* libgimpwidgets/gimpfileselection.c
* libgimpwidgets/gimpquerybox.c
* libgimpwidgets/gimpunitmenu.c
* plug-ins/helpbrowser/dialog.c
* plug-ins/ifscompose/ifscompose.c: replaced all calls to
gtk_window_set_wmclass() by gtk_window_set_role() and all
"const gchar *wmclass_name" parameters by "const gchar *role".
Cleaned up the window role strings.
2003-11-07 Simon Budig <simon@gimp.org>
* app/vectors/gimpvectors.[ch]: New function that appends a
duplicate of the source vectors strokes to the list of strokes
of a target vectors object.
* app/core/gimpimage-merge.[ch]
* app/core/core-enums.h: Use this new function to merge
the visible vectors in an Image. New Undo type for vectors merging.
* app/core/core-enums.c: regenerated.
* app/gui/vectors-menu.c
* app/gui/vectors-commands.[ch]
* app/widgets/gimphelp-ids.h: New Menu entry + callback to invoke
the merge functionality. New Help ID for the menu entry.
2003-10-27 Michael Natterer <mitch@gimp.org>
* libgimpwidgets/gimphelpui.c: stop using the deprecated
GtkTipsQuery widget for context help and implement the needed part
of its functionality using a grab on a GtkInvisible. Should stop
GIMP crashing with Gtk+ HEAD.
* libgimpwidgets/gimphelpui.[ch] (gimp_context_help): requires
a GtkWidget parameter now (finding the correct GdkScreen).
* app/gui/help-commands.c (help_context_help_cmd_callback):
changed accordingly.
2003-10-18 Sven Neumann <sven@gimp.org>
* app/gui/templates-commands.[ch] (templates_new_template_dialog):
added an (unused) GimpTemplate parameter to make this function
match the GimpTemplateActionFunc signature.
2003-10-18 Michael Natterer <mitch@gimp.org>
* app/text/gimp-fonts.c (gimp_fonts_load): added
gimp_container_freeze() / _thaw() around font list reloading.
* app/tools/gimp-tools.c (gimp_tools_init): added missing
gimp_container_freeze().
* app/widgets/gimpcontainerview.c: connect to the container's
"freeze" and "thaw" signals and empty / refill the view
accordingly. Ignore "add", "remove" and "reorder" signals while
the container is frozen. Fixes font list sorting after refresh and
speeds up refreshing of fonts, brushes, patterns etc.
* app/widgets/Makefile.am
* app/widgets/widgets-types.h
* app/widgets/gimpfontview.[ch]: new widget for the font list/grid.
* app/widgets/gimphelp-ids.h: added GIMP_HELP_FONT_REFRESH.
* app/gui/dialogs-constructors.c: changed accordingly.
* app/gui/Makefile.am
* app/gui/fonts-commands.[ch]
* app/gui/fonts-menu.[ch]: new files: a menu for the font view.
* app/gui/menus.c (menus_init): register the new <Fonts> menu.
* app/gui/preferences-dialog.c (prefs_dialog_new): removed the
fonts refreshing hack from the "Environment" page.
2003-10-14 Sven Neumann <sven@gimp.org>
* app/config/gimpconfig-utils.[ch]: removed
gimp_config_copy_properties() and added the more intelligent
gimp_config_sync() instead.
* app/config/Makefile.am
* app/config/config-types.h
* app/config/gimpcoreconfig.[ch]
* app/config/gimprc-blurbs.h: replaced default image properties
with a single GimpTemplate object property. Changed the
set_property function to not replace aggregate objects but call
gimp_config_sync() instead.
* app/tools/gimptextoptions.c (gimp_text_options_set_property):
same change here.
* app/config/gimpconfig.[ch]: changed return value of
gimp_config_duplicate() to gpointer to avoid some casts that only
made the code harder to read.
* app/widgets/gimptemplateeditor.[ch]: don't keep an internal copy
here but edit the GimpTemplate passed when the editor was
constructed.
* app/gui/preferences-dialog.c: use a GimpTemplateEditor to allow
editing of the default image paramaters.
* app/config/gimprc.c
* app/core/core-types.h
* app/core/gimp.c
* app/core/gimpimage-duplicate.c
* app/core/gimpimage-grid.c
* app/core/gimpimage-new.c
* app/core/gimpimage-undo-push.c
* app/core/gimpimage.c
* app/core/gimptemplate.[ch]
* app/gui/file-new-dialog.c
* app/gui/grid-dialog.c
* app/gui/info-window.c
* app/gui/resize-dialog.c
* app/gui/templates-commands.[ch]
* app/gui/tool-options-commands.c
* app/text/gimptextlayer.c
* app/text/gimptextlayer.c
* app/tools/gimptexttool.c
* app/widgets/gimptemplateview.c
* app/xcf/xcf-load.c: changed accordingly.
2003-10-13 Michael Natterer <mitch@gimp.org>
* app/widgets/gimpdialogfactory.[ch]: renamed
gimp_dialog_factories_idle() and _unidle() to
gimp_dialog_factories_set_busy() and _unset_busy().
Added utility function gimp_dialog_factory_set_widget_data() and
public API gimp_dialog_factory_from_widget() so we don't need to
g_object_[set|get]_data() with magic keys all over the place.
* app/widgets/gimpsessioninfo.c
* app/gui/dialogs-commands.c
* app/gui/dialogs-menu.c
* app/gui/gui-vtable.c: changed accordingly.
* app/widgets/gimpsessioninfo.c: remember active page of all dock
notebooks in sessionrc.
* app/widgets/gimpsessioninfo.h: cleaned up the session info structs.
2003-10-11 Michael Natterer <mitch@gimp.org>
* app/widgets/widgets-types.h
* app/widgets/gimpsessioninfo.[ch]: added new struct
GimpSessionInfoAux which contains "gchar *name" and "gchar *value".
Changed sessionrc "aux-info" format again to be really extendable
this time. Also breaks everybody's sessionrc again.
* app/widgets/gimpimagedock.c
* etc/sessionrc: changed accordingly.
Implemented the stuff suggested in bug #122964. Fixes bug #122964
and bug #52206:
* app/widgets/gimpdataeditor.[ch]: replaced the "Gimp" member by a
"GimpDataFactory" and changed gimp_data_editor_construct()
accordingly. Implement GimpDockedInterface::set_aux_info() and
get_aux_info() and remember the currently edited data across
sessions.
* app/gui/gradient-editor-commands.c
* app/gui/gradient-editor-menu.c
* app/widgets/gimpbrusheditor.c
* app/widgets/gimpgradienteditor.c
* app/widgets/gimppaletteeditor.c: changed accordingly.
* app/widgets/gimpcoloreditor.c: remember the active color
selector across sessions.
2003-10-10 Michael Natterer <mitch@gimp.org>
Cleaned up session management and changed the format of sessionrc
in a way that allows extensions without changing the format during
the 2.0 cycle:
* app/widgets/Makefile.am
* app/widgets/widgets-types.h
* app/widgets/gimpsessioninfo.[ch]: new files implementing the whole
GimpSessionInfo stuff (parsing, saving, restoring, utility functions).
Save / parse the position of GimpDock's panes (bug #122964).
* app/widgets/gimpdialogfactory.[ch]: removed saving, restoring
and session related utility functions and use the ones from
the new files above.
* app/gui/session.c: removed parsing and use the new stuff.
* app/widgets/gimpdock.[ch]: added new virtual functions
GimpDock::set_aux_info() and GimpDock::get_aux_info():
* app/widgets/gimpimagedock.c: implement them and handle the
"auto_follow_active" and "show_image_menu" properties.
* app/widgets/gimpdockable.[ch]: added the same virtual functions
to the GimpDockable class. Enables forward-compatible per-dockable
session management (bug #122964).
* app/gui/dialogs-commands.c
* app/gui/gui.c: changed accordingly.
* etc/sessionrc: ditto. Look at this file and update your own
sessionrc manually if you don't want to lose it.
2003-10-10 Henrik Brix Andersen <brix@gimp.org>
* app/core/gimpimage-grid.[ch]: removed the grid parasite related
functions from here ...
* app/core/gimpgrid.[ch]: ... and added them here. While I was at
it I also changed PROP_TYPE to PROP_STYLE and added blurbs to the
properties
* app/xcf/xcf-load.c
* app/display/gimpdisplayshell.c: changed accordingly
* app/widgets/Makefile.am
* po/POTFILES.in
* app/widgets/widgets-types.h
* app/widgets/gimpgrideditor.[ch]: added a new GimpGridEditor
widget - with a work-around for the fact that
gimp_prop_coordinated_new() doesn't accept boundaries
* app/gui/grid-dialog.h
* app/gui/grid-dialog.c (grid_dialog_new): use the new
GimpGridEditor widget, take a GimpImage as function parameter,
assume GimpImages always have a GimpGrid. This simplifies the grid
dialog.
* app/gui/image-commands.c
(image_configure_grid_cmd_callback): changed accordingly
* app/core/core-types.h: moved typedef GimpGrid from here ...
* app/config/config-types.h: ... to here to be able to use it in
GimpCoreConfig
* app/config/gimprc-blurbs.h
* app/config/gimpcoreconfig.[ch]: added default_grid member
* app/widgets/gimphelp-ids.h
* themes/Default/images/preferences/Makefile.am
* themes/Default/images/default-grid.png
* app/gui/preferences-dialog.c: added UI for specifying default
image grid
* app/core/gimpimage.c (gimp_image_new): create a GimpGrid from
core_config->default_grid
* app/gui/image-menu.c (image_menu_update): the grid/guide entries
in <Image>/View/ should always be sensitive ...
* app/display/gimpdisplayshell.c (gimp_display_shell_init):
... but the grid entries should be disabled by default
2003-10-08 Michael Natterer <mitch@gimp.org>
* app/widgets/gimpdock.[ch]: added new pure virtual function
GimpDock::setup() which configures a dock like a passed template
dock.
* app/widgets/gimpimagedock.c: implement it and set
"show_image_menu" and "auto_follow_active" accordingly.
* app/widgets/gimpdockable.c (gimp_dockable_detach): call
gimp_dock_setup() to configure the new dock like the old one.
Removed inclusion if "gimpimagedock.h".
* app/gui/dialogs-commands.c: minor code cleanups.
2003-10-07 Michael Natterer <mitch@gimp.org>
* app/widgets/gimpdockable.[ch] (gimp_dockable_detach): new
function. Need to include ugly stuff for proper GimpImageDock
setup.
* app/widgets/gimpdockbook.c (gimp_dockbook_menu_end): use
gimp_dockable_detach() and removed the evil includes.
* app/gui/dialogs-commands.c (dialogs_detach_tab_cmd_callback):
implement it using gimp_dockable_detach().
2003-10-06 Michael Natterer <mitch@gimp.org>
Treat changes to the selection like changes to any other drawable:
* app/core/gimpchannel.c
* app/core/gimpchannel-combine.c: call gimp_drawable_update() after
changing the channel.
* app/core/gimpimage.[ch]: added struct GimpImageFlushAccumulator
with one member "gboolean mask_changed". Connect to "update" of
the selection and set accum.mask_changed to TRUE in the callback.
Added default implementation for GimpImage::flush() and emit
"mask_changed" there.
Unrelated:
* app/core/gimpimage.h: removed GimpGuide struct...
* app/core/gimpimage-guides.h: ...and added it here.
* app/core/gimpimage-undo-push.c (undo_pop_mask)
(undo_pop_channel_mod): don't distinguish between selection and
non-selection channels and just call gimp_drawable_update().
* app/core/gimpundo.h
* app/core/gimpimage-undo.c: removed "gboolean mask_changed" from
the GimpUndoAccumulator struct since we don't have to care about
that signal explicitly any more.
* app/display/gimpdisplay-foreach.[ch]: removed gimp_displays_flush().
* tools/pdbgen/pdb/display.pdb (displays_flush_invoker): call
gimp_image_flush() on all images so the flush accumulator is
honored.
This generalization enables the removal of more special purpose
code which was needed to treat the selection different:
* app/core/gimpimage-mask-select.[ch]: removed...
* app/core/gimpchannel-select.[ch]: ...and added under a new name
because it's not selection specific any more.
* app/core/gimpimage-mask.[ch]: removed...
* app/core/gimpselection.[ch]: ...added the two remaining
functions here. Removed all calls to gimp_image_mask_changed().
* app/core/Makefile.am
* app/core/gimp-edit.c
* app/core/gimpdrawable-transform.c
* app/core/gimpimage-scale.c
* app/core/gimpimage-snap.c
* app/display/gimpdisplayshell.c
* app/gui/channels-commands.c
* app/gui/layers-commands.c
* app/gui/select-commands.c
* app/gui/vectors-commands.c
* app/tools/gimpbycolorselecttool.c
* app/tools/gimpeditselectiontool.c
* app/tools/gimpellipseselecttool.c
* app/tools/gimpfreeselecttool.c
* app/tools/gimpfuzzyselecttool.c
* app/tools/gimpiscissorstool.c
* app/tools/gimprectselecttool.c
* app/tools/gimptransformtool.c
* app/widgets/gimpchanneltreeview.c
* app/widgets/gimpselectioneditor.c
* app/widgets/gimpvectorstreeview.c
* app/xcf/xcf-save.c
* tools/pdbgen/pdb/paths.pdb
* tools/pdbgen/pdb/selection.pdb
* tools/pdbgen/pdb/selection_tools.pdb: changed accordingly.
* app/core/gimpdrawable-bucket-fill.c
* app/core/gimpimage-colormap.c
* app/core/gimplayer-floating-sel.c
* app/core/gimplayer.c
* app/gui/image-menu.c
* app/paint/gimppaintcore.c
* app/tools/gimpcroptool.c
* app/tools/gimpinkoptions.c
* app/tools/gimpvectortool.c: removed useless and/or obsolete
#includes.
* app/pdb/display_cmds.c
* app/pdb/paths_cmds.c
* app/pdb/selection_cmds.c
* app/pdb/selection_tools_cmds.c: regenerated.
2003-10-02 Michael Natterer <mitch@gimp.org>
* app/gui/tool-options-commands.c
(tool_options_save_to_cmd_callback): remember the name of the
saved options and set it again after gimp_config_copy_properties().
Fixes bug #123660.
2003-09-30 Michael Natterer <mitch@gimp.org>
* app/gui/tool-options-menu.c: added a "Rename Saved Options"
submenu and factored on-the-fly submenu creation out to a utility
function.
* app/gui/tool-options-commands.[ch]: added rename callback.
* app/widgets/gimphelp-ids.h: added GIMP_HELP_TOOL_OPTIONS_RENAME.
* app/widgets/gimptooloptionseditor.c
(gimp_tool_options_editor_menu_popup): pass "button = 0" to
gtk_menu_popup() because we show the menu on button_release, not
on button_press.
2003-09-30 Sven Neumann <sven@gimp.org>
* app/gui/dialogs-commands.c (dialogs_create_dockable_cmd_callback):
accept a list of dialog identifiers and try to raise an existing
dockable from the list. If that fails, create a new one from the
first entry.
* app/gui/image-menu.c
* app/gui/toolbox-menu.c: specify alternative dialog identifiers
where appropriate.
* app/vectors/gimpstroke.c (gimp_stroke_interpolate): use NULL
instead of 0.
2003-09-30 Michael Natterer <mitch@gimp.org>
* app/paint/gimppaintcore-stroke.c: cleanup.
(gimp_paint_core_stroke_boundary): don't push a separate undo
for each part of the boundary.
* app/core/gimpdrawable-stroke.[ch]: added empty stub
gimp_drawable_stroke_boundary(). Changed
gimp_drawable_stroke_vectors() to take the GimpStrokeOptions as
second parameter.
* app/core/gimpchannel.c (gimp_channel_stroke): use it. No need
to push an undo group around gimp_paint_core_stroke_boundary().
* app/vectors/gimpvectors.c: changed accordingly.
* app/widgets/gimpselectioneditor.[ch]: added a GimpStrokeItemFunc
pointer and use it for stroking.
* app/gui/edit-commands.[ch] (edit_stroke_selection): a
GimpStrokeItemFunc which strokes the selection using the
stroke-dialog.
* app/gui/dialogs-constructors.c: use it for the selection editor.
2003-09-30 Michael Natterer <mitch@gimp.org>
* app/gui/tool-options-menu.[ch] (tool_options_menu_setup): new
function for stuff which needs to be done once, not on every
tool_options_menu_update(). Cleanup.
* app/gui/menus.c: register it as setup_func of <ToolOptions>.
* app/gui/tool-options-commands.c: removed the "Reset"
implementations and activate GimpToolOptionsEditor's buttons
accordingly.
* app/widgets/gimphelp-ids.h: added GIMP_HELP_TOOL_OPTIONS_DELETE.
* app/widgets/gimptooloptionseditor.[ch]: moved "Reset"
implementations to this file. Added "Delete" button. Pop up the
"Save", "Restore" and "Delete" submenus of the <ToolOptions>
item_factory when the resp. buttons are clicked.
2003-09-29 Michael Natterer <mitch@gimp.org>
* app/core/gimptoolinfo.[ch]: added a GimpContainer of tool
options presets.
* app/core/gimptooloptions.[ch] (gimp_tool_options_set_property):
silently accept setting the *same* tool_info again.
(gimp_tool_options_build_filename): is public now.
* app/tools/gimp-tools.c (gimp_tools_restore,save): load and save
the presets container.
* app/gui/tool-options-dialog.[ch]: removed.
* app/gui/tool-options-commands.[ch]
* app/gui/tool-options-menu.[ch]: new files implementing a menu
for the new GimpToolOptionsEditor widget. Has submenus for saving,
loading, and deleting tool options to/from the
tool_info->options_presets container.
* app/gui/Makefile.am
* app/gui/dialogs-constructors.c
* app/gui/menus.c: changed accordingly.
* app/widgets/Makefile.am
* app/widgets/widgets-types.h
* app/widgets/gimptooloptionseditor.[ch]: the tool options dialog
as proper widget. The "Load" and "Save" buttons still do the same
stuff as before. Will make them use the new presets since making
them do something useful was the reason for this whole change.
* app/widgets/gimphelp-ids.h: added missing help IDs for the tool
options dialog.
2003-09-27 Michael Natterer <mitch@gimp.org>
* app/gui/stroke-dialog.[ch]: made it a view on the GimpItem to
stroke, not on the image, so the dialog goes away automatically if
the item is removed from the image. Don't pass a GimpStrokeOptions
to stroke_dialog_new() until we figured how to handle a list of
presets or at least the last used options object. Also don't pass
a GimpDrawable, get the active_drawable in the "ok" callback
instead. Attach less pointers to the dialog and simplified stuff.
* app/gui/vectors-commands.c (vectors_stroke_vectors): changed
accordingly, removed commented out cruft.
2003-09-27 Michael Natterer <mitch@gimp.org>
* app/core/gimppaintinfo.[ch]: derive it from GimpViewable.
* app/core/gimptoolinfo.c (gimp_tool_info_new): set the
paint_info's stock_id from the tool_info's stock_id.
* app/widgets/widgets-types.h: resurrected GimpItemStrokeFunc.
* app/widgets/gimpvectorstreeview.[ch]: added a item_stroke_func
pointer and use it instead of implementing stroking here.
* app/gui/vectors-commands.[ch]: added vectors_stroke_vectors()
which has the signature of a GimpItemStrokeFunc.
* app/gui/dialogs-constructors.c: use it for the paths dialog.
* app/gui/stroke-dialog.[ch]: extended to handle both libart and
GimpPaintCore stroking. Use a GimpContainerMenu view on the
gimp->paint_info_list container to select the paint core to use.
2003-09-27 Simon Budig <simon@gimp.org>
This still is very much in progress. I just want to commit this
to avoid lossage. It kind of works but there definitely is
code in the wrong place now.
* app/gui/stroke-dialog.[ch]: New files implementing a dialog
containing Svens GimpStrokeEditor-Widget.
* app/gui/Makefile.am: changed accordingly.
* app/gui/vectors-commands.c: Open the StrokeOptions-Dialog when
the "stroke" menu entry gets selected.
* app/vectors/gimpvectors.c: Remove bad #ifdef hacks and use
Libart/Paintcore-Stroking depending on the type of the stroke_desc
Parameter.
* app/core/gimpstrokeoptions.c: Proper handle the Enum-Properties.
* app/core/gimpscanconvert.[ch]: make the antialias-parameter
to gimp_scan_convert_new a gboolean.
* app/tools/gimpiscissorstool.c
* app/core/gimpdrawable-stroke.c
* app/core/gimpimage-mask-select.c: Changed accordingly.
2003-09-26 Simon Budig <simon@gimp.org>
* app/core/gimpstrokeoptions.[ch]: New Object, holding the
Options for a Libart-Stroke.
* app/core/Makefile.am
* app/core/core-types.h: Changed accordingly.
* app/core/gimpitem.[ch]: Changed the Signature of
gimp_item_stroke to accept a GimpObject instead of a
GimpPaintInfo. This enables us to pass GimpStrokeOptions
to it. To be cleaned up for 2.2.
* app/core/gimpselection.c
* app/core/gimpchannel.c
* app/vectors/gimpvectors.c: Changed accordingly
* app/gui/edit-commands.c
* app/gui/vectors-commands.c
* app/pdb/edit_cmds.c
* app/pdb/paths_cmds.c
* app/widgets/gimpselectioneditor.c
* app/widgets/gimpvectorstreeview.c: Fixed warnings by
casting the GimpPaintInfo to GimpObject.
2003-09-26 Michael Natterer <mitch@gimp.org>
Cleaned up all places which pick colors to work consistently: the
concept of an "active color" has disappeared, instead <ctrl> picks
the BG color all over the place (fixes bug #122931).
* app/tools/tools-enums.[ch]: added enum GimpColorPickMode which
can be one of { FOREGROUND, BACKGROUND }. Reordered enums so
non-registered ones are at the end of the file. Removed trailing
whitespace.
* app/tools/gimpcolorpickeroptions.[ch]: added a "pick-mode"
property and a GUI for it. Renamed the "update-active" property to
"update-toolbox".
* app/tools/gimpcolorpickertool.c: honor the new option. Toggle
pick-mode on <ctrl>.
* app/tools/gimpcolortool.[ch]: added pick_mode member and change
the cursor accordingly.
* app/widgets/gimpcolormapeditor.[ch]: added "GdkModifierType
state" to the "selected" signal. Removed the signal's default
implementation.
* app/gui/dialogs-constructors.c: fixed the signal handler which
lives here and set BG if <ctrl> was pressed.
* app/widgets/gimppaletteeditor.c: removed weird <ctrl> <->
active_color interaction and pick BG on <ctrl>. Don't change the
toolbox color when editing a color in the palette.
* app/widgets/gimptoolbox-color-area.[ch]: made the whole
active_color stuff private. Will remove these artefacts soon...
* app/gui/colormap-editor-menu.c
* app/gui/palette-editor-menu.c: added separate menu entries
for adding a color from the current FG and BG.
* app/gui/colormap-editor-commands.c
* app/gui/palette-editor-commands.[ch]: changed callbacks
accordingly.
* cursors/background.xbm
* cursors/background_mask.xbm
* cursors/foreground.xbm
* cursors/foreground_mask.xbm
* cursors/gimp-tool-cursors.xcf: moved the FG/BG cursor modifiers
closer to the upper right corner.
* app/widgets/gimpcursor.c: ignore the cursor modifiers' hotspots
since they are not relevant and I didn't save the hotspot in the
updated cursor files for that reason.
2003-09-25 Sven Neumann <sven@gimp.org>
* app/vectors/gimpvectors-import.[ch]: optionally scale the
imported SVG to fit the image.
* app/gui/vectors-commands.c: changed accordingly.
* tools/pdbgen/pdb/paths.pdb: export the new scale parameter to
the PDB.
* app/pdb/paths_cmds.c
* libgimp/gimppaths_pdb.[ch]: regenerated.
* plug-ins/common/svg.c: scale the imported vectors to image size.
This makes them always fit :)
2003-09-23 Michael Natterer <mitch@gimp.org>
* app/widgets/gimpmenufactory.[ch]: added a "menu_title" which is
registered with each menu.
* app/widgets/gimpitemfactory.[ch]: added the title to the
constructor and to the GimpItemFactory struct.
* app/gui/menus.c: register titles with all menus.
* app/widgets/gimpdockable.[ch]: show the tab menu, not the
contained dialog's menu when clicking on the menu button.
Embed the dialog's menu as submenu. Use the item_factory's
title and the dockable's stock_id for the submenu entry.
* app/widgets/gimpeditor.c: removed GtkWidget:popup_menu()
implementation since that's done by GimpDockable now.
* app/widgets/gimpdockbook.c: set the new menu item invisible
when showing the menu as tab menu.
* app/widgets/gimphelp-ids.h: added GIMP_HELP_DOCK_TAB_DETACH
and renamed _TAB_REMOVE to _TAB_CLOSE.
* app/gui/dialogs-menu.c: added the new menu entry for showing the
dialog's sub-menu. Added a "Detach" menu item, renamed "Remove" to
"Close". Accept both a GimpDockbook and a GimpDockable pointer as
"data" in dialogs_menu_update().
* app/gui/dialogs-commands.[ch]: changed accordingly. Never use
gtk_item_factory_popup_data_from_widget() but always the "data"
passed to the callbacks. Take care to not set the already active
preview_size, tab_style and list/grid type in the resp. callbacks
to avoid being called from dialogs_menu_update().
* app/gui/dialogs-constructors.c: removed separate
set_context_funcs and get_menu_funcs for GimpContainerView and
GimpContainerEditor widgets and simply use
gimp_container_view_get_by_dockable() to find the right widget.
2003-09-19 Michael Natterer <mitch@gimp.org>
Fix for bug #122695:
* app/widgets/gimpcolormapeditor.c
(gimp_colormap_hex_entry_activate): call gimp_image_flush() after
gimp_image_set_colormap_entry() so the projection gets updated.
Cleanup / consistency with other dialogs:
* app/widgets/gimphelp-ids.h: added help IDs for the colormap
editor's menu items and buttons.
* app/gui/colormap-editor-menu.c (colormap_editor_menu_entries):
use the new help IDs.
* app/widgets/gimpcolormapeditor.[ch]: added buttons for "Edit Color"
and "Add Color" and moved the color_notebook code to this file.
* app/gui/colormap-editor-commands.[ch]: removed almost all code
and simply emit "clicked" from the editor's buttons so their
callbacks are invoked.
2003-09-18 Michael Natterer <mitch@gimp.org>
* app/paint/Makefile.am
* app/paint/paint.[ch]: removed...
* app/paint/gimp-paint.[ch]: ...and added.
* app/core/gimp.c: changed accordingly.
* app/tools/Makefile.am
* app/tools/tools.[ch]: removed...
* app/tools/gimp-tools.[ch]: ...and added. Added
gimp_tools_restore() and gimp_tools_save() and moved the entire
tool registering and tool_options loading/saving code here. Call
tool_manager_init() from gimp_tools_init() and tool_manager_exit()
from gimp_tools_exit().
* app/tools/tool_manager.[ch]: removed the code which now lives
in gimp-tools.[ch]. The tool manager now has no knowledge about
individual tools any more and just handles the active_tool
and the tool part of tool <-> display interaction.
Removed tool_manager_get_info_by_type().
* app/tools/gimpvectortool.c (gimp_vector_tool_register): the
tool's identifier is "gimp-vector-tool", not "gimp-path-tool".
* app/app_procs.c
* app/display/gimpdisplayshell-callbacks.c
* app/gui/vectors-commands.c
* app/tools/gimppainttool.c: changed accordingly.
2003-09-13 Sven Neumann <sven@gimp.org>
* app/gui/vectors-commands.c (vectors_export_ok_callback): no need
to flush the image after exporting vectors.
* app/vectors/gimpvectors-import.c: improved error handling.
2003-09-13 Sven Neumann <sven@gimp.org>
* app/core/core-enums.[ch]
* app/vectors/gimpvectors-import.c: add vectors in an undo-group.
* app/gui/vectors-commands.c: added simple file selection dialogs
for vectors import and export.
2003-09-11 Sven Neumann <sven@gimp.org>
* app/vectors/gimpvectors-export.[ch]: allow to optionally export
all paths from an image into a single SVG file.
* app/gui/vectors-commands.c: changed accordingly.
2003-09-11 Sven Neumann <sven@gimp.org>
* app/vectors/Makefile.am (INCLUDES): replaced GTK_CFLAGS by
GDK_PIXBUF_CFLAGS.
* app/vectors/gimpvectors-export.c: added a first draft of
GimpVectors SVG export.
* app/gui/vectors-commands.c (vectors_export_cmd_callback): call
gimp_vectors_export() with a hardcoded filename.
2003-09-11 Sven Neumann <sven@gimp.org>
* app/vectors/gimpvectors-import.[ch]
* app/gui/vectors-commands.c: allow to optionally create a
GimpVectors object per <path> element. Made this the default until
there's a GUI for this.
2003-09-10 Sven Neumann <sven@gimp.org>
* app/gui/vectors-commands.c (vectors_import_cmd_callback): call
gimp_vectors_import(). Hardcoded filename to path.svg for now.
* app/vectors/gimpvectors-import.c: more work on the SVG parser.
2003-09-05 Sven Neumann <sven@gimp.org>
* app/base/gimplut.[ch] (gimp_lut_free): free the memory allocated
for the GimpLut structure. Removed trailing whitespace.
* app/core/gimpbuffer.c: cosmetics.
* app/core/gimpedit.[ch]: let gimp_edit_cut() and gimp_edit_copy()
return a pointer to the global cut buffer instead of creating a
GimpBuffer which was leaked by most callers.
* app/gui/edit-commands.c: changed accordingly.
* libgimpwidgets/gimpquerybox.[ch] (string_query_box_ok_callback):
removed a superfluous g_strdup(); made GimpQueryStringCallback take
a const gchar* pointer.
* app/gui/edit-commands.c
* app/gui/file-commands.c
* app/gui/palettes-commands.c: changed accordingly.
2003-09-04 Michael Natterer <mitch@gimp.org>
* app/core/gimpchannel.[ch]: removed gimp_channel_load().
* app/core/gimpimage-mask.[ch]: removed gimp_image_mask_load()
and _save().
* app/core/gimpselection.[ch]: added gimp_selection_load() and
_save() since these functions are specific to the selection.
* app/core/gimpimage-qmask.c
* app/gui/select-commands.c
* app/widgets/gimpselectioneditor.c
* tools/pdbgen/pdb/selection.pdb: changed accordingly.
* app/pdb/selection_cmds.c: regenerated.
2003-09-03 Michael Natterer <mitch@gimp.org>
* app/core/gimpimage-mask.[ch]: removed the feather(), sharpen(),
all(), invert(), border(), grow() and shrink() wrappers.
* app/core/gimpselection.[ch]: changed gimp_selection_invalidate()
and gimp_selection_push_undo() to take GimpChannel parameters, not
GimpSelection ones. They will be made virtual GimpChannel
functions anyway.
* app/core/gimpedit.c
* app/gui/select-commands.c
* app/widgets/gimpselectioneditor.c
* tools/pdbgen/pdb/selection.pdb: changed accordingly.
* app/pdb/selection_cmds.c: regenerated.
2003-09-01 Michael Natterer <mitch@gimp.org>
* app/core/gimpitem.[ch]: added new virtual function
GimpItem::stroke().
* app/core/gimpchannel.c
* app/vectors/gimpvectors.c: implement GimpItem::stroke().
* app/core/gimpimage-mask.[ch] (gimp_image_mask_stroke): changed
signature to match gimp_item_stroke() (the selection mask *really*
should be a GimpChannel subclass).
Removed global variable "gboolean gimp_image_mask_stroking"...
* app/core/gimpimage.[ch]: ...and added "gboolean mask_stroking"
to the GimpImage struct.
* app/gui/vectors-commands.[ch]: removed vectors_stroke_vectors().
* app/widgets/widgets-types.h: removed GimpStrokeItemFunc typedef.
* app/widgets/gimpvectorstreeview.[ch]: removed "stroke_item_func"
member and use gimp_item_stroke() instead.
* app/gui/dialogs-constructors.c (dialogs_vectors_list_view_new)
* app/gui/edit-commands.c (edit_stroke_cmd_callback)
* app/gui/vectors-commands. (vectors_stroke_cmd_callback)
* app/widgets/gimpselectioneditor.c
(gimp_selection_editor_stroke_clicked)
* tools/pdbgen/pdb/edit.pdb (gimp_edit_stroke): changed accordingly.
* app/pdb/edit_cmds.c: regenerated.
Note that there is no GUI for "stroke channel", although it would
be utterly cool to have one, since currently slelection stroking
cannot be masked by a selection (because we stroke the selection).
Anyway, if anyone has an idea how to trigger "stroke channel" with
another drawable active (the one to stroke to), please let me
know...
2003-08-31 Sven Neumann <sven@gimp.org>
* app/gui/layers-commands.[ch]
* app/gui/layers-menu.c: added "Merge Visible Layers..." and
"Flatten Image" menu entries as suggested in bug #120959.
* app/text/gimptext-vectors.c: fixed function declaration; we are
passing a PangoGlyph here, not a (PangoGlyph*).
2003-08-30 Michael Natterer <mitch@gimp.org>
Fixed & cleaned up paint function registration to work without
GUI. Finishes core/GUI separation for the paint tools:
* app/core/gimppaintinfo.[ch]: removed "gchar *pdb_string" all over
the place since we don't stroke using the PDB any more.
(gimp_paint_info_new): create paint_info->paint_options here so
the paint system is fully initialized when there is no GUI.
* app/paint/paint.c: removed pdb_string stuff here, too.
* app/core/gimptoolinfo.[ch]: create tool_info->tool_options
only if tool_info->tool_options_type is not the same type
as paint_info->paint_options_type (if we are no paint tool).
* app/core/gimptooloptions.c: removed G_PARAM_CONSTRUCT_ONLY from
the "tool-info" property. Instead, changed
gimp_tool_options_set_property to ensure that it is only set once.
* app/core/gimp.c (gimp_initialize): moved paint_init() after
data_factory creation (was in gimp_init()), since GimpPaintInfo
now creates the GimpPaintOptions, which are GimpContexts, which
need gimp->*_factory to be constructed.
* app/tools/tool_manager.c: don't create tool_info->tool_options
here (it's not the job of the tool_manager to set up the core
paint system correctly, it must be already initialized before any
tool_manager function is called).
Made "Stroke Selection" and "Stroke Path" work the same way:
* app/paint/gimppaintcore-stroke.[ch]: added new function
gimp_paint_core_stroke_boundary() which strokes without using
the PDB.
* app/core/gimpimage-mask.c (gimp_image_mask_stroke): use it
instead of using the PDB. Enables all available paint options for
stroke operations. Fixes bug #119411.
* app/gui/vectors-commands.c (vectors_stroke_vectors)
* app/core/gimpimage-mask.c (gimp_image_mask_stroke): removed all
code which tries to figure how to stroke and simply look at the
active tool's tool_info->paint_info, since it is always set up
correctly now.
2003-08-27 Michael Natterer <mitch@gimp.org>
Cleaned up my "To Selection" cleanup:
* app/gui/channels-commands.[ch]
* app/gui/layers-commands.[ch]
* app/gui/vectors-commands.[ch]: removed the separate
cmd_callbacks for REPLACE,ADD,SUBTRACT,INTERSECT and pass the
operation as "guint action" to the callback.
* app/gui/channels-menu.c
* app/gui/image-menu.c
* app/gui/layers-menu.c
* app/gui/vectors-menu.c: changed accordingly.
2003-08-25 Michael Natterer <mitch@gimp.org>
* app/core/gimpobject.[ch]: changed GimpObject::get_memsize() to
return a second value named "gui_size", where the primary return
value is the "constant" actual size (as long as no operation is
performed on the object), and the second "gui_size" return value
is the size of temporary stuff like preview caches or boundary
segments (which may change asynchronously, even if the object is
on the undo stack).
* app/core/gimp.c
* app/core/gimpbrush.c
* app/core/gimpbrushpipe.c
* app/core/gimpbuffer.c
* app/core/gimpchannel.c
* app/core/gimpcontainer.c
* app/core/gimpcontext.c
* app/core/gimpdata.c
* app/core/gimpdatafactory.c
* app/core/gimpdrawable.c
* app/core/gimpgradient.c
* app/core/gimpimage-undo.c
* app/core/gimpimage.c
* app/core/gimpitem.c
* app/core/gimplayer.c
* app/core/gimplist.c
* app/core/gimppalette.c
* app/core/gimpparasitelist.c
* app/core/gimppattern.c
* app/core/gimpundo.c
* app/core/gimpundostack.c
* app/core/gimpviewable.c
* app/text/gimptextlayer.c
* app/vectors/gimpstroke.c
* app/vectors/gimpvectors.c: changed get_memsize() implementations
accordingly.
* app/display/gimpdisplayshell-title.c
* app/gui/debug-commands.c
* app/widgets/gimppreview.c: changed callers accordingly.
* app/core/gimpimage-undo-push.c: changed layer, channel, vectors
and layer_mask undo steps to add/subtract the size of the
resp. objects whenever they take/drop ownership of them. Ignore
the objects' "gui_size" to get identical sizes on
adding/subtracting. Fixes bug #120429.
2003-08-23 Michael Natterer <mitch@gimp.org>
* libgimpwidgets/gimpwidgetstypes.h: changed GimpHelpFunc typedef:
- renamed "const gchar *help_data" to "const gchar *help_id".
- added "gpointer help_data".
* libgimpwidgets/gimphelpui.[ch]: added "gpointer help_data" to
gimp_help_connect(). Removed all fiddling with html links and
treat all help IDs as opaque identifiers.
* app/core/gimptoolinfo.[ch]: changed "help_data" member to
"help_id".
* app/widgets/gimpitemfactory.[ch]: removed the "help_path"
parameter from gimp_item_factory_new() since we don't fiddle with
html file paths any more. Simplifies menu item help a lot.
Renamed "help_data" member of struct GimpItemFactoryEntry to
"help_id".
* app/gui/plug-in-menus.c: changed accordingly. 3rd party
plug-ins' menu item help IDs are now encoded as
"help_path:help_id".
* app/gui/file-open-menu.c
* app/gui/file-save-menu.c: when constructing the <Load> and
<Save> menus, take the resp. procedures' locale_domain and
help_path into account. Fixes translation of 3rd party menu items.
Also do the right thing for load/save procs which are implemented
as temporary procedures (they are impossible to implement
currently but it's nice to do the right thing anyway...).
* app/widgets/gimphelp-ids.h: added GIMP_HELP_MAIN identifier.
* libgimpwidgets/gimpdialog.[ch]
* libgimpwidgets/gimpwidgets.[ch]
* libgimp/gimpui.c
* app/display/gimpdisplayshell.c
* app/gui/gui.c
* app/gui/about-dialog.c
* app/gui/color-notebook.c
* app/gui/dialogs-constructors.c
* app/gui/file-dialog-utils.[ch]
* app/gui/gradients-commands.c
* app/gui/help-commands.c
* app/gui/image-menu.c
* app/gui/menus.c
* app/gui/preferences-dialog.c
* app/gui/tips-dialog.c
* app/tools/gimpcolorpickertool.c
* app/tools/gimpcroptool.c
* app/tools/gimpcurvestool.c
* app/tools/gimphistogramtool.c
* app/tools/gimpimagemaptool.c
* app/tools/gimplevelstool.c
* app/tools/gimpmeasuretool.c
* app/tools/gimptransformtool.c
* app/widgets/gimperrorconsole.c
* app/widgets/gimphelp.[ch]
* app/widgets/gimpmenufactory.[ch]
* app/widgets/gimptexteditor.c
* app/widgets/gimptoolbox.c
* app/widgets/gimpviewabledialog.[ch]
* plug-ins/common/CEL.c
* plug-ins/common/CML_explorer.c
* plug-ins/common/gee.c
* plug-ins/common/gee_zoom.c
* plug-ins/common/gqbist.c
* plug-ins/common/spheredesigner.c
* plug-ins/flame/flame.c
* plug-ins/fp/fp_gtk.c
* plug-ins/helpbrowser/helpbrowser.c
* plug-ins/ifscompose/ifscompose.c
* plug-ins/imagemap/imap_main.c: changed accordingly. Removed
trailing whitespace all over the place.
2003-08-21 Michael Natterer <mitch@gimp.org>
* app/widgets/Makefile.am
* app/widgets/gimphelp-ids.h: new file defining the available help
topics. Work in progress and totally unusable for matching to the
help system. Stay tuned...
* app/gui/about-dialog.c
* app/gui/brushes-menu.c
* app/gui/buffers-menu.c
* app/gui/channels-commands.[ch]
* app/gui/channels-menu.c
* app/gui/edit-commands.c
* app/gui/file-commands.c
* app/gui/file-new-dialog.c
* app/gui/file-open-dialog.c
* app/gui/file-save-dialog.c
* app/gui/gradients-commands.c
* app/gui/gradients-menu.c
* app/gui/image-menu.c
* app/gui/layers-commands.[ch]
* app/gui/layers-menu.c
* app/gui/module-browser.c
* app/gui/offset-dialog.c
* app/gui/palettes-menu.c
* app/gui/patterns-menu.c
* app/gui/resize-dialog.c
* app/gui/select-commands.c
* app/gui/templates-menu.c
* app/gui/tips-dialog.c
* app/gui/toolbox-menu.c
* app/gui/vectors-commands.[ch]
* app/gui/vectors-menu.c: replaced literal HTML file paths by help
IDs from gimphelp-ids.h. Renamed some menu callbacks to be
consistent with similar ones. This is just an intermediate commit
and not finished.
While browsing all the menus, I noticed that our "x to selection"
functions are not consistent at all. They should all offer the
REPLACE,ADD,SUBTRACT,INTERSECT options:
* app/core/gimpchannel.[ch]: added new function
gimp_channel_new_from_alpha(). Removed gimp_channel_layer_alpha()
and gimp_channel_layer_mask().
* app/core/gimpimage-mask.[ch]: added
gimp_image_mask_select_alpha() and
gimp_image_mask_select_component() which offer the full set of
operation, feather and feather_radius parameters as the other
selection functions.
* app/core/gimpimage-mask-select.[ch]: removed
gimp_image_mask_layer_alpha() and gimp_image_mask_layer_mask().
* app/gui/channels-commands.c (channels_channel_to_selection): use
gimp_image_mask_select_component() instead of implementing it
here.
* app/gui/image-menu.c
* app/gui/layers-commands.[ch]: offer the full choice of
REPLACE,ADD,SUBTRACT,INTERSECT with "Alpha to Selection" and "Mask
to Selection".
* tools/pdbgen/pdb/selection.pdb: changed accordingly.
* app/pdb/selection_cmds.c: regenerated.
2003-07-27 Henrik Brix Andersen <brix@gimp.org>
* app/gui/image-menu.c (image_menu_entries): moved Configure Grid
entry to the <Image>/Image branch
* app/gui/view-commands.[ch] (view_configure_grid_cmd_callback):
removed function
* app/gui/image-commands.[ch] (image_configure_grid_cmd_callback):
added function here
* app/gui/grid-dialog.c: removed snap and show options from the
dialog
2003-07-08 Michael Natterer <mitch@gimp.org>
Added configurable styles for dockable tabs (fixes bug #87376):
* app/widgets/widgets-enums.[ch]: added new enum GimpTabStyle
which can be one on { ICON, NAME, ICON_NAME, ICON_BLURB }.
* app/widgets/gimpdockable.[ch]: added a GimpTabStyle member to
the GimpDockable struct which defaults to GIMP_TAB_STYLE_ICON.
Renamed "short_name" to "name" and "name" to "blurb". Renamed
GimpDockableGetTabFunc to GimpDockableGetIconFunc. Implemented all
tab styles in gimp_dockable_real_get_tab_widget() and use the
"get_icon_func" only for creating the tab's icon, not the entire
tab widget.
* app/widgets/gimpdockbook.[ch]: changed accordingly. Create the
menu widgets and the DND icon using gimp_dockable_get_tab_widget()
with tab_style == GIMP_TAB_STYLE_ICON_BLURB instead of duplicating
tons of code. Made gimp_dockbook_get_tab_widget() public because
it's needed for exchanging tabs on-the-fly.
* app/widgets/gimpimagedock.c: changed accordingly.
* app/widgets/gimpdialogfactory.c: remember the dockables' tab
style in sessionrc.
* app/gui/dialogs-menu.c: added a submenu to select the tab style
for each dockable.
* app/gui/dialogs-commands.[ch]: new callback
dialogs_tab_style_cmd_callback().
* app/gui/dialogs-constructors.[ch]: added stock_ids to all
dockables, swapped the "name" and "blurb" parameters, reordered
functions, cleanup.
* app/gui/dialogs-menu.c
* app/gui/image-menu.c
* app/gui/toolbox-menu.c: use GIMP_STOCK_DEFAULT_COLORS for the
color editor dockable and renamed it to "FG/BG Color".
2003-07-08 Sven Neumann <sven@gimp.org>
* app/gui/file-commands.c (file_save_cmd_callback): warn if the
image has no active drawable instead of silently returning. Not
sure if this is correct, but it could help to resolve#116936.
2003-06-24 Michael Natterer <mitch@gimp.org>
* app/core/gimpimage-undo-push.c (undo_pop_image_grid)
* app/core/gimpimage.c (gimp_image_set_grid): ref/unref the grid.
* app/gui/view-commands.c (view_configure_grid_cmd_callback): set
the dialog transient for the shell, make shell->grid_dialog a
weak pointer of the grid dialog.
* app/gui/grid-dialog.c: don't set shell->grid_dialog to NULL
here, attach the grid using g_object_set_data_full() and don't
unref it explicitely. Use gimp_config_is_equal_to() instead of
gimp_config_diff().
* app/core/gimpgrid.[ch]: derive GimpGrid from GimpObject (not
GObject) allowing us to use gimp_object_get_memsize(). Added
missing copyright notice.
* app/core/gimpimage.c: only call gimp_object_get_memsize() if
gimage->grid != NULL.
* app/gui/grid-dialog.c: added mnemonics, set shell->grid_dialog
to NULL when destroyed.
* app/gui/view-commands.c (view_configure_grid_cmd_callback):
added call to gtk_window_present().
This fixes bug #65198
* app/core/Makefile.am
* app/core/core-types.h:
* app/core/gimpgrid.[ch]: added new class GimpGrid.
* app/core/core-enums.[ch]: added new enum GimpGridType.
* app/core/gimpimage-guides.[ch]: removed the gimp_image_snap_*()
functions...
* app/core/gimpimage-snap.[ch]: ...and added them here since they
are no longer guide specific.
* app/core/gimpimage-undo-push.[ch]: added
gimp_image_undo_push_image_grid()
* app/display/gimpdisplayshell-handlers.c:
* app/core/gimpimage.[ch]: added grid member to _GimpImage. Added
new signal "grid_changed", added gimp_image_grid_changed(),
gimp_image_get_grid() and gimp_image_set_grid().
* app/display/gimpdisplayshell-appearance.[ch]: added
gimp_display_shell_set_show_grid(),
gimp_display_shell_get_show_grid(),
gimp_display_shell_set_snap_to_grid() and
gimp_display_shell_get_snap_to_grid().
* app/display/gimpdisplayshell-callbacks.c: added call to
gimp_display_shell_draw_grid()
* app/display/gimpdisplayshell.[ch]: added grid member to
_GimpDisplayShellVisibility, added snap_to_grid and grid_dialog
members to _GimpDisplayShell, added
gimp_display_shell_draw_grid(), modified
gimp_display_shell_snap_coords() to use the new
gimp_image_snap_*() functions.
* app/gui/image-menu.c: added grid entries to
image_menu_entries[].
* app/gui/view-commands.[ch]: added
view_configure_grid_cmd_callback(),
view_toggle_grid_cmd_callback() and
view_snap_to_grid_cmd_callback().
* app/gui/Makefile.am
* app/gui/grid-dialog.[ch]: added a grid dialog.
2003-06-20 Michael Natterer <mitch@gimp.org>
* app/gui/plug-in-commands.c (plug_in_run_cmd_callback): pass the
gdisp_ID to plug_in_run() again. Broke this with my last commit...
2003-06-19 Michael Natterer <mitch@gimp.org>
Changed the semantics of GIMP_EXTENSION and (to some extent)
of GIMP_PLUGIN:
The old meaning of EXTENSION was "I live in the toolbox" and
PLUGIN meant "I take RUN-MODE,IMAGE,DRAWABLE args (but only if I
am invoked interactively)". This is completely useless, since
living in the toolbox means having "<Toolbox>" in the menu_path
and taking RUN-MODE,IMAGE,DRAWABLE means just that, regardless of
what type of procedure we are.
The new meaning of GIMP_PLUGIN is just "I am an ordinary procedure,
I am invoked, do my job and finish", while GIMP_EXTENSION means
"I will install temporary procedures and I will keep running to
keep them available".
(A GIMP_EXTENSION *must* call gimp_extension_ack() now to tell the
core that it's ready to run, or the core will block waiting for
the message !!!).
* configure.in: bumped version number to 1.3.16.
* libgimpbase/gimpprotocol.h: increased protocol version number so
old extensions will refuse to load.
* app/gui/plug-in-commands.c (plug_in_run_cmd_callback): don't
blindly pass RUN-MODE,IMAGE,DRAWABLE to GIMP_PLUGIN procedures but
look at their parameters and pass them either RUN-MODE, or
RUN-MODE,IMAGE, or RUN-MODE,IMAGE,DRAWABLE.
* app/pdb/procedural_db.c: cleaned up, better error reporting,
replaced an impossible error message by g_return_if_fail()
* app/plug-in/plug-in-message.c (plug_in_handle_proc_install):
better error messages.
* app/plug-in/plug-in-params.c: allocate parameter arrays using
g_new0() so we don't have to worry about uninitialized stuff
later.
* app/plug-in/plug-in-run.c (plug_in_run): wait for
gimp_extension_ack() installation confirmation for ALL extensions,
not just for automatically started ones.
* app/plug-in/plug-ins.c: cleanup.
* libgimp/gimp.[ch]: cleaned up and API-documented massively. Made
all magic values given in the GPConfig message static and added
accessor functions for them. Added gimp_tile_width()/height().
Added new function gimp_extension_enable() which turns on
asynchronous processing of temp_proc run requests without having
to enter an endless gimp_extension_process() loop. Moved all
private functions to the end of the file. Added tons of
g_return_if_fail() all over the place. Call gimp_run_procedure2()
from gimp_run_procedure() instead of duplicating the
code. Indentation, spacing, stuff...
* libgimp/gimptile.[ch]: removed gimp_tile_width()/height().
* libgimp/gimpdrawable.c
* libgimp/gimppixelrgn.c
* libgimp/gimptile.c: use the gimp_tile_width()/height() accessor
functions.
* libgimp/gimp.def: added gimp_extension_enable.
* libgimp/gimpmenu.c: removed evil code which connected to
_readchannel manually and use gimp_extension_enable() for watching
temp_procs.
* plug-ins/helpbrowser/helpbrowser.c: removed the same evil code
here and call gimp_extension_enable(). Call gimp_extension_ack()
to let the core know that the temp_proc is installed.
* plug-ins/script-fu/script-fu.c: made all procedures except the
permanently running "extension_script_fu" ordinary GIMP_PLUGIN
procedures.
* plug-ins/common/curve_bend.c
* plug-ins/common/plugindetails.c
* plug-ins/common/screenshot.c
* plug-ins/common/uniteditor.c
* plug-ins/common/winclipboard.c
* plug-ins/dbbrowser/dbbrowser.c
* plug-ins/gfli/gfli.c
* plug-ins/twain/twain.c
* plug-ins/webbrowser/webbrowser.c
* plug-ins/winsnap/winsnap.c: made them all ordinary GIMP_PLUGIN
procedures and renamed them from "extension_*" to "plug_in_*".
Random cleanups.
* app/widgets/gimphelp.c
* plug-ins/maze/maze_face.c: call "plug_in_web_browser" now.
2003-06-13 Michael Natterer <mitch@gimp.org>
Cleaned up and improved the message system:
* app/core/gimp.[ch]: added "const gchar *domain" to
GimpMessageFunc (a NULL domain means the message is from the GIMP
core, everything else is a plug-in).
* app/errors.c: pass "domain == NULL" to gimp_message().
* tools/pdbgen/pdb/message.pdb: derive the message domain from the
current plug-in's menu_path (evil hack but works reasonably well).
* app/pdb/message_cmds.c: regenerated.
* app/widgets/gimpwidgets-utils.[ch] (gimp_message_box): added a
header showing the message domain and changed the dialog layout to
follow the HIG more closely.
* app/gui/error-console-dialog.[ch]: removed.
* app/widgets/gimperrorconsole.[ch]
* app/gui/error-console-commands.[ch]
* app/gui/error-console-menu.[ch]: new files containing a
re-implementation of the error console dialog.
* app/gui/Makefile.am
* app/gui/dialogs-constructors.c
* app/gui/gui.c
* app/gui/menus.c
* app/widgets/Makefile.am
* app/widgets/widgets-types.h: changed accordingly.
* app/display/gimpprogress.c: added more spacing and removed the
separator (more HIG compliant).
* plug-ins/[most plug-ins].c: Changed lots of messages and
progress strings:
- Removed plug-in names from messages since that's automatically
covered by "domain" now.
- Put all filenames in ''.
- Changed "Loading" to "Opening".
- Added "..." to all progress messages.
- Cleaned up all file open/save error messages to look the
same and include g_strerror(errno).
- Removed special casing for progress bars and *always* show them,
not only if run_mode != GIMP_RUN_NONINTERACTIVE (we can't expect
all plug-ins to do this correctly but need to hack the core to
sort out unwanted progress bars).
Unrelated:
- Cleaned up indentation, spacing, #includes, coding style and
other stuff while I was at all these files.
2003-06-10 Sven Neumann <sven@gimp.org>
* app/gui/tools-commands.c (tools_select_cmd_callback): expects
the tool identifier as a GQuark now.
* app/gui/image-menu.c: changed accordingly. Removed code that
used to move the menu entries for the color correction tools to
the Layers menu. Added the respective menu entries by hand. Added
a menu entry for arbitrary rotations and one for Select by Color.
* app/tools/gimpbrightnesscontrasttool.c
* app/tools/gimpbycolorselecttool.c
* app/tools/gimpcolorbalancetool.c
* app/tools/gimpcolorizetool.c
* app/tools/gimpcurvestool.c
* app/tools/gimphistogramtool.c
* app/tools/gimphuesaturationtool.c
* app/tools/gimplevelstool.c
* app/tools/gimpposterizetool.c
* app/tools/gimpthresholdtool.c: register the color correction
tools in the Tools menu.
* app/tools/gimptransformtool.c: added an initialize method and
moved most initalization code from button_press to this place.
2003-06-06 Michael Natterer <mitch@gimp.org>
* app/gui/image-menu.c
* app/gui/toolbox-menu.c: moved the convenience items which
create new docks from the "Dialogs/" level to a new
"Dialogs/Create New Dock/" sub-menu. Fixes bug #111278.
* app/gui/dialogs-commands.[ch] (dialogs_create_data_cmd_callback):
new convenience constructor callback. Factored out duplicated
code to the new dialogs_create_dock() utility function.
2003-06-06 Michael Natterer <mitch@gimp.org>
* app/widgets/gimpitemfactory.c (gimp_item_factory_set_label):
use gtk_label_set_text_with_mnemonic() instead of just
gtk_label_set_text().
* app/gui/image-menu.c
* app/gui/toolbox-menu.c: added mnemonics for all sub-menus.
Fixes bug #106991.
* app/gui/image-menu.c: cleaned up the "Layers" menu: moved
sub-menus together. Changed the "Stack" menu's labels and
accelerators and added "Select Top/Bottom Layer" for consistency
(bound to Home/End).
* app/gui/layers-commands.[ch]: changed accordingly. Added the
new select top/bottom callbacks.
2003-06-03 Michael Natterer <mitch@gimp.org>
* app/core/gimpimage-rotate.c (gimp_image_rotate_item_offset):
fixed offset calculation for 90 and 270 degree rotations.
* app/core/gimpimage-flip.c
* app/core/gimpimage-rotate.c
* app/core/gimpimage-scale.c: increase the progress also when
transforming the selection. Makes the progress appear more
continuous. Also clened up and simplified the progress code
in all files.
* app/core/gimpimage-resize.[ch]: added a progress like in the
files above.
* app/gui/image-commands.c (image_resize_callback): changed
accordingly.
(image_scale_implement): clened up and simplified a lot.
* tools/pdbgen/pdb/image.pdb: changed accordingly.
* app/pdb/image_cmds.c: regenerated.
2003-05-28 Michael Natterer <mitch@gimp.org>
* app/gui/image-menu.c
* app/gui/palette-editor-menu.c
* app/gui/view-commands.[ch]
* app/widgets/gimpgradienteditor.c
* app/widgets/gimppaletteeditor.[ch]: changed all places to show
zoom menu items and icons in ZOOM_OUT, ZOOM_IN order. In an attack
of consistency, also reordered all callbacks accordingly.
2003-05-27 Sven Neumann <sven@gimp.org>
* app/gui/vectors-commands.c (vectors_selection_to_vectors): don't
mark a string for translation which should never be used.
2003-05-27 Michael Natterer <mitch@gimp.org>
* app/gui/select-commands.c (select_save_cmd_callback): switch
to the "Channels" tab after adding the new channel.
Fixes bug #101970.
2003-05-26 Michael Natterer <mitch@gimp.org>
* app/widgets/gimppaletteeditor.[ch]
* app/gui/palette-editor-commands.[ch]
* app/gui/palette-editor-menu.c: started to clean up the palette
editor: added buttons for all menu items and menu items for all
buttons. Improved selected palette entry handling. Moved all code
to gimppaletteeditor.c and call it from the menu callbacks. Lots
of cleanup (unfinished).
2003-05-20 Michael Natterer <mitch@gimp.org>
* app/core/gimpchannel.c (gimp_channel_rotate): don't default to
clip_result == TRUE (unlike the other transform functions).
* app/core/gimpdrawable-transform.c
(gimp_drawable_transform_tiles_rotate): fixed offset calculation.
* app/core/gimpimage-rotate.c: change the image size *after* all items
are rotated. Adjust all items' offsets after rotation. Rotate the
resolutions too. Seems to work now and fixes bug #6101.
* app/core/gimpimage.c (gimp_image_size_changed): emit
"size_changed" on all vectors.
* app/core/gimpitem-linked.[ch]: added gimp_item_linked_rotate().
* app/gui/drawable-commands.c: flip and rotate linked items too.
* app/vectors/gimpvectors.c (gimp_vectors_rotate): fixed rotation
angles.
Unrelated:
* app/core/gimpimage-merge.c: don't #include "path.h".
2003-05-20 Sven Neumann <sven@gimp.org>
* app/core/core-enums.[ch]: added new enum GimpRotationType.
* app/core/Makefile.am
* app/core/gimpimage-rotate.[ch]: new files.
* app/core/gimpchannel.c
* app/core/gimpdrawable-transform.[ch]
* app/core/gimpdrawable.c
* app/core/gimpitem.[ch]
* app/core/gimplayer.c
* app/vectors/gimpvectors.c: added GimpItem::rotate. Still work in
progress.
* plug-ins/common/rotate.c: don't install any menu entries. The
plug-in is only kept around to provide plug_in_rotate for backward
compatibility.
* app/gui/drawable-commands.[ch]
* app/gui/image-commands.[ch]
* app/gui/image-menu.c: use the new rotate implementation and use
stock icons for the menu entries. Fixes bug #57797.
2003-05-19 Michael Natterer <mitch@gimp.org>
* app/gui/image-menu.c: moved the image flip entries to the
Image->Transform submenu and added flip entries to
Layer->Transform. Cleaned up the transform submenus.
* app/gui/drawable-commands.[ch]: added
drawable_flip_cmd_callback().
* tools/pdbgen/pdb/image.pdb: added a PDB wrapper for
gimp_image_flip().
* libgimp/gimpimage_pdb.[ch]
* app/pdb/image_cmds.c
* app/pdb/internal_procs.c: regenerated.
2003-05-18 Michael Natterer <mitch@gimp.org>
Implemented "Flip Image". Fixes bug #23179:
* app/core/core-enums.[ch]: added GIMP_UNDO_GROUP_IMAGE_FLIP.
* app/core/Makefile.am
* app/core/gimpimage-flip.[ch]: new files implementing
gimp_image_flip().
* app/gui/image-menu.c
* app/gui/image-commands.[ch]: added it to the "Image" menu.
* themes/Default/images/Makefile.am
* themes/Default/images/stock-flip-horizontal-16.png
* themes/Default/images/stock-flip-vertical-16.png
* libgimpwidgets/gimpstock.[ch]: added icons for the new
menu items.
Bugs found while hacking the stuff above:
* app/core/gimpdrawable-transform.c (gimp_drawable_transform_paste):
only call gimp_layer_add_alpha() if the pasted tiles have alpha.
* app/core/gimpimage-undo-push.c (undo_pop_channel_mod): fixed to
do the right thing if the channel is the selection mask.
2003-05-17 Michael Natterer <mitch@gimp.org>
Fixed File->Revert, which was completely broken before:
* app/gui/file-commands.c (file_revert_confirm_callback): set the
new image on all GimpContexts which had the old image set. Unref
the new image after the displays are reconnected.
Added some paranoia code for similar future situations (the
functions below were not broken, but affected by the above bug):
* app/display/gimpdisplay-handlers.c (gimp_display_disconnect):
set gdisp->gimage to NULL before unrefing the image.
* app/widgets/gimpimagedock.c (gimp_image_dock_image_changed):
unref the gimage pointer returned by g_object_get() only if it is
non-NULL. Cleanup.
2003-05-16 Michael Natterer <mitch@gimp.org>
* app/core/gimpimage-mask.[ch] (gimp_image_mask_extract): added
"gboolean cut_image" parameter so we can float selections
without cutting them from the original drawable.
* app/gui/select-commands.c
* tools/pdbgen/pdb/selection.pdb: pass cut_image == TRUE.
* app/pdb/selection_cmds.c: regenerated.
* app/tools/tools-enums.[ch]: added SELECTION_MOVE_COPY value
to the SelectOps enum.
* app/tools/gimpselectiontool.c: use the new mode when
<ctrl>+<alt>-dragging a selction (yes, this is evil but there are
no modifiers left).
* app/tools/gimpeditselectiontool.[ch]: extended EditType enum by
EDIT_MASK_COPY_TO_LAYER_TRANSLATE and pass cut_image == FALSE if
it's passed to init_edit_selection().
* app/tools/gimpfreeselecttool.c
* app/tools/gimpfuzzyselecttool.c
* app/tools/gimprectselecttool.c: pass the new mode to
GimpEditSelectionTool.
2003-05-16 Michael Natterer <mitch@gimp.org>
* app/gui/color-notebook.[ch]: added dialog_factory and
dialog_identifier parameters to the constructors and register the
color_notebook with the passed factory as foreign dialog.
* app/widgets/gimpcolorpanel.c: changed accordingly.
* app/gui/dialogs.c
* app/gui/colormap-editor-commands.c
* app/gui/gradient-editor-commands.c
* app/gui/palette-editor-commands.c
* app/widgets/gimptoolbox-color-area.c: added session management for
the color notebooks created here.
2003-05-16 Michael Natterer <mitch@gimp.org>
* app/gui/vectors-commands.c (vectors_sel_to_vectors_cmd_callback):
call vectors_selection_to_vectors() instead of #warning about
being unimplemented.
2003-05-15 Michael Natterer <mitch@gimp.org>
* app/gui/vectors-commands.[ch]: added new function
vectors_selection_to_vectors() which invokes the sel2path Plug-In.
* app/gui/dialogs-constructors.c: make the new function known to
GimpVectorTreeView.
* app/widgets/gimpvectorstreeview.[ch]: Added a "Selection to Path"
button anc call the new function.
2003-05-09 Michael Natterer <mitch@gimp.org>
* app/core/gimpitem.[ch]: added "gboolean push_undo" to
GimpItem::translate() and don't push and undo in
gimp_item_translate().
* app/core/gimpchannel.[ch]: removed public function
gimp_channel_translate() and implement GimpItem::translate().
* app/core/gimpimage-mask.c
* app/core/gimplayer.c: changed accordingly.
* app/vectors/gimpvectors.c: actually translate the vectors
in translate().
* app/gui/channels-commands.c (channels_new_channel_query): removed
useless call to gimp_channel_translate().
* app/tools/gimpeditselectiontool.c
* tools/pdbgen/pdb/layer.pdb: when translating a linked layer,
also translate all linked channels and vectors. Cleanup.
Note that the "linked" behaviour has changed: before this change,
moving a layer moved all linked layers unconditionally. Now,
linked layers/channels/vectors are moved *only* if the moved layer
is also linked (the linked items behave as a group now and moving
something not in the group does not affect the group).
* app/pdb/layer_cmds.c: regenerated.
2003-05-07 Michael Natterer <mitch@gimp.org>
Started to abstract item transformation so we can easily
transform multiple linked items later:
* app/core/gimpitem.[ch]: added new virtual function
GimpItem::scale() with the same signature as the former
gimp_layer_scale_lowlevel().
* app/core/gimpdrawable.c: implement scale() and do the
common parts of layer/channel scaling here.
* app/core/gimpchannel.[ch]
* app/core/gimplayer.[ch]: implement scale() for the
channel/layer specific parts of scaling.
* app/core/gimplayer.[ch]: renamed gimp_layer_scale() to
gimp_layer_scale_by_origin().
* app/vectors/gimpvectors.c: added empty scale() implementation.
* app/core/gimpimage-scale.c
* app/core/gimpimage-undo-push.c
* app/gui/layers-commands.c
* tools/pdbgen/pdb/layer.pdb: changed accordingly.
* app/pdb/layer_cmds.c: regenerated.
Unrelated:
* app/core/gimpimage-undo-push.c: fixed item rename undo to
take the size of the saved name into account. Removed old
path_undo stuff.
2003-05-02 Michael Natterer <mitch@gimp.org>
* app/widgets/gimpdialogfactory.[ch]: added new function
gimp_dialog_factory_add_foreign() which adds a dialog that was not
created by the factory itself. Its identifier however must be
registered with the factory. Connect to all toplevel dialogs'
"configure_event" and remember the resulting window geometry so we
get session management for *all* dialogs, not only for those which
were open on exit.
* app/gui/dialogs.c: added the "File New" dialog. Added foreign
entries (without constructor) for all dialogs opened by tools.
* app/gui/dialogs-constructors.[ch]: added a constructor for
the file_new dialog.
* app/gui/file-new-dialog.[ch]: renamed file_new_dialog_create()
to file_new_dialog_new() and removed the gimage and template
paramaters. Adder new function file_new_dialog_set() to set
gimage and template after creation.
* app/gui/file-commands.c
* app/gui/templates-commands.c: changed accordingly.
* app/tools/gimpimagemaptool.[ch]
* app/tools/gimptransformtool.[ch]: added
"const gchar *shell_identifier" to the tool structs. Register the
tool dialogs using gimp_dialog_factory_add_foreign().
* app/tools/gimpbrightnesscontrasttool.c
* app/tools/gimpcolorbalancetool.c
* app/tools/gimpcurvestool.c
* app/tools/gimphuesaturationtool.c
* app/tools/gimplevelstool.c
* app/tools/gimpperspectivetool.c
* app/tools/gimpposterizetool.c
* app/tools/gimprotatetool.c
* app/tools/gimpscaletool.c
* app/tools/gimpsheartool.c
* app/tools/gimpthresholdtool.c: set "shell_identifier" so the
dialogs become session managed. Fixes bug #61091.
* app/tools/gimpcroptool.c: register the crop dialog with the
dialog factory. Fixes bug #52849.
* app/tools/gimpcolorpickertool.c: ditto.
Unrelated:
* app/tools/gimptool.c: no need to cast the return value of
g_object_new().
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-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-04 Sven Neumann <sven@gimp.org>
* app/gui/image-menu.c (image_menu_set_zoom)
* app/gui/view-commands.c (view_zoom_other_cmd_callback): fixed
an issue with the new Zoom Ratio dialog.
2003-04-04 Sven Neumann <sven@gimp.org>
* app/display/gimpdisplayshell-scale.c
(gimp_display_shell_scale_fit): extended range of possible zoom
ratios like in the other scaling routines.
* app/display/gimpdisplayshell-scale.[ch]
* app/display/gimpdisplayshell.[ch]
* app/gui/image-menu.c
* app/gui/view-commands.[ch]: added a dialog to menually enter the
zoom ratio. Fixes bug #65057.
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-03-27 Michael Natterer <mitch@gimp.org>
* app/gui/channels-commands.c
* app/gui/file-new-dialog.c
* app/gui/layers-commands.c
* app/gui/vectors-commands.c: use layer, channel, ... icons for
the new layer, channel, ... dialogs.
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-22 Sven Neumann <sven@gimp.org>
* app/gui/layers-commands.c: always flush the image when applying
or discarding a layer mask. The active drawable may change and
make a menu update necessary (fixes bug #108958).
* app/widgets/gimplayertreeview.c: call gimp_image_flush() when
switching between layer and mask editing so the menus get updated.
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 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.
2003-03-18 Michael Natterer <mitch@gimp.org>
* app/core/gimpimage-mask.[ch] (gimp_image_mask_translate)
* app/core/gimplayer.[ch] (gimp_layer_translate): added
"gboolean push_undo" parameters.
* app/core/gimpimage-crop.c
* app/core/gimpimage-resize.c
* app/display/gimpdisplayshell-dnd.c
* app/gui/layers-commands.c
* app/widgets/gimptoolbox.c
* tools/pdbgen/pdb/layer.pdb
* tools/pdbgen/pdb/selection.pdb: changed accordingly.
* app/pdb/layer_cmds.c
* app/pdb/selection_cmds.c: regenerated.
* app/core/gimpimage-undo-push.c (undo_pop_layer_displace): call
gimp_layer_translate() with "push_undo == FALSE" instead of
duplicating gimp_layer_translate()'s code. Use GimpItemUndo for
GIMP_UNDO_MASK.
* app/tools/gimpeditselectiontool.c
(gimp_edit_selection_tool_cursor_key): check if the top undo on
the stack is of exactly the same type as the undo we would push
and just don't push it then (compresses layer translate undos and
fixes bug #86362). Changed stuff work with CAPS_LOCK or other
modifiers pressed.
2003-03-18 Michael Natterer <mitch@gimp.org>
Added an API for image colormap manupulation and made colormap
changes undoable (fixes bug #25963).
* app/core/Makefile.am
* app/core/gimpimage-colormap.[ch]: new files implementing
colormap getters/setters. The setters push undos using the
new function below.
* app/core/core-enums.[ch]: added GIMP_UNDO_IMAGE_COLORMAP.
* app/core/gimpimage-undo-push.[ch]: added
gimp_image_undo_push_image_colormap(). Use GimpItemUndo even more
often. Cleanup.
* app/core/gimpimage.[ch]: removed gimp_image_get_colormap() here.
* app/core/gimpimage-convert.c
* app/gui/colormap-editor-commands.c
* app/widgets/gimpcolormapeditor.c
* app/widgets/gimptoolbox.c
* tools/pdbgen/pdb/image.pdb: use the new API.
* app/pdb/image_cmds.c: regenerated.
* plug-ins/common/vinvert.c: removed the comment about the bug,
cosmetic cleanup.
Unrelated:
* app/gui/splash.c: added a frame around the splash. Please eek
if it doesn't please you.
2003-03-16 Michael Natterer <mitch@gimp.org>
Added GtkTreeView versions of layers/channels/vectors:
* app/core/core-enums.[ch]: renamed GIMP_UNDO_GROUP_LAYER_PROPERTIES
to GIMP_UNDO_GROUP_ITEM_PROPERTIES.
* app/core/gimpcontainer.c (gimp_container_reorder): don't try
to reorder containers with num_children == 1.
* app/core/gimpmarshal.list: added VOID: STRING, UINT marshaller.
* app/widgets/Makefile.am
* app/widgets/widgets-types.h
* app/widgets/gimpchanneltreeview.[ch]
* app/widgets/gimpdrawabletreeview.[ch]
* app/widgets/gimpitemtreeview.[ch]
* app/widgets/gimplayertreeview.[ch]
* app/widgets/gimpvectorstreeview.[ch]: new widgets.
* app/widgets/gimpcellrenderertoggle.c: draw the frame only if the
cell is prelit.
* app/widgets/gimpcellrendererviewable.[ch]: added "clicked"
signal, unref the renderer in finalize(). Set the renderer's
border color to black if the cell is not selected (a hack that
saves tons of code in GimpLayerTreeView).
* app/widgets/gimpcomponenteditor.c: no need to gtk_list_store_set()
stuff we just got from the store.
* app/widgets/gimpcontainertreeview.[ch]: added lots of state used
by the new subclasses to the GimpContainerTreeView struct. Create
the GtkListStore/GtkTreeView in GObject::constructor() and only
collect parameters in init() so subclasses can modify store/view
creation. Do most of the button_press_event stuff manually and
return TRUE from the handler.
* app/widgets/gimpcontainerview.c: cleanup.
* app/widgets/gimpitemlistview.h
* app/widgets/gimpvectorslistview.h: temp hacks before they die.
* app/widgets/gimppreviewrenderer.[ch]: added
gimp_preview_renderer_update_idle() which idle-emits "update"
without invalidating.
* app/gui/dialogs-constructors.[ch]
* app/gui/dialogs.c: added constructors for the new dialogs.
* app/gui/channels-commands.c
* app/gui/channels-menu.c
* app/gui/layers-commands.c
* app/gui/layers-menu.c
* app/gui/vectors-commands.c
* app/gui/vectors-menu.c: accept tree views as callback data.
2003-03-13 Sven Neumann <sven@gimp.org>
* app/gui/channels-commands.c: don't expose the internal term
"component", use "channel" instead.
2003-03-13 Sven Neumann <sven@gimp.org>
* POTFILES.in
* de.po: updated.
2003-03-12 Sven Neumann <sven@gimp.org>
* app/gui/image-menu.c: reordered the View menu, moved all
Zoom-related entries into a submenu. Use radio items for the zoom
ratio as suggested in bug #74385.
* app/gui/view-commands.c (view_zoom_cmd_callback): only call
gimp_display_shell_scale() if the item is active and the current
scale is different from the requested one.
* app/display/gimpdisplayshell.c (gimp_display_shell_real_scaled):
update the image menu so that the zoom ratio is displayed correctly.
* app/display/gimpdisplayshell-callbacks.c
(gimp_display_shell_canvas_realize): don't call
gimp_display_shell_scale_setup(), since it is done in the configure
event handler already.
2003-03-12 Michael Natterer <mitch@gimp.org>
* app/core/core-enums.[ch]: added descriptions to the
GimpChannelType enum.
* app/core/gimpimage.[ch]: added gimp_image_get_component_index()
utility function which does the GIMP_RED_CHANNEL -> RED_PIX etc.
mapping. Use it in all component getters/setters.
* app/widgets/gimpcomponenteditor.[ch]: new widget implementing
the component list using GtkListStore/GtkTreeView. Still a bit
ugly because it uses the standard check instead of the eye icon.
* app/widgets/gimpcomponentlistitem.[ch]: removed.
* app/widgets/Makefile.am
* app/widgets/widgets-types.h
* app/widgets/gimpvectorslistview.c: changed accordingly.
* app/widgets/gimpchannellistview.[ch]: create a GimpComponentEditor
and removed the old GtkList based stuff.
* app/widgets/gimpitemlistview.[ch]: keep around a pointer to the
GimpMenuFactory passed to the constructor.
* app/gui/channels-menu.c (channels_menu_update): do the right
thing if "data" is a GimpComponentEditor.
* app/gui/channels-commands.[ch]: ditto. Implemented duplicating
of components and component to selection (bug #61018).
2003-03-12 Sven Neumann <sven@gimp.org>
* app/core/gimpchannel.[ch]: added gimp_channel_new_from_component()
which creates a new GimpChannel from an image's color component.
* app/gui/channels-commands.[ch]: added
channels_duplicate_component_cmd_callback().
* app/paint-funcs/paint-funcs-generic.h
* app/paint-funcs/paint-funcs.[ch]: added code to extract a color
component from a PixelRegion (untested!).
* plug-ins/common/checkerboard.c: cosmetics.
2003-03-11 Michael Natterer <mitch@gimp.org>
* app/display/Makefile.am
* app/display/gimpdisplayshell-appearance.[ch]: new files
implementing canvas padding, fullscreen toggling and utility
functions to show/hide GimpDisplayShell components (menubar,
statusbar, ...) Added the possibility to show/hide the scrollbars.
* app/display/gimpdisplayshell.[ch]: added struct
GimpDisplayShellVisibility which stores the GUI components'
visibility. Added two such structs to the GimpDisplayShell struct:
one for normal mode and one for fullscreen mode. Default to
"everything invisible" for fullscreen. Fixes bug #74383.
* app/display/gimpdisplayshell-callbacks.c: fiddle with the
two visibility structs when toggling fullscreen.
* app/display/gimpdisplayshell-handlers.c: #include
"gimpdisplayshell-appearance.h"
* app/gui/image-menu.c
* app/gui/view-commands.[ch]: added a "Show Scrollbars" menu entry,
use the new widget show/hide utility functions.
2003-03-11 Sven Neumann <sven@gimp.org>
* app/display/gimpdisplayshell-callbacks.c
* app/display/gimpdisplayshell.[ch]
* app/gui/image-menu.c
* app/gui/view-commands.c: rewrote the fullscreen mode
implementation so that it doesn't loop infinitely.
2003-03-11 Sven Neumann <sven@gimp.org>
* app/display/gimpdisplayshell-callbacks.c
* app/display/gimpdisplayshell.[ch]
* app/gui/image-menu.c
* app/gui/view-commands.[ch]: added a fullscreen mode for the
image display by means of gtk_window_fullscreen/unfullscreen.
Depends on the window manager implementing _NET_WM_STATE_FULLSCREEN.
* app/tools/gimpcroptool.c: made gimp_crop_tool_draw() static.
* app/tools/gimptexttool.[ch]: derive from GimpDrawTool, no real
changes yet.
2003-03-10 Michael Natterer <mitch@gimp.org>
* app/widgets/gimpdataeditor.[ch]: added "gboolean data_editable"
which gets set in gimp_data_editor_real_set_data(). Set the name
entry insensitive if the data is not editable.
* app/widgets/gimpbrusheditor.c
* app/widgets/gimppaletteeditor.c
* app/widgets/gimpgradienteditor.c: look at editor->data_editable
instead of duplicating the logic in all subclasses.
* app/widgets/gimppreview.[ch]: added "gboolean expand" and
gimp_preview_set_expand() like in GtkPreview bacause smooth auto
resizing can only be done by the widget itself, not via external
callbacks.
* app/display/gimpnavigationview.c
* app/widgets/gimpbrusheditor.c
* app/widgets/gimpgradienteditor.c
* app/widgets/gimpselectioneditor.c: set expand == TRUE. Removed
"size_allocate" callbacks. They resize *much* smoother now.
Various cleanups.
* app/widgets/gimpnavigationpreview.c: recalculate the preview
coordinates when the size changes.
* app/widgets/Makefile.am
* app/widgets/widgets-types.h
* app/widgets/gimppreviewrenderer-utils.c
* app/widgets/gimppreviewrenderergradient.[ch]: new renderer which
is much faster because it projects the gradient without creating
intermediate buffers. Rendering can be restricted to an interval
from [left...right].
* app/widgets/gimpgradienteditor.[ch]: undeprecated by using
GimpPreview instead of GtkPreview. Cleanup.
* app/gui/gradient-editor-commands.c: changed accordingly.
2003-03-06 Michael Natterer <mitch@gimp.org>
* themes/Default/images/stock-delete-16.png
* themes/Default/images/stock-lower-16.png
* themes/Default/images/stock-new-16.png
* themes/Default/images/stock-paste-16.png
* themes/Default/images/stock-raise-16.png
* themes/Default/images/stock-refresh-16.png: removed these files
since we use the icons provided by GTK+ now.
* themes/Default/gtkrc
* themes/Default/images/Makefile.am: removed them here hoo.
* libgimpwidgets/gimpstock.[ch]: reordered stuff to be consistent
in the header and the .c file. Added GIMP_STOCK_ERROR and
GIMP_STOCK_QUESTION which are available in all sizes (unlike
GTK_STOCK_DIALOG_ERROR and GTK_STOCK_DIALOG_QUESTION).
* app/core/gimpviewable.c
* app/display/gimpdisplayshell.c
* app/gui/file-commands.c
* app/gui/file-new-dialog.c
* app/gui/file-save-dialog.c
* app/widgets/gimpwidgets-utils.c
* app/widgets/gimpdatafactoryview.c: use the new stock IDs.
* app/config/gimpcoreconfig.[ch]: renamed "preview_size" to
"layer_preview_size" and added "gboolean layer_previews" which
switches layer previews on/off independent of their size.
* app/config/gimprc-blurbs.h: added/changed their blurbs.
* app/core/core-enums.[ch]: removed GIMP_PREVIEW_SIZE_NONE.
* app/core/gimpdrawable-preview.c
* app/core/gimpdrawable.c
* app/core/gimpimage.c: return NULL previews if
core_config->layer_previews is FALSE. Invalidate all layer/channel
previews whenever "layer_previews" changes.
* app/widgets/gimppreviewrendererdrawable.c
* app/widgets/gimppreviewrendererimage.c: render the stock_id
if the drawable/image returns a NULL preview. Fixes bug #107242.
* app/display/gimpdisplayshell-handlers.c: don't set the
sensitivity of the navigation button because it can no longer be
disabled.
* app/display/gimpdisplayshell-layer-select.c
* app/gui/dialogs-constructors.c
* app/gui/dialogs.c
* app/gui/paths-dialog.c: changed accordingly.
* app/gui/preferences-dialog.c: added a toggle button for the new
"layer_previews" boolean.
* app/widgets/gimpcontainergridview.c
* app/widgets/gimpcontainerlistview.c: chain up unconditionally
in GimpContainerView::clear_items().
* app/widgets/gimpcontainertreeview.c: ditto. Made the reorder()
implementation lengthy and eeky (but working) again... Stop signal
emission on double clicks so GtkTreeView doesn't re-select the
item we are about change.
* app/widgets/gimpcontainerview.c
(gimp_container_view_real_clear_items): need to use
g_hash_table_new_full() here too or everything will b0rk.
* app/widgets/gimppreviewrenderer.c
(gimp_preview_renderer_default_render_stock): use
gtk_widget_render_icon() instead of gtk_icon_set_render_icon().
* tools/pdbgen/enums.pl: this file wanted to be regenerated...
2003-03-06 Sven Neumann <sven@gimp.org>
* app/core/gimpparasitelist.c: fixed parasite serialization that
I broke yesterday.
* app/widgets/gimpenummenu.c: added support for mnemonics.
* app/core/core-enums.h: removed the inverted variants from the
GimpAddMaskType enum. Registered the enum with the type system.
* app/core/gimplayer.c: changed accordingly.
* app/gui/layers-commands.c (layers_add_mask_query): use an enum
frame and added a check button that allows to invert the inital
layer mask.
* tools/pdbgen/pdb/layer.pdb: updated documentation for the
gimp-layer-create-mask PDB function.
* plug-ins/script-fu/siod-wrapper.c: removed new enum values from
the compatibility defines.
* app/core/core-enums.c
* app/pdb/layer_cmds.c
* libgimp/gimpenums.h
* libgimp/gimplayer_pdb.c
* plug-ins/pygimp/gimpenums.py
* plug-ins/script-fu/script-fu-constants.c
* tools/pdbgen/enums.pl: regenerated.
2003-03-05 Michael Natterer <mitch@gimp.org>
* app/file/file-save.[ch]: added GError reporting, removed
g_message() stuff.
* app/gui/file-commands.c
* app/gui/file-save-dialog.c: g_message() here if file_save_*()
returns an error.
* app/file/file-open.c: use the G_FILE_ERROR quark and the
GFileError enum for reporting errors. Removed g_message() if the
passed in GError** pointer is NULL (passing NULL as error return
location should never mean "show the error message yourself").
* app/app_procs.c
* app/gui/file-commands.c
* app/gui/file-open-dialog.c
* app/widgets/gimpdnd.c
* app/widgets/gimpdocumentview.c: g_message() here if file_open_*()
returns an error.
2003-03-04 Michael Natterer <mitch@gimp.org>
* app/file/file-save.[ch]: added new function file_save_as() which
always uses the uri and file_proc parameters passed and never
looks at the image's uri and file_proc. Renamed "gboolean set_uri"
to "set_uri_and_proc" and always set them both if the save
succeeded. Fixes bug #97835. Removed most parameters from
file_save() and made it a small wrapper around file_save_as().
* app/gui/file-commands.c (file_save_cmd_callback): changed
accordingly.
* app/gui/file-save-dialog.c: call file_save_as(), renamed
"set_uri" variables to "set_uri_and_proc".
2003-02-25 Sven Neumann <sven@gimp.org>
* app/display/gimpdisplayshell-callbacks.[ch]
* app/display/gimpdisplayshell.c: override GtkWidget::popup_menu()
so we popup the Image menu on the default shortcut (Shift F10).
* app/gui/image-menu.c (image_menu_entries): removed or replaced
shortcuts that use the Alt key. Added access keys to all toplevel
entries of the Image menu (see bug #106991).
* app/gui/tools-commands.[ch]: removed "Swap Contexts" functionality.
* app/widgets/gimpselectioneditor.[ch]: moved "Invert" button.
2003-02-24 Michael Natterer <mitch@gimp.org>
* app/gui/dialogs-commands.c (dialogs_toggle_view_cmd_callback):
fixed strstr() call so we can switch back from tree views again.
2003-02-21 Michael Natterer <mitch@gimp.org>
Refactored the GimpDisplayShell update/draw code:
* app/display/gimpdisplayshell.[ch]: removed the display_areas
list which used to hold the GimpAreas to update. Instead, simply
queue draws using gtk_widget_queue_draw[_area]() in
gimp_display_shell_expose_area(), _expose_full() and
_expose_guide(). Made all _draw() functions public because they
are now called from the "expose_event" handler. Removed rendering
from gimp_display_shell_flush() because stuff is now flushed
automatically by the gtk idle renderer.
* app/display/gimpdisplayshell-callbacks.c
(gimp_display_shell_canvas_expose): draw everything here (the code
removed from gimp_display_shell_flush() without the GimpArea list).
(gimp_display_shell_canvas_tool_events): return "return_val", not
TRUE if gimp->busy is TRUE. Fixes unupdated (windowk bg color)
display areas. Fixes bug #106595.
* app/display/gimpdisplay.c
* app/display/gimpdisplayshell-cursor.c
* app/display/gimpdisplayshell-filter-dialog.c
* app/display/gimpdisplayshell-handlers.c
* app/display/gimpdisplayshell-selection.c
* app/gui/view-commands.c: changed accordingly. Removed calls to
gimp_display_shell_flush() all over the place.
* app/display/gimpdisplayshell-scroll.c: replaced lots of code by
a single call to gdk_window_scroll().
2003-02-20 Michael Natterer <mitch@gimp.org>
* app/widgets/Makefile.am
* app/widgets/widgets-types.h
* app/widgets/gimpimageeditor.[ch]: new GimpEditor subclass adding
a GimpImage pointer and a virtual set_image() function.
* app/widgets/gimpcolormapeditor.[ch]
* app/widgets/gimpselectioneditor.[ch]
* app/widgets/gimpundoeditor.[ch]: derive them from GimpImageEditor.
Removed the public set_image() functions.
* app/gui/colormap-editor-commands.c
* app/gui/colormap-editor-menu.c: changed accordingly.
* app/gui/dialogs-constructors.c: removed lots of code duplication
and use the uniform GimpImageEditor API. Misc cleanups.
2003-02-17 Michael Natterer <mitch@gimp.org>
* app/core/gimpimage.[ch] (gimp_image_position_*): added
"undo_desc" parameters.
* app/core/gimpimage-undo-push.c: changed accordingly.
* app/widgets/gimpitemlistview.[ch]: moved the item stack
manipulation function pointers from the instance to the class
struct. Added lots of descriptive strings to be used by tooltips
and undo steps.
* app/widgets/gimpchannellistview.c
* app/widgets/gimpitemlistitem.c
* app/widgets/gimplayerlistview.[ch]
* app/widgets/gimpvectorslistview.c
* app/gui/dialogs-constructors.c
* app/gui/layers-commands.[ch]
* app/gui/vectors-commands.c: changed accordingly. Cleanup.
2003-02-12 Michael Natterer <mitch@gimp.org>
Moved the undo system to the core: Keep GimpUndoStack objects as
undo and redo stack. Use GimpUndo objects as members of the
stacks. GimpUndoStack is derived from GimpUndo and keeps undo
groups, so undo group handling is much simpler than before
(the whole group is just a single GimpUndo object on the
stack and not everything between group boundary markers).
* app/Makefile.am
* app/undo_types.h: removed.
* app/config/gimpcoreconfig.[ch]: added "gulong undo_size".
* app/config/gimprc-blurbs.h: and its blurb.
* app/core/core-enums.[ch]: added GimpUndoMode and GimpUndoType.
* app/core/core-types.h: removed UndoType, added GimpUndoAccumulator,
GimpUndoPopFunc and GimpUndoFreeFunc.
* app/core/gimpundo.[ch]: do everything the old "Undo" struct did.
Removed the virtual push() function and added free().
* app/core/gimpundostack.[ch]: keeps the new undo/redo stacks
and also acts as undo group.
* app/core/gimpimage-undo.[ch]: moved the undo apparatus here.
* app/core/gimpimage.[ch]: removed the old stuff.
* app/core/gimpmarshal.list: added marshaller needed for GimpUndo.
* app/undo.[ch]: removed the whole undo mechanism. Only the
actual undo pushing functions are left.
* app/undo_history.c
* app/gui/edit-commands.c
* app/gui/file-commands.c
* app/gui/image-menu.c
* app/gui/preferences-dialog.c
* app/tools/gimpeditselectiontool.c: changed accordingly.
2003-01-31 Michael Natterer <mitch@gimp.org>
* app/core/gimpitem.[ch]: added gimp_item_configure() and
gimp_item_copy().
* app/core/gimpdrawable.c (gimp_drawable_configure,copy): use them.
* app/vectors/gimpvectors.[ch]: added gimp_vectors_new(),
gimp_vectors_copy() and gimp_vectors_copy_points(). Use the new
GimpItem functions just as GimpDrawable does. Added a
get_memsize() implementation.
* app/vectors/gimpstroke.[ch]: made it a GimpObject and added
a get_memsize() implementation.
* app/undo.c: implemented vectors undo as if the new GimpVectors
functions above worked.
* app/gui/dialogs-constructors.c
* app/gui/vectors-commands.c
* app/tools/gimpvectortool.c: use gimp_vectors_new,copy().
2003-01-30 Michael Natterer <mitch@gimp.org>
* app/plug-in/plug-in.[ch]: renamed plug_in->busy to
plug_in->in_temp_proc. Added a stack of GMainLoops to each
plug-in. Added the "current_return_vals" to the PlugIn
struct. Renamed plug_in_kill() to plug_in_exit(). Removed
the stuff added below. Cleanup.
* app/plug-in/Makefile.am
* app/plug-in/plug-in-message.[ch]
* app/plug-in/plug-in-run.[ch]
* app/plug-in/plug-in-shm.[ch]: new files taking out functionality
from the overloaded plug-in.c. Added the code back in that implements
temp proc return messages (inside an #ifdef) because i don't
really get why it was removed on Sep 19 1998.
* app/plug-in/plug-ins.c: changed accordingly.
* app/plug-in/plug-in-def.c
* app/plug-in/plug-in-params.c: removed inclusion of <gtk/gtk.h>.
* app/gui/file-save-dialog.c
* app/gui/paths-dialog.c
* app/gui/plug-in-commands.c
* app/gui/plug-in-menus.c
* app/pdb/procedural_db.c
* app/widgets/gimphelp.c: changed plug-in includes accordingly.
* app/gui/plug-in-commands.c: don't use "the_gimp" from
"app_procs.h" but get it from the GimpItemFactory that invoked the
plug-in callback.
2003-01-13 Michael Natterer <mitch@gimp.org>
* app/gui/brushes-menu.[ch]
* app/gui/buffers-menu.[ch]
* app/gui/channels-menu.[ch]
* app/gui/colormap-editor-menu.[ch]
* app/gui/dialogs-menu.[ch]
* app/gui/documents-menu.[ch]
* app/gui/file-open-menu.[ch]
* app/gui/file-save-menu.[ch]
* app/gui/gradient-editor-menu.[ch]
* app/gui/gradients-menu.[ch]
* app/gui/image-menu.[ch]
* app/gui/images-menu.[ch]
* app/gui/layers-menu.[ch]
* app/gui/palette-editor-menu.[ch]
* app/gui/palettes-menu.[ch]
* app/gui/patterns-menu.[ch]
* app/gui/qmask-menu.[ch]
* app/gui/toolbox-menu.[ch]
* app/gui/vectors-menu.[ch]: new files, one per GimpItemFactory,
containing the menu entries and their setup and update funcs.
* app/gui/brushes-commands.[ch]
* app/gui/patterns-commands.[ch]: removed because they contained
only update funcs.
* app/gui/Makefile.am: changed accordingly. Split the huge
SOURCES list in smaller ones for menus and dialogs.
* app/gui/menus.[ch]: removed the menu entries and setup funcs.
Added MENU_SEPARATOR() and MENU_BRANCH() macros to the header.
Made some utility functions public.
* app/display/gimpdisplayshell.[ch]
* app/gui/buffers-commands.[ch]
* app/gui/channels-commands.[ch]
* app/gui/colormap-editor-commands.[ch]
* app/gui/dialogs-commands.[ch]
* app/gui/documents-commands.[ch]
* app/gui/gradient-editor-commands.[ch]
* app/gui/gradients-commands.[ch]
* app/gui/images-commands.[ch]
* app/gui/layers-commands.[ch]
* app/gui/palette-editor-commands.[ch]
* app/gui/palettes-commands.[ch]
* app/gui/qmask-commands.[ch]
* app/gui/vectors-commands.[ch]: removed the update funcs.
* app/gui/plug-in-menus.[ch]: renamed plug_in_set_menu_sensitivity()
to plug_in_menus_update(). Cleanup.
* app/gui/paths-dialog.[ch]: added the <Paths> entries here
so they will go away together with these files.
* app/gui/dialogs-constructors.c
* app/gui/drawable-commands.c: removed useless #includes.
2003-01-12 Michael Natterer <mitch@gimp.org>
* app/widgets/gimpitemlistview.c: pass the GimpItemListView as
"data" to the item_factory callbacks, not just a "Gimp" pointer.
* app/display/gimpdisplayshell.c: use
gtk_window_add_accel_group(), not gimp_window_add_accel_group()
because we now attach the menubar's accel group, which has the
GimpDisplay as callback data.
* app/display/gimpdisplayshell-callbacks.c: pass the GimpDisplay
as "popup_data" to *_item_factory_popup_with_data().
* app/gui/channels-commands.c
* app/gui/drawable-commands.c
* app/gui/layers-commands.c
* app/gui/vectors-commands.c: changed accordingly.
* app/widgets/gimpwidgets-utils.[ch]: removed
gimp_window_[add|remove]_accel_group() and
gimp_widget_get_callback_context() because they were evil hacks
which are no longer needed now that all item_factories have proper
callback data (no just Gimp pointers).
2003-01-10 Michael Natterer <mitch@gimp.org>
Move away from creating all item_factories statically in
menus_init() but create a new one for each place where one is
needed:
* app/widgets/Makefile.am
* app/widgets/widgets-types.h
* app/widgets/gimpmenufactory.[ch]: new factory which creates and
configures the GimpItemFactories it knows about on-the-fly.
* app/widgets/gimpitemfactory.[ch]: added
gimp_item_factory_update() which calls the "update_func". Added
"gboolean update_on_popup" so item_factories can be configured to
require manual updates (used for the <Image> factory).
* app/gui/menus.[ch]: create a "global_menu_factory" and register
all menus we have with it. Added various setup functions which
do stuff like adding the "Open Recent" menu or reorder plug-in
menu entries. Removed the debugging stuff...
* app/gui/Makefile.am
* app/gui/debug-commands.[ch]: ...and added it here.
* app/gui/gui.c: create the <Toolbox>, the popup-<Image> and the
<Paths> factories here because they are still global.
* app/gui/plug-in-menus.[ch]: changed the "image_factory"
parameters to "item_factory" and create/update the entries for the
passed item_factory only. Makes the whole stuff much more
straightforward.
* app/plug-in/plug-ins.c: don't call plug_in_make_menu().
* app/display/gimpdisplay.[ch]
* app/display/gimpdisplayshell.[ch]: added "menu_factory" and
"popup_factory" parameters to gimp_display_new() and
gimp_display_shell_new(). Create the menubar_factory and the
qmask_factory dynamically. Pass the shell, not a Gimp to the QMask
callbacks. Changed gimp_display_shell_set_menu_sensitivity() to
gimp_display_shell_menu_update() and don't call it directly (it's
a GimpItemFactory update_func now). Call gimp_item_factory_update()
on the resp. factories instead.
* app/gui/qmask-commands.c
* app/display/gimpdisplayshell-callbacks.c
* app/tools/gimpimagemaptool.c: changed accordingly.
* app/widgets/gimpbrusheditor.c
* app/widgets/gimpbrushfactoryview.[ch]
* app/widgets/gimpbufferview.[ch]
* app/widgets/gimpcolormapeditor.[ch]
* app/widgets/gimpcontainereditor.[ch]
* app/widgets/gimpdataeditor.[ch]
* app/widgets/gimpdatafactoryview.[ch]
* app/widgets/gimpdialogfactory.[ch]
* app/widgets/gimpdock.c
* app/widgets/gimpdockbook.[ch]
* app/widgets/gimpdocumentview.[ch]
* app/widgets/gimpgradienteditor.[ch]
* app/widgets/gimpimageview.[ch]
* app/widgets/gimpitemlistview.[ch]
* app/widgets/gimppaletteeditor.[ch]: pass around lots of
GimpMenuFactory pointers and menu_identifiers so all views can
create their item_factories themselves. Unref the factories when
they are no longer needed because they belong to the views now.
* app/gui/dialogs-commands.c
* app/gui/dialogs-constructors.c
* app/gui/dialogs.c
* app/gui/brush-select.c
* app/gui/gradient-select.c
* app/gui/palette-select.c
* app/gui/pattern-select.c: changed accordingly.
* app/gui/file-dialog-utils.[ch] (file_dialog_new): require
menu_factory and menu_identifier parameters.
* app/gui/file-open-dialog.[ch]
* app/gui/file-save-dialog.[ch]: removed file_*_dialog_menu_init()
(they went to menus.c as setup_funcs). Added file_*_dialog_set_type()
and moved the <Load> and <Save> factory callbacks to file-commands.c
* app/gui/file-commands.[ch]: changed accordingly.
* app/gui/view-commands.c: changed the statusbar, menubar, rulers
and guides callbacks to do their job only if the setting has
actually changed. Don't update whole item factories afterwards.
Instead, just change the state of the items that actually need
update.
Unrelated:
* app/core/gimpchannel.c (gimp_channel_init): set "bounds_known"
and friends to FALSE since we don't know that the new channel will
be empty (fixes QMask and probably other stuff).
* app/gui/image-commands.c
* app/gui/vectors-commands.c: cleanup.
2003-01-05 Manish Singh <yosh@gimp.org>
* many files in app, modules and libgimp*: cleanup, removed unecessary
G_OBJECT() casts. Should do the same for plug-ins, when more of them
get undeprecated.
2003-01-02 Michael Natterer <mitch@gimp.org>
Replaced Garry's fix for bug #98843 by a more general solution
which stops the active tool when an undo group start is pushed:
* app/core/gimpimage.[ch]: removed the "layer_merge" signal
and added "undo_start" instead.
* app/undo.c: emit "undo_start" in undo_push_group_start()
_before_ checking if gimage->undo_on is TRUE.
* app/tools/tool_manager.c: connect to "undo_start" and HALT the
active tool if neccessary.
* app/core/core-types.h: added EDIT_COPY_UNDO_GROUP.
* app/core/gimpedit.c: push an undo group around the copy
operation. Will probably have to add more undo group types to wrap
other critical image modifications with.
* app/core/gimpimage-merge.c
* app/gui/convert-dialog.c
* app/gui/edit-commands.c
* app/gui/test-commands.c
* app/tools/gimpimagemaptool.c: removed all special code to
stop the active tool.
2002-12-14 Michael Natterer <mitch@gimp.org>
* app/gui/plug-in-commands.c (plug_in_repeat_cmd_callback):
use gdisp->gimage->gimp instead of the_gimp.
* app/tools/gimpimagemaptool.c: pass update_popup == FALSE to
gimp_display_shell_set_menu_sensitivity().
2002-12-14 Sven Neumann <sven@gimp.org>
* app/gui/plug-in-commands.c (plug_in_repeat_cmd_callback): data
is not a Gimp pointer if this function is called from an image
menubar. Use the_gimp instead of crashing.
2002-12-14 Michael Natterer <mitch@gimp.org>
Changed menubar showing/hiding to work like rulers and statusbar:
* app/config/gimpconfig-blurbs.h
* app/config/gimpdisplayconfig.[ch]: renamed "menu_bar_per_display"
to "show_menubar". Removed GIMP_PARAM_RESTART flag.
* app/display/gimpdisplayshell.[ch]: chaged shell->item_factory to
shell->menubar_factory plus shell->popup_factory and always create
both of them. Added "gboolean update_popup" to
gimp_display_shell_set_menu_sensitivity() and call it recursively
with update_popup == TRUE if the display it is called for is the
active one.
* app/display/gimpdisplay.c
* app/display/gimpdisplayshell-callbacks.c: changed accordinly.
* app/gui/gui.c: ditto. Set the menu sensitivity of new displays.
* app/gui/menus.c: added "<Image>/View/Toggle Menubar" menu item.
Moved some factory initialization code from gimpdisplayshell.c
here.
* app/gui/view-commands.[ch]: added
view_toggle_menubar_cmd_callback(). Update the menu sensitivity
manually in all callbacks which don't call gimp_image_flush().
* app/gui/preferences-dialog.c (prefs_dialog_new): moved the "Show
Menubar" toggle to the "Appearance" frame of the "Image Windows"
page. Added an own frame for the display zoom/scaling settings.
(preferences_dialog_create): Attach config_copy and config_orig
using g_object_set_data_full() instead of just g_object_set_data()
plus a g_object_weak_ref().
(prefs_default_resolution_callback): set the resolution for both
fields of the "size_sizeentry" instead of setting it for "x"
twice.
2002-12-10 Michael Natterer <mitch@gimp.org>
The unbelievable happened: a menu bar per display (optionally)
* app/widgets/gimpitemfactory.[ch]: Added the possibility to have
more than one item factory per <Prefix>. Added
gimp_item_factories_set_foobar() variants of all functions which
set menu item properties (label, sensitive, ...). Removed
the #ifndef ENABLE_NLS code since that's no longer possible.
* app/widgets/gimptoolbox.c: made it robust againt the <Image>
factory not existing at the time of toolbox creation.
* app/config/gimpconfig-blurbs.h
* app/config/gimpdisplayconfig.[ch]: added boolean
"menu_bar_per_display" property.
* app/gui/preferences-dialog.c: added a toggle for the new option.
* app/gui/menus.[ch]: added menus_get_new_image_factory() as
temporary solution. Will add a GimpMenuFactory which creates the
item factories soon.
* app/display/gimpdisplayshell.c: add the menu bar if requested.
Changed widget packing slightly for the menu bar case.
* app/display/gimpdisplayshell-callbacks.c: changed accordingly.
Currently there is no right-click popup menu when we have a menu
bar. This will change soon.
* app/gui/file-dialog-utils.c
* app/gui/gui.c: use gimp_item_factories_set_foo().
* app/gui/channels-commands.c
* app/gui/dialogs-commands.c
* app/gui/dialogs-constructors.c
* app/gui/drawable-commands.c
* app/gui/edit-commands.c
* app/gui/file-commands.c
* app/gui/image-commands.c
* app/gui/layers-commands.c
* app/gui/plug-in-commands.c
* app/gui/select-commands.c
* app/gui/tools-commands.c
* app/gui/vectors-commands.c
* app/gui/view-commands.c: per-display item factories pass the
GimpDisplay as user_data to callbacks, not a Gimp. Changed all
return_if_no_foo() macros to handle both cases.
Cleaned up the plug-in menu stuff:
* app/plug-in/plug-in-types.h: removed PlugInMenuEntry type.
* app/plug-in/plug-ins.[ch]: added plug_ins_proc_def_add() as
counterpart to plug_ins_proc_def_remove(). Added
plug_ins_locale_domain() as counterpart to plug_ins_help_path().
Remember the locale domains just as the help paths. Changed
plug-in initialization so that their menus can be created multiple
times.
* app/plug-in/plug-in.[ch]: use plug_ins_proc_def_add() instead of
doing it manually.
* app/gui/plug-in-menus.[ch]: added plug_in_menus_init() which
just registers the locale domains. Changed plug_in_make_menu() to
take a list of proc_defs, not plug_ins_defs so it can be used
after plug-in query.
2002-12-05 Michael Natterer <mitch@gimp.org>
Cleaned up the exit process:
* app/core/gimp.[ch]: added an "exit" signal which carries a
"gboolean kill_it" parameter and has a boolean return value.
Added gimp_boolean_handled_accumulator() so the emission of "exit"
can be stopped by returning TRUE from a callback. Removed
gimp_shutdown() from the public API and made it "exit"'s default
implementation. Addec gimp_exit() to emit the signal.
* app/core/gimpmarshal.list: added BOOLEAN__BOOLEAN marshaller.
* app/gui/gui.[ch]: Replaced public functions gui_shutdown() and
gui_exit() by "exit" callbacks. g_signal_connect_after() the
latter so the shutdown order is correct.
* app/app_procs.[ch]: removed app_exit() and connect to "exit".
Split the exit stuff into normal and connect_after callbacks as
above.
* app/batch.c
* app/gui/file-commands.c
* tools/pdbgen/pdb/misc.pdb
* app/widgets/gimptoolbox.c: call gimp_exit() instead of
app_exit(). Don't #include "app_procs.h".
* app/pdb/misc_cmds.c: regenerated.
2002-12-03 Michael Natterer <mitch@gimp.org>
* libgimpwidgets/gimpcolorbutton.c: named the menu separator
"/fg-bg-separator", not just "/---".
* app/widgets/gimpcolorpanel.[ch]: added a GimpContext pointer to
get FG/BG from. Don't use "the_gimp" and don't include
"app_procs.h". Added gimp_color_panel_set_context(). Hide the
FG/BG menu entries if we have no context.
* app/gui/channels-commands.c
* app/gui/preferences-dialog.c
* app/gui/qmask-commands.c
* app/display/gimpdisplayshell.c: set the color_panel's context.
2002-12-02 Michael Natterer <mitch@gimp.org>
* app/core/gimpdata.[ch]: use GError for reporting load/save
errors. Added gimp_data_error_quark() and a GimpDataError enum.
Made simple virtual functions out of save(), get_extension()
and duplicate() because they don't need to be signals.
* app/core/gimpbrush.[ch]
* app/core/gimpbrushgenerated.[ch]
* app/core/gimpbrushpipe.[ch]
* app/core/gimpgradient.[ch]
* app/core/gimppalette.[ch]
* app/core/gimppattern.[ch]: changed accordingly. Set data->dirty
to FALSE in each _load() function.
* app/core/gimpdatafactory.[ch]: report GError messages here.
Changed the ugly factory->path pointer location hack to
factory->path_property_name and get the path from
factory->gimp->config. Added gimp_data_factory_data_duplicate()
implementation which was already declared in the header.
* app/core/gimp.c: pass the path property name to
gimp_data_factory_new().
* app/widgets/gimpdatafactoryview.c: removed the duplicate
implementation and call gimp_data_factory_data_duplicate().
* app/core/gimpgradient.[ch]: added gimp_gradient_save_as_pov().
* app/gui/gradients-commands.c: removed save_as_pov implementation
and call gimp_gradient_save_as_pov().
2002-11-30 Michael Natterer <mitch@gimp.org>
* app/base/base-types.h: removed the global "base_config" variable.
* app/base/base.[ch]: added "gboolean use_mmx" to base_init().
Don't #include "appenv.h". Pass around more parameters to reduce
the usage of the global "paint_options" pointer.
* app/app_procs.c: pass "use_mmx" to base_init().
* app/base/temp-buf.c: pass "temp_path" around internally. Declare
"base_config" extern and added a #warning.
* app/core/gimpdata.[ch]
* app/core/gimpbrush.[ch]
* app/core/gimpbrushgenerated.[ch]
* app/core/gimpbrushpipe.[ch]
* app/core/gimpgradient.[ch]
* app/core/gimppalette.[ch]
* app/core/gimppattern.[ch]: added "gboolean stingy_memory_use"
parameters to all _new(), _load() and _duplicate() functions.
* app/core/gimpmarshal.list: GimpData::duplicate needs an
OBJECT__BOOLEAN marshaller now.
* app/core/gimpdatafactory.[ch]: added a "Gimp" pointer so the
factory can find the config. Pass base_config->stingy_memory_use
to the GimpData functions changed above.
* app/core/gimp-gradients.c
* app/core/gimp.c
* app/core/gimppalette-import.c
* app/gui/palettes-commands.c
* app/widgets/gimpdatafactoryview.c: changed accordingly.
* app/core/gimpcontext.c: get "stingy_memory_use" from
context->gimp->config.
2002-11-14 Michael Natterer <mitch@gimp.org>
* app/gui/tools-commands.c (tools_select_cmd_callback): removed
the old hack which sets tool->gdisp. Fixes bug #98056.
* app/tools/gimpimagemaptool.c (gimp_image_map_tool_initialize):
set tool->gdisp here because the hack was there for tools which
implement initialize() and show dialogs when selected from the
menu. Also fixed wrong paramater to gimp_viewable_dialog_new().
2002-11-01 Michael Natterer <mitch@gimp.org>
* app/gui/file-open-dialog.[ch]: added "gimage" and "uri"
parameters to file_open_dialog_show(). If an image is passed, go
to that image's directory, for an uri, preselect the file.
Fixes bug #96779.
* app/gui/menus.c: pass "action" to file_open_cmd_callback() so we
can distinguish if it was invoked from the toolbox or an image.
* app/gui/file-commands.[ch]: if invoked from an image, pass it to
file_open_dialog_show().
* app/widgets/gimpdocumentview.c: pass the selected document's uri
to file_open_dialog_show().
* app/gui/file-save-dialog.c: use gimp_image_get_filename()
instead of fiddling with the image's uri manually.
2002-09-12 Michael Natterer <mitch@gimp.org>
* app/widgets/gimpdocumentview.[ch]
* app/gui/documents-commands.[ch]
* app/gui/menus.c: changed icon/variables/functions to say
"Remove" instead of "Delete" because "Delete" is misleading (we
don't delete the file but just remove the entry from the document
history).
2002-09-08 Michael Natterer <mitch@gimp.org>
* app/widgets/gimplayerlistview.c
* app/gui/channels-commands.c: some more auto-sizing spinbuttons.
* app/gui/offset-dialog.c: added mnemonics for "X" and "Y".
Dialog auto-hide cleanup:
* app/widgets/gimpviewabledialog.c: close the dialog when the
GimpViewable goes away (special cased GimpItems which become
invisible on "removed"). Close the dialog by syntesizing a
"delete_event" instead of simply hiding or destroying it so the
closing method of the dialog's user gets invoked.
* app/gui/resize-dialog.[ch]: don't do the same here. Simplifies
the API even more as we don't have to pass the object to watch any
more.
* app/gui/image-commands.c
* app/gui/layers-commands.c: changed accordingly.
* app/undo_history.c
* app/gui/convert-dialog.c
* app/gui/qmask-commands.c
* app/gui/vectors-commands.c: removed all dialog auto-hiding which
is now done by GimpViewableDialog. Also connect more close
callbacks to gtk_widget_destroy() and handle shell destruction
accordingly, so these pseudo widgets behave more like real ones.
Tool-dialog auto-hide fix:
* app/tools/tool_manager.c: never call a tool's initialize()
method with a NULL gdisp (I can't follow why we did this before
because it's conceptually broken and makes the semantics of
initialize() more than unclear).
To be sure, added g_return_if_fail(GIMP_IS_DISPLAY(gdisp)) to
tool_manager_initialize_active().
* app/tools/gimpbrightnesscontrasttool.c
* app/tools/gimpcolorbalancetool.c
* app/tools/gimpcurvestool.c
* app/tools/gimphistogramtool.c
* app/tools/gimphuesaturationtool.c
* app/tools/gimpimagemaptool.c
* app/tools/gimplevelstool.c
* app/tools/gimpposterizetool.c
* app/tools/gimpthresholdtool.c: removed the recently added code
for handling NULL displays in initialize().
2002-09-07 Michael Natterer <mitch@gimp.org>
* app/gui/file-new-dialog.c
* app/gui/offset-dialog.c
* app/gui/preferences-dialog.c
* app/gui/resolution-calibrate-dialog.c
* app/gui/user-install-dialog.c: replaced some more pixel sizes by
char sizes. Tweaked table spacings. Mnemonics.
* app/gui/info-dialog.[ch]: internal cleanup.
* app/gui/resize-dialog.[ch]: same here. Removed the "cancel_cb"
from the API and simply destroy the dialog on "Cancel". Makes the
dialog construction less weird.
* app/gui/image-commands.c
* app/gui/layers-commands.c: changed accordingly. Same cleanups
as above.
2002-09-02 Michael Natterer <mitch@gimp.org>
DND cleanup part 1:
* app/widgets/gimpdnd.[ch]: changed all gimp_dnd_*_dest_set() and
_unset() functions to _dest_add() and _dest_remove(). Switch from
using static arrays of GtkTargetEntries to dynamic GtkTargetLists.
The _add() and _remove() functions configure the drag dest
automatically if not already done, so there is no need to call
gtk_drag_dest_set() on the widget any more. Drag source cleanup
will follow...
Renamed silly function names gimp_gtk_* to gimp_dnd_*
* app/display/gimpdisplayshell.c
* app/tools/gimpblendtool.c
* app/widgets/gimpcolormapeditor.c
* app/widgets/gimpcontainerview.c
* app/widgets/gimpgradienteditor.c
* app/widgets/gimplistitem.c
* app/widgets/gimpmenuitem.c
* app/widgets/gimppreview.c
* app/widgets/gimppaletteeditor.c
* app/widgets/gimpselectioneditor.c
* app/widgets/gimptoolbox-color-area.c
* app/widgets/gimptoolbox-indicator-area.c
* app/widgets/gimptoolbox.c
* app/gui/about-dialog.c
* app/gui/color-select.c
* app/gui/device-status-dialog.c
* app/gui/tool-options-dialog.c: changed accordingly. Removed
all calls to gtk_drag_dest_set() and their GtkTargetEntry tables.
* app/widgets/gimpchannellistitem.c: enabled some commented out
dnd code (which will not work since dnd needs more love...)
* app/widgets/gimpitemlistview.[ch]: added a third
"gboolean interactive" parameter to GimpItemNewFunc.
* app/gui/channels-commands.[ch]
* app/gui/layers-commands.[ch]
* app/gui/vectors-commands.[ch]: if the new_item_func is called
with "interactive == FALSE", don't pop up a dialog but silently
create a new item of the image's size.
* app/widgets/gimpdrawablelistview.c: use the new feature to allow
color and pattern drops to the "New" button, which creates a new
layer/channel filled with the color/pattern.
(special feature for drc ;-)
* app/widgets/gimppaletteeditor.c: fixed event handling so we see
the context menu again. Also, don't redraw on "expose", since
GtkPreview does that for us.
2002-09-01 Michael Natterer <mitch@gimp.org>
GimpViewableDialogs everywhere, cleanup:
* libgimpwidgets/gimpstock.c: added texts for the RESIZE, SCALE
and CROP stock items.
* app/widgets/gimpviewabledialog.c: update the title when the
viewable's name changes.
* app/gui/color-notebook.[ch]: added color_notebook_viewable_new()
which creates a GimpViewableDialog.
* app/widgets/gimpgradienteditor.[ch]
* app/gui/colormap-editor-commands.c
* app/gui/file-new-dialog.c
* app/gui/gradient-editor-commands.c
* app/gui/palette-editor-commands.c
* app/undo_history.c: use GimpViewableDialogs and the new
color_notebook constructor.
* app/gui/convert-dialog.c: #include "widgets/gimpviewabledialog.h"
* app/gui/image-commands.c
* app/gui/info-dialog.c
* app/gui/resize-dialog.c: minor cleanups.
* app/gui/info-window.c: cleaned up the whole thing, esp. the
"Extended" page. Added HSV color display to the color picker
frame. Set the icons as frame titles, stuff...
* app/tools/gimpimagemaptool.[ch]: removed "shell_title",
"shell_name" and "stock_id" from the GimpImageMapTool struct
because they can be obtained from the tool's GimpToolInfo object.
* app/tools/gimpbrightnesscontrasttool.c
* app/tools/gimpcolorbalancetool.c
* app/tools/gimpcurvestool.c
* app/tools/gimphuesaturationtool.c
* app/tools/gimplevelstool.c
* app/tools/gimpposterizetool.c
* app/tools/gimpthresholdtool.c: changed accordingly.
* app/tools/gimphistogramtool.c: same here: take values from
tool->tool_info instead of hardcoding them.
* app/tools/gimpcroptool.[ch]: removed the static crop dialog
variables and added them to the GimpCropTool struct. Feels safer
and makes the callback code much simpler. Use stock items for the
dialog's "Resize" and "Crop" buttons.
* app/tools/gimpmeasuretool.c
* app/tools/gimprotatetool.c: for consistency don't name the tools
"Blah Tool", also the dialog titles need to match the menu
entries.
Unrelated:
* libgimpwidgets/gimpwidgets.c: the recently changed, gtk-doc
comment was correct, as gtk-doc takes the parameter names from
the header, not the .c file.
* app/tools/gimptransformtool.c: set the transform tool's state to
TRANSFORM_CREATING after changing displays, so the initial matrix
components are saved correctly for the "Reset" function.
2002-08-30 Michael Natterer <mitch@gimp.org>
* app/widgets/Makefile.am
* app/widgets/widgets-types.h
* app/widgets/gimpviewabledialog.[ch]: new dialog widget featuring
a title bar containing a stock icon, a description, the viewable's
name and a preview. Will be used for all viewable related dialogs
and serves as a common place to control their look & feel.
* app/tools/gimpimagemaptool.[ch]: removed the code which did
almost the same and use GimpViewableDialog.
* app/gui/info-dialog.[ch]: extended the API so it has enough
information to create a GimpViewableDialog.
* app/gui/channels-commands.c
* app/gui/convert-dialog.c
* app/gui/gradient-editor-commands.c
* app/gui/image-commands.c
* app/gui/info-window.c
* app/gui/layers-commands.c
* app/gui/offset-dialog.c
* app/gui/qmask-commands.c
* app/gui/resize-dialog.c
* app/gui/vectors-commands.c
* app/tools/gimpcolorpickertool.c
* app/tools/gimpcroptool.c
* app/tools/gimphistogramtool.c
* app/tools/gimpmeasuretool.c
* app/tools/gimpperspectivetool.c
* app/tools/gimprotatetool.c
* app/tools/gimpscaletool.c
* app/tools/gimpsheartool.c: use GimpViewableDialogs
* themes/Default/gtkrc: apply the dialog style to "*Gimp*Dialog*",
not only "*GimpDialog*" so it covers GimpViewableDialog.
2002-08-27 Sven Neumann <sven@gimp.org>
* app/gui/menus.c
* app/gui/select-commands.[ch]: added a menu entry that toggles
the QuickMask state and bound Shift-Q to it (bug #86580).
2002-08-20 Michael Natterer <mitch@gimp.org>
Make sure the selection (gimpimage-mask.c) functionality is really
built *on top* of the GimpChannel functionality:
* app/undo.[ch]: renamed undo_push_image_mask() to
undo_push_mask() and generalized it's API to take a GimpChannel
param so undos can be pushed for channels which are not the
image's selection. Simplified the API and added code which copies
the region of interest instead of leaving this to callers.
* app/undo_types.h: s/IMAGE_MASK_UNDO/MASK_UNDO/
* app/undo_history.c: changed accordingly.
* app/core/gimpchannel.[ch]: don't #include "gimpimage-mask.h".
Changed gimp_channel_push_undo() to really push a channel undo,
not a selection undo. Added "gboolean push_undo" params to all
functions which are called from gimpimage-mask.c. Various cleanups
and optimizations. Added /*< proxy-foo >*/ stuff to the header so
we export just the struct itself to libgimpproxy. Added accessors
gimp_channel_[get|set]_show_masked().
* app/core/gimpimage-mask.[ch]: renamed gimp_image_mask_undo() to
gimp_image_mask_push_undo(). Call it before calling GimpChannel
functions which modify the mask, also call all GimpChannel
functions with push_undo = FALSE. Emit gimp_image_mask_changed()
after each operation instead of calling it in
gimp_image_mask_invalidate(). Removed gimp_image_mask_none()
because it is the same as gimp_image_mask_clear().
General cleanup.
* app/core/gimpimage-mask-select.c
* app/core/gimpimage-qmask.c: changed accordingly.
* app/core/gimpedit.c: call gimp_image_mask_clear(), not
gimp_channel_clear (gimp_image_get_mask()).
* app/core/gimpimage-crop.c
* app/core/gimpimage-resize.c
* app/core/gimpimage-scale.c: call gimp_image_mask_changed()
* app/gui/channels-commands.c
* app/gui/select-commands.c
* app/tools/gimptexttool.c
* tools/pdbgen/pdb/channel.pdb
* tools/pdbgen/pdb/selection.pdb: follow GimpChannel and
gimp_image_mask* API changes.
* app/pdb/channel_cmds.c
* app/pdb/selection_cmds.c
* libgimpproxy/gimpchannel.h: regenerated.
Unrelated:
* app/core/gimpimage.c: call gimp_drawable_push_undo() instead of
undo_push_image() directly.
2002-06-27 Michael Natterer <mitch@gimp.org>
* app/display/gimpdisplay.[ch]: removed gdisp->scale,
gdisp->dot_for_dot, the scaling marcos and the
gdisplay_[un]transform[_f]() functions.
* app/display/gimpdisplayshell.[ch]: added them here. Named the
transform functions gimp_display_shell_[un]transform_xy[_f]().
Made the gimp_display_shell_[un]transform_coords() functions copy
all values of the GimpCoords struct, not just x and y.
* app/display/gimpstatusbar.[ch]: keep a pointer to
GimpDisplayShell, not GimpDisplay.
* app/display/gimpdisplayshell-callbacks.c
* app/display/gimpdisplayshell-render.c
* app/display/gimpdisplayshell-scale.c
* app/display/gimpdisplayshell-scroll.c
* app/display/gimpdisplayshell-selection.c
* app/display/gimpnavigationview.c
* app/gui/image-commands.c
* app/gui/info-window.c
* app/gui/select-commands.c
* app/gui/view-commands.c
* app/tools/gimpbezierselecttool.c
* app/tools/gimpcroptool.c
* app/tools/gimpdrawtool.c
* app/tools/gimpeditselectiontool.c
* app/tools/gimpmagnifytool.c
* app/tools/gimpmeasuretool.c
* app/tools/gimpmovetool.c
* app/tools/gimppainttool.c
* app/tools/gimppathtool.c
* app/tools/gimprotatetool.c
* app/tools/gimpscaletool.c
* app/tools/gimpvectortool.c: changed accordingly.
* app/gui/layers-commands.c: if(gimage->selection_mask) is always
TRUE, use if(!gimp_image_mask_is_empty(gimage)) instead.
* app/tools/gimpfuzzyselecttool.[ch]: moved global variables
to the object struct.
2002-06-12 Michael Natterer <mitch@gimp.org>
* app/core/gimpdata.[ch]: added a boolean "internal" which
indicates that the data object is an automatically created
internal object. Changed the code to refuse saving to deleting
internal objects.
* app/core/Makefile.am
* app/core/gimp-gradients.[ch]: new files implementing internal
gradients (FG -> BG in RGB and HSV and FG -> transparent).
* app/core/gimp.c: call gimp_gradients_init().
* app/core/gimpdatafactory.c (gimp_data_factory_data_free): don't
free internal objects so they stay there on "Refresh".
* app/core/gimpdatalist.c: sort internal objects to the beginning
of the list.
* app/widgets/gimpdataeditor.c: refuse to change the name of
internal objects.
* app/widgets/gimpdatafactoryview.c: set the "Delete" button
insensitive for internal objects.
* app/widgets/gimpgradienteditor.c: refuse to edit internal
gradients, just display them so color picking works.
* app/gui/brushes-commands.c
* app/gui/gradients-commands.c
* app/gui/palettes-commands.c
* app/gui/patterns-commands.c: set the "Delete" menu item
insensitive for internal objects.
* app/gui/gui.c: need to call render_setup() earlier because of
you-dont-want-to-know-why. Will change it back once the previews
have their own render buffers.
* app/tools/gimpblendtool.c: Replaced the "Type" menu by a preview
showing the active gradient. Clicking the preview pops up the
gradient selection. Renamed the "Gradient" menu to "Shape". Removed
"blend_mode" from the BlendOptions struct because we always use
"custom" mode now.
2002-05-13 Sven Neumann <sven@gimp.org>
* app/widgets/gimpenummenu.[ch]: added _with_range variants for all
enum menu widgets that limit the range of choices.
* app/gui/file-new-dialog.c
* app/gui/layers-commands.c
* app/gui/preferences-dialog.c: use GimpEnumMenus with ranges.
2002-05-13 Sven Neumann <sven@gimp.org>
* app/core/core-enums.[ch]: registered GimpFillType enum and added
translatable names to GimpImageBaseType.
* app/core/gimp.[ch]
* app/core/gimpedit.c
* app/core/gimpimage-new.[ch]: removed gimp_image_new_[init|exit]()
where we used to create names for the enums mentioned above. Dropped
gimp_image_new_set_have_current_cut_buffer() in favor of accessing
the value directly.
* app/gui/file-new-dialog.c (file_new_dialog_create)
* app/gui/layers-commands.c (layers_new_layer_query): use
GimpEnumMenus to choose the base_type and fill_type.
2002-05-10 Michael Natterer <mitch@gimp.org>
* app/display/gimpdisplay.c: added a read-only property for the
display's image, so it can be retreived by the core, which
treats displays as simple GimpObjects.
* app/core/gimpcontext.c: made context->display an object
property, not just gpointer. Connect to the "remove" signal of
gimp->displays to get notified of disappearing displays. Removed
the EEKWrapper and get the display's gimage with g_object_get().
* app/widgets/gimpimagedock.[ch]: added image_dock->display_container
and require it being passed in the constructor. Do voodoo things
in the "image_changed" and "display_changed" callbacks to ensure
that the dock doesn't end up with no display even if the active
image has one. Added a style property for the image menu's preview
size.
* app/gui/dialogs-commands.c (dialogs_menu_update): set the
"View as List" and "View as Grid" items insensitive if the
other view type doesn't exist. Hide them if the view cannot
be classified as "list" or "grid" at all. Also hide the
"Preview Size" submenu if it's pointless for the view.
* app/gui/dialogs-constructors.c: added a special tab for the
navigation dialog. Will propbaby add dockable->stock_id to
generalize this kind of tab. Pass gimp->displays to
gimp_image_dock_new().
* app/gui/menus.c: reordered the "<Dialogs>" factory entries,
added more stock icons, cleanup.
* etc/gtkrc_user
* themes/Default/gtkrc: document usage of GimpImageDock's
"menu_preview_height" property.
2002-05-08 Michael Natterer <mitch@gimp.org>
Started to get rid of the gdisplays_foo() functions in
app/display/gimpdisplay-foreach.[ch]. Work in progress...
* app/core/gimp.[ch]: added the display list to the Gimp object
(as a GimpList of GimpObjects). This way we get more independent
from whether there is GUI or not, as gimp->displays will simply
be an empty list for the --no-interface case.
* app/display/gimpdisplay.[ch]: Removed the global "display_list"
and "display_num" variables. Use gimp->displays instead.
* app/display/gimpdisplay-foreach.[ch]: renamed most functions
from gdisplays_foo() to gimp_displays_foo() and pass them a Gimp
pointer.
* app/core/gimpimage.[ch]: added a "flush" signal.
* app/display/gimpdisplay-handlers.c: connect to "flush" and call
gimp_display_flush() in the callback.
* tools/pdbgen/pdb/display.pdb: use gimp_displays_flush(gimp)
here and only here.
* app/pdb/display_cmds.c: regenerated.
* app/app_procs.c
* app/gui/gui.c
* app/gui/preferences-dialog.c:
s/gdislays_foo()/gimp_displays_foo(gimp)/
* app/image_map.c
* app/undo_history.c
* app/display/gimpdisplayshell-callbacks.c
* app/display/gimpdisplayshell-dnd.c
* app/display/gimpdisplayshell-layer-select.c
* app/display/gimpdisplayshell-scale.c
* app/gui/channels-commands.c
* app/gui/colormap-editor-commands.c
* app/gui/convert-dialog.c
* app/gui/drawable-commands.c
* app/gui/edit-commands.c
* app/gui/file-commands.c
* app/gui/image-commands.c
* app/gui/layers-commands.c
* app/gui/offset-dialog.c
* app/gui/qmask-commands.c
* app/gui/select-commands.c
* app/gui/vectors-commands.c
* app/paint/gimpairbrush.c
* app/tools/gimpbezierselecttool.c
* app/tools/gimpblendtool.c
* app/tools/gimpbrightnesscontrasttool.c
* app/tools/gimpbucketfilltool.c
* app/tools/gimpbycolorselecttool.c
* app/tools/gimpcolorbalancetool.c
* app/tools/gimpcurvestool.c
* app/tools/gimpeditselectiontool.c
* app/tools/gimpfreeselecttool.c
* app/tools/gimpfuzzyselecttool.c
* app/tools/gimphuesaturationtool.c
* app/tools/gimpinktool.c
* app/tools/gimpiscissorstool.c
* app/tools/gimplevelstool.c
* app/tools/gimpmeasuretool.c
* app/tools/gimpmovetool.c
* app/tools/gimppainttool.c
* app/tools/gimpposterizetool.c
* app/tools/gimprectselecttool.c
* app/tools/gimptexttool.c
* app/tools/gimpthresholdtool.c
* app/tools/gimptransformtool.c
* app/tools/gimpvectortool.c
* app/widgets/gimpbufferview.c
* app/widgets/gimpchannellistview.c
* app/widgets/gimpcomponentlistitem.c
* app/widgets/gimpdocumentview.c
* app/widgets/gimpdrawablelistitem.c
* app/widgets/gimpdrawablelistview.c
* app/widgets/gimpimageview.c
* app/widgets/gimpitemlistitem.c
* app/widgets/gimpitemlistview.c
* app/widgets/gimplayerlistitem.c
* app/widgets/gimplayerlistview.c
* app/widgets/gimpvectorslistview.c: replaced gdisplays_flush()
with calls to gimp_image_flush(gimage). Removed inclusion of
"display/gimpdisplay-foreach.h" from most files.
2002-05-08 Michael Natterer <mitch@gimp.org>
* app/core/gimp.h: removed unused commented out prototype.
* app/core/gimpimage.c (gimp_image_set_tattoo_state): fixed it
again after I have b0rked it when using vectors instead of paths.
* app/display/gimpdisplay.c: some comments and one more
g_return_val_if_fail().
* app/widgets/gimpimagedock.c: more fixes for the subtle
active_image <-> active_display difference.
* tools/pdbgen/pdb/display.pdb (gimp_display_delete): call
gimp_display_delete() instead of just destroying it's shell (eek).
* app/pdb/display_cmds.c: regenerated.
Added a special view type for the image list so we can implement
stuff like deleting images which are left over from crashed
plug-ins:
* app/widgets/Makefile.am
* app/widgets/widgets-types.h
* app/widgets/gimpimageview.[ch]: new widget: a view on the image
container.
* app/gui/Makefile.am
* app/gui/images-commands.[ch]: new callbacks for it's context menu.
* app/gui/dialogs-constructors.c: use the new widget instead of
plain GimpContainerViews.
* app/gui/menus.c: added an item_factory for it.
2002-05-07 Michael Natterer <mitch@gimp.org>
* app/Makefile.am
* app/nav_window.[ch]: removed.
* app/display/Makefile.am
* app/display/display-types.h
* app/display/gimpnavigationview.[ch]: new widget partially based
on the removed nav_window.
* libgimpproxy/gimpproxytypes.h: regnenerated.
* app/display/gimpdisplay-foreach.[ch]: removed
gdisplays_nav_preview_resized(). The new config system will allow
us to get notified of changes.
* app/display/gimpdisplayshell.[ch]: added "scaled" and "scrolled"
signals.
* app/display/gimpdisplayshell-scale.c
* app/display/gimpdisplayshell-scroll.c: emit "scaled" and
"scrolled" appropriately. Removed nav_window stuff.
* app/display/gimpdisplay.c
* app/display/gimpdisplayshell-callbacks.c: changed accordingly.
* app/gui/dialogs-constructors.[ch]
* app/gui/dialogs.c
* app/gui/menus.c: made the navigation dialog dockable.
* app/gui/view-commands.c: changed the nav_dialog callback accordingly.
* app/gui/preferences-dialog.c
* app/gimprc.[ch]
* app/config/gimpguiconfig.[ch]: removed "nav_window_per_display"
as it's now a dockable and it's state is saved in sessionrc.
* app/widgets/gimpnavigationpreview.[ch]: added context sensitive
mouse cursors.
* app/widgets/gimpimagedock.c: made it capable of holding
display-related dialogs (like GimpNavigationView) by connecting
to the context's "display_changed" signal.
* app/widgets/widgets-types.h: removed inclusion of
"display/display-types.h".
* app/widgets/gimpbufferview.c
* app/widgets/gimpchannellistview.c
* app/widgets/gimpcolormapeditor.c
* app/widgets/gimpcomponentlistitem.c
* app/widgets/gimpdocumentview.c
* app/widgets/gimpdrawablelistitem.c
* app/widgets/gimpdrawablelistview.c
* app/widgets/gimpitemlistitem.c
* app/widgets/gimpitemlistview.c
* app/widgets/gimplayerlistitem.c
* app/widgets/gimplayerlistview.c
* app/widgets/gimppreview.c
* app/widgets/gimpvectorslistview.c: warn about inclusion of
"display/display-types.h".
2002-05-05 Michael Natterer <mitch@gimp.org>
* app/Makefile.am
* app/gimphelp.[ch]: removed...
* app/widgets/Makefile.am
* app/widgets/gimphelp.[ch]: ...and added here.
* app/widgets/widgets-enums.[ch]: added GimpHelpBrowserType here
as registered enum. Added an evil hack with GimpCursorType so
app/config/gimpguiconfig.h can include this file.
* app/widgets/gimpcursor.c: added an assertion because of the
changed GimpCursorType.
* app/config/gimpguiconfig.[ch]: added a property for the help
browser type.
* app/gimprc.c
* app/libgimp_glue.c
* app/gui/preferences-dialog.c
* tools/pdbgen/pdb/help.pdb
* app/pdb/help_cmds.c: regenerated.
Some nav_window cleanup before chopping:
* app/nav_window.[ch]: removed the old preview code and use
GimpNavigationPreviews only. Namespaceified all functions. Speak
in terms of GimpDisplayShell, not GimpDisplay. Lots of internal
cleanup.
* app/gui/gui-types.h: removed NadiagtionDialog here...
* app/display/display-types.h: ...and added it here.
* app/display/gimpdisplayshell-callbacks.[ch]: added a callback
for the navigation button and call nav_window_show_popup() from there.
* app/display/gimpdisplayshell.c: free shell->nav_dialog
unconditionally, connect to the new callback.
* app/display/gimpdisplayshell-scale.c
* app/display/gimpdisplayshell-scroll.c
* app/gui/view-commands.c: changed accordingly.
* app/widgets/gimppreview.c (gimp_preview_set_viewable): the
assertion introduced recently was too tight, breaking
GimpNavigationPreview. Changed it to do an "is a" check, not exact
preview type matching.
* app/widgets/gimpimagepreview.c: added quick-hack support for
xres != yres.
* app/widgets/gimpnavigationpreview.[ch]: made
gimp_navigation_preview_grab_pointer() public so the nav_window
can call it.
Unrelated:
* app/display/gimpdisplay.c: removed the gui/ dependency from this
file by removing info_window stuff.
* app/display/gimpdisplayshell.c (gimp_display_shell_flush): update
the info_window here.
* app/gui/dialogs-constructors.c (dialogs_indexed_palette_new): call
gimp_dockable_set_context() like all other constructors.
* app/undo.c
* app/paint/gimppaintcore.h: some more include cleanup.
2002-04-29 Michael Natterer <mitch@gimp.org>
* app/core/gimpviewable.[ch]: added "gchar *name_changed_signal"
to GimpViewableClass which defaults to "name_changed".
* app/widgets/gimplistitem.c
* app/widgets/gimpmenuitem.c: connect to
viewable_class->name_changed_signal instead of just
"name_changed". Fixed possible UI inconsistency where the previous
viewable's tooltip would have been displayed.
* app/core/gimpimagefile.[ch]: set name_changed_signal to
"info_changed" so views can update their tooltips correctly.
Merged the separate image_state and thumb_state states into one
state variable and extended the state enum. Added description
strings for all states. Show the file size for all files, not only
for those with a thumbnail. Enabled display of outdated
thumbnails.
* app/gui/file-open-dialog.c: some changes because
gimp_imagefile_get_description() returns 3 instead of 2 lines of
text now.
* app/widgets/gimpcontainerview-utils.c: show the imagefile's
description in the tooltip.
* app/gui/menus.c
* app/gui/documents-commands.[ch]
* app/widgets/gimpdocumentview.c: added functions to remove
"dangling" document history entries. Updated the context menu so
all functions can be accessed through it.
2002-04-19 Michael Natterer <mitch@gimp.org>
* app/file/file-open.[ch]: all functions return the opened image
and the pdb status plus a GError now. Removed all g_message()
calls from file_open_image(). Instead, display all error messages
in file_open_with_proc_and_display() if it got no error return
location passed.
* app/app_procs.c
* app/core/gimpimagefile.c
* app/gui/file-commands.c
* app/gui/file-open-dialog.c
* app/widgets/gimpdnd.c
* app/widgets/gimpdocumentview.c: changed accordingly.
* app/gui/file-open-dialog.c: only treat the "entered_filename" as
URI if it contains "://".
2002-04-14 Michael Natterer <mitch@gimp.org>
Use UTF-8 encoded escaped URIs for GimpImage and GimpImageFile.
* app/file/file-open.[ch]
* app/file/file-save.[ch]
* app/file/file-utils.[ch]: port everything to using URIs, removed
file_open_absolute_filename() and added file_utils_filename_to_uri()
instead.
* app/core/gimpimage.[ch]: added gimp_image_[get|set]_uri() which
works like the old gimp_image_[get|set]_filename().
Changed gimp_image_[get|set]_filename() to call uri conversion
functions.
* app/app_procs.c: removed lots of code and use the new uri
functions to open images passed on the command line.
* app/gui/file-open-dialog.c
* app/gui/file-save-dialog.c: changed accordingly.
* app/nav_window.c
* app/undo_history.c
* app/display/gimpdisplayshell.c
* app/gui/info-window.c
* app/gui/palette-import-dialog.c
* app/tools/gimpbycolorselecttool.c
* app/widgets/gimpcontainerview-utils.c:
s/gimp_image_get_filename()/gimp_image_get_uri()/g. Need to add
a utility function which returns the basename in unescaped UTF-8.
* app/gui/file-commands.c
* app/widgets/gimpdocumentview.c: use "uri", not "filename" as
variable name where appropriate.
* app/gui/menus.c: some broken code for the "Open Recent" items,
will be fixed soon...
* app/widgets/gimpdnd.c: evil (!!!) hackery to convert dropped
filenames to uris.
* tools/pdbgen/pdb/fileops.pdb: changed accordingly. Clarified
the meaning of the "raw_filename" parameter.
* tools/pdbgen/pdb/message.pdb: use g_message("%s", message),
*not* g_message(message).
* app/pdb/fileops_cmds.c
* app/pdb/message_cmds.c
* libgimp/gimpfileops_pdb.c: regenerated.
2002-04-14 Michael Natterer <mitch@gimp.org>
* app/core/gimp.c: removed some #if 0'ed stuff.
* app/gui/edit-commands.c (edit_copy_cmd_callback): call
gdisplays_flush() so the menus are updated correctly.
* app/widgets/gimpitemfactory.c (gimp_item_factory_set_color):
pack the original menu item label with TRUE, TRUE into the created
hbox so it's accel. label is visible.
2002-04-12 Michael Natterer <mitch@gimp.org>
* app/core/gimpimage-crop.c: reordered some lines, no logic
changed.
* app/core/gimplayer.[ch]: made gimp_layer_pick_correlate()
return a gboolean, not gint.
* app/display/gimpdisplayshell.c
* app/gui/layers-commands.[ch]
* app/gui/menus.c: added "<Image>/Layers/Crop Layer" which resizes
the active layer to the current selection's bounds, just as
"<Image>/Image/Crop Image"