Commit graph

5195 commits

Author SHA1 Message Date
Michael Natterer
9f9307edcb app: color manage the new color tag color areas 2016-10-30 18:05:57 +01:00
Michael Natterer
967ac88c35 app: remove the "edit" button from GimpItemTreeView
the layers and paths dialogs were already hiding it, now it's gone
also from the channels dialog. It was redundant anyway.
2016-10-30 17:36:32 +01:00
Michael Natterer
31fcd79dd9 Bug 769738 - Add color tags/labels for layers/channels/paths
Add property "color-tag" of type enum GimpColorTag to GimpItem so all
layers, channels and paths can be tagged with a color.

For interoperability, use the color list from Krita which is a
superset of Photoshop's colors.

Features a "Color Tag" submenu in the layers, channels and paths
menus, a row of color radio buttons in the properties dialogs,
undo and PDB API.

As a side effect, some common code is now factores out into
items-actions.[ch] and items-commands.[ch] which adds visible, linked
and lock actions for layers and channels.
2016-10-29 17:02:16 +02:00
Michael Natterer
afedbd0010 app: set "always-show-image" on some menu items generically
- the GimpDockBook item which has the current dockable's menu as submenu
- all menu items which have colors or previews as images
2016-10-28 23:11:44 +02:00
Michael Natterer
f9170b667e Bug 647957 - GimpColorFrame's CMYK mode is not color managed
Convert GimpRGB to CMYK using a color transform to the configured CMYK
profile instead of the naive gimp_rgb_to_cmyk().

Add gimp_color_frame_set_color_config() and call it on all color
frames in the GUI (color picker tool, cursor info, sample point view).
Keep a GimpColorTransform around that does the conversion.

Also color manages the frame's color area now (visible in the sample
point view), which was forgotten earlier. Addresses bug #467930.
2016-10-18 22:48:04 +02:00
Michael Natterer
fce404cea2 app: minor formatting paranoia in GimpContainerTreeView 2016-10-18 20:19:52 +02:00
Michael Natterer
b8bb52b721 Bug 773058 - Enable grid views of dynamics and tool presets 2016-10-17 18:43:22 +02:00
Michael Natterer
151b44e4bb Bug 759939 - Ghost brush outline in FG Select tool
Fix the check that keeps events on overlay widgets from entering the
tool event mechanism, they have no business there.

gimp_overlay_child_realize(): set the embedding widget's event mask on
all overlay children, so their windows will be used as event window,
so their events become distinguishable from events on the parent (the
canvas).

gimp_display_shell_canvas_tool_events(): fix the check for events on
overlays, and skip them for real this time.
2016-10-14 22:14:11 +02:00
Michael Natterer
3d1c5641f7 Bug 731279 - Tool Preset Editor not working correctly
Have "Save" and "Restore" buttons in both the tool preset list/grid
and the tool preset editor. The save button stores the active tool's
options in the preset, if possible.
2016-10-12 23:51:24 +02:00
Michael Natterer
b8db0aa54e app: actually edit the template's color profile in GimpTemplateEditor
The "add default profile of image type" code was resetting it without
implementing the FIXME of setting it again. Spotted by Elle.
2016-10-12 23:48:06 +02:00
Michael Natterer
f722bc99d2 app: remove GimpDataEditor's save button, it was useless and confusing 2016-10-12 20:43:35 +02:00
Michael Natterer
439a3ff7bd Bug 667862 - Allow mouse to optionally configure tablet devices
Add new setting GimpGuiConfig:devices-share-tool. When TRUE, we never
copy any properties between the user context and the GimpDeviceInfo's
context, so no tool or anything changes.

We do however still keep track of the active device so the setting can
be enabled/disabled at any time. Also hide GimpDeviceStatus' tool,
brush etc. indicators in "shared" mode.
2016-10-04 22:32:08 +02:00
Michael Natterer
3f8d55fe79 app: don't set "follow-state" on GimpCellRendererButton
The button's function doesn't change so it shouldn't look differently.
2016-10-04 01:21:52 +02:00
Jehan
f4abe9a8c0 app: s/seperator/separator/ in an extracted comment for the translators. 2016-10-02 00:07:24 +02:00
Michael Natterer
0089a017f0 Bug 706309 - Add a “Save As” button to the “Quit GIMP” dialog
Add GimpCellRendererButton and use it to add a "Save" icon to each row
of dirty images. Click invokes the "edit-save" action, shift-click
invokes "edit-save-as". Also add a tooltip for the icon button.

Involves minor changes to GimpContainerTreeView to allow
GimpCellRendererButton to be added, and to allow external
"query-tooltip" handlers to run.
2016-10-01 21:00:39 +02:00
Michael Natterer
aa0afe0d01 app: invoke the right action when the quick mask button is clicked
instead of implementing the toggling in display/. One more bit
moved to actiona/.
2016-10-01 01:06:02 +02:00
Michael Natterer
0524b60228 app: consistently treat GimpColorConfig profile paths as config paths
and use gimp_file_new_for_config_path() and _get_config_path() when
dealing with them. We used a weird mix of config paths and plain
(filesystem encoded) paths, waiting to to break on umlauts or
whatever. The code in gimpcolorconfig.c was particularly bad.
2016-10-01 00:29:44 +02:00
Michael Natterer
e8309826b7 app, libgimpwidgets: use the new config path <-> GFile functions
Gets rid of temporary variables to hold both expanded and unexpanded
paths.
2016-09-30 22:07:00 +02:00
Michael Natterer
beb3279bf2 Bug 320447 - fast switching between "color managed display" and "softproof"
Add a SELECT_SOFTPROOF_PROFILE mode to the color profile dialog and
use it to select a profile from a newly added "Soft-Proofing Profile..."
menu item in view -> color management.
2016-09-30 20:56:04 +02:00
Michael Natterer
cc8b5cd37e app: add gimp_prefs_box_set_page_resettable()
which adds a "Reset" button to a prefs page.
2016-09-22 18:54:18 +02:00
Michael Natterer
ca43284bb1 app: convert tabs to spaces in gimpprefsbox.h 2016-09-21 17:15:47 +02:00
Michael Natterer
35588d79c8 app: add utility functions to get a generic paste GimpObject
to Gimp and GimpClipboard. The object is either an image or a buffer
or NULL.
2016-09-21 00:11:15 +02:00
Michael Natterer
3ed4b3bbec app: add "paste as new layers" for the list of named buffers
and globally reorder "paste as new layer" before "paste as new image"
so it's next to "paste" and "paste into".
2016-09-20 20:43:01 +02:00
Michael Natterer
557965e593 app, menus: rename everything "paste as new" to "paste as new image"
Actions, functions, variables, help IDs. Also added user profile
migration code for importing old menurc files.
2016-09-19 12:15:39 +02:00
Michael Natterer
1f00b5e70f app: add setting/getting and sending/recieving images via GimpClipboard
The new functionality is not used yet.
2016-09-18 22:01:13 +02:00
Michael Natterer
0740d8d688 app: don't keep images from the clipboard in gimp->images
They are temporary internal objects. In gimp->images they would
be visible in the GUI and PDB.
2016-09-18 21:56:47 +02:00
Michael Natterer
5136f131be app: add gimp_selection_data_set_xcf() and _get_xcf()
using the new load/save XCF stream APIs added below.
2016-09-18 21:43:45 +02:00
Michael Natterer
d85157c376 app: rename gimp->global_buffer to gimp->clipboard_buffer
Also rename the "buffer-changed" signal and the setter, and add a
getter.
2016-09-17 17:39:54 +02:00
Michael Natterer
9bb33914bf app: set tooltips on the tool options' brush, gradient etc edit buttons
Also make the tooltips of the edit buttons of the brush, gradient etc
dialogs consistent.
2016-09-17 17:10:20 +02:00
Jehan
0377e61cc4 app: "help-action-search" has been renamed to "dialogs-action-search"...
... since commits 36f87b5b and 2b6a10b7.
With the renaming, action-search was showing itself in its list.
2016-09-12 01:49:08 +02:00
Michael Natterer
b5cc2a977f Bug 768966 - Keyboard Shortcut hint disappears from tooltips...
...after entering single window mode

In GimpToolPalette, implement GtkWidget::hierarchy_changed() and
re-set the tooltips using the new toplevel's actions.

In gimp_widget_set_accel_help(), make sure we don't connect to the
same action twice, and make sure we disconnect everything if either
the widget or the accel_group go away.
2016-09-10 00:26:23 +02:00
Michael Natterer
a5868e1f13 app: some cleanup in GimpSearchPopup 2016-09-09 21:40:09 +02:00
Timm Bäder
53f34ebc0b Chain up in some size-allocate implementations
The default implementation does just the right thing for most widgets.
2016-09-09 21:31:09 +02:00
Michael Natterer
4df9a1d568 Get rid of gtk_misc_set_alignment(label) and use gtk_label_set_x,yalign() 2016-09-08 19:11:20 +02:00
Michael Natterer
4033415a79 app, libgimpwidgets, plug-ins: kill gtk_scrolled_window_add_with_viewport()
It's deprecated in GTK+ 3.x, so we get rid of some deprecation
warnings. Also, it has always only been a utility function that hides
what is really going on in the widget hierarchy.
2016-09-07 20:12:28 +02:00
Michael Natterer
f91a19b1ef libgimpwidgets: merge some GimpColorButton API from gtk3-port 2016-09-07 02:22:57 +02:00
Michael Natterer
308efbb514 Bug 767830 - Help browser does not launch on OS X
Try harder to show help when webkit is missing or the help browser
won't start:

- offer to switch to the web browser when the help browser is
  present, but won't start for some reason
- in prefs, don't bother showing the help browser GUI when webkit
  is missing, otherwise show a warning label if the help browser
  is not installed even though webkit is there. Switch to the web
  browser in both cases (modified patch from lisanet)
- add OS X replacement for gtk_show_uri() in plug-in-web-browser
  (modified patch from lisanet)
2016-09-06 20:51:47 +02:00
Massimo Valentini
b7d41c83c6 Bug 770928: Critical warning clicking history color button
(gimp-2.9:3): Gimp-Core-CRITICAL **: gimp_marshal_VOID__OBJECT_POINTER: assertion 'n_param_values == 3' failed

Conflict between signal marshal function
and signal emission.
2016-09-06 18:39:52 +02:00
Massimo Valentini
61530c74a4 app: plug a memory leak
AddressSanitizer output (paths manually shortened)

Direct leak of 96 byte(s) in 1 object(s) allocated from:
    #0 0x7f543247d1d0 in realloc (/lib64/libasan.so.3+0xc71d0)
    #1 0x7f542d3ad02f in g_realloc glib/glib/gmem.c:159
    #2 0x57918d in gimp_color_history_set_property gimp/app/widgets/gimpcolorhistory.c:169
    #3 0x7f542d681ec0 in object_set_property glib/gobject/gobject.c:1423
    #4 0x7f542d681ec0 in g_object_new_internal glib/gobject/gobject.c:1817
    #5 0x7f542d6839ed in g_object_new_valist glib/gobject/gobject.c:2042
    #6 0x7f542d683c73 in g_object_new glib/gobject/gobject.c:1626
2016-09-06 18:39:45 +02:00
Jehan
c6f1761af7 icons, app, libgimpwidgets: replace GIMP_STOCK_EDIT with GTK_STOCK_EDIT. 2016-09-05 02:53:51 +02:00
Jehan
6c674e973c app, libgimp*, plug-ins, icons: revert icon names into freedesktop...
... standard icon names and GTK+ icon names as second choice.
We should only use GIMP specific icon names as last resort, when there
is no standard or GTK+ names dedicated to the function.
This is made possible thanks to commit 3cc77b0.

s/gimp-document-recent/document-open-recent/
s/gimp-indent/format-indent-more/
s/gimp-next/go-next/
s/gimp-previous/go-previous/
s/gimp-save/document-save/
s/gimp-save-as/document-save-as/
s/gimp-revert/document-revert/
s/gimp-open/document-open/
s/gimp-document-recent/document-open-recent/
s/gimp-quit/window-close/ ou s/gimp-quit/application-exit/
s/gimp-warning/dialog-warning/
s/gimp-edit-clear/edit-clear/

s/gimp-justify-.*/gtk-justify-.*/
s/gimp-font/gtk-select-font/
s/gimp-color-palette/gtk-select-color/
s/gimp-cancel/gtk-cancel/
2016-09-03 15:49:29 +02:00
Michael Natterer
9b8009d8c7 Bug 766628 - Preferences window is too tall
Add gimp_prefs_box_set_page_scrollable() which does what it says, and
make the tallest pages of the prefs dialog scrollable. This method
allows the dialog's smaller pages to still enforce a minimum height
for the window.
2016-08-24 12:52:33 +02:00
Benoit Touchette
0b7381a822 Bug 759601 - Add/Remove layer masks by clicking the layer preview
Quite heavily modified by Mitch to address the more general issues
mentioned in comment 35 of the bug:

- Remember the added mask's type and the invert boolean in
  GimpDialogConfig
- Add new prefs page "Dialog Defaults" which will contain
  only stuff from GimpDialogConfig and can be reset separately
- Remove static mask variables from layers-commands.c and
  use the new config values for both interactive mask adding
  with the dialog, and for the shortcut based method
- Add a button to the layers dialog which supports add, add
  with last values, delete, apply
- Add modifier-click shortcuts on the layer preview with the
  same modifiers as on the button
2016-08-23 19:18:20 +02:00
Jehan
c83ee61c07 Bug 729765 - remove focusability of various widgets...
... starting with toolbox buttons.
This is particularly a problem in single window mode (and sometimes in
multi-window mode) where canvas easily loses focus, hence key events.
2016-08-14 01:47:56 +02:00
Michael Natterer
8d902b8df5 Bug 768966 - Keyboard Shortcut hint disappears from tooltips...
...after entering single window mode

This commit fixes dangling pointers in GimpDockColumns, it doesn't fix
the bug but it's a prerequisite. Original patch by Massimo.
2016-08-03 23:44:14 +02:00
Ell
cd767505fc app: make GimpNavigationView rotation aware
Rotate the viewport marker to correctly reflect the visible part
of the image.
2016-07-21 21:25:49 +00:00
Michael Natterer
bb66166e22 app: be smarter about handling the Space key in GimpPopup
Don't remove the GDK_KEY_space in GimpSearchPopup because that's
impossible and removes it from the entire GimpPopup class. Instead,
don't handle the "space -> confirm" binding manually if the focus
widget is a text widget.
2016-07-12 20:35:41 +02:00
Jehan
7fb07e1da1 app: typo fix - s/widht/width/ 2016-07-07 02:28:44 +02:00
Michael Natterer
a96c273621 app: add smarter soft boundaries for GimpSpinScale widgets
Pass a GeglRectangle to all gimp_prop_gui_*() functions, and set
the soft limits to the rectangle's extents if the GParamSpec
metadata's "unit" is "pixel-coordinate" or "pixel-distance".

In GimpSymmetryEditor, pass the image extents, in GimpOperationTool
pass the drawable extents.
2016-07-06 12:19:40 +02:00
Jehan
4e6d320591 app: remove current implementation of GimpSpinScale soft bounds.
Mitch gets a better idea to deal with soft limits (i.e. min/max values
different from the property min/max) applied to a spin scale created by
gimp_prop_spin_scale_new().
So let's just remove the current implementation (using locale data on
the GimpConfig object). The symmetry spin scales are back with crazy
huge maximums, which makes quite a horrible GUI, but this is only
temporary until Mitch commits his new implementation.
2016-07-01 13:58:55 +02:00
Michael Natterer
58dd48564a app: simplify and fix paint dynamics editor sensitivity
Simplify because it's now a one-liner, fix because I broke it with
the previous commit.
2016-07-01 12:32:52 +02:00
Michael Natterer
af88e98afd Bug 767348 - Make Paint Dynamics icon customizable
Add an icon button to the dynamics editor's "mapping matrix" page. It
looks just as ugly as the icon button of the tool preset editor, the
two should be visually improved together.
2016-06-30 11:38:03 +02:00
Jehan
a10b688b64 app: rename "update-ui" signal to "gui-param-changed".
Therefore having a signal name more in line with other signals. This
reflects the property flag's naming: GIMP_SYMMETRY_PARAM_GUI.
2016-06-28 20:04:38 +02:00
Massimo Valentini
aa8d29deac Bug 767476: Previously bolded font un-bolds on edit, cannot be undone 2016-06-24 12:39:01 +02:00
Jehan
cafa912c98 app: allow locale lower and upper values in gimp_prop_spin_scale_new().
Currently a GimpSpinScale created with gimp_prop_spin_scale_new() will
use the associated property's lower and upper values.
Unfortunately these generic values may not be always relevant and we
may want to construct a spin scale UI adapted to the current image.
For instance, several symmetry painting have a x/y property which has
to stay within the image's dimension, but changing the property's lower
and upper values would affect the symmetry on the class level (i.e. for
all similar symmetries on all images).
Let's allow setting data on object with key "property-name:min|max" to
provide locale min/max values specifically for this object.
This is used only on the symmetry dock for now, but could be used as
well on GEGL op UIs.
2016-06-14 16:52:52 +02:00
Jehan
5f19ef41c9 Bug 765040 - GIMP not remembering the order of dockable dialogs.
Docks position is relevant when saving a session, so we should not
simply append it to the end of the docks list when we move a dock.
2016-06-11 16:51:21 +02:00
klausstaedtler
b79e754480 icons: Bug 759904
add
gimp-open

patch: replace "document-open" by "gimp-open" (or GIMP_STOCK_OPEN)

gimp/plug-ins/imagemap/imap_browse.c:   icon = gtk_image_new_from_icon_name ("document-open", GTK_ICON_SIZE_BUTTON);
gimp/libgimpwidgets/gimpfileentry.c:  image = gtk_image_new_from_icon_name ("document-open", GTK_ICON_SIZE_BUTTON);
gimp/app/actions/text-editor-actions.c:  { "text-editor-load", "document-open",
gimp/app/actions/vectors-actions.c:  { "vectors-import", "document-open",
gimp/app/actions/patterns-actions.c:  { "patterns-open-as-image", "document-open",
gimp/app/actions/documents-actions.c:  { "documents-open", "document-open",
gimp/app/actions/brushes-actions.c:  { "brushes-open-as-image", "document-open",
gimp/app/actions/text-tool-actions.c:  { "text-tool-load", "document-open",
gimp/app/actions/file-actions.c:      entries[i].icon_name      = "document-open";
gimp/app/widgets/gimpsettingsbox.c:                                     "document-open",
gimp/app/widgets/gimpsettingseditor.c:                            "document-open",

patch
gimpicons.c
gimpicons.h
2016-06-10 13:50:46 +02:00
klausstaedtler
312691312d icons: Bug 759904
add
gimp-shred

patch: replace "edit-clear" by "gimp-shred" (or GIMP_STOCK_SHRED)

gimp/app/actions/documents-commands.c:                                    "edit-clear",
gimp/gimp/app/actions/edit-actions.c:  { "edit-undo-clear", "edit-clear",
gimp/app/actions/documents-actions.c:  { "documents-clear", "edit-clear",
gimp/app/dialogs/preferences-dialog.c:  button = prefs_button_add ("edit-clear", shred

add
gimp-edit-clear

patch: replace "edit-clear" by "gimp-edit-clear" (or GIMP_STOCK_EDIT_CLEAR)

gimp/app/actions/text-editor-actions.c:  { "text-editor-clear", "edit-clear",
gimp/app/actions/edit-actions.c:  { "edit-clear", "edit-clear",
gimp/app/actions/error-console-actions.c:  { "error-console-clear", "edit-clear",
gimp/app/actions/text-tool-actions.c:  { "text-tool-clear", "edit-clear",
gimp/app/widgets/gimptextstyleeditor.c:  image = gtk_image_new_from_icon_name ("edit-clear", GTK_ICON_SIZE_MENU);
gimp/app/dialogs/preferences-dialog.c:  button = prefs_button_add ("edit-clear",


patch
gimpicons.c
gimpicons.h

update
icon-list.mk
2016-06-10 13:50:45 +02:00
klausstaedtler
71bedb70f6 icons: Bug 759904
patch: replace "window-close" by "gimp-quit" (or GIMP_STOCK_QUIT)

gimp/app/actions/dock-actions.c:  { "dock-close", "window-close",
gimp/app/actions/view-actions.c:  { "view-close", "window-close",
gimp/app/actions/dockable-actions.c:  { "dockable-close-tab", "window-close",

patch: replace "gtk-directory" by "gimp-file-manager" (or GIMP_STOCK_FILE_MANAGER)

gimp/libgimpwidgets/gimpfileentry.c:  image = gtk_image_new_from_icon_name ("gtk-directory", GTK_ICON_SIZE_BUTTON);
gimp/app/actions/palettes-actions.c:  { "palettes-show-in-file-manager", "gtk-directory",
gimp/app/actions/mypaint-brushes-actions.c:  { "mypaint-brushes-show-in-file-manager", "gtk-directory",
gimp/app/actions/dynamics-actions.c:  { "dynamics-show-in-file-manager", "gtk-directory",
gimp/app/actions/tool-presets-actions.c:  { "tool-presets-show-in-file-manager", "gtk-directory",
gimp/app/actions/patterns-actions.c:  { "patterns-show-in-file-manager", "gtk-directory",
gimp/app/actions/documents-actions.c:  { "documents-show-in-file-manager", "gtk-directory",
gimp/app/actions/brushes-actions.c:  { "brushes-show-in-file-manager", "gtk-directory",
gimp/app/actions/gradients-actions.c:  { "gradients-show-in-file-manager", "gtk-directory",


add
gimp-rivert

patch
gimpicons.c
gimpicons.h

patch: replace "document-revert" by "gimp-revert" (or GIMP_STOCK_REVERT)

gimp/app/actions/tool-options-actions.c:  { "tool-options-restore-preset-menu", "document-revert",
gimp/app/actions/tool-presets-actions.c:  { "tool-presets-restore", "document-revert",
gimp/app/actions/gradient-editor-actions.c:  { "gradient-editor-load-left-color", "document-revert",
gimp/app/actions/gradient-editor-actions.c:  { "gradient-editor-load-right-color", "document-revert",
gimp/app/widgets/gimptooloptionseditor.c:    gimp_editor_add_button (GIMP_EDITOR (editor), "document-revert",
gimp/app/widgets/gimpdataeditor.c:                            "document-revert",
2016-06-10 13:50:45 +02:00
klausstaedtler
b4463ad22f icons: Bug 759904
patch: replace "document-save" by "gimp-save" (or GIMP_STOCK_SAVE) and "document-save-as" by "gimp-save-as" (or GIMP_STOCK_SAVE_AS)


gimp/plug-ins/gimpressionist/presets.c:                        gtk_image_new_from_icon_name ("document-save",
gimp/libgimp/gimpexport.c:                        gtk_image_new_from_icon_name ("document-save",
gimp/app/actions/tool-options-actions.c:  { "tool-options-save-preset-menu", "document-save",
gimp/app/actions/vectors-actions.c:  { "vectors-export", "document-save",
gimp/app/actions/error-console-actions.c:  { "error-console-save-all", "document-save-as",
gimp/app/actions/error-console-actions.c:  { "error-console-save-selection", "document-save-as",
gimp/gimp/app/actions/gradient-editor-actions.c:  { "gradient-editor-save-left-color", "document-save",
gimp/app/actions/gradient-editor-actions.c:  { "gradient-editor-save-right-color", "document-save",
gimp/gimp/app/actions/gradients-actions.c:  { "gradients-save-as-pov", "document-save-as",
gimp/gimp/app/widgets/gimptooloptionseditor.c:    gimp_editor_add_button (GIMP_EDITOR (editor), "document-save",
gimp/app/widgets/gimpdevicestatus.c:    gimp_editor_add_button (GIMP_EDITOR (status), "document-save",
gimp/app/widgets/gimpsettingsbox.c:                                     "document-save",
gimp/app/widgets/gimpsettingseditor.c:                            "document-save",
gimp/gimp/app/widgets/gimpdataeditor.c:                            "document-save",
gimp/app/dialogs/preferences-dialog.c:  button = prefs_button_add ("document-save",
gimp/app/dialogs/preferences-dialog.c:  button = prefs_button_add ("document-save",
gimp/app/dialogs/preferences-dialog.c:  button = prefs_button_add ("document-save",
gimp/app/dialogs/preferences-dialog.c:  button = prefs_button_add ("document-save",
2016-06-10 13:50:45 +02:00
klausstaedtler
37c3c01cf1 icons: Bug 759904
add
gimp-next
gimp-previous


patch
gimpcolordisplayeditor.c
gimpcontrollerlist.c
dialog.c
tips-dialog.c
gimpicons.c
gimpicons.h
2016-06-10 13:50:44 +02:00
Michael Natterer
3ed305f6f5 libgimpwidgets, app: have all previews track the monitor they are on
and update their color transforms with the new monitor's color
profile. A widget is considered changing monitors when its toplevel
window's center crosses, in order to let widgets within one window
have consistent colors.
2016-06-01 22:42:00 +02:00
Jehan
cd641fa14f app: create separate tag lists for IME preedit colors.
In particular, I don't want the preedit foreground colors to be
displayed in the text style editor UI. They are only temporary hints
and should not be taken into account as user-chosen style.
2016-06-01 17:44:03 +02:00
Jehan
a86b0cf0a2 app: create a different tag for underlined text during preedit.
It still shows up as underlined during preedit, but does not toggle the
underline button in the style editor.
2016-06-01 17:43:56 +02:00
Jehan
e7b754087c app: clean out tag indentation.
Trying to protect Mitch's mental health!
2016-06-01 17:43:45 +02:00
Jehan
f1dbd57d49 app: GimpText can be set background colors.
There is nothing in our UI to set background color to text, but this
can be used internally, for instance to display input method's preedit
texts with specific colors.
2016-06-01 17:43:25 +02:00
Michael Natterer
729c1edd45 app: color manage GimpColorPanel and its color dialog
if a context is set on the panel.
2016-05-29 21:54:39 +02:00
Michael Natterer
2530b03f3c app: color manage the color DND icon widget 2016-05-29 21:32:05 +02:00
Michael Natterer
ef78897c67 app: set a color config on color areas created from menu actions
and set a GimpContext on the actions so they can find the config.
2016-05-28 03:01:37 +02:00
Michael Natterer
dbb96f57bb Bug 467930 - color selectors are not color managed
Color manage GimpFgBgView.
2016-05-28 01:41:46 +02:00
Michael Natterer
9a871f6262 app: color manage palette and gradient previews 2016-05-27 23:59:07 +02:00
Michael Natterer
a35276ed91 app: make all GimpViewRenderers color manage themselves
Automatically connect to the global GimpColorConfig unless a different
one is set manually (like for previews that belong to a
GimpDisplayShell and should follow its color management settings.  Add
public API for subclasses to get to the renderer's color
transform. Automatically color manage rendered pixbufs, just as we
already manage temp_bufs.
2016-05-27 23:54:46 +02:00
Michael Natterer
0cd3d7aa7b app: color manage GimpFgBgEditor, as used e.g. in the toolbox 2016-05-26 22:25:03 +02:00
Michael Natterer
0acff06465 app: color manage the color buttons of GimpColorHistory 2016-05-26 22:24:35 +02:00
Michael Natterer
0bfa402c1a Argh, this was meant to be squashed into the previous commit... 2016-05-26 22:18:50 +02:00
Michael Natterer
cc92887908 libgimpcolor: add new object GimpColorTransform
which encapsulates a cmsHTRANSFORM and does all the pixel format
conversion magic. It has API to create transforms and proofing
transforms, and to convert pixels arrays and GeglBuffers.

Before, each place which has a transform had to keep around the
transform and its input and output Babl formats, and had to implement
lots of stuff itself. Now all that lives in GimpColorTransform,
removing lots of logic from many places, and pretty much removing lcms
from the public API entirely.

This removes including <lcms2.h>, LCMS_LIBS and LCMS_CFLAGS from
almost all directories and potentially allows to replace lcms by
something else.
2016-05-26 22:15:54 +02:00
Michael Natterer
836972b736 app: use the new function in GimpTemplateEditor
It now offers the right default profiles for the selected image
type/precision.
2016-05-22 13:26:50 +02:00
Michael Natterer
ae1fdd9eeb app: fix the new gimp_color_profile_store_add_defaults()
A NULL profile is only an error if it's NULL because opening
the .icc failed, not just because none is configured...
2016-05-22 13:24:20 +02:00
Michael Natterer
57d497b486 app: add gimp_color_profile_store_add_defaults()
which adds default profiles for an image type/precision.
2016-05-22 01:19:18 +02:00
Michael Natterer
6b246ff6c2 app: remove ancient utility function gimp_toggle_button_set_visible()
and use g_object_bind_property() instead.
2016-05-21 14:28:11 +02:00
Michael Natterer
9f3052583b app: remove gimp_session_write_position()
and un-overengineer the session position accuracy code a bit.
2016-05-21 00:00:07 +02:00
Michael Natterer
28e1a379e6 app: remove const qualifiers from all object parameters
They are unreliable because every type checking cast discards them,
they are useless anyway, visual clutter, added inconsistently, and
generally suck. Wanted to do this a long time ago, it was a bad idea
in the first place.
2016-05-19 23:54:14 +02:00
Ell
8d9df886e2 app: don't hold a direct reference to actions in the action history
Instead, store only the action's name, and look it up upon searching.

Keeping a reference to the actions in the history extended the lifetime of
actions that sohuld have otherwise died, leading to all sorts of nastiness.  In
particular, the Alt+[n] actions to switch between images would remain bound to
their accelerator after the image has been closed, holding a dangling display
pointer, which would lead to a segfault, or fail with a CRITICAL message, when
using the accelerator again.
2016-05-16 12:47:20 +00:00
Ell
4132c0b3e7 app, libgimpwidgets: reset "old" selection color of GimpColor{Button,Panel} ...
... when the button is clicked

Previously, the old color retained its previous value, so when the color
selection dialog was canceled, the button's color would go back to a
potentially outdated value, instead of the color it had when it was
clicked (for continuously-updated color buttons, at least.)
2016-05-16 11:49:00 +00:00
Michael Natterer
406d1b9c65 Bug 320447 - fast switching between "color managed display" and "softproof"
Add a View -> Color Management submenu that allows to change
the color management mode per-display.

Internally, keep a GimpColorConfig object around per-display that
is synchronized with the global config except for the properties
that have a per-display GUI (currently the mode).

Also provide an "As in Preferences" menu item to follow the global
settings again.
2016-05-14 23:50:58 +02:00
Michael Natterer
9bbc52c1be app: add a GimpColorConfig member to GimpViewRenderer
and use it if set to create the display transform, otherwise use the
global config from prefs.
2016-05-14 00:28:15 +02:00
Michael Natterer
fd2ee899f9 app: add a private struct to GimpViewRenderer
and move some members there, including "needs_render" which means
GimpViewRenderer now manages that all by itself.
2016-05-14 00:14:51 +02:00
Michael Natterer
54c0b047b2 app: add basic support for creating images with color profiles
Add "gboolean color_managed" and "GFile *color_profile" to
GimpTemplate. Add a toggle and profile combo to GimpTemplateEditor.
Honor the new template properties in gimp_image_new_from_template().

Using a GFile property instead of a GIMP_TYPE_CONFIG_PATH is
preliminary, see the previous commit. I'd like to use GFile more
directly when dealing with config files, this is for testing that.
2016-05-08 23:20:26 +02:00
Michael Natterer
d4d03d186d app: use gimp_config_path_expand() in gimp_prop_profile_combo_box_new() 2016-05-08 23:12:29 +02:00
Michael Natterer
d37d39bc71 app: some cleanup in gimp_prop_profile_combo_box_new()
- don't warn if an object property is passed (for GFile properties)
- pass the history file to gimp_color_profile_combo_box_new()
2016-05-08 21:13:55 +02:00
Michael Natterer
20f5e25195 app: add gimp_prop_profile_combo_box_new()
and remove the same but less flexible code from the prefs dialog.
2016-05-08 20:38:46 +02:00
Michael Natterer
cc83d9461c app: move the image-duplicate action next to image-new
Just code rordering.
2016-05-08 19:53:16 +02:00
Michael Natterer
58d17e70be app: add Image -> Color Management -> Color Management Enabled
To enable/disable color management for the image.
2016-05-08 19:53:16 +02:00
Michael Natterer
c3c4387d35 app: add Image -> Color Management -> Save Color Profile to File...
using the stuff added in the last few commits.
2016-05-07 03:01:18 +02:00
Michael Natterer
f1f91ecc2f app: don't reverse lists in GimpFilterStack and GimpUndoEditor
GimpList has a tail pointer now and can be traversed in reverse order.
2016-05-03 01:05:49 +02:00
Michael Natterer
39909b6008 app: replace GimpList's internal GList with a GQueue
so we can easily iterate in reverse order, and access the last element
in O(1). Nothing makes use of this yet.
2016-05-01 15:22:44 +02:00
Thomas Manni
f4cb2dd881 Bug 109161 - Improve Histogram with Luminance Channel
Add a luminance channel to GimpHistogram
2016-04-18 19:35:06 +01:00
Michael Natterer
9e01106046 app: set a reasonable minimum height for prop text buffers/views 2016-04-16 17:51:32 +01:00
Michael Natterer
adc5237845 app: support GEGL error string properties in gimp_prop_gui_new_from_pspec() 2016-04-16 03:02:05 +01:00
Kristian Rietveld
2213f29677 app: block edited signal in GimpDataFactory edited callback
This fixes a problem where in some cases the item next to the edited
item was changed inadvertently. This was caused by the fact that
the change of the label within the tree_name_edited callback triggered
a re-ordering of the items, which triggered a stop editing signal, which
finally caused a re-entrance in the tree_name_edited callback. By this
time the item below "path_str" has changed, which caused the name of
another object to be edited.
2016-04-15 23:39:57 +01:00
Michael Natterer
f718940772 app: don't assume that a GimpColorManaged is always also a GimpPickable
Instead, get the color config via GimpViewRenderer's context.
2016-04-15 18:14:08 +01:00
Michael Natterer
88b4c89415 Bug 761118 - GIMP prints many CRITICAL warnings
Bail out in gimp_overlay_box_scroll() if the widget is not realized.
2016-03-28 14:46:13 +02:00
Michael Natterer
7529fd987c app: change GEGL op GUI generation so widgets can expand vertically
Currently we only expand scrolled windows, which are used for
multiline text properties' GtkTextViews.
2016-03-26 20:28:24 +01:00
Michael Natterer
47ef3be145 Initialize GValues with G_VALUE_INIT instead of { 0, } 2016-03-26 15:59:26 +01:00
Øyvind Kolås
2e46850131 app: remove old GEGL multiline prop type/handling
We're using ui_meta keys now, and no longer specialized param spec subclasses
nor tagging with custom qdata.
2016-03-26 12:29:04 +01:00
Øyvind Kolås
9a01a4ff96 app: recognize multiline meta data from ops 2016-03-25 04:28:15 +01:00
Michael Natterer
2229d0aed8 Bug 740939 - No shortcut actions for changing tool's spacing, hardness and force
Add generic tool actions for spacing, hardness and force, and the
GimpToolControl infrasctructure to redirect them to tool-specific
actions. Add tool-specific actions for GimpBrushTool, GimpMybrushTool
and GimpWarpTool as redirect targets. Also fix some existing tool
action callbacks to use the right increase/decrease steps.
2016-03-22 23:54:40 +01:00
Michael Natterer
4110840382 app: the range of GimpInkOption's and GimpBlobEditor's angle is [-PI..PI]
not [-90..90]. This will warn on startup for saved values which are
now out-of-range, but only until the tool options got saved again.
2016-03-21 10:37:56 +01:00
Michael Natterer
9693ab92e7 Bug 761998 - MyPaint brush popup out of screen
Add a lame workaround to GimpContainerPopup (default to 6 instead
of 10 rows of items if the view size is >= LARGE).
2016-03-20 21:34:37 +01:00
Michael Natterer
49ffbbbbc0 app: add menu items and a dialog for GimpItem::fill()
which are essentially a copy of the stroking GUI. We now can fill the
exact shape outlined by stroking selections and paths. Suggestions for
the menu item labels are welcome.
2016-03-15 21:07:59 +01:00
Michael Natterer
c09a724bda app: change parameters of gimp_fill_options_new()
to be the same as of gimp_stroke_options_new() because it's about to
be needed for the same purposes.
2016-03-15 20:10:16 +01:00
Michael Natterer
1fa61cae36 app: clean up "drop to new button" code in GimpDrawableTreeView 2016-03-13 19:04:22 +01:00
Michael Natterer
7b7b8f5d03 app: remove some #includes 2016-03-11 22:45:15 +01:00
Michael Natterer
e1e77f88fa app: change gimp_edit_fill() to take a GimpFillOptions
instead of a long list of parameters. Get rid of gimp_edit_fill_full().
2016-03-11 19:55:50 +01:00
Alexandre Prokoudine
1f80c48361 Mark user-visible messages for translation 2016-02-23 13:26:44 +03:00
Michael Natterer
336785ab51 Bug 753683 - default path location
Change the default folder to "Desktop" on OS X because it's expected
on the platform.
2016-02-12 23:09:03 +01:00
Michael Natterer
e5b6806fe2 app: port tons of files to the new GIMP_CONFIG_PROP_FOO() macros
and remove lots of labels from calls to gimp_prop_foo_new(). Also
had to manually remove some unwanted labels that are now added
automatically, fixes bug #761880.
2016-02-11 23:46:24 +01:00
Jehan
30e4826473 app, libgimpwidgets: update gimp_prop_foo_new() documentation comments.
Explains what happens when NULL labels are used.
2016-02-11 16:35:45 +01:00
Jehan
e6f4dad28c app: do not add both a GtkLabel and GtkImage child to a GtkCheckButton.
Since commit 9c4dd96, a NULL label to gimp_prop_check_button_new()
generates a label from the property nick. Trying to add a GtkImage in
the button outputs a warning because a GtkBin can have only one child.
Fixes the warning:
Gtk-WARNING **: Attempting to add a widget with type GtkImage to a
GtkCheckButton, but as a GtkBin subclass a GtkCheckButton can only contain one
widget at a time; it already contains a widget of type GtkLabel
2016-02-11 15:54:36 +01:00
Michael Natterer
9c4dd960a0 app, libgimpwidgets: allow NULL labels in some gimp_prop_foo_new() functions
and fall back to the GParamSpec's nick.
2016-02-09 23:35:06 +01:00
Michael Natterer
406e1819d0 app: move symmetry painting out of the playground
Also fixes bug #761617 because we don't unconditionally dereference
image_editor->context in gimp_symmetry_editor_set_image() any longer.
2016-02-06 23:33:04 +01:00
Michael Natterer
8bb00c639a app: simplify symmetry GUI generation
Remove GimpSymmetry::get_settings() and instead tag the properties that
should have a GUI with the GIMP_SYMMETRY_PARAM_GUI flag. Also use plain
g_object_class_install_property() because that allows for separate nick
and blurb. Finally, use gimp_prop_gui_new() to generate the GUI,
2016-02-06 23:20:44 +01:00
Michael Natterer
3ac3dcde48 app: add a GParamFlags parameter to gimp_prop_gui_new()
If non-0 flags are passed, create widgets only if the GParamSpec flags
have all the passed flags.
2016-02-06 01:04:40 +01:00
Michael Natterer
e630d6faa8 app: simplify GimpSymmetryEditor even more 2016-02-06 00:32:57 +01:00
Jehan
66ead15f69 app: reparenting GimpSymmetryEditor to GimpImageEditor. 2016-02-04 17:05:27 +01:00
Michael Natterer
02f76b4c7b app: rename GimpImage.selected_symmetry to .active_symmetry
because that's the usual naming. Also change the set/get API accordingly.
2016-02-03 21:25:17 +01:00
Jehan
73389033d2 app: remove redundant "type" member of GimpSymmetry.
Use G_TYPE_FROM_INSTANCE() instead.
2016-02-03 20:11:31 +01:00
Michael Natterer
3415d22e58 app: some cleanup in the new symmetry code, mostly harmless 2016-02-03 14:29:23 +01:00
Jehan
1f4839288e Bug 648776 - fixes symmetry painting after Massimo and Mitch's reviews.
Use a GType for the PROP_SYMMETRY property of GimpImage, and create
a default "identity" symmetry for an image.
I still use a GimpIntComboBox but store the property value in the
user-data column because gpointer isn't a subset of gint.
Adds in libgimpwidgets:
- gimp_int_combo_box_set_active_by_user_data()
- gimp_int_combo_box_get_active_user_data()
- gimp_int_store_lookup_by_user_data()
- gimp_prop_pointer_combo_box_new() to create a GimpIntComboBox and
  attach it to a gpointer property.
Thanks Massimo and Mitch for reviewing my code.
2016-02-02 21:15:13 +01:00
Jehan
76f573c981 Bug 648776 - mirror symmetries.
You can now set any paint tool to mirror painting relatively
horizontal/vertical axis or a central point (any combination of these 3
symmetries).
This has been implemented as a new multi-stroke core, where every stroke
is actually handled as a multi-stroke (default of size 1).
This is also the first usage of custom guides for symmetry guiding.
Current version has to be activated in the playground.
2016-02-02 21:15:13 +01:00
Ell
71119d41c0 app: Add "Flood" select action
and associated UI entries.

This action applies the "gimp:flood" operation to the selection.
2016-01-25 22:58:33 +01:00
Michael Natterer
7c0d7c6311 app: add new virtual function GimpProcedure::get_help_id()
Implement the new function in GimpPlugInProcedure and remove
gimp_plug_in_procedure_get_help_id().
2016-01-17 17:15:27 +01:00
Michael Natterer
0c2797c22e Bug 760362 - gimp-swap-colors not changed 'on the fly' when icon-theme changes
GimpFgBgEditor: free the cached icons in GtkWidget::style_set().
2016-01-11 02:09:55 +01:00
Daniel Sabo
d5a316253d app: Show custom preset icons in the tool options menus 2016-01-10 10:03:10 -08:00
Jehan
d1939c63d4 app: remove trailing spaces. 2016-01-08 20:49:33 +01:00
Michael Natterer
985cc3e1a3 app: remove includes from gimpfiledialog.c 2016-01-07 17:44:22 +01:00
Michael Natterer
dc53501ce9 app: add gimp_plug_in_manager_get_file_procedures() for the file dialogs
Change GimpFileDialog's file-procs properties to enum
GimpFileProcedureGroup and get them via the newly added API. Set
properties common to all dialogs in the parent class.
2016-01-06 15:07:41 +01:00
Michael Natterer
eaa9230015 app: argh, fix last commit, the properties are WRITABLE not READABLE 2016-01-06 14:23:28 +01:00
Michael Natterer
eee29e6793 app: some formatting cleanup in the file dialog widgets
and remove "Gimp*" parameter from gimp_save,export_dialog_set_image(),
the dialog already knows its Gimp.
2016-01-06 14:10:36 +01:00
Michael Natterer
51d41b2d61 app: fix GimpNavigationView and GimpNavigationEditor for rotated canvases
by changing it to always deal with the center of the viewport instead of
its upper-left corner.

Fix gimp_display_shell_scroll_center_image_coordinate() to use the
proper transform functions like in the last commit.
2016-01-05 15:14:08 +01:00
Michael Natterer
2a43ab240b app: don't access GimpSamplePoint members directly
Use the new accessors instead. Clean up guide and sample point code in
image crop and resize a bit.
2016-01-04 22:06:27 +01:00
Michael Natterer
5455b8bfd0 app: move some stuff out of app/file/
file-procedure.[ch] is gone and its functions moved to
GimpPlugInManager where they belong (the manager keeps around the
lists of load, save and export procedures).

Utility functions from file-utils.[ch] that have nothing to do with
image files moved to core/gimp-utils.[ch].
2016-01-03 23:38:08 +01:00
Michael Natterer
1d3bf65934 app: turn get_label() and get_blurb() into virtual functions of GimpProcedure 2016-01-01 20:52:45 +01:00
Michael Natterer
d5255dc133 app: derive GimpProcedure from GimpViewable
and remove redundant icon managing code from GimpPlugInProcedure
2016-01-01 20:05:32 +01:00
Michael Natterer
e0ab721361 app: rename GimpPlugInAction to GimpProcedureAction
and make the filter history keep around a list of GimpProcedures
instead of GimpPlugInProcedures. Still WIP and unfinished...
2016-01-01 20:05:32 +01:00
Michael Natterer
99b7fa851a app: no frames with borders, use GimpFrame instead in GimpSaveDialog 2015-12-29 17:23:14 +01:00
Michael Natterer
660a7aed16 app: formatting cleanup in the last commit 2015-12-29 17:08:51 +01:00
Alexia Death
53eb8677ea app: Allow for mypaint tool to differentiate extended and non-extended events
This adds a boolean to GimpCoords struct that is true for enabled
extended non-mouse devices and false for all the rest allowing
the mypaint brush to override the the pressure sent to the paint library.
2015-12-29 15:44:53 +02:00
Michael Natterer
8fa6e261d0 app: add a brush selector to the MyPaint brush options 2015-12-28 20:04:29 +01:00
Jehan
4b6d4f1fd7 Bug 750546 - Include recently used colors in the Dockable Colors Dialog
New GimpColorHistory widget, replacing the code in GimpColorDialog, and
added to GimpColorEditor to have the color history accessible in the
color dock as well.
Thanks to Thomas Manni for the initial implementation attempt.
2015-12-23 13:25:26 +01:00
Michael Natterer
ab8f2c6d2b app: more s/mybrush/mypaint-brush/ in strings visible in config files 2015-12-22 19:39:11 +01:00
Michael Natterer
d4aa39a7cd app, libgimpwidgets, icons: rename mypaint brush icons and help ID
from "mybrush" to "mypaint brush".
2015-12-21 00:09:55 +01:00
Michael Natterer
f0c1619727 app: add "use MyPaint brush" to GimpToolPreset 2015-12-21 00:09:55 +01:00
Michael Natterer
a5eff27149 app: add new GimpData subclass GimpMybrush and infrastructure around it
- GimpContext API and property
- a GimpDataFactory
- List and grid views with GimpDataFactoryView
- actions and a context menu

None of this is connected to the actual tool yet, or depends on
libmypaint in any way.
2015-12-20 23:51:44 +01:00
Jehan
38b6f16acc app: make the compat mode bubble tooltip into a label.
This way, what the compatibility mode does would not be overlooked as
easily as it is now.
2015-12-20 19:12:54 +01:00
Jehan
d444804e76 app: XCF version 6 should not block compatibility mode.
Metadata presence implies XCF version 6 or higher. Yet metadata are
stored in parasites which are perfecly supported in older GIMP versions
and are passed along through saving.
Therefore there is no need to keep XCF 6. We just add a warning telling
that metadata won't be visible in older GIMP when saving a file with
metadata and compatibility mode.
2015-12-20 18:17:15 +01:00
Michael Natterer
50309bea12 app: invalidate GimpView's renderer in style_set() 2015-12-14 23:22:14 +01:00
Michael Natterer
f7d33ac18f app: don't hardcode the prefs icon sizes n_categories times
Remove the parameters from gimp_prefs_box_add_page() and instead
hardcode them once in GimpPrefsBox. This way they can also easily be
made configurable in the future.
2015-12-13 13:33:55 +01:00
Michael Natterer
8619852a6c app, icons: rename the prefs' "environment" icons to "system-resources"
also rename the help ID.
2015-12-13 13:23:31 +01:00
Michael Natterer
7926188df5 app: update GimpItemTreeView's eye and link cells on icon theme change 2015-12-11 22:55:01 +01:00
Michael Natterer
1125f4df0f app: make sure icons in GimpContainerTreeView follow icon theme changes 2015-12-11 22:46:37 +01:00
Benoit Touchette
55270366d7 Bug 759345 - Fix for prefs dialog to add icon theme support
Change GimpPrefsBox to use icon names instead of pixbufs, and change
preferences-dialog.c accordingly.
2015-12-11 22:15:22 +01:00
Jehan
a646f64472 app: remove some trailing spaces. 2015-12-10 01:40:55 +01:00
Benoit Touchette
6762bf5b9b Bug 759105 - Patch to add icon theme selection
Add support for custom icon themes much like custom theme
support. There is still work to be done but this is the
basic functionality.
2015-12-09 12:50:15 +01:00
Michael Natterer
0c784559c8 app: improve the layout of GimpBufferSourceBox
and add a label with the selected pickable's name.
2015-11-30 02:46:22 +01:00
Michael Natterer
9fcb06b495 app: add new widget GimpBufferSourceBox
which lets the user select a buffer from all available drawables and
projections to be used in a gegl:buffer-source node. The widget's
appearance is scheduled for improvement.
2015-11-29 17:16:23 +01:00
Michael Natterer
ba14054a8e app: simplify the Image -> Precision menu
Keep only one menu item per precision, and have two separate radio
menu items for gamma/linear. Also add gamma/linear radio buttons to
the precision conversion dialog.
2015-11-22 23:19:49 +01:00
Michael Natterer
c6b6031f31 Bug 758049 - Please add canvas flipping
Enable flipping in the canvas rotate transform matrix, and add some
menu items to control it. Rename the "Rotate" menu to "Flip & Rotate".
2015-11-13 18:51:32 +01:00
Michael Natterer
fd13b9a1f7 Bug 712584 - Gimp open file dialog should recognise file based on mimetype...
...not extension

Add the mime-type to GimpFileDialog's filters, in addition to the
extensions.
2015-11-12 12:08:10 +01:00
Jehan
3a7e20d2c6 app: replacing tabs with spaces in gimphelp.c. 2015-11-08 23:26:48 +01:00
Michael Natterer
ace40d125d Bug 735891 - color areas in the color picker info window are half transparent
Add code to GimpOverlayChild which can render arbitrary children of
the widget fully opaque, ignoring the configured opacity.

Add gimp_widget_get,set_fully_opaque() which gets/sets a per-widget
boolean flag to trigger that code.

Set the color picker's and the text tool style widget's color areas to
fully opaque.
2015-10-27 21:41:32 +01:00
Michael Natterer
6ad5530408 Bug 756895 - Floating panel translucency is annoying and unnecessary
Reduce the on-canvas dialog opacity by 50%, the goal is to get an idea
what part of the image os covered, not to actually see it.
2015-10-27 09:39:23 +01:00
Michael Natterer
69abd4d972 app: add progress handling to gimp_gegl_convert_color_profile,transform() 2015-10-19 01:29:22 +02:00
Michael Natterer
91fbc3af01 Bug 734573 - Zoom to selection
Implement View -> Zoom -> Zoom to Selection using
gimp_display_shell_scale_to_rectangle()
2015-10-18 15:26:17 +02:00
Michael Natterer
7ec04e4afe app: get rid of hardcoding GDK_SHIFT_MASK in tools/
gimp_suggest_modifiers(): change "shift_format" and "control_format"
parameters to "extend_selection_format" and "toggle_behavior_format",
which fixes the longstanding problem that the function did the right
thing only by accident.

tools: use gimp_get_extend_selection_mask() instead of GDK_SHIFT_MASK
which is not 100% semantically correct in all cases, but at least a
step in the right direction to make the tool modifiers easier to
improve.
2015-10-17 15:31:08 +02:00
Michael Natterer
92eed69f1b app: add new action to restore a tool preset from the list
In order to make things more obvious here. Before, a tool preset could
only be rstored from the list by selecting it, which only worked if
another preset was active before. Now the selected preset can easily
be restored again.
2015-10-14 12:32:47 +02:00
Jehan
52f6a2aeb4 app: save color history when a color is used.
Now the history of recently used colors is not updated when selecting
in the color dialog anymore, but when a color is actually used.
Tools supported right now are: Ink, MyPaint brush, all PaintBrush tools,
bucket fill and eraser (background color on non-alpha drawables).
Moreover from now on, colors already saved are properly moved to first
position when reused.
2015-09-30 16:39:05 +02:00
Michael Natterer
560841606c app: don't access GtkTargetList's members directly
It's an opaque struct in GTK+ 3.x, so let's fix it here instead of
adding another patch to the gtk3-port branch.
2015-09-28 15:28:57 +02:00
Michael Natterer
1833d292cc Bug 754927 - Non-void function should return a value
Fix return value glitch in last DND-related commit.
2015-09-12 20:26:56 +02:00
Julien Nabet
456d535232 Bug 69496 - Paint tools, Text tool: Click and drag font/brush/pattern/gradient...
...from tool options crashes GIMP

Applied a modified patch that actually removes the target list if it
became empty. This may or may not fix the bug; I can't tell because I
couldn't reproduce it any longer.
2015-09-10 23:48:00 +02:00
Michael Natterer
d370e9c135 Bug 754171 - cmd - missing modifier key to configure input controllers
Forgot to replace "control" with "primary" in the keyboard controller
event names.
2015-09-09 14:59:32 +02:00
Michael Natterer
fb92321d43 Bug 754171 - cmd - missing modifier key to configure input controllers
Need to call gdk_keymap_map_virtual_modifiers() on the parsed
modifiers in order to the the right ones on all platforms (OS X).
2015-09-09 12:11:43 +02:00
Michael Natterer
326ef2f7b2 app: put the GimpOverlayDialog detach tooltip on the with widget 2015-09-09 01:24:19 +02:00
Michael Natterer
bd9afce9e2 app: some cleanup in the new file dialog classes 2015-09-09 00:01:12 +02:00
Jehan
d1e2b2c162 app: gimp_file_dialog_get_default_folder() must return a value.
Oups!
2015-09-08 23:59:13 +02:00
Jehan
3c9a4a24e1 app: reorder GimpFileDialog so that method implementations are together. 2015-09-08 23:29:01 +02:00
Michael Natterer
e50103ccda Bug 754171 - cmd - missing modifier key to configure input controllers
Don't hardcode modifier masks in the wheel and keyboard input
controllers. Instead, hardcode accelerator strings and get the right
modifier mask from gtk_accelerator_parse() at runtime.

This turns e.g. "<Shift><Primary>" into Shift+Cmd on OS X and into
Shift+Ctrl on X11 and Windows.

Also rename the events accordingly and change the event names in the
default controllerrc.

Unrelated: reorder the actions so the ones with less modifiers are
listed first, and change the order of action matching to match the
actions with most modifiers (the last ones) first.
2015-09-08 23:24:48 +02:00
Jehan
4441133a8b app: get_default_folder() is now a class method. 2015-09-08 23:13:03 +02:00
Michael Natterer
22fc50c279 app: rename all values of enum GimpContextPropMask
from GIMP_CONTEXT_FOO_MASK to GIMP_CONTEXT_PROP_MASK_FOO.
Also rename the FIRST and LAST values of enum GimpContextPropType.
2015-09-08 21:18:49 +02:00
Michael Natterer
2c8141d96d app: reorder functions in GimpSaveDialog so method impls are together
Also, "real" is in the name of a method's default impl, not its impl
in a subclass.
2015-09-08 10:51:05 +02:00
Michael Henning
dbe5982753 app: Always return a value from results_list_on_key_press_event 2015-09-06 19:44:33 -04:00
Jehan
a7e7a0bcb9 app: fix Search Popup height saving...
and implement it as the size_allocate() class method rather than
"configure-event" signal handling.
2015-09-06 23:10:26 +02:00
Jehan
bead93fdb8 app: fix whitespaces.
Mitch wanted to kill me, I had no other choice than clean this quick!
2015-09-06 21:02:26 +02:00
Jehan
6a9d449eac app: new GimpSearchPopup widget.
Based on GimpPopup as parent, this is a generic search popup widget,
which can display any list of action. The results construction logics
is not part of the widget, and is built through a callback instead,
which could allow to use it to create different dialogs.
2015-09-06 20:48:05 +02:00
Jehan
316d94d800 app: s/0/GDK_GRAB_SUCCESS/.
Let's use semantic names rather than raw meaningless values.
2015-09-05 22:30:56 +02:00
Jehan
3f51d4eb48 app: use "map-event" if you want to make sure that a window is mapped.
The "map" signal does not mean a widget is mapped. It may be emitted
before. Yet pointer and keyboard grabs won't work on non viewable
widgets and will fail with GDK_GRAB_NOT_VIEWABLE.
For some reason, a GtkWindow with type GTK_WINDOW_POPUP was always
mapped when "map" is emitted but not yet with type GTK_WINDOW_TOPLEVEL
(at least in my tests). Thus switch to "map-event" to make sure the
widget is actually mapped.
2015-09-05 22:27:11 +02:00
Michael Natterer
09fed0a0e5 Bug 478528 - Layer and Image previews are not color managed
Implement color management in GimpViewRenderer: if the viewable is a
GimpColorManaged (true for images and layers), keep around a
GimpColorTransform and convert the preview image to display colors.
2015-09-03 02:25:51 +02:00
Michael Natterer
b45d31072b app, libgimpcolor: refactor GimpColorManaged::get_color_profile()
to not return a reference that has to be dropped. Also allow NULL to
be returned if the managed cannot have a profile. If it can have one,
get_color_profile() still always returns a profile (either the
assigned one, or a generated built-in one).
2015-09-03 01:36:02 +02:00
Michael Natterer
7c95676f88 app: implement the GimpColorManaged interface in GimpLayer
and change GimpImage and GimpItemStack to emit the "profile-changed"
signal when the image's profile changed. Also connect GimpViewRenderer
to "profile-changed" if the viewable is a GimpColorManaged and
invalidate the preview.
2015-09-03 00:21:40 +02:00
Michael Natterer
f374377e9b app: pass the widget to all gimp_view_renderer_render_foo() functions
We will need the widget for color managing previews; it's also more
consistent to pass the widget to all render_foo() functions, not only
to render_icon().
2015-09-02 21:12:59 +02:00
Jehan
829f5ec3d6 app: GimpFileDialog state saving now implemented as a class method.
By default, it only saves the current file filter, but it allows a child
to implement its own state. It has been implemented by GimpSaveDialog to
save the preferred compatibility mode as well.
2015-09-02 20:05:11 +02:00
Jehan
b17e1b1cfc app: split GimpFileDialog into Gimp(Open|Save|Export)Dialog subclasses.
The code refactoring allows better readability which will allow in turn
to add more complex specific features making good use of the save/export
split concept.
2015-09-02 20:05:01 +02:00
Jehan
bdece29d8c app: keep track of compatibility mode on an image.
If one explicitly enables the compatibility mode, one expects this to
be applied on following saves of the same image as well.
2015-09-01 15:20:28 +02:00
Michael Natterer
37a3d423e9 Bug 679387 - Add "select pixels with this color" from colormap
Add gimp_gegl_index_to_mask() and gimp_channel_select_by_index() and
around it actions, callbacks and GUI in the colormap dialog.
2015-08-26 01:06:34 +02:00
Michael Natterer
b5f55ba0ce Bug 749123 - File->Open thumbnail information label misaligned...
...until dialog window is resized

Immediate eye cancer guaranteed when looking at this patch.
2015-08-25 23:05:25 +02:00
Michael Natterer
8c80ee14ff Bug 748749 - picked colors don't match image colors...
...when a color profile is active

This commit doesn't fix anything, but it prepares the code to do the
right thing:

It passes the actual raw image pixels through the entire color picking
mechanism to the widgets which display colors, particularly
GimpColorFrame.

This is needed for GimpColorFrame's "Pixel" mode (as opposed to its
RGB, HSV etc. modes) which is supposed to show the raw pixel values
from the image.

Before this commit, it was recreating the raw pixel values from the
GimpRGB value it knows, which will become impossible when we correctly
pick color managed GimpRGB values soon.
2015-08-25 00:05:59 +02:00
Michael Natterer
b51ee77ec0 app: implement the "Convert to RGB Working Space" import dialog in the core
Add gimp_image_import_color_profile(), a GUI vtable entry
query_profile_policy() and a new dialog which returns the profile
policy and the profile to convert to. Get rid of the wrapper that
calls the lcms plug-in for that dialog, the plug-in is now completely
unused.

This commit doesn't add any new features, it's just the former lcms
plug-in dialog implemented in app/ (except the little fix that it is
now aware of linear vs. gamma images).
2015-08-23 12:59:12 +02:00
Michael Natterer
dc51a89427 app: add helper function gimp_color_profile_label_new()
which is an expander showing a profile's label, and when expanded has
detailled information about the profile. Use it in the color profile
dialog.
2015-08-23 10:41:34 +02:00
Michael Natterer
76782e622d app: add "gboolean convert_profile" to GimpDrawable::convert_type()
also add "GType old_type" to GimpItem::convert() so implementations
can do things depending on the type of the original item.

In gimp_layer_convert(), if the original item is also a layer, and
color management is not off (with a FIXME because this is the wrong
check), pass convert_profile = TRUE to gimp_drawable_convert_type().

There is no color profile conversion anywhere behind this, this is
just an API change commit.
2015-08-16 15:56:28 +02:00
Michael Natterer
1ca3812396 app: rename gimpimage-profile.[ch] to gimpimage-color-profile.[ch] 2015-08-02 22:18:43 +02:00
Michael Natterer
fd873465af app: use better filenames when saving via the XDS protocol
Like IMG_0001.xcf instead of Untitled.xcf if the image was imported
from IMG_0001.JPG.
2015-07-13 03:48:18 +02:00
Michael Natterer
c102dde92b libgimpcolor, *: change GimpColorProfile to be a GObject
it used to be a typedef to gpointer and actually was a cmsHPROFILE.

Change its API to be more "standard", remove the public close()
function. The object caches both the cmsHPROFILE and the data/length
ICC blob, so conversions between the two become obsolete (simply call
get_lcms_profile() or get_icc_profile()).

Adapt everything to the new API, but port it in a naive way for now,
the code doesn't take advantage of the new possibilities yet (like
refcounting).
2015-07-10 22:53:59 +02:00
Michael Natterer
df3f7b01e6 Bug 751645 - tagbox dialog not showing lower tags
gimp_tag_popup_constructed(): calculate the height of the scrollable
area correctly.
2015-07-04 14:04:35 +02:00
Michael Natterer
db09d0f3d3 app: move functions to create layers to new files gimplayer-new.[ch] 2015-06-17 13:21:01 +02:00
Michael Natterer
aeb2a6e4ff Bug 646511 - Having the possibility to remove ICC profiles
Add Image -> Color Management -> Discard Color Profile which simply
removes the profile without any conversion.

Also added actions and callbacks for "Assign" and "Convert" but these
are only stubs to be filled as replacement for the remaining code in
the lcms plug-in.
2015-06-15 20:19:32 +02:00
Jehan
0aae50cfe2 Bug 750556 - validate a tree cell modification on focus out.
For instance, modifying a layer and going directly to draw in the canvas
should not cancel the layer name.
You can still cancel a layer renaming in progress with ESC.
2015-06-14 14:03:16 +02:00
Michael Natterer
31aa1269ec Bug 749777 - Deleting current gradient from script leads to...
GIMP_IS_TAGGED error and possible Gimp crash (core segfault)

Fix again by restoring code I accidentially deleted in
ae708d6419. I don't really understand
what it is doing but better not remove it without understanding.
2015-06-06 23:06:20 +02:00
Michael Natterer
4910c28957 libgimpcolor: rename the gimp_lcms_*() functions to gimp_color_profile_*()
because it doesn't make sense to call the typedef GimpColorProfile
but the function namespace gimp_lcms_*().
2015-06-03 09:41:23 +02:00
Thomas Manni
a7b84ded8e Bug 325564 - Use CIE LCH instead of HSL for layer mode Color
Add Hue, Chroma, Color and Lightness layer modes in LCH color space.
2015-06-02 01:37:26 +02:00
Michael Natterer
ae708d6419 Bug 749777 - Deleting current gradient from script leads to...
GIMP_IS_TAGGED error and possible Gimp crash (core segfault)

Remove the object from GimpTagEntry's selected_items when it is
removed from the GimpContainer.
2015-05-31 00:31:40 +02:00
Michael Natterer
281a529b0c app: use gimp_color_managed_get_color_profile()
instead of gimp_image_get_color_profile() and remove all fallback
code, GimpColorManaged always returns a profile.
2015-05-30 00:58:22 +02:00
Michael Natterer
e06a620d11 app: rename gimp_image_get_profile() to _get_color_profile() 2015-05-30 00:47:13 +02:00
Øyvind Kolås
7e6320497e follow gegl api changes from commit af5361ca8d, with an abyss policy argument
to gegl_buffer_copy.
2015-05-25 01:27:31 +02:00
Simon Budig
6ce2a2b3ad app: more actions for display rotation 2015-05-17 04:13:43 +02:00
Michael Natterer
6b0b774302 libgimpwidgets: add gimpwidgetsutils.[ch]
Move some functions from libgimpwidgets/gimpwidgets.[ch]
and from app/widgets/gimpwidgets-utils.[ch]. Newly add
gimp_widget_get_color_profile() which is extracted from
modules/display-filter-lcms.c.
2015-05-06 22:15:30 +02:00
Michael Natterer
6c800db1cc Use the newly added profile utility functions all over the place 2015-05-06 16:38:57 +02:00
Michael Natterer
072cb068b2 app: add a "detach" button to all on-canvas tool dialogs
which turns them from being automatically attached/detached (depending
on canvas size) into always being a separate window.
2015-05-01 18:00:05 -04:00
Michael Natterer
bc4cf9918f Bug 673501 - Issue with Overlay
GIMP's OVERLAY mode was identical to SOFTLIGHT. This commit fixes the
issue and introduces a NEW_OVERLAY mode and enum value.

- change gimp:overlay-mode to be a real (svg-ish) overlay mode
- when compositing, map OVERLAY to gimp:softlight-mode
- when compisiting, map NEW_OVERLAY to gimp:overlay-mode
- bump the XCF version when NEW_OVERLAY is used
- map OVERLAY to SOFTLIGHT when loading and saving XCF
- map OVERLAY to softlight in all PDB setters
- map OVERLAY to softlight when deserializing a GimpContext
- change all paint mode menus to show an entry for NEW_OVERLAY
  instead of OVERLAY
- change PSP, PSD and OpenRaster to use NEW_OVERLAY

These changes should (redundantly) make sure that no OVERLAY enum
value is used in the core any longer because it gets mapped to
SOFTLIGHT at all entry points, with the downside of introducing a
setter/getter asymmetry when OVERLAY was set in a PDB api.
2015-04-29 13:32:58 -04:00
Michael Natterer
9d510d8fff app: make the MyPaint brush path configurable in Prefs -> Folders
Keep the config values around even if compiled without MyPaint brush
support, so we remember the values between sessions of differently
compiled GIMP versions.
2015-04-25 21:14:22 -04:00
Michael Natterer
8fd282dd28 app: fix typo in "cursor-side-top.png" to make that cursor work again 2015-04-15 21:51:45 +02:00
Michael Natterer
7c36f94f7f cursors,app,libgimpwidgets: include cursors using GResource
instead of deprecated inline pixbufs. Require on gdk-pixbuf >= 2.30.8.
2015-04-14 22:55:10 +02:00
Michael Natterer
6ea9b5c3cf app: connect the MyPaint brush radius to the tool tip size action 2015-03-30 22:38:35 +02:00
Michael Natterer
071ede915a app: first draft of GimpMybrushTool, which uses MyPaint brushes 2015-03-30 22:38:34 +02:00
Hartmut Kuhse
ef66ea296d app: don't assign variable before checking the validity 2015-03-09 08:28:33 +01:00
Johannes Matschke
2989bad35a Bug 721009 - new transform tool with freely placeable handles
Add new tool GimpHandleTransformTool which allows to freely place up
to 4 handles on the image, then move any one of them, which transforms
the image so that the remaining handles keep their position.

Did quite some cleanup on the code before pushing --Mitch
2015-03-05 12:36:59 +01:00
Marek Dvoroznak
f15a7bc71d app: add NPD tool basics 2015-02-27 20:21:51 +01:00
Michael Natterer
dcfe0b8925 app: fix uninitialized boolean in gimp_paned_box_drag_drop() 2015-02-24 23:29:39 +01:00
Michael Natterer
f425f539f8 app: fix the brush editor to not dirty every brush set on it
gimp_brush_editor_update_brush(): only set the brush property whose
GtkAdjustment has changed, and only set it if it is different from the
current value. Before, simply setting a brush on the editor would
cause all properties to be written back to the brush unconditionally.

gimp_brush_editor_notify_brush(): unrelated cleanup: use brush
accessors instead of direct struct access, remove an update of the
radius property from the shape updating code that was probably left
over from copy and paste.
2015-02-24 20:23:55 +01:00
Michael Natterer
1af244b39c app: same fix as below in GimpDataFactoryView
gimp_data_factory_view_tree_name_edited(): change the GimpData's name
only if it actually changed.
2015-02-24 19:17:50 +01:00
Michael Natterer
1105e6455e app: change a GimpData's name only if it actually changed
gimp_data_editor_name_activate(): don't set a new name if it's the
same as the old one.
2015-02-24 19:07:39 +01:00
Michael Natterer
29456b96f9 Bug 744127 - Restore tab hover delay during drag-n-drops
Fix the return values of drag_motion() and drag_drop() callbacks.

Commit 7b85cf4de8 started mixing up
the two unrelated concepts

- the widgets has handled the event
- a drop here would do something / did something successfully

into one boolean value being both the function's return value and
a success indicator for the DND operation.

Untangle the concepts again by returning FALSE when
gimp_paned_box_will_handle_drag() returns TRUE (indicating that the
docking DND mechanism will kick in), and always returning TRUE
otherwise; and by using the state "drop was / would be successful"
only for calling gdk_drag_status() and gtk_drag_finish().

This way we make sure that:

- drag_leave() is called reliably again (because we return TRUE if no
  other widget will handle the event)
- drag data is freed reliably again (because we always call
  gtk_drag_finish())
2015-02-19 22:42:18 +01:00
Michael Natterer
d3600ab379 app: add File -> Copy Image Location 2015-02-17 13:33:10 +01:00
Michael Natterer
39db88d0a5 app: add much more "Show in file manager" menu items
Brushes, patterns, documents, ...
2015-02-16 20:29:31 +01:00
Michael Natterer
e448cc3173 libgimpbase, app: implement File -> Show in File Manager
Add gimp_file_show_in_file_manager() to libgimpbase and a menu item
in app which shows the image's file (if any) in the file manager.

Implemented calling the org.freedesktop.FileManager1 interface
and dropped snippets found on stackoverflow for somebody to
turn into working code for OSX and Windows.
2015-02-16 18:40:26 +01:00
Michael Natterer
c2371a2de9 app: implement Dilate and Erode as wrappers around gegl:value-propagate
Add them to the "drawable" actions. Remove menu registration for
the value-propagate plug-in's dilate and erode procedures.
2015-02-08 19:56:45 +01:00
Michael Natterer
9d75844b7a app: add a custom GUI for gegl:diffraction-patterns 2015-02-06 19:43:49 +01:00
Massimo Valentini
09c5fcc32b Bug 742775: Crash when editing text with certain fonts 2015-02-03 18:33:12 +01:00
Kristian Rietveld
e2d2bdf65c app: ifdef out functions that are unused
Silences compiler warnings.
2015-01-10 00:03:04 +01:00
Kristian Rietveld
cea42c73d8 app: fix implicit enum casting
Silences clang.
2015-01-10 00:02:28 +01:00
Kristian Rietveld
6b6baa6b91 app: fix function signature 2015-01-09 23:47:13 +01:00
Kristian Rietveld
dd7d332fb8 Bug 736746 - Alt+Number only switches to lower-numbered windows
Add "action-group" signal to GimpActionGroup, such that we can
properly set the accel group and connect the accelerator on actions
that are created after the initial setup of the menus.
2015-01-09 23:02:24 +01:00
Michael Natterer
47595b5615 app: use GimpFrames in _gimp_prop_gui_new_channel_mixer() 2014-12-07 20:12:29 +01:00
Alexia Death
44be17a8c1 app: Custom gui for channel mixer 2014-12-07 19:57:28 +02:00
Michael Natterer
16d2031136 Bug 739369 - Rendering artifacts in the tool in-canvas UI with opacity
Don't disable double buffering in GimpOverlayBox, we don't do it for
the canvas any longer, and removing that code fixes the artifacts.
2014-12-01 21:50:57 +01:00
Michael Natterer
73e4828556 app: use g_signal_connect_object() to connect the history to the color dialog
It crashed when the history changed after a dialog way destroyed.
2014-11-29 13:48:00 +01:00
Michael Natterer
c0365c04e7 app: connect GimpColorDialog to the history palette's "dirty" signal
instead of having a ton of convoluted legacy code doing the same
manually. Simpler and more obvious code.
2014-11-29 13:33:56 +01:00
Michael Natterer
bebdcbe0bf app: change enum GimpColorPickState to { START, UPDATE, END }
It used to be { NEW, UPDATE } but that didn't allow to distinguish the
final END update, which we will soon need for automatic color history
updating. Make sure all places that handle motion events on colors
(pick from canvas, gradient editor) correctly send and handle END
events.
2014-11-28 12:00:53 +01:00
Michael Natterer
09628cfa4c Bug 739489 - Add palette of recently used colors
Add a generated palette which contains the color history. For now it's
only updated when the color dialog's color history gets updated, but
should be updated whenever a color is chosen in any way.
2014-11-26 23:48:19 +01:00
Michael Natterer
6f3ee00963 Bug 735424 - Save Tag Filter Options
Save the active tag filter in sessionrc.
2014-11-05 21:14:31 +01:00
Michael Natterer
950f753ede Bug 736907 - Compat mode for XCF
- add gimp_image_get,get_xcf_compat_mode()
- add a compat toggle to GimpFileDialog which is shown and sensitive
  only for a save (not export), and if the image structure allows
  to save an old version at all. The button also has a tooltip
  which explains why it is sensitive and what it does
- add "gboolean xcf_compat" to file_save_dialog_save_image()
- in file_save_dialog_save_image(), call image_set_xcf_compat_mode(TRUE)
  only around the call to file_save() and set it to FALSE after saving
- in xcf_save_invoker(), honor the image's XCF compat flag and save an
  RLE-compressed XCF if possible

The above is very convoluted and doesn't pass the "xcf_compat" boolean
directly because we can't change the parameters of gimp-xcf-save, and
because the gimp-xcf-save might be called indirectly.
2014-10-20 22:54:11 +02:00
Michael Natterer
5d8824f42e app: move all GimpBrush members to a private struct
Add and use accessors for width, height, x_axis and y_axis.
2014-10-12 01:16:32 +02:00
Michael Natterer
69f6d7fc8a app: don't ref the tool options GUI in gimp_tool_options_editor_dispose()
They are kept alive by a ref owned by GimpToolOptions, refing them
here made them all being leaked on exit.
2014-10-09 00:35:57 +02:00
Michael Natterer
88e8fbce17 app: remove unclear fix from gimp_tool_options_editor_tool_changed()
It was introduced in e7ade3f8ec. The
g_return_if_fail() is IMO useless, the actual fix (which I kept) was
pulling the call to gimp_tool_options_editor_presets_update() inside
the if().
2014-10-09 00:33:33 +02:00
Michael Natterer
aa6024dc93 app: don't leak all results from separate_uline_pattern() in GimpSpinScale 2014-10-06 20:34:22 +02:00
Michael Natterer
849481a861 Clean up code around calls to g_file_replace()
- use G_FILE_CREATE_NONE instead of 0
- don't put "Could not open <file> for writing: <error>" around the
  returned error, the returned message is already verbose
2014-10-04 02:44:54 +02:00
Michael Natterer
90c967a39f Bug 737008 - Curve color always black
Don't hardcode "black" for the "Value" curve in GimpCurvesTool.
Instead, pass a NULL color to GimpCurveView, which is then interpreted
as the theme's text color (the curve's background is the theme's text
background color). We still hardcode pure red, green and blue for the
other curves.
2014-09-21 12:32:23 +02:00
Michael Natterer
0cceaff828 Bug 721482 - Make language codes relocatable
Manually picked one line of ef0ef921b8
that makes parse_iso_codes() find the iso-codes package in the bundle
on OS X.
2014-09-17 12:47:21 +02:00
Michael Natterer
7b69b3b60e Bug 733390 - Picking a color should also change the active color...
...in the opened Color Modify window

Connect to the toolbox' context's foreground-changed and
background-changed signals and update the color dialog.
2014-09-16 23:56:50 +02:00
Jehan
b9a9169656 app: update action search to use glib API.
I now normalize with g_str_tokenize_and_fold() which uses standard
Unicode normalization.
I don't use g_str_match_string() directly though, because I want to
run additional checks to order the results by relevance. For instance
I still want actions whose labels starts with the search string to be
at the top, and results with same order as search token before those
with a different order. Then results with match in the tooltip. Finally
I also returns results with partial match in the label, and the rest in
the tooltip, though at the bottom of the list.
Other than that, this returns the same results as g_str_match_string()
with a similar algorithm. In particular now we only match the start of
tokens (a substring in the middle of a token won't match anymore).
I kept the small 2-character trick matching the first letters of the
first 2 words of the label, but I got rid of the fuzzy search (that none
really found ever relevant anyway).
2014-09-16 04:03:43 +02:00
Michael Natterer
14978bfe5d Simplify calls to g_output_stream_write_all()
It returns TRUE only if all bytes were written, so there is no need to
get and check the bytes_written return value.
2014-09-07 20:30:14 +02:00
Jehan
cd0b2f61c0 app: g_file_new_for_uri() return object not freed with g_object_unref().
Non-freed GFile object when saving or exporting the first time, i.e.
with default extensions.
2014-08-19 01:38:13 +02:00
Mikael Magnusson
16637900b6 app: initialize variable 2014-08-16 02:54:57 +02:00
Michael Natterer
dae366bb6e configure.ac, *: require GLib 2.40.0
Remove gimp_output_stream_[v]printf() and use the new functions from
GLib instead. Use memmove() instead of the deprecated g_memmove().
2014-08-12 15:30:19 +02:00
Michael Natterer
c077fb8dad app: add --verbose output when parsing and writing the action history 2014-07-29 18:13:57 +02:00
Michael Natterer
85668c8e69 app: filename -> GFile in parse_iso_codes() 2014-07-29 16:32:29 +02:00
Michael Natterer
e84ef0d7cc app: use GIO to find the locally installed user manual 2014-07-29 13:04:16 +02:00
Michael Natterer
50ca9068da app: more cleanup in the action history code, mostly general consistency 2014-07-29 12:28:18 +02:00
Michael Natterer
b200345a98 app: change GimpImageMapTool::get_settings_ui()'s "default_folder" to GFile 2014-07-29 11:56:49 +02:00
Michael Natterer
b81f46185e app: port the action history to GimpConfigWriter, GimpScanner and to GIO
which means the file format has changed, but it will silently ignore
the parse error when encountering the old format.
2014-07-28 16:44:44 +02:00
Michael Natterer
57cecb54fb app: some serious cleanup in gimpaction-history.c, still a lot to do 2014-07-28 11:22:20 +02:00
Michael Natterer
b03d69dd40 libgimpbase, app: add variants of gimp_$foo_directory() which return GFiles
gimp_directory_file(), gimp_data_directory_file() etc. The new
functions take a variable list of path elements to the file,
the list has to be NULL-terminated. Remove the newly added
gimp_personal_rc_gfile(). Start using the new functions in app/.
2014-07-28 02:04:01 +02:00
Michael Natterer
57e6b22b9d app, plug-ins: remove file-uri completely
and enable the new file-remote code in app unconditionally.
2014-07-23 21:37:13 +02:00
Michael Natterer
cf159ac68a app: get rid of some GtkObject variables, makes the gtk3-port diff smaller 2014-07-21 02:34:39 +02:00
Michael Natterer
328e4eff18 app: add gimp_progress_set_text_literal()
and use it instead of set_text (progress, "%s", literal_message);
2014-07-20 23:32:19 +02:00
Michael Natterer
a6601d563b app: some GimpProgress cleanup
- change start() and set_text() to use "format" and "..." instead of
  "message", allowing to format progress messages in place
- s/cancelable/cancellable/
- move "cancellable" to be the second argument of start()
2014-07-12 23:45:20 +02:00
Michael Natterer
944ba8131b app: honor GIMP_HANDLE_REMOTE_FILES when setting local-only in GimpFileDialog 2014-07-11 09:11:14 +02:00
Michael Natterer
dc842d481b app: use gimp_widget_flush_expose() in GimpProgressBox
instead of flushing the widget manually.
2014-07-11 00:40:56 +02:00
Michael Natterer
39f7401703 app: change Gimp->default_folder from being a path to a GFile
Also fix GimpFileDialog to actually start with that folder, and not in
its parent folder.
2014-07-09 20:12:05 +02:00
Michael Natterer
43e9a79ef9 app: gimp_thumb_box_take_file() must accept a NULL file 2014-07-08 21:40:17 +02:00
Michael Natterer
d4b35785b5 app: more URI -> GFile in GimpFileDialog 2014-07-08 01:41:45 +02:00
Michael Natterer
69686fe446 app: port GimpThumbBox from URI to GFile 2014-07-08 00:58:42 +02:00
Michael Natterer
c656c41d88 app: more URI -> GFile in gimpdnd-xds.c 2014-07-08 00:31:22 +02:00
Michael Natterer
d0a6d95dad app: remove a bunch of file-utils.h includes 2014-07-08 00:23:34 +02:00
Michael Natterer
7f966cad39 app: keep the image's "Untitled" string around as GFile too 2014-07-08 00:15:41 +02:00
Michael Natterer
ff6ea69569 app: change the image's various URIs to GFiles
which gets rid of a lot of temporarily added GFile code again because
we don't need to convert between URI and GFile any longer.
2014-07-07 23:58:11 +02:00
Michael Natterer
0f8d84d5e9 app: port all file_open() and file_save() functions to GFile 2014-07-07 23:58:11 +02:00
Michael Natterer
0753b5a137 app: port gimp_text_buffer_load() and _save() to GIO 2014-07-03 12:57:18 +02:00
Michael Natterer
9f0e27307e app: change filename in gimp_text_buffer_load() and _save() to GFile 2014-07-02 15:10:53 +02:00
Michael Natterer
c88800e840 app: add gimp-priorities.h and keep the most important priorities there
also add comments with all predefined priorities as documentation.
2014-07-02 04:47:24 +02:00
Michael Natterer
98e7ec090b app: use the new gimp_personal_rc_gfile() in lots of places
and pass the GFile to the newly added GFile-based GimpConfig,
GimpScanner etc. functions. This is starting to make sense now...
2014-07-01 20:02:45 +02:00
Michael Natterer
8c8135a881 app: port GimpImageMapTool's settings API from filename to GFile 2014-07-01 15:13:02 +02:00
Michael Natterer
6fd8a362df app: s/gimp_hsv_to_rgb4/gimp_hsv_to_rgb/ in GimpCircle 2014-06-30 17:30:05 +02:00
Michael Natterer
a665c30823 app: gimp_spin_button_new() -> gtk_spin_button_new() 2014-06-21 22:39:37 +02:00
Michael Natterer
5e2d91dc0a app: don't leak the GtkTextBuffers of Gegl multiline text properties 2014-06-20 08:59:42 +02:00
Michael Natterer
40cbbf8faf app: argh, so much for less stupid 2014-06-19 19:00:23 +02:00
Michael Natterer
5a4e9d0e03 app: make the new rounding code in GimpSpinScale less totally stupid 2014-06-19 18:56:43 +02:00
Michael Natterer
be80f49018 app: round mouse-entered GimpSpinScale values to the spinbutton's precision
So the adjustment's value is always what is shown (and can be entered
manually) in the widget. This way a GimpSpinScale will never change
its adjustment on focus-out, and not cause whatever unexpected updates
of its model and whatever is connected to it (like changing the
properties and thus unvalidating the caches of a Gegl graph).
2014-06-19 15:49:27 +02:00
Michael Natterer
77a515dd0f app, libgimpwidgets: don't set unchanged object properties again
gimp_prop_adjustment_callback(): compare the property's current value
before setting it.
2014-06-19 02:01:10 +02:00
Michael Natterer
b6052dc568 app: fix some glitches in GimpPickablePopup
- connect double click on the list of channels
- actually allow channels to be picked
- repopulate the channel view when the image changes

This must have been a late night hack...
2014-06-15 18:30:47 +02:00
Michael Natterer
c071959eb1 app: remove ", 0" left over from removing a MAX (foo, 0) 2014-06-09 03:33:48 +02:00
Michael Natterer
17bd4d2c28 app: make GimpOverlayDialog's title and icon-name settable after construction 2014-06-09 01:42:09 +02:00
Michael Natterer
f348d1d321 app: add a title bar and close button to GimpOverlayDialog
as first step in a bigger tool dialog cleanup.
2014-06-09 00:19:23 +02:00
Michael Natterer
f904088caf app: allow to select channels in GimpPickablePopup 2014-06-07 00:25:51 +02:00
Michael Natterer
2ef565b58f app: implement picking any image or layer in GimpPickableButton/Popup 2014-06-06 22:48:36 +02:00
Michael Natterer
c9fc83a932 app: make gimp_container_view_remove_container() more robust
Don't special case on view_iface->model_is_tree and always run
gimp_container_view_remove_foreach(), also on the view's toplevel
container.  Run gimp_container_view_clear_items() anyway on the
toplevel as an optimization, but with a big comment. This makes all
views (on list *and* tree models) behave the same way, and makes
view_iface->model_is_tree practically obsolete, will remove it later.
2014-06-06 22:48:35 +02:00
Michael Natterer
55e8528eff app: GimpContainerTreeView: keep a reference on tree_view->model
during the lifetime of the widget. Leaving that up to the GtkTreeView
was working for mysterious reasons even during destruction of the
widget. It's safer and cleaner this way.
2014-06-06 22:48:35 +02:00
Michael Natterer
35b3b2bfcf app: chain up unconditionally gimp_container_entry_clear_items()
so the parent implementation can clear the item hash table.
2014-06-06 22:48:35 +02:00
Michael Natterer
ce1c86b71b app: activate GimpPopup's binding set in key_press()
not that of its subclass. Fixes selecting items with return/enter.
2014-06-06 09:22:51 +02:00
Michael Natterer
52aa22f6aa app: add GimpPickablePopup which will allow picking any image/layer's
For now contains a dysfunctional image list.
2014-06-06 01:47:12 +02:00
Michael Natterer
b0b8fda94c app: factor out a generic GimpPopup widget out of GimpContainerPopup 2014-06-06 00:57:20 +02:00
Michael Natterer
3f18d5b26d app: always return a widget from gimp_prop_gui_new()
As a fallback, return a label saying "This operation has no editable
properties".
2014-06-05 23:14:00 +02:00
Michael Natterer
425748dab0 libgimpbase, *: rename GimpFillType values: GIMP_FOO_FILL -> GIMP_FILL_FOO
Change all users accordingly and add compat enum values and compat
constants to script-fu and pygimp.
2014-06-03 01:11:32 +02:00
Michael Natterer
660854f53c app: clean up the generated and custom GEGL GUI code a bit
Still slightly horrible but getting better...
2014-06-02 20:27:59 +02:00
Michael Natterer
8836127efb app: call gdk_display_flush() in gimp_cursor_set()
Cursor change feedback should be immediate even under heavy load.
2014-06-02 20:16:04 +02:00
Michael Natterer
1464bee257 app: use the GParamSpec's nick as label in gimp_prop_spin_scale_new()
if a NULL label was passed. Override this with explicit calls to
gimp_spin_scale_set_label() in the two cases where we really don't
want a label.
2014-06-01 23:39:19 +02:00
Michael Natterer
65b46244c7 app: add a menu of kelvin presets to GEGL properties with unit "kelvin"
Values taken from http://en.wikipedia.org/wiki/Color_temperature
2014-06-01 20:59:57 +02:00
Michael Natterer
0df36e9dcf app: move lots of state handling from sunclasses to GimpCircle 2014-05-30 03:25:02 +02:00
Michael Natterer
f963f55fa4 app: add a "Select All" button to color-rotate's angle range controls 2014-05-30 01:23:15 +02:00
Michael Natterer
45da2c8abb app: use the new GimpPolar in the custom color-rotate GUI 2014-05-30 00:36:43 +02:00
Michael Natterer
71f3895597 app: GimpPolar: add () around && within a || 2014-05-30 00:36:43 +02:00
Michael Natterer
fe7aa1384d app: add gimp_prop_polar_new() 2014-05-30 00:36:43 +02:00
Michael Natterer
ca818d7c88 app: add new GimpCircle subblass GimpPolar to select polar coordinates 2014-05-30 00:36:42 +02:00
Michael Natterer
38e2983c24 app: improve button label in color-rotate's custom GUI 2014-05-29 18:35:25 +02:00
Michael Natterer
31e07a13d1 app: convolution-matrix' matrix was flipped 2014-05-29 00:43:44 +02:00
Michael Natterer
fd3c4ac836 app: improce custom gegl:color-rotate GUI 2014-05-28 14:49:22 +02:00
Michael Natterer
5d1f6806c0 app: add a bad custom GUI for gegl:color-rotate 2014-05-28 01:00:50 +02:00
Michael Natterer
907939edc9 app: add gimp_prop_angle_range_dial_new()
which is by no means general and needs to be improved if ever widely
used.
2014-05-28 00:59:44 +02:00
Michael Natterer
7261c6b3a8 app: experimentally add a custom GUI for gegl:convolution-matrix 2014-05-27 22:09:40 +02:00
Michael Natterer
774e457faf app: add gimppropgui-constructors.[ch]
for operation-specific GUI constructors. Factor a generic fallback
constructor out of gimp_prop_gui_new() and move it there.
2014-05-27 11:19:32 +02:00
Michael Natterer
075cd5f098 app: restore random seed GUI for GEGL ops, broke that with the refactoring
and add a size group for the labels.
2014-05-27 10:47:41 +02:00
Michael Natterer
254a2b744d app: remove the table from gimp_prop_gui_new()
and pack everything into boxes. There are a few size groups missing
to make everything look nicely aligned again.
2014-05-27 03:06:12 +02:00
Michael Natterer
a06d570748 app: rename gimpproptable.[ch] to gimppropgui.[ch] 2014-05-27 02:15:48 +02:00
Michael Natterer
5ffa278da5 app: factor gimp_prop_widget_new() out of gimp_prop_table_new()
The new function generically returns a widget for one property and is
used in gimp_prop_table_new().
2014-05-27 02:08:44 +02:00
Michael Natterer
21d97b02ce app: add private function gimp_dial_set_target()
which avoids invalidating the widget if the target didn't change.
2014-05-27 02:08:43 +02:00
Michael Natterer
6b46dfdb71 app: clean up angle calculations in GimpCicrle and GimpDial 2014-05-27 02:08:43 +02:00
Michael Natterer
d36bc86292 app: fix off-by-0.5 drawing in GimpDial caused by ROUND() and a wrong offset 2014-05-26 19:09:30 +02:00
Michael Natterer
0a49755712 app: highlight the angles of GimpDial that are currently moved 2014-05-26 18:51:12 +02:00
Michael Natterer
d20b576814 app: don't create and fill the background surface on each expose()
Instead, keep it around and only recreate it when widget size or
background type change.
2014-05-26 11:03:39 +02:00
Michael Natterer
5c37ef213d app: restore ungrab on unmap in GimpDial
which I broke when splitting classes.
2014-05-26 10:56:18 +02:00
Michael Natterer
98d6f44231 app: move GimpDial's background drawing to a new parent class, GimpCircle
so we can use that as a parent class for other circle/wheer interactions
in other subclasses.
2014-05-26 09:23:55 +02:00
Michael Henning
6923f49b0d app: Fix broken header guards. 2014-05-25 20:50:56 -04:00
Michael Natterer
b087705c82 app: show an angle dial next to all GEGL angle properties 2014-05-25 21:53:14 +02:00
Michael Natterer
4ec888a771 app: add gimp_prop_angle_dial_new() which handles deg and rad 2014-05-25 21:52:39 +02:00
Michael Natterer
624b0453df app: make GimpDial's size configurable via a property 2014-05-25 20:48:47 +02:00
Michael Natterer
5fbcc70c0c app: add boolean draw_beta property to GimpDial
so it can be used to pick just one angle.
2014-05-25 20:24:47 +02:00
Michael Natterer
06f5e47a0e app: use gimp_cairo_add_arc() in GimpDial 2014-05-25 20:11:51 +02:00
Michael Natterer
b9c7f4fe1e app: make GimpDial's backgrond configurable and add a plain version
which does not show any background color wheel.
2014-05-25 18:22:44 +02:00
Michael Natterer
e3e743bd6b app: rename angle_mod_2PI() to normalize_angle(), there is no mod involved 2014-05-25 17:42:56 +02:00
Michael Natterer
804f3e4bbe app: even more cleanup in GimpDial 2014-05-25 17:41:14 +02:00
Michael Natterer
db7b87e8cf app: credit the color-rotate authors in the GimpDial copyrights 2014-05-25 17:25:39 +02:00
Michael Natterer
e9e4791344 app: simplify and clean up angle utility functions in GimpDial 2014-05-25 17:22:50 +02:00
Michael Natterer
04c36b80c1 app: clean up and simplify code and math in GimpDial 2014-05-25 17:05:59 +02:00
Michael Natterer
5571ad5400 app: turn GimpDial's border_width into a property and default to 0 2014-05-25 16:30:12 +02:00
Michael Natterer
41b15c709d app: move all GimpDial members to a private struct 2014-05-25 16:21:32 +02:00
Michael Natterer
8f07ea37f0 app: prepare GimpDial background drawing to be generic (not only HSV) 2014-05-25 16:12:07 +02:00
Michael Natterer
710281ed54 app: add a boolean "clockwise" property to the new GimpDial widget 2014-05-25 15:45:55 +02:00
Michael Natterer
b2ac41b961 app: add initial version of GimpDial, a widget to select a range of angles
Ported from the color-rotate plug-in.
2014-05-25 03:21:13 +02:00
Michael Natterer
3550132ac7 app: add support for picking GEGL relative-coordinate values
Also, don't link relative coordinates by default, and remove some crap
heuristics that predate property keys.
2014-05-24 01:38:15 +02:00
Michael Natterer
7d89de708e app: GimpViewableDialog:icon-name doesn't need to be CONSTRUCT_ONLY
It works fine to set it after construction.
2014-05-22 23:28:19 +02:00
Michael Natterer
f3092ebfa4 app: minor cosmetic cleanup in the GEGL property code 2014-05-20 20:47:31 +02:00
Øyvind Kolås
b919d7a82f app: use step, page and digits as provided by gegl pspecs 2014-05-20 16:16:48 +02:00
Michael Natterer
bbf01ebabf libgimpwidgets, app: add gdk_screen_get_monitor_workarea()
to the gimp3migration hack and use it where appropriate, so in the
gtk3-port branch windows will not overlap with docks, panels etc.
2014-05-19 14:37:32 +02:00
Michael Natterer
35f8355af4 Bug 729068 - Gimp windows state is lost when closed from the window manager
Set gtk_window_set_skip_taskbar_hint() to FALSE for all dock windows.
2014-05-19 03:28:26 +02:00
Michael Natterer
31f4c5bc67 app: use plain spinbuttons for random seed GEGL properties 2014-05-19 01:32:22 +02:00
Michael Natterer
05db5400f2 app: put the chain on all adjacent "x" and "y" GEGL properties
regardless of their unit. This heuristic works surprisingly well.
2014-05-18 23:21:13 +02:00
Michael Natterer
eeb8c31232 app: only auto-link GEGL properties of unit "pixel-distance" 2014-05-18 23:11:28 +02:00
Michael Natterer
b5e37f46a4 app: let GEGL properties with unit "degree" wrap around
if their total range spans 360 degrees.
2014-05-18 23:04:49 +02:00
Michael Natterer
4900da3183 app: use 1 and 15 increments for GEGL properties with the unit "degree" 2014-05-18 22:58:51 +02:00
Michael Natterer
981abdffe1 app: the icon's name is format-text-strikethrough not format-edit-strikethrough 2014-05-16 20:47:41 +02:00
Michael Natterer
dac7201ead app: follow GEGL propertiy keys convention change
and clean up the magic a bit.
2014-05-16 03:10:01 +02:00
Michael Natterer
c15f319de0 app: make the chain and coordinate picking depend on GEGL property keys 2014-05-16 02:34:10 +02:00
Michael Natterer
8be52f6aa7 app, libgimp*: pass translated blurbs to GIMP_CONFIG_INSTALL_PROP_FOO()
instead of passing N_()-strings; and remove gettext() calls on these
strings when using them. Reduces complexitx, and fixes double- and
untranslated strings. Also enables to treat properties of GIMP and
GEGL objects the same way, which was totally broken before.
2014-05-14 23:34:01 +02:00
Michael Natterer
65a65947d9 app, libgimp: replace GTK_STOCK_FOO by icon names
unless it's a stock ID used for an action button, will address that
later.
2014-05-11 22:49:22 +02:00
Michael Natterer
4b629e984b libgimpwidgets: add GimpColorDisplayClass::icon_name
and deprecate its stock_id.
2014-05-10 11:53:07 +02:00
Michael Natterer
1ec64abb8b libgimpwidgets: add GimpColorSelectorClass::icon_name
and deprecate its stock_id.
2014-05-10 08:34:42 +02:00
Michael Natterer
9331ef2456 libgimpwidgets: change GimpController's stock_id to icon_name
This API change is OK since the entire controller API is marked as
unstable and needs a special #define to be visible at all.
2014-05-09 09:19:06 +02:00
Michael Natterer
ab6a0fe9cb app: port GimpIconPicker to named icons 2014-05-09 02:24:42 +02:00
Michael Natterer
9cb81db026 app: actually use named icons for the toolbox icons 2014-05-08 19:00:18 +02:00
Michael Natterer
b2e792eceb app: add missing include in gimpviewrenderer-frame.c 2014-05-08 12:40:02 +02:00
Michael Natterer
88f29d468c app: fix formatting of two console error messages 2014-05-08 12:12:19 +02:00
Michael Natterer
7d0b326359 app: add gimp_widget_load_icon() as replacement for gtk_widget_render_icon()
...and use it instead.
2014-05-08 09:11:31 +02:00
Michael Natterer
17167594ea app: use the newly added libgimpwidgets icon name APIs 2014-05-07 21:32:09 +02:00
Michael Natterer
0d2d1c3752 app: port most of app's GUI from stock IDs to icon names
There is still quite some stock ID rendering around, stay tuned...
2014-05-07 15:30:38 +02:00
Michael Natterer
23037b5230 app: convert all stock IDs kept around by the core by icon names
Particularly GimpViewable's stock_id. Make sure old config files
containing stock IDs are still properly parsed.
2014-05-07 01:01:56 +02:00
Michael Natterer
9ed5b3f45e app: port GimpAction and friends to icon names 2014-05-06 23:47:38 +02:00
Rickard
5ec413a5e8 Bug 729326 - Errors found using a static code analysis program cppcheck
Fixed some memory and file leaks. And removed some code and variables
that are not used.
2014-05-05 10:34:08 +02:00
Michael Natterer
a1a70a4d1f app: don't session-restore windows partially offscreen or on 2 monitors 2014-05-03 23:59:15 +02:00
Michael Natterer
4da50a64ea app: blacklist the tools-warp-effect-size action for the GUI 2014-05-03 22:56:46 +02:00
Michael Natterer
242ccacdcc app: s/paint_brush/paintbrush/ in the paintbrush action code 2014-05-03 22:55:05 +02:00
Michael Natterer
ff74c76aac app: pushed the wrong version of the last commit 2014-05-03 21:46:19 +02:00
Michael Natterer
bb3ab4c506 app: fix gimp_widget_get_monitor()
Do the right thing for widgets that have a window when the widget is
realized, and simply call gimp_get_monitor_at_pointer() if it's not
realized.
2014-05-03 21:40:59 +02:00
Michael Natterer
b14d386e0c app: remove includes in gimpsessioninfo-dock.c and -book.c 2014-05-03 17:19:10 +02:00
Michael Natterer
a07f2301bb app: s/g_warning/g_printerr/ when GDK returns a bogus resolution
This is not a programming error, so no g_warning() must be used.
2014-05-03 17:19:10 +02:00
Michael Natterer
7cdede6dec app: rename gimp_get_screen_resolution() to get_monitor_resolution()
Add a "monitor" parameter and return something reasonable, instead
of a useless resolution average of all the screen's monitors. Also
require a screen to be passed now.
2014-05-02 23:58:14 +02:00
Michael Natterer
7f23fbec34 app: add screen and monitor to all display and image window constructors
so they appear on the proper monitor as well.
2014-05-02 20:21:41 +02:00
Mukund Sivaraman
d79b7e1329 app: Remove unused variable 2014-05-02 23:27:55 +05:30
Mukund Sivaraman
8adb3090c8 app: Fix format specifier 2014-05-02 23:26:09 +05:30
Michael Natterer
051374a1b6 app: add gimp_get_monitor_at_pointer()
and use it instead of duplicating that code several times.
2014-05-02 13:23:25 +02:00
Michael Natterer
843866e7e7 app: make things behave more reasonable with multiple monitors
There is now a preference option that determines whether windows
should be opened on the same monitor as before. It should be disabled
when the machine gets monitors plugged/unplugged dynamically ("laptop")
and enabled when there is a static multi-monitor setup ("wokstation").
This is merely the current simplistic policy on top of the newly added
underlying infrastructure:

- pass integer monitor numbers around in all places where we already
  pass around a GdkScreen. Pass the "current" monitor to these changed
  APIs, where "current" is either the monitor where the action-triggering
  widget is, or if that is unavailable the monitor where the mouse is.

- add gimp_widget_get_monitor() in order to easily get to the monitor,
  just like gtk_widget_get_screen().

- add screen and monitor parameters in some places that were missed
  before.

- in sessionrc, save all window positions relative to the window's
  monitor, and save the monitor separately, if it's not the screen's
  primary monitor.

- when restoring window positions, use the stored monitor when the new
  prefs options says so (use the screen's primary monitor if there is
  no stored monitor), otherwise use current monitor that is now passed
  around.
2014-05-02 03:01:23 +02:00
Michael Natterer
dcad833d1c app: add gimp_action_is_gui_blacklisted()
which filters out some implementation details but mainly all the
tool-specific options actions which only exist as redirect targets for
the generic tool opaticy, size, aspect and angle actions. Use the new
function from the shortcut editor and from action search so stuff is
consistently hidden.
2014-04-20 15:57:57 +02:00
Michael Natterer
b4ba791381 app: implement the gimp_overlay_dialog_set_response_sensitive() stub 2014-04-18 21:38:15 +02:00
Michael Natterer
be8f43ff06 app: enable scale image's resolution chain button only if xres == yres
(the edit_resolution feature of GimpSizeBox is currently used
only by the scale image dialog)
2014-04-18 19:17:56 +02:00
Michael Natterer
3abb84022a app: enable image new's resolution chain button only if xres == yres 2014-04-18 18:43:32 +02:00
Michael Natterer
f5a1bbb07b app: integrate the layer dialog's "Mode" label into the combo box 2014-04-14 13:04:42 +02:00
Michael Natterer
614c61a3dd Don't #include <glib.h> before <lcms.h>
The include claimed to be because of "inline" in the lcms header, but
that was probably lcms1, since there is no trace of inline in the
lcms2 header.
2014-04-10 20:48:22 +02:00
Michael Natterer
32e47cf70d libgimpcolor: add gimp_lcms_profile_is_equal()
and remove all of our own MD5 digest code and API. is_equal() uses
lcms' own MD5 API which I missed before. Thanks Elle for pointing that
out :)
2014-03-29 10:40:47 +01:00
Michael Natterer
b3395d989e libgimpcolor: return an optional MD5 digest from gimp_lcms_create_srgb_profile()
pass NULL in most places, use the feature in the lcms.c plu-gin.
2014-03-23 23:34:47 +01:00
Michael Natterer
e69ea05102 app: remove some <unistd.h> and other includes
that were needed before we switched to using GLib APIs in these files.
2014-03-22 20:26:20 +01:00
Michael Natterer
89e0c04d13 app: add gimp_image_get_profile() which returns a cmsHPROFILE 2014-03-17 02:29:46 +01:00
Michael Natterer
e80eaf2524 app: start an image profile API in core/gimpimage-profile.[ch]
add lowlevel functions gimp_image_get,set_icc_profile() which deal
with ICC profiles in a GimpParasite.
2014-03-16 23:50:41 +01:00
Michael Natterer
ed13993aff app: use a GimpColorProfileView in GimpImageProfileView
and parse the profile in gimpimageprofileview.c instead of calling the
lcms plug-in. Make the app link against lcms. This is WIP because the
widget is of course the wrong place for such profile parsing code.
2014-03-16 18:36:12 +01:00
Michael Natterer
9c7cd2508f app, libgimpwidgets: move GimpProfileChooserDialog to libgimpwidgets
and call it GimpColorProfileChooserDialog. Make libgimpwidgets
depend on lcms and make it query the profile directly.
2014-03-14 22:03:08 +01:00
Michael Natterer
86e002da33 app: move all GimpProfileChooserDialog to a private struct
and make the preview widget look the same as the profile tab
in the image properties dialg.
2014-03-14 20:26:15 +01:00
Michael Natterer
35606094e6 app: be more robust about possible profile info return values 2014-03-14 20:26:15 +01:00
Michael Natterer
e72388ddf4 app: add signal GimpWindow::monitor_changed()
and emit it when the window moves between monitors or screens.
2014-03-13 22:39:03 +01:00
Michael Natterer
4267ea5d12 app: set the idle_id to 0 in gimp_image_profile_view_query()
fixes warnings from dispose() about removing a source that doesn't
exist.
2014-03-10 01:25:16 +01:00
Michael Natterer
3c918353fb app: add double precision support, for completeness
and because it makes us look utterly cool.
2014-03-09 00:43:55 +01:00
Michael Natterer
87df804f8a app: exclude generated submenu actions for plug-ins from the search 2014-02-19 01:24:27 +01:00
Michael Natterer
0d16c328c8 app: use gimp_personal_rc_file() not g_build_filename()
for saving the action history.
2014-02-18 23:31:25 +01:00
Michael Natterer
00348ffc0c app: more action search cleanup
- standard copyright headers
- use gtk_action_is_sensitive() not get_sensitive()
- formatting
2014-02-18 23:24:48 +01:00
Michael Natterer
36f87b5b2b app: clean up the new action search a bit
- order some stuff alphabetically and consistently
- move action from help-actions to dialogs-actions
- fix OS/X menu item fiddling (untested)
2014-02-18 20:10:24 +01:00
Jehan
5903e53d51 Bug 708174 - Improve the original search dialog patch.
Fix various bugs, improve code design and efficiency, change feature
name, update the feature up to our standards (now uses GIMP preferences,
session management, less overwhelming settings...).
Also now action history is tightly tied to GimpAction and logs all
action activation (however it activates, and the show_unavailable
parameter also applies to history).
Search algorithm greatly improved with basic tokenization, better
ordering, filtering, etc.
2014-02-18 19:13:03 +01:00
Srihari
fc8f6c127f Bug 708174 - A text based intent driving tool for GIMP (Tito) 2014-02-18 19:13:03 +01:00
Michael Natterer
16938bb667 Bug 676522 - Make DND work between images in *one* dockable...
...after in-DND image switching

This was actually two issues:

First, DND data is normally transferred on drop. In this situation the
contents of the source widget change in the middle of DND, so when the
drop happens there is nothing to transfer. Fixed this by attaching the
thing to transfer (image, item, color etc) to the GdkDragContext when
the DND operation starts, and trying to retrieve it on drop. Only when
nothing is attached we fall back to the traditional way of asking the
source widget. This is expected and an obvious fix.

Second, and not so obvious, the source part of the GTK+-internal state
of the DND operation (GtkDragSourceInfo) contains a *reference* (not a
copy) of the source widget's target list. When we change images in the
middle of DND, the source layer view's target list gets modified, and
because GtkDragSourceInfo only references it, the state of the ongoing
DND operation gets destroyed with it. Fixed this by changing
gimp_dnd_data_source_remove() to never change a source widget's target
list but instead create a new list without the removed target and
replace the source widget's list, keeping the ongoing drag's list
unaffected.

Also kept all the GIMP_LOG() stuff I added during debugging there, it
turned out to be quite useful.
2014-02-15 21:29:36 +01:00
Michael Natterer
aabd64e070 Bug 722400 - GIMP segfaults when trying to save a modified, newly created image
If for whatever reason making an uri from the documents folder fails,
return the uri of the home directory.
2014-02-08 10:18:29 +01:00
Michael Natterer
7385e030dd app, libgimp: add increment parameters to gimp_prop_widget_set_factor()
Step and page increments can't be reasonable calculated or guessed
based on the GUI widget's factor, so pass them each time we call
set_factor(). This change reintroduces sane ranges for the levels tool
for != u8 images again.
2014-02-03 22:57:51 +01:00
Michael Natterer
7fca15c27d Bug 722975 - crash when removing tag from palette while filtering by same tag
Each of the following cleans up tag refcounting, fixes access to
released memory, or other small glitches. Not sure which change
actually fixed the bug:

gimp_data_remove_tag(): remove the found tag, not the passed in tag
(which is to be treated only as a value for comparison).

gimp_tagged_remove_tag(): don't continue the loop after the tag to
remove has been found, there can only be one matching tag, and the
list element has become invalid.

gimptagentry.c: keep references around for the members of
entry->common_tags, and make sure the references are always dropped
properly. In assign_tags(), reference the "add" and "remove" lists for
paranoia and safety reasons.
2014-01-26 21:03:28 +01:00
Michael Natterer
84c132addc Bug 721553 - License text contains obsolete FSF postal address
These files were forgotten when changing license from GPL2 to GPL3.
2014-01-05 14:25:46 +01:00
Michael Natterer
262d312dfc app: make GimpCurveView's cursor label look pretty for 0..100 ranges
and generally clean up the cursor label code a bit.
2013-12-26 16:33:59 +01:00
Michael Natterer
0e1978d273 Bug 719634 - Palette editor not working for New Palettes (cannot drop colors)
Allow to drop colors also on the palette view's parent viewport, so
colors can be dropped everywhere inside the scrolled window, also when
the palette view is invisible because it has zero colors. Also allow
dropping of palettes on the viewport to change the editor's active
palette.
2013-12-01 18:04:51 +01:00
Michael Natterer
2eb74becb8 app: add G_GNUC_PRINTF() to places where the args are a va_list
The trick is to use G_GNUC_PRINTF (n, 0).
2013-11-29 00:33:05 +01:00
Michael Natterer
174dee3427 Bug 525705 - skip thumbnailing entirely on files with insufficient...
...read permissions

Apply modified patch from Sven Neumann which implements just that.
2013-11-23 18:05:55 +01:00
Jehan
4b14ed2e5e file-export* labels and actions renamed.
Follows updated save+export specification.
For renamed actions (file-export and file-export-to respectively to
file-export-as and file-export to mimick file-save*), menurc from
GIMP 2.8 will be correctly migrated.
2013-11-18 09:07:32 +13:00
Michael Natterer
65066ff46b app: add gimp_get_primary_accelerator_mask() to gimpwidgets-utils 2013-11-08 10:00:20 +01:00
Nils Philippsen
391de600f1 app: don't ignore return value
...of gtk_widget_translate_coordinates()
2013-11-07 12:28:28 +01:00
Michael Natterer
78ad0327da app: add new accessor gimp_container_tree_view_get_name_cell() 2013-11-07 11:32:23 +01:00
Michael Natterer
fbfaa960e1 Bug 705797 - Empty right panel cannot be completely closed
Reduce the minimum width of the "You can drop foo here" label to one
pixel, so it can be hidden as completely as possible while keeping the
label visible.
2013-11-03 16:04:58 +01:00
Michael Natterer
aea161c9a5 app: also include <gegl.h> when we include "libgimpwidgets/gimpwidgets.h" 2013-11-01 22:28:18 +01:00
Jehan
c15f9799c1 app: tabs position saved in sessionrc and only 1 HELP-ID is enough.
The settings was saved both in sessionrc and gimprc!
2013-10-12 04:30:30 +13:00
Jehan
b2e40c4ca7 Bug 667169 - Single window mode: allow tabs position setting. 2013-10-11 23:16:29 +13:00
Alexandre Prokoudine
7be0e1c747 Fix syntaxis in user-visible messages
Phrases starting with "When enabled" should have a comma.
2013-10-11 06:32:04 +04:00
Jehan
3e082b356c Bug 681709 - GimpContainer continuously scrolls on dnd failure on Windows.
The scroll timeout is looping forever if the drag ends by a failure
event. For instance when hitting the Esc button during scrolling.
2013-10-02 21:18:10 +13:00
Michael Natterer
462f61794e app: fix drawing of the empty canvas wilber 2013-09-28 18:00:31 +02:00
Michael Natterer
86b13ae8c4 app: handle changing buffers in GimpPickableButton
by emitting "notify::pickable" when the pickable's buffer changes, or
setting the pickable to NULL when its buffer disappears.
2013-09-15 20:03:31 +02:00
Michael Natterer
4e2868986a app: add new widget GimpPickableButton
Totally WIP and later supposed to give simple access to all sorts of
things that can provide a GeglBuffer via the GimpPickable
interface. Currently only dropping of drawables and images is
supported.
2013-09-15 00:30:14 +02:00
Jehan
c7aa623a55 app: clean out a big bunch of leading tabs.
For some unknown reason, most calls to gimp_message_literal() were
indented with tabs.
2013-09-15 04:59:20 +12:00
Jehan
338e0ddf8d Bug 707255 - Open preferences when quitting causes assertion failure
When removing the container of a GimpContainerView,
gimp_container_view_remove_container() must be the last call. It was
causing a `GIMP_IS_CONTAINER (container)' failure in subsequent
gimp_container_get_children_type().
For good practice, unsetting a container works now the exact reversed
order as the setting of a container.
2013-09-05 23:41:23 +12:00
Jehan
04a3c65aa1 Bug 707255 - Open preferences when quitting causes assertion failure.
Wrong order of destruction functions were causing critical warnings on
g_signal_handlers_disconnect_by_func() calls.
Also g_object_ref/unref() the container because the tree handler might
hold the last ref to the container, once it's disconnected the container
could be gone.
2013-09-05 23:23:24 +12:00
Michael Natterer
55a70729ae app: add some function stubs to GimpOverlayDialog
and move the TODO comments from GimpToolGui to the stubs.
2013-08-03 02:32:02 +02:00
Jehan
f0b3c76c9d app - fix crash of the language parser on OSX.
Stupid bug. I misused the GINT_TO_POINTER macro.
2013-07-29 02:12:17 +12:00
Michael Natterer
013c9d337b Bug 704896 - pop ups are annoying when opening multiple files from...
the command line on some platforms/window managers

Don't let the progress windows steal the focus, and always center
them.
2013-07-28 02:50:33 +02:00
Jehan
a129f84c68 Bug 704592 - only load language lists once at gui startup.
Improvements:
- setenv/getenv() are not thread-safe, hence they should be run only at
startup before any threading occurs.
- it is counter-productive to load the huge ISO-639 XML file each time
the user opens the Preferences dialog or the text tool options.
2013-07-28 04:46:52 +12:00
Michael Henning
175835fa2f app: #include <locale.h> where setlocale () is used. 2013-07-21 21:12:41 -04:00
Jehan
0e93e181a2 app: locales without ISO-639-1 codes should not be ignored
Some languages have no 2-letter ISO-639-1. This is the case in particular
for 3 languages we have translations for: ast (Asturian), csb (Kashubian)
and nds (Low German), which have only 3-letter ISO-639-2/3 codes.
They were not visible in the list of languages in the Preferences dialog
until now.
2013-07-20 15:08:49 +09:00
Jehan
2370670396 Bug 704510 - GIMP segfaults on OSX.
Forgot a setenv() with possible a NULL value.
2013-07-19 20:49:40 +09:00
Jehan
aa67bec9f0 Bug 704510 - GIMP segfaults on OSX.
setenv() does not behave well on some systems, in particular OSX (and
probably some BSDs), when the set value is NULL. In this case, let's
unsetenv() the environment variable instead.
2013-07-19 11:39:50 +09:00
Michael Natterer
37372555e5 Bug 704118 - crash on invalid number of PLTE entries
Make sure an indexed image always has a colormap. This was the case
before, except one could set a NULL colormap via the PDB.

Add gimp_image_unset_colormap(), and make gimp_image_set_colormap()
never set the colormap to NULL, even if NULL is passed. Change the
only places where actual unsetting makes sense to use unset().

Make some GUI places deal gracefully with palettes/colormaps with zero
entries.
2013-07-14 22:25:44 +02:00
Michael Natterer
a2334b0b15 Bug 703692 - Unable to Resize Large Left Dock Area
Small fix for the last commit: set a silly small initial size request
on the wrap_box so it doesn't initially request too much and breaks
dock layout deserialization.
2013-07-14 13:27:57 +02:00
Michael Natterer
6a5e37b68d Bug 703692 - Unable to Resize Large Left Dock Area
gimp_container_grid_view_viewport_resized(): set the wrap_box'
required width to just one cell_width, not cell_width * columns. This
way it can shrink also when attached to a toolbox dock. It remains
unclear why it could nicely shrink in all other dock columns.
2013-07-13 18:50:55 +02:00
Jehan
fc873cd6c3 Bug 576910: Show 'Language' setting languages in native language
Showing the current system locale between square brackets in the
"System Language" item was causing some issues on some systems (showing
some very weird and long value).
This was mostly a cosmetic change anyway with limited gain. Let's
just get rid of it. The main part of the feature (each language
displayed in itself) is still there.
2013-07-05 23:38:10 +09:00
Jehan
4eecd9b4ac Bug 576910: small fix on "Show 'Language' setting languages in native language"
glib's g_getenv() doc says: "The returned string may be overwritten by
the next call to g_getenv(), g_setenv() or g_unsetenv()". And I do
g_setenv() calls just after, while I wish to keep the value intact.

As a consequence, even though the previous commit seemed to work just fine,
I duplicate the return value of g_getenv(), just to be on the safe side.
2013-07-03 20:38:42 +09:00
Jehan
f6dcde1ee6 Bug 576910: Show 'Language' setting languages in native language
The trick works by temporarily resetting the current locale to localize
each language label in its own lang.
One exception is English that is equivalent to the "C" code, and we make
also some special exception for Chinese where there are very different
variant depending on the region.
I also ensure the "System Language" string is translated in whatever
language is the system actually set to.
2013-07-03 20:02:45 +09:00
Michael Natterer
b52beecc87 app: port GimpImagePropView's file size querying to GIO 2013-06-25 19:08:12 +02:00
Michael Natterer
caf73f5f35 Add support for both gamma-corrected and linear for all bit depths
- Add new enum GimpComponentType which contains u8, u16, u32 etc.
- Change GimpPrecision to be u8-linear, u8-gamma, u16-linear etc.
- Add all the needed formats to gimp-babl.c
- Bump the XCF version to 5 and make sure version 4 with the old
  GimpPrecision enum values is loaded correctly

This change blows up the precision enums in "New Image" and
Image->Precision so we can test all this stuff. It is undecided what
format will be user-visible options in 2.10.
2013-06-23 16:51:24 +02:00
Michael Natterer
94ec249e1e app: initialize variable in gimp_histogram_view_update_bins() 2013-06-18 00:10:57 +02:00
Michael Natterer
6280e4933a app: add gimp_handle_bar_connect_events()
to replace 3 completely ugly signal connections, repeated in 4 places.
2013-06-17 22:13:48 +02:00
Mikael Magnusson
cfd360aa03 app: g_return_if_fail (shell_selection) on the public API in gimpdisplayshell-selection.c, move free null check to gimpdisplayshell's dispose() 2013-06-16 20:21:32 +02:00
Mikael Magnusson
8115467b65 app: ! has higher precedence than ==, use != instead
Found by coverity
2013-06-16 01:34:23 +02:00
Mikael Magnusson
0091645129 app: remove pointless NULL checks 2013-06-16 01:31:13 +02:00
Michael Natterer
0a73a787ba app: remove GimpSpinScale's "factor" API again
The method of replacing the spinbutton's adjustment was just waiting
for some future bugs to appear.
2013-06-15 20:53:37 +02:00
Michael Natterer
3fb16c8849 app: GimpHistogramView: fix display when the number of bins changes
Also look at "bg_histogram", but only if "histogram" is not set. Fixes
curves tool display after changing image precision.
2013-06-15 20:29:42 +02:00
Michael Natterer
731360a8f7 app: add gimp_prop_widget_set_factor()
which allows adjustment-based prop widgets to display the property
value multiplied by factor. Remove gimp_prop_opacity_spin_scale_new()
because that's simply a factor of 100.0.
2013-06-15 01:28:54 +02:00
Michael Natterer
0046f0eed6 app: fix gimp_spin_scale_set_factor() to not break if called more than once 2013-06-14 02:22:57 +02:00
Michael Natterer
edca08e1c2 app: fix rendering glitches on changing the axis ranges in GimpCurveView
and honor the x-axis range when displaying the set "xpos".
2013-06-13 00:22:20 +02:00
Michael Natterer
945e57af1d app: GimpHistogramBox: map the range to 0..1 for != 8 bit histograms 2013-06-12 11:18:07 +02:00
Michael Natterer
9ba866dc38 app: a drawing off-by-one was corrected wrongly in GimpHandleBar
Wasn't noticable before because we didn't have handle bars
in the range of 0..1.
2013-06-12 11:16:33 +02:00
Michael Natterer
571350270b app: return 0.0..1.0 from gimp_histogram_get_mean(), median(), std_dev()
Display the float values in the histogram dockable and add a compat
hack to the gimp_histogram() PDB wrapper.
2013-06-12 02:01:24 +02:00
Michael Natterer
6c97908a9e app: add "gboolean gamma_corrected" to gimp_histogram_new()
so we can make histograms of the gamma-corrected image data. Pass
TRUE all over the place so the histogram works perceptually. This
needs more thinking...
2013-06-12 01:02:25 +02:00
Michael Natterer
96d1a9392e app: gimp_histogram_editor_info_update(): use the real number of bins
for displaying histogram info, not always 255.
2013-06-12 01:01:39 +02:00
Michael Natterer
d26cd268ba app: start using the new histogram property notifications in the widgets
This is only WIP, but it at least updates the selected range correctly
when the image precision changes.
2013-06-11 22:36:33 +02:00
Michael Natterer
a7f42de4c0 app: turn GimpHistorgram into a GimpObject, no other changes 2013-06-11 21:23:32 +02:00
Michael Natterer
88a971f6c9 app: port GimpHistogramView drawing to a flexible amount of bins 2013-06-11 08:48:25 +02:00
Michael Natterer
48d611b5c2 app: don't overallocate, a double is 64 bits not 64 bytes :) 2013-06-10 01:12:06 +02:00
Michael Natterer
a1e7591351 app: show the real pixel values in GimpColorFrame's "Pixel" mode
Rewrite gimp_color_frame_update() to use gimp_babl_print_pixel()
2013-06-10 00:30:18 +02:00
Michael Natterer
d2b254c4dc app: use GimpIntComboBox' label in generated GEGL op GUIs
Makes the property widget table less noisy.
2013-06-08 22:01:24 +02:00
Michael Natterer
ec786816bb */Makefile.am: merge INCLUDES into AM_CPPFLAGS
automake-1.13 finally warns about this anachronism.
2013-06-05 20:48:37 +02:00
Michael Natterer
7dcf5e9b04 app: make viewable boxes (preview+entry in tool options) more shrinkable
Additionally, change gradient viewable boxes to be narrower by
default.
2013-06-04 10:19:54 +02:00
Michael Natterer
38e9c79d1e app: experimental: use the new coordinate picking in property tables
If we add a chain button to link x/y or width/height properties, also
add a coordinate pick button for these properties. This looks totally
ugly and is broken for most cases where it happens, but it works
nicely for e.g. gegl:fractal-explorer or gegl:grid. This clearly needs
some metadata for operation properties to be useful.
2013-05-30 23:36:39 +02:00
Michael Natterer
033d4ad58a app: typo in gimp_prop_table_new()'s prototype: fnc -> func 2013-05-30 23:31:17 +02:00
Michael Natterer
73d7c28f76 app: add dedicated source files for gimp_prop_table_new() 2013-05-30 16:33:30 +02:00