- gimp_modifiers_to_channel_op() translates a modifier state to REPLACE,
ADD, SUBTRACT or INTERSECT.
- gimp_replace_virtual_modifiers() uses gdk_keymap_add_virtual_modifiers()
to replace the physical bits in a modifier state to their virtual
counterparts (and not just adds the virtual ones like the GDK
function).
when dealing with native window handles. Also get rid of using
GdkNativeWindow and simply consistently use guint32 all over the
place. This is more obvious and consistent and keeps the diff to the
gtk3-port branch smaller.
Pull all text buffer utility functions as methods and use
GimpTextBuffer all over the place instead of GtkTextBuffer.
Some actually usefuly features coming soon...
Add a new class GimpPanedBox that wraps the arrangement of widgets
into GtkPaned hierarchies. It takes over the separator management from
GimpDock and the GtkPaned management from
gimpwidgets-utils.[ch]. GimpPanedBox can be both vertically and
horizontally oriented.
Change GimpDock to use this widget and make some other minor
adaptations.
Move the GtkPaned management code into gimp_widgets_add_paned_widget()
and gimp_widgets_remove_paned_widget() in gimpwidgets-utils.[ch] so we
can share this code for GimpDockColumns later.
2009-01-17 Michael Natterer <mitch@gimp.org>
* all files with a GPL header and all COPYING files:
Change licence to GPLv3 (and to LGPLv3 for libgimp).
Cleaned up some copyright headers and regenerated the parsers in
the ImageMap plugin.
svn path=/trunk/; revision=27913
2008-10-28 Michael Natterer <mitch@gimp.org>
* app/widgets/gimpwidgets-utils.[ch]: added "gboolean below" to
gimp_enum_radio_frame_add() and gimp_enum_radio_box_add() and
place the widget right of the radio button unless "below" is TRUE.
* app/dialogs/convert-dialog.c
* app/dialogs/layer-add-mask-dialog.c
* app/tools/gimpbucketfilloptions.c
* app/tools/gimpclonetool.c
* app/tools/gimpperspectiveclonetool.c
* app/widgets/gimpfilleditor.c: pass TRUE so everything stays as-is.
svn path=/trunk/; revision=27450
2008-10-25 Michael Natterer <mitch@gimp.org>
* app/core/gimpfilloptions.[ch]: add non-serializable properties
pattern-view-type and pattern-view-size which are used only by the
new UI below.
* app/widgets/gimpfilleditor.[ch]: added boolean edit-context
property. If TRUE, add widgets to edit the context's foreground and
pattern. Add "edit_context" parameter to gimp_fill_editor_new().
* app/widgets/gimpstrokeeditor.[ch]: add the same parameter here.
* app/widgets/gimpwidgets-utils.[ch]: add gimp_enum_radio_box_add()
which does the same as the existing gimp_enum_radio_frame_add().
* app/dialogs/stroke-dialog.c: pass FALSE for "edit_context"
because this dialog takes its foreground and pattern from the user
context and doesn't need it's own GUI for them.
svn path=/trunk/; revision=27392
2008-09-30 Sven Neumann <sven@gimp.org>
* app/widgets/gimpwidgets-utils.[ch]: added
gimp_pango_layout_set_scale().
* app/gui/splash.c: set a smaller font size on the lower label.
svn path=/trunk/; revision=27088
2008-03-19 Sven Neumann <sven@gimp.org>
* app/widgets/gimpdockable.c
* app/widgets/gimpwidgets-utils.[ch]: moved utility function for
setting attributes on a PangoLayout out of gimpdockable.c.
* app/display/gimpcanvas.c (gimp_canvas_draw_drop_zone): use a
bold font and paint the layout with transparency.
svn path=/trunk/; revision=25116
2006-11-14 Sven Neumann <sven@gimp.org>
* app/dialogs/file-open-location-dialog.c: don't use
gimp_dialog_set_sensitive(); just make the entry not editable and
the dialog's OK button insensitive.
* app/widgets/gimpfiledialog.c
* app/widgets/gimpwidgets-utils.[ch]: moved gimp_dialog_set_sensitive()
implementation into gimp_file_dialog_set_sensitive().
2006-10-09 Michael Natterer <mitch@gimp.org>
Added message severities and make sure all messages are routed
through a central function, so redirecting to the error console or
stderr work again:
* app/core/core-enums.[ch]: added enum GimpMessageSeverity { INFO,
WARNING, ERROR }.
* app/core/gimp.[ch] (gimp_message)
(gimp_message_valist): added severity parameter. Changed
"GimpProgress *progress" parameter to "GObject *handler", where
"handler" can be either a GimpProgress, a GtkWidget or NULL.
* app/core/gimp-gui.[ch] (gimp_show_message): ditto. Honor
--console-messages again. Always dispatch to the GUI message
handler first if it exists.
* app/gui/gui-message.[ch]: pass severity parameters around.
(gui_message_error_dialog): if "handler" is a progress, dispatch
the message to it first. If it is a widget (and *not* a progress),
use a GtkMessageDialog on top of that widget's toplevel. Fall
back to the usual GimpErrorDialog otherwise.
* app/core/gimpprogress.[ch] (gimp_progress_message): added
severity parameter. Also added boolean return value to the virtual
function so it can decide to fail if it can't handle the message.
* app/display/gimpdisplay.c: implement GimpProgress::message() and
redirect the message to GimpDisplayShell.
* app/display/gimpdisplayshell-progress.c: implement
GimpProgress::message() and redirect the message to GimpStatusbar
if it is not an error and if the status bar is visible.
* app/display/gimpstatusbar.[ch]: implement GimpProgress::message(),
but fail on messages that contain a newline. Show the right icons
for the message severities (work in progress).
* app/display/gimpdisplayshell.[ch]: removed
gimp_display_shell_message() and its _valist() variant.
* app/widgets/gimperrorconsole.[ch]: show the right icons for the
message severities.
* app/widgets/gimpthumbbox.c (gimp_thumb_box_progress_message):
return TRUE to swallow all messages.
* app/widgets/gimpwidgets-utils.[ch]: removed
gimp_show_message_dialog(). Added gimp_get_message_stock_id().
* app/errors.c
* app/actions/edit-commands.c
* app/actions/error-console-commands.c
* app/actions/file-commands.c
* app/actions/select-commands.c
* app/actions/text-editor-commands.c
* app/actions/vectors-commands.c
* app/core/gimpimage-convert.c
* app/core/gimpimagefile.c
* app/dialogs/convert-dialog.c
* app/dialogs/file-open-dialog.c
* app/dialogs/file-open-location-dialog.c
* app/dialogs/file-save-dialog.c
* app/dialogs/palette-import-dialog.c
* app/dialogs/stroke-dialog.c
* app/display/gimpdisplayshell-dnd.c
* app/pdb/gimppdb.c
* app/plug-in/gimpplugin.c
* app/tools/gimpimagemaptool.c
* app/tools/gimptool.c
* app/tools/gimpvectortool.c
* app/widgets/gimpactionview.c
* app/widgets/gimpcontrollerlist.c
* app/widgets/gimppdbdialog.c
* app/widgets/gimpvectorstreeview.c
* app/xcf/xcf-load.c
* app/xcf/xcf-save.c
* app/xcf/xcf.c
* tools/pdbgen/pdb/brush.pdb
* tools/pdbgen/pdb/gradient.pdb
* tools/pdbgen/pdb/image.pdb
* tools/pdbgen/pdb/message.pdb
* tools/pdbgen/pdb/palette.pdb: added severity parameter to
gimp_message() calls. Convert all calls to
gimp_show_message_dialog() and gimp_display_shell_message() to
gimp_message(). Also converted some more g_message() calls.
* app/pdb/brush_cmds.c
* app/pdb/gradient_cmds.c
* app/pdb/image_cmds.c
* app/pdb/message_cmds.c
* app/pdb/palette_cmds.c: regenerated.
2006-09-22 Sven Neumann <sven@gimp.org>
* app/gui/gui-message.c
* app/widgets/gimpwidgets-utils.[ch]: moved utility function to
gimpwidgets-utils.
* app/core/gimp-gui.[ch]
* app/gui/gui-vtable.c: added a progress parameter to
gimp_pdb_dialog_new() and make the dialog transient to the progress
window.
* tools/pdbgen/pdb/brush_select.pdb
* tools/pdbgen/pdb/font_select.pdb
* tools/pdbgen/pdb/gradient_select.pdb
* tools/pdbgen/pdb/palette_select.pdb
* tools/pdbgen/pdb/pattern_select.pdb: pass progress to
gimp_pdb_dialog_new().
* app/pdb/brush_select_cmds.c
* app/pdb/font_select_cmds.c
* app/pdb/gradient_select_cmds.c
* app/pdb/palette_select_cmds.c
* app/pdb/pattern_select_cmds.c: regenerated.
* libgimp/gimpselectbutton.c: cosmetics.
2006-08-11 Sven Neumann <sven@gimp.org>
* app/widgets/gimpwidgets-utils.[ch]: introduced a simple message
dialog to use when there's no progress but a parent widget.
* app/dialogs/convert-dialog.c
* app/dialogs/palette-import-dialog.c
* app/dialogs/preferences-dialog.c
* app/dialogs/stroke-dialog.c
* app/tools/gimpimagemaptool.c
* app/widgets/gimpactionview.c
* app/widgets/gimpcontrollerlist.c
* app/widgets/gimplayertreeview.c
* app/widgets/gimppdbdialog.c
* app/widgets/gimpvectorstreeview.c: use the new utility function
instead of g_message().
2006-08-02 Raphael Quinet <raphael@gimp.org>
* app/widgets/gimpwidgets-utils.h
* app/widgets/gimpwidgets-utils.c (gimp_suggest_modifiers):
New utility function to build status bar messages while allowing
dynamic names for the modifiers.
* app/tools/gimppainttool.h
* app/tools/gimppainttool.c: Added new members to the class in
order to allow paint tools to set different status messages for
the normal case or when drawing a line.
* app/tools/gimpclonetool.c
* app/tools/gimpconvolvetool.c
* app/tools/gimpdodgeburntool.c
* app/tools/gimperasertool.c
* app/tools/gimpsmudgetool.c: Use the new functions to set
appropriate messages in the status bar. Still work in progress,
partial fix for bug #124040.
* app/tools/gimpvectortool.c: Use gimp_suggest_modifiers().
2005-09-16 Michael Natterer <mitch@gimp.org>
* app/widgets/gimpwidgets-utils.[ch] (gimp_widget_set_accel_help):
mis-named and mis-placed function that sets a widget's tooltip to
the action's tooltip plus the action's keyboard shortcut.
* app/widgets/gimptoolbox.c: at least the code is not here any
more.
* app/actions/tools-actions.c: use tool_info->help, not ->blurb
as the action's tooltip so the above works.
2005-09-09 Michael Natterer <mitch@gimp.org>
Added parent window API to the GimpProgress interface and to
the libgimp progress stuff. Might look strange, but does
the right thing in almost all cases (image window, file dialog,
script-fu dialog etc). Fixes bug #62988.
* app/core/gimpprogress.[ch]: added GimpProgress::get_window()
which should return a toplevel window ID if the progress is in a
window that wants to be the transient parent of plug-in dialogs.
* app/widgets/gimpwidgets-utils.[ch] (gimp_window_get_native): new
function which returns the window handle of a GtkWindow's GdkWindow.
* app/widgets/gimpfiledialog.c: implement ::get_window().
* app/display/gimpdisplay.[ch]: ditto. Removed window handle API.
* app/gui/gui-vtable.c: changed accordingly.
* libgimpbase/gimpbaseenums.[ch] (enum GimpProgressCommand):
added GIMP_PROGRESS_COMMAND_GET_WINDOW.
* app/plug-in/plug-in-progress.[ch] (plug_in_progress_get_window):
new function. Also renamed some functions to match the
GimpProgress interface, and not the legacy PDB procedure names.
* tools/pdbgen/pdb/progress.pdb
* app/core/gimppdbprogress.c: implement get_window() on both
sides of the wire, keeping backward compatibility (hopefully).
* libgimp/gimpprogress.[ch]: deprecated gimp_progress_install()
and added gimp_progress_install_vtable() which takes a vtable with
padding to be extensible. Added get_window() vtable entry and
dispatch it accordingly. Also added pulse() which was implemented
in a hackish way before. Everything is of course backward
compatible.
* libgimp/gimpprogressbar.c: inmplement the get_window() stuff
so a plug-in dialog containing a progress can be the transient
parent of another dialog in another plug-in.
* libgimp/gimpui.[ch] (gimp_ui_get_progress_window): new function
which returns a foreign GdkWindow of this plug-ins progress
window.
Renamed gimp_window_set_transient_for_default_display() to
gimp_window_set_transient() and make it use the progress' window
handle instead of the display's (which is the right thing to do in
almost all cases).
* libgimp/gimp.def
* libgimp/gimpui.def: add the new functions.
* tools/pdbgen/enums.pl
* app/pdb/internal_procs.c
* app/pdb/progress_cmds.c
* libgimp/gimpprogress_pdb.[ch]: regenerated.
* libgimp/gimpexport.c
* plug-ins/*/*.c: follow API change.
2005-09-02 Sven Neumann <sven@gimp.org>
* app/tools/gimptextoptions.c
* app/widgets/gimpwidgets-utils.[ch]: dropped the labels from text
tool options that have icons. Reduces visual clutter.
2005-01-21 Michael Natterer <mitch@gimp.org>
* app/widgets/gimpwidgets-utils.[ch] (gimp_action_get_accel_closure):
new function as workaround for missing GTK+ API (see bug #141750).
* app/widgets/gimpactionview.[ch]: use the function instead of
having this ugly hack here. Store the accel_closure instead of the
hackish menu_item in the tree store. Removed cruft and cleaned up
a bit.
2004-11-23 Michael Natterer <mitch@gimp.org>
* app/widgets/gimpwidgets-utils.[ch]: added new function
gimp_toggle_button_set_visible() which can be used as "toggled"
callback on a GtkToggleButton and sets a widget (in)visible
according to the toggle's "active" state.
* app/tools/gimpblendoptions.c
* app/tools/gimppaintoptions-gui.c
* app/tools/gimpselectionoptions.c: use it to hide (rather than
just insensitize) the seldomly used "Feather edges", "Autoshrink
selection", "Adaptive supersampling", "Fade out" and "Use color
from gradient" widgets when their enabling toggle is unchecked.
Makes the affected tool options much less crowded and noisy in
their default appearance. Fixes bug #159008.
2004-11-04 Michael Natterer <mitch@gimp.org>
Don't use deprecated GtkToolbar API in GimpTextEditor:
* app/actions/Makefile.am
* app/actions/actions.c
* app/actions/text-editor-actions.[ch]
* app/actions/text-editor-commands.[ch]: added acions and
callbacks for the new "text-editor" action group.
* app/menus/menus.c: register a "<TextEditor>" UI manager.
* menus/Makefile.am
* menus/text-editor-toolbar.xml: new file for the toolbar.
* app/widgets/gimptexteditor.[ch]: use the toolbar created by the
UI manager instead of constructing it using deprecated API.
* app/tools/gimptextoptions.c: changed accordingly.
* app/widgets/gimpwidgets-utils.[ch]: added gimp_text_buffer_load()
(used by text-editor-commands.c).
2004-10-25 Michael Natterer <mitch@gimp.org>
* app/widgets/gimpwidgets-utils.[ch]: added gimp_text_buffer_save()
which saves a GtkTextBuffer's contents to a file.
* app/widgets/gimperrorconsole.c: use
gimp_editor_add_action_button() and removed all "clicked"
callbacks, including all file saving code.
* app/actions/error-console-actions.c
* app/actions/error-console-commands.[ch]: added the code removed
above to the action callbacks. Use gimp_text_buffer_save().
2004-08-25 Sven Neumann <sven@gimp.org>
* app/widgets/gimpmessagebox.[ch]: added gimp_message_box_repeat().
* app/widgets/Makefile.am
* app/widgets/widgets-types.h
* app/widgets/gimperrordialog.[ch]: added new dialog that adds a new
GimpMessageBox for each message added. Fixes bug #92604.
* app/widgets/gimpwidgets-utils.[ch]: removed old gimp_message_box()
functionality.
* app/gui/gui.c (gui_abort): use a GimpMessageBox in a GimpDialog.
* app/gui/dialogs-constructors.[ch]
* app/gui/dialogs.c: manage GimpErrorDialog as singleton.
* app/gui/gui-vtable.c (gui_message): use the new error dialog.
* app/core/gimp-gui.c (gimp_message): substitue "GIMP" for a NULL
domain.
* app/widgets/gimperrorconsole.c (gimp_error_console_add): fail
when being called with a NULL domain.
2004-08-11 Michael Natterer <mitch@gimp.org>
* app/widgets/Makefile.am
* app/widgets/widgets-types.h
* app/widgets/gimpprogressbox.[ch]: new GtkVBox subclass featuring
a label and a progressbar. Implements GimpProgressIterface.
* app/widgets/gimpprogressdialog.[ch]: replaced label and progress
by a GimpProgressBox. Delegate most progress functionality to it.
* app/widgets/gimpwidgets-utils.[ch]: factored out utility
function gimp_dialog_set_sensitive().
* app/widgets/gimpfiledialog.c (gimp_file_dialog_set_sensitive):
use it.
* app/gui/file-open-location-dialog.c (file_open_location_response):
embed the called file procedure's progress using a GimpProgressBox.
2004-07-20 Michael Natterer <mitch@gimp.org>
* app/widgets/gimpactionfactory.[ch]
* app/widgets/gimpactiongroup.[ch]: added "label" and "stock-id"
properties to GtkActionGroup and allow to register them in the
GimpActionFactory.
* app/actions/actions.c: register user visible labels and icons
with all action groups.
* app/widgets/Makefile.am
* app/widgets/widgets-types.h
* app/widgets/gimpactionview.[ch]: new widget which shows a
treeview of action groups and their actions & shortcuts.
* app/widgets/gimpaction.[ch]: added gimp_action_name_compare()
utility function.
* app/widgets/gimpwidgets-utils.[ch]: added
gimp_get_accel_string() utility function.
* app/widgets/gimpcontrollers.[ch]: added
gimp_controllers_get_ui_manager() which will be used for setting
up the controller mapping dialog.
* app/gui/preferences-dialog.c: added a "Configure Keyboard
Shortcuts" button which pops up a GimpControllerView. Work in
progress...
2004-06-29 Michael Natterer <mitch@gimp.org>
* app/widgets/gimpwidgets-utils.[ch]: added new function
gimp_get_mod_string() which takes a GdkModifierType and returns
correctly formated strings for all shift,control,alt combinations.
* app/tools/gimpbucketfilloptions.c
* app/tools/gimpcolorpickeroptions.c
* app/tools/gimpconvolvetool.c
* app/tools/gimpcropoptions.c
* app/tools/gimpdodgeburntool.c
* app/tools/gimperasertool.c
* app/tools/gimpflipoptions.c
* app/tools/gimpmagnifyoptions.c
* app/tools/gimpmoveoptions.c
* app/tools/gimptransformoptions.c
* app/tools/gimpvectoroptions.c
* app/widgets/gimpchanneltreeview.c
* app/widgets/gimpcolormapeditor.c
* app/widgets/gimpdocumentview.c
* app/widgets/gimperrorconsole.c
* app/widgets/gimpgradienteditor.c
* app/widgets/gimpitemtreeview.c
* app/widgets/gimppaletteeditor.c
* app/widgets/gimpselectioneditor.c
* app/widgets/gimpthumbbox.c
* app/widgets/gimptooloptionseditor.c
* app/widgets/gimpvectorstreeview.c: use the new function instead
of gimp_get_mod_name_shift(),control(),alt(),separator(). This
kindof addresses the issue of configurable modifier keys but is
actually indended to ease translation of format strings ("%s" is
easier to get right than "%s%s%s").
2004-01-17 Sven Neumann <sven@gimp.org>
* app/config/gimpguiconfig.[ch]
* app/config/gimprc-blurbs.h
* app/widgets/gimpdock.c
* app/widgets/gimptoolbox.c
* app/widgets/gimpwidgets-utils.[ch]
* app/widgets/gimpwidgets-utils.[ch]
* app/widgets/widgets-enums.[ch]: GTK+-2.4 will allow to request
windows to be kept above. This change prepares the code so that we
can optionally do this for docks and the toolbox as soon as we
depend on GTK+-2.4 (see bug #131672).
2003-11-20 Sven Neumann <sven@gimp.org>
* app/widgets/widgets-enums.[ch]: added GimpWindowTypeHint enum.
* app/widgets/gimpwidgets-utils.{ch]: added a utility function
that translates GimpWindowTypeHint to GdkWindowTypeHint.
* app/config/gimpguiconfig.[ch]
* app/config/gimprc-blurbs.h: added two new gimprc options that
allow to configure which window type hint to set on the toolbox
and on dock windows.
* app/widgets/gimpdock.[ch}: use the window type hint from gimprc.
Introduced construct properties and got rid of gimp_dock_construct().
* app/widgets/gimpimagedock.c
* app/widgets/gimptoolbox.c: changed accordingly.
* app/gui/preferences-dialog.c (prefs_dialog_new): let the Themes
frame expand.
2003-11-19 Sven Neumann <sven@gimp.org>
* app/widgets/gimpitemfactory.c
* app/widgets/gimpwidgets-utils.[ch]: moved the
gimp_menu_position() implementation that was used only from
GimpItemFactory to gimpitemfactory.c. Added a new function of the
same name that positions a menu taking into account the monitor
geometry and the render direction.
* app/widgets/gimpcontainergridview.c
* app/widgets/gimpcontainertreeview.c: use gimp_menu_position().
* app/widgets/gimpcontainerpopup.c
* app/widgets/gimppreview-popup.c: let windows popup on the
current monitor (for Xinerama setups).
2003-10-22 Sven Neumann <sven@gimp.org>
* app/widgets/gimpwidgets-utils.[ch]: added new function
gimp_rgb_set_gdk_color().
* app/config/gimprc.c (gimp_rc_load): unlinking the broken gimprc
doesn't really help so don't do it. GIMP will continue to complain
until the gimprc is fixed.
2003-09-23 Sven Neumann <sven@gimp.org>
* app/widgets/gimpwidgets-utils.[ch]: added a utility function
that positions a menu that pops up from a button widget.
* app/display/gimpdisplayshell-callbacks.c
* app/widgets/gimpdockable.c: use the new utility function instead
of duplicating the code.
2003-07-02 Michael Natterer <mitch@gimp.org>
* app/widgets/widgets-types.h: added GimpMenuPositionFunc typedef.
* app/widgets/gimpwidgets-utils.[ch]: made gimp_menu_position()
a GimpMenuPositionFunc.
* app/widgets/gimpitemfactory.[ch]
(gimp_item_factory_popup_with_data): added position_func and
position_data parameters. Use gimp_menu_position() if no
position_func is given.
* app/display/gimpdisplayshell-callbacks.c: removed
gimp_display_shell_origin_menu_popup() and call
gimp_item_factory_popup_with_data() directly from
gimp_display_shell_popup_menu(), using
gimp_display_shell_origin_menu_position() as position_func.
* app/widgets/gimpeditor.[ch]: added a GtkWidget::popup_menu()
implementation so all context menus are keyboard accessible.
Added "gpointer factory_data" member so the menu can be popped up
in the right context.
* app/gui/channels-menu.c
* app/gui/layers-menu.c
* app/gui/vectors-menu.c: make them work without an active image
since they can be popped up at any time now.
* app/gui/image-menu.c
* app/gui/toolbox-menu.c: cleanup.
* app/widgets/gimpcolormapeditor.c
* app/widgets/gimpcomponenteditor.c
* app/widgets/gimpcontainereditor.c
* app/widgets/gimpdockbook.c
* app/widgets/gimperrorconsole.c
* app/widgets/gimpgradienteditor.c
* app/widgets/gimpitemtreeview.c
* app/widgets/gimppaletteeditor.c: pass NULL, NULL as
position_func and position_data so the default implementation is
used.
2003-07-02 Michael Natterer <mitch@gimp.org>
* app/widgets/gimpwidgets-utils.[ch] (gimp_menu_path_strip_uline):
new function which takes menu_paths with mnemonics and removes
them so they can be used as identifiers.
* app/gui/plug-in-menus.c: use the new function. Enables mnemonics
for plug-in menu entries. Removed plug_in_escape_uline() which
implemented disabling them.
* app/widgets/gimptoolbox.c (toolbox_create_tools): use it here
too, made the function more robust.