Commit Graph

170 Commits

Author SHA1 Message Date
Jehan 0d98969a47 libgimpwidgets, plug-ins: rename gimp_scale_entry_set_range() to…
… gimp_scale_entry_set_bounds().
I realized that this function may look like the set() opposite for
gimp_scale_entry_get_range(), which it is not at all. The get_range() is
for getting back the GtkRange widget packed in the GimpScaleEntry,
whereas the set_range() is to change the minimum and maximum allowed
values.

I had recently renamed the former, and could just rename it back into
gimp_scale_entry_get_scale() as it was, but since the class we rely on
is actually called GtkRange (GtkScale is a subclass), I think it could
be misleading. So in the end, let's rather rename the function setting
the widget minimum and maximum as gimp_scale_entry_set_bounds() instead.
Hopefully this is even more understandable. Naming is hard!
2020-11-01 03:00:09 +01:00
Jehan b3c0ba061b app, libgimpwidgets, modules, plug-ins: finishing GimpScaleEntry port.
Renaming the temporary function gimp_scale_entry_new2() into
gimp_scale_entry_new() now that the original code is entirely gone. This
is now a fully-fledged widget with a nice and proper introspectable API.
2020-11-01 02:46:20 +01:00
Jehan 77d2a93a52 libgimpwidgets, plug-ins: remove legacy gimp_color_scale_entry_new().
Former gimp_color_scale_entry_new() is finally replaced by the
GimpColorScaleEntry implementation.
Both places which used it (GimpColorScales and compose plug-in) now use
the new widget.

Also making "upper" and "lower" properties of GimpScaleEntry into
construction properties, and create the main GtkAjustment at init, so
that we are sure that lower and upper bounds are properly set before we
set the value (when setting all properties at once, we cannot ensure
that these limit properties are set before the "value" one).
2020-11-01 02:23:03 +01:00
Jehan 1cdfb0bd3f libgimpwidgets: use G_DECLARE_* macros on Gimp*ScaleEntry classes.
I updated GimpScaleEntry and GimpColorScaleEntry header to use
respectively the macros G_DECLARE_DERIVABLE_TYPE and
G_DECLARE_FINAL_TYPE.

Though having the `priv` structure directly in the object data is
extremely comfortable for developing (hence we don't want to use this
macro on core code as it makes coding a bit more bothersome), it is true
that it does not make for a very pretty public interface (showing a
`priv` member which nobody can actually use, and a private type which
has no associated functions). So it might be a good idea to use these
macros at least on libgimp side.

I am still not sure though if it is a good idea so we could say it's an
experiment. At least the docs says that using G_DECLARE_FINAL_TYPE does
not affect ABI stability as it can later be changed into a
G_DECLARE_DERIVABLE_TYPE because the class structure stays private. So
at least that's one good point.

P.S.: also reordering gimpwidgets.def.
2020-11-01 00:47:43 +01:00
Jehan f27d172750 libgimpwidgets: new GimpColorScaleEntry class.
Similarly to GimpScaleEntry, this is meant to replace usage of
gimp_color_scale_entry_new() by having a proper widget. This is a child
class of GimpScaleEntry which simply replaces the GtkScale by a
GimpColorScale by adding a GimpScaleEntry class method to create the
scale widget (only restriction: it must be a GtkRange subtype).

This also triggers me to rename gimp_scale_entry_get_scale() into
gimp_scale_entry_get_range() (as well as the 2 plug-ins already using
this function).
2020-11-01 00:08:20 +01:00
Jehan aa0b70ea38 libgimpwidgets: get rid of old gimp_scale_entry_new().
Also do a few minor fixes in GimpScaleEntry implementation.
2020-11-01 00:08:20 +01:00
Jehan 10dfaead68 libgimpwidgets, plug-ins: continue GimpScaleEntry port to real widget.
I got rid of gimp_scale_entry_set_sensitive(), as we can now use the
generic gtk_widget_set_sensitive(), and I ported the 2 plug-ins using
this function.
I also created gimp_scale_entry_set_value() to set the value (nicer than
setting object properties).
2020-10-30 21:30:16 +01:00
Jehan 99193230b3 libgimpwidgets: fix def files.
And consequentely the distcheck as well as Windows builds.
2020-10-30 13:04:30 +01:00
Niels De Graef 5d3ca7d714 propwidget: Add gimp_prop_switch_new()
Allow developers to add a `GtkSwitch` based on a property. Also start
using it in the first preferences page.
2020-08-22 23:53:49 +00:00
Niels De Graef 65b12c108d libgimpwidgets: UnitStore: Fix conflicting names
`gimp_unit_store_get_value()` clashes with the `get_value()` method of
its parent class GtkTreeStore. This means trouble for bindings, as seen
here in some pseudocode:

```vala
var unit_store = new Gimp.UnitStore();
// Which function are we referencing here, the one from GtkTreeStore or
// the one from GimpUnitStore? Worse, they both have different arguments
unit_store.get_value( ... )
```
2020-05-10 12:06:33 +00:00
Niels De Graef cf41d1fdf8 colorselector: Rename signal emitters
The GIR parser is giving warnings because both e.g. a signal, a
corresponding vfunc and a method emitting it are named
"channel_changed", which can and will give issues in some bindings.

The easiest option is to follow the general convention of starting the
signal emitters with `emit_`, which also makes clear the intention of
the method.
2020-05-03 23:23:44 +02:00
Michael Natterer d02d97e310 libgimpwidgets: add gimp_prop_int_radio_frame,box_new() 2019-10-03 15:59:09 +02:00
Michael Natterer 1f7c823a90 libgimpwidgets: remove the gimp_radio_group_*() functions
they are antique cruft and unused.
2019-09-25 23:37:03 +02:00
Michael Natterer e80c90e17d libgimpwidgets: change gimp_int_store_new()'s signature
to match gimp_int_combo_box_new(), and add gimp_int_store_new_valist().

Move the va_list of (name, value) parsing code to
gimp_int_store_new_valist() and use it from
gimp_int_combo_box_new_valist().

This makes the entire GimpIntStore/GimpIntComboBox stuff useable much
more generically for the price of an incompatible change of a public
function that is used exactly once outside of libgimpwidgets.
2019-09-24 00:20:47 +02:00
Jehan 4a6b58507b libgimp, libgimpmath, libgimpwidgets: update def files.
So many things moved in the last few days, and we just didn't think of
updating these.
2019-08-05 16:55:35 +02:00
Jehan 0beebf4d64 libgimpwidgets: add gimp_color_area_set_out_of_gamut() in def file. 2019-03-06 18:20:14 +01:00
Ell 0714510802 libgimpwidgets: add gimp_chain_button_{get,size}_icon_size() to gimpwidgets.def 2019-02-05 03:49:26 -05:00
Ell 7ab9ee2686 libgimpwidgets: add GimpSpinButton
GimpSpinButton is a drop-in replacement for (and a subclass of)
GtkSpinButton.  Unlike GtkSpinButton, it avoids updating the
adjustment value when losing focus, unless the entry text has
changed.  This prevents accidental loss of precision, when the
adjustment value can't be accurately displayed in the entry.
2018-11-10 06:48:56 -05:00
Michael Natterer b36205176e app, libgimp*: remove the config option to disable tooltips
Also remove all traces of it from the plug-in protocol and raise the
protocol version to 0x0100 (we now allow features and therefore
version bumps in stable, and the master protocol version should always
be higher). Fix the code that aborts plug-in startup on protocol
version mismatch, we can't use gimp_message() because we have no
protocol.
2018-06-06 19:23:30 +02:00
Ell 000fd8e69b libgimpwidgets: add GimpBusyBox
GimpBusyBox is used to show a message indicating an operation is in
progress.  It's basically just a spinner and a label, with some
styling.

We're going to use it both in app/ and in a plug-in.
2018-05-29 16:04:28 -04:00
Michael Natterer 7990b1d57c libgimp: update all .def files 2018-05-25 22:13:33 +02:00
Simon Budig 25c033b263 some odds and ends regarding GtkTable removal... 2018-05-20 21:06:35 +02:00
Michael Natterer 4ae7d4c825 libgimpwidgets: remove deprecated files completely 2018-05-20 21:06:26 +02:00
Michael Natterer 8447e775ab Bug 783680 - Allow to hide color models in GimpColorScales
Redo the entire thing again:

- Rename the values of enum GimpColorSelectorModel to include "MODEL"
- Change GimpColorSelector API from set_model() to set_model_visible()
  so visibility of each model can be toggled individually and is not
  exclusive any longer
- The GUI is back to what it was before, except that the "GIMP" page
  now honors the model visibility and has a resonable minimum height
2018-03-19 23:11:27 +01:00
Jehan de81e33340 libgimpwidgets: add missing gimp_color_selector_model_get_type in def...
... file.
2018-01-26 15:49:56 +01:00
Jehan 37e9be3a4f libgimpwidgets: arrange color models in tabs in GimpColorScales.
This allows to have a smaller and cleaner color dock instead of just
listing all possible channels (which may only grow up as we may add more
color spaces).
The API gimp_color_scales_(set|get)_show_hsv() are removed in favor of
more generic gimp_color_selector_(set|get)_model(). I assume this is
ok since they have only been available in the dev version (commit
6258d525ae, a month ago).
2018-01-21 18:37:18 +01:00
Michael Natterer 6f7b1d6425 libgimpwidgets: add new GimpColorScales symbols to gimpwidgets.def 2018-01-02 03:59:28 +01:00
Michael Natterer dd06ebafa2 libgimpwidgets: add a getter for every setter of GimpColorSelector
Also add API docs, pretty basic ones.
2017-12-31 16:02:21 +01:00
Ell ed2fe2d2d1 libgimpbase, libgimpwidgets: add new functions to .def files 2017-12-01 05:27:55 -05:00
Michael Natterer eb9981e5e4 libgimpwidgets: add gimp_screen_get_color_profile()
and use it in gimp_widget_get_color_profile(). Will soon be used in
screenshot too.
2017-01-31 18:58:27 +01:00
Michael Natterer d78d4ce82b libgimpwidgets: add gtk_label_set,get_x,yalign() to gimp3migration.[ch]
They are deprecated in GTK+ 3.x and cause tons of warnings, now we can
port calls to gtk_misc_set_alignment(label) to the new API and have
the same code in master and gtk3-port.
2016-09-08 18:56:44 +02:00
Michael Natterer f91a19b1ef libgimpwidgets: merge some GimpColorButton API from gtk3-port 2016-09-07 02:22:57 +02:00
Michael Natterer 71384a4115 app: add gimp_widget_track_monitor()
Which installs a callback that behaves as if GtkWidget had a
"monitor-changed" signal. Additionally, moving widgets around between
windows is handled automatically.
2016-06-01 20:40:42 +02:00
Michael Natterer 9014fbeb32 Bug 467930 - color selectors are not color managed
Color manage GimpColorScale and GimpColorScales.
2016-05-27 00:51:32 +02:00
Michael Natterer 1cffaa7120 libgimpwidgets: add gimp_color_area_set_color_config()
And do a display profile transform on the color area if it's set.
2016-05-25 12:39:31 +02:00
Michael Natterer 9c99d61feb libgimpwidgets: add gimp_preview_area_set_color_config()
If a config is set, apply its settings when drawing the preview's
pixels. This is preparation for fixing:

Bug 467930 - color selectors are not color managed
Bug 556608 - Monitor color profile is not applied to filter preview
2016-05-24 21:43:20 +02:00
Michael Natterer f7f9174a9c Revert "libgimpwidgets: remove gimp_color_profile_chooser_dialog_new()"
This reverts commit 2bfd0711e8.

Don't ask...
2016-05-07 00:57:40 +02:00
Michael Natterer 2bfd0711e8 libgimpwidgets: remove gimp_color_profile_chooser_dialog_new()
Its API was too limited, and adding parameters for what we need next
would be equally random. It's a rarely used and mostly internal
widget, so simply use g_object_new().
2016-05-06 22:57:32 +02:00
Jehan 96b5e5345e libgimpwidgets: add new symbols in def file. 2016-02-02 21:54:30 +01:00
Michael Natterer 71894bd787 libgimpwidgets: rename gimpstock.[ch] to gimpicons.[ch]
because stock is on its way out, so we better start renaming and
deprecating stuff sooner than later.
2015-12-12 20:44:46 +01:00
Michael Natterer 69f87bcc84 libgimpwidgets: be smarter when changing icon themes, and have fallbacks
Add gimp_stock_set_icon_theme() which can be called at any time, also
before gimp_stock_init(), in which case we avoid setting the configured
icon theme twice on startup. Call it from libgimp/gimpui.c and
from app/gui/icon-themes.c so the app and plug-ins use the same
icon theme.
2015-12-12 19:32:11 +01:00
Michael Natterer 5672e80ea1 libgimpwidgets: port GimpColorProfileStore and -ComboBox to GFile
and deprecate the old filename-based API. Port everything to use the
new GFile functions.
2015-08-01 16:20:14 +02:00
Michael Natterer f21f6e5a28 libgimpwidgets: add gimp_widget_get_color_transform()
Which returns a GimpColorTransform to transform a GimpColorManaged's
pixels to a GtkWidget's color space, using a GimpColorConfig's
settings. This is *unfinished* API and in the end will enable simple
display color management for the app, libgimp and plug-ins.
2015-05-09 01:20:50 +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 957471604f icons, app, libgimpwidgets: use GResource for the compiled-in icons
And a small improvement in cursors/Makefile.am
2015-04-21 21:57:08 +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 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 ed7cdba5b6 libgimpwidgets: add gimp_prop_icon_image_new()
and deprecate gimp_prop_stock_image_new().
2014-05-09 00:56:24 +02:00
Michael Natterer 79bd9c60de libgimpwidgets: mostly port from stock IDs to icon names
Add some new API and deprecate old one.
2014-05-07 21:32:09 +02:00
Michael Natterer dc8a3e8de5 libgimpwidgets: remove gimp_color_profile_chooser_dialog_get_desc()
and port its only user (the prefs dialog) to the code all other users
of GimpColorProfileChooserDialog use.
2014-03-23 23:50:54 +01:00