Commit Graph

82 Commits

Author SHA1 Message Date
f15b144a81 libgimp: new gimp_procedure_dialog_fill_scrolled_window()
This allows plug-in developers to create GTKScrolledWindow with the
procedure dialog API.
2023-03-31 20:26:53 +00:00
e00f2d7f50 Fix plugins to use new GimpResource. 2023-01-14 17:43:26 +01:00
d59a7af38c libgimp: API refactor GUI for GimpResource
Simplifies chooser widgets (e.g. GimpBrushSelect) by eliminating attributes (e.g. opacity) of chosen resource.
See #8745, but this commit fixes that by first refactoring the code.

Refactors GUI widgets (e.g. GimpBrushSelectButton and GimpBrushSelect etc.)

Refactor by "Extract class" GimpResourceSelectButton from GimpBrushSelectButton etc.
This moves common code into an inherited class (formerly called GimpSelectButton)
but the subclasses still exist.
The subclasses mainly just do drawing now.

Refactor by "Extract module" GimpResourceSelect from GimpBrushSelect etc.
Moves common code into one file, generic at runtime on type of GimpResource,
that is, the new code dispatches on type i.e. switch statements.
In the future, when core is changed some of that can be deleted.
The files gimpbrushselect.[c,h] etc. are deleted.
The module adapts the API from core to the API of callbacks to libgimp.

Note that core is running the resource chooser (select) widgets remotely.
Core is still calling back over the wire via PDB with more attributes
than necessary.
The new design gets the attributes from the resource themselves,
instead of receiving them from core callback.
The libgimp side adapts by discarding unneeded attributes.
In the future, core (running choosers for plugins) can be simplified also.

Fix gimp_prop_chooser_brush_new same as other resources.

Finish changes, and clean style.

Annotations
2023-01-14 16:38:40 +00:00
d720375e97 2.99 libgimp: add GimpResource, GimpBrush, GimpPropWidgetBrush
So procedures can declare args and GimpProcedureDialog show chooser
widgets

Fix so is no error dialog on id_is_valid for resources

Palette.pdb changes and testing

Memory mgt changes

Gradient pdb

Font and Pattern tests

Test  brush, palette

Cleanup, remove generator

Rebase, edit docs, install test-dialog.py

Whitespace, and fix failed distcheck

Fix some clang-format, fix fail distcheck

Fix distcheck

Cleanup from review Jehan
2023-01-14 12:58:05 +00:00
42143881d8 libgimp, libgimpwidgets: supporting GFile properties in…
… GimpProcedureDialog.

- gimp_prop_file_chooser_button_new() now works also with properties
  G_PARAM_SPEC_OBJECT having a value_type == G_TYPE_FILE (additionally
  to GIMP_PARAM_SPEC_CONFIG_PATH properties).
- gimp_procedure_dialog_get_widget() will now create a
  GtkFileChooserButton in open mode for such a GFile property.
- New gimp_procedure_dialog_get_file_chooser() API to create
  GtkFileChooserButton for GFile properties in other modes.

Current limitation: GtkFileChooserButton doesn't have a label. This
should be fixed, probably by creating another custom widget with would
be a labelized file chooser button.
2022-06-17 17:18:12 +02:00
5123dc0f83 libgimp: missing new API in def files. 2022-06-16 11:45:33 +02:00
7ca4d0ca45 libgimp: new gimp_procedure_dialog_get_spin_scale() and support of…
… %GIMP_TYPE_SPIN_SCALE in gimp_procedure_dialog_get_widget().

The dedicated function is for when a plug-in wants to use a scale range
multiplied by a factor. Otherwise using the generic function is fine.
2022-02-19 02:26:11 +01:00
d8062d1d77 plug-in, libgimp: Fixes #6753: redesign of WebP Export dialog
Added an option for exporting thumbnail in WebP Export dialogbox.

Additionally, introduced a function gimp_procedure_dialog_fill_expander.
The function is similar to gimp_procedure_dialog_fill_frame but allows
adding GtkExpander instead of GtkFrame.
2021-06-18 16:42:08 +05:30
66b09fe570 libgimp: fix alphabetical order.
Fixes:

> Problem found in ../libgimp/gimpui.def
>  the .def-file is not properly sorted (line 50)
> *** .def files inconsistent ***
2021-04-20 21:38:46 +02:00
22586485aa libgimp, libgimpwidgets: fix def files.
Argh, I always forget. Sorry all Windows devs!
2021-04-20 18:14:42 +02:00
3f09030b03 libgimp: new gimp_procedure_dialog_set_sensitive().
New function to set some procedure dialog's widget sensitive, either
with a constant value, or by binding it to a boolean property (or its
inverse) of a config object.
2021-04-06 21:47:10 +02:00
00573560d4 libgimp: add gimp_procedure_dialog_get_scale_entry to gimpui.def 2020-11-25 23:57:21 +01:00
3fb2ff1b9d libgimp: improvements to GimpProcedureDialog API.
- New gimp_procedure_dialog_fill_box(_list)() functions to create a
  GtkBox in the layout.
- Generating widgets for parameters of type double (and computing
  appropriate "ok defaults" digits for these, depending on the min-max
  range of the property).
2020-11-24 20:55:03 +01:00
3918a0a04c libgimp: new metadata support concept in GimpSaveProcedure and new…
… class GimpSaveProcedureDialog.
The idea is that we have basically the same code in most file format
plug-ins to handle various generic metadata, yet usually with slight
differences here and there. Even behavior is sometimes a bit different
even though there is no reason for the logics to be different from one
format to another.

So I move the metadata support logics into GimpSaveProcedure (and
GimpProcedureConfig still keeps the main export logics). The GUI logics
is now in a new GimpSaveProcedureDialog. So export plug-ins will now get
the creation of generic metadata nearly for free. All they have to do is
to tell what kind of metadata the GimpSaveProcedure supports with the
gimp_save_procedure_set_support_*() functions.

Then consistency will apply:
- If a format supports a given metadata, they will always have an
  auxiliary argument with the same name across plug-ins.
- The label and tooltips will also be always the same in the GUI.
- Order of metadata widgets will also stay consistent.
- The widgets will work the same (no more "Comment" text view missing in
  one plug-in but present in another, or with an entry here, and a text
  view there, and so on).

Also adding gimp_save_procedure_dialog_add_metadata() to allow plug-ins
to "declare" one of their options as a metadata option, and therefore
have it packed within the "Metadata" block which is now created (for
instance for PNG/TIFF/JPEG specific metadata). This allows a nicer
organization of dialogs.
2020-11-23 02:15:13 +01:00
74eb2b1f8a libgimp, libgimpwidgets: re-argh - fix the def files too.
Should fix distcheck and Windows builds.
2020-11-14 17:29:50 +01:00
c1a32e5763 libgimp: add some first API to populate a GimpProcedureDialog.
This is still a very early baseline for a more extended API. This first
version is not able to capture the complexity of most existing plug-in
dialogs.
2020-11-03 11:06:02 +01:00
9005a3aa46 libgimp, po: fix def files and POTFILES.in. 2020-09-24 13:47:32 +02:00
883b6a7c8e libgimp: update def files.
Argh I always forget to update these! Thanks for the CI, which is useful
for such details… :-)
2020-09-13 14:53:01 +02:00
8219092a6c libgimp: start integrating image export with GimpProcedureConfig
Add gimp_procedure_config_begin_export() and end_export() which
are wrappers around begin_run() and end_run() and additionally
pretty much completely manage GimpMetadata handling.

A GimpProcedureConfig can provide boolean properties "save-exif",
"save-xmp" etc. in order to have them automatically managed by
begin_export() and end_export(). This also restores the feature of
overriding the procedure's saved default values with export
preferences, but not the values from the last export, like it
used to be in 2.10.

Move gimp_image_metadata_save_prepare() and save_finish() (which are
now completely handled by GimpProcedureConfig) from libgimpui to
libgimp, but keep their declarations in the libgimpui header. Not
perfect, but not finished either.

Also fix gimp_image_metadata_save_prepare() to set the affected
GimpMetadataSaveFlags to 0 when the image has no metadata at all.
2019-10-09 22:50:03 +02:00
bfb7f43dbc libgimp: add GimpProcedureDialog, the new dialog class for plug-ins
It knows about the procedure and its config, and so far implements the
entire construction boilerplate and "Reset" on its own.
2019-09-20 19:24:40 +02:00
9e771d8cd5 libgimp: remove more deprecated API 2019-09-03 11:10:43 +02:00
a66945342d libgimp: remove some old API that is no longer needed 2019-08-30 18:58:16 +02:00
96c1f754ba libgimp: remove a ton of deprecated API that is unused 2019-08-27 16:32:25 +02:00
de7447d828 libgimp: update def files. 2019-08-23 01:45:01 +02:00
c46044534a libgimp: remove gimp_drawable_preview_draw_region()
It's deprecated and now unused.
2019-07-19 19:01:13 +02:00
7990b1d57c libgimp: update all .def files 2018-05-25 22:13:33 +02:00
9525c646e1 libgimp: remove tons of deprecated cruft 2018-05-20 21:06:29 +02:00
bbe667f291 libgimp: deprecate GimpAspectPreview's GimpDrawable API
and add drawable_ID functions instead.
2015-09-17 00:24:03 +02:00
d9de706946 libgimp: deprecate GimpDrawablePreview's GimpDrawable API
and add drawable_ID functions instead.
2015-09-15 00:49:45 +02:00
6f33d8d86d libgimp: fix gimpui.def 2015-09-14 23:28:01 +02:00
d2d9cbc21a libgimp: deprecate GimpZoomPreview's GimpDrawable API
and add drawable_ID functions instead.
2015-09-14 22:14:24 +02:00
1522c506a2 libgimp: add gimp_image_metadata_load_thumbnail()
which loads an image file's Exif thumbnail into a correctly rotated
gimp image.
2013-10-30 00:04:36 +01:00
7cbe83d911 libgimp,plug-ins: split metadata loading into prepare() and finish()
So the plug-in has the chance to decide whether it wants to trust the
metadata information (e.g. resolution). Also reorder parameters in
gimp_image_metadata_save_finish(). Change all plug-ins accordingly.
2013-10-27 15:22:35 +01:00
74fb601ec4 libgimp: properly sort gimpui.def 2013-10-27 02:18:57 +02:00
21bed1e2fb Completely rewrite metadata handling using gexiv2
Based on original patches from Hartmut Kuhse and modified
by Michael Natterer. Changes include:

- remove libexif dependency and add a hard dependency on gexiv2
- typedef GExiv2Metadata to GimpMetadata to avoid having to
  include gexiv2 globally
- add basic GimpMetadata handling functions to libgimpbase
- add image and image file specific metadata functions to libgimp,
  including the exif orientation image rotate dialog
- port plug-ins to use the new APIs
- port file-tiff-save's UI to GtkBuilder
- add new plug-in "metadata" to view the image's metadata
- keep metadata around as GimpImage member in the core
- update the image's metadata on image size, resolution and precision
  changes
- obsolete the old metadata parasites
- migrate the old parasites to new GimpMetadata object on XCF load
2013-10-27 01:02:17 +02:00
bdc08aae83 libgimp: move pixbuf functions from gimpui.def to gimp.def 2011-04-20 23:54:32 +02:00
8cd7f148d6 libgimp: Add export dialog API
Add gimp_export_dialog_new() for creating a export dialog and
gimp_export_dialog_get_content_area() for accessing the vbox where
clients can put widgets.
2009-07-21 16:03:53 +02:00
00ab3be823 added new symbols.
2006-11-16  Simon Budig  <simon@gimp.org>

	* libgimp/gimpui.def: added new symbols.
2006-11-16 00:07:48 +00:00
247fc372d5 added a convenience function to create a layer from a GdkPixbuf.
2006-08-17  Sven Neumann  <sven@gimp.org>

	* libgimp/gimppixbuf.[ch]: added a convenience function to create
	a layer from a GdkPixbuf.

	* plug-ins/common/poppler.c
	* plug-ins/common/screenshot.c
	* plug-ins/common/svg.c: use gimp_layer_new_from_pixbuf().

	* libgimp/gimpui.def: updated.
2006-08-17 16:52:25 +00:00
20b4f56b83 chain up.
2006-08-09  Sven Neumann  <sven@gimp.org>

	* app/plug-in/gimppluginmanager.c (gimp_plug_in_manager_dispose):
	chain up.

	* libgimp/gimpzoompreview.[ch]: added API to get a pointer to the
	GimpZoomModel used by the preview and added a constructor that
	allows to pass a model.

	* libgimp/gimpui.def: updated.
2006-08-09 10:30:01 +00:00
16eb42f186 libgimp/gimp.def updated lists of exported symbols.
2006-07-05  Sven Neumann  <sven@gimp.org>

	* libgimp/gimp.def
	* libgimp/gimpui.def: updated lists of exported symbols.
2006-07-05 10:29:56 +00:00
66d00503a4 added a new function: gimp_zoom_preview_get_factor(), which is a proxy to
* libgimp/gimpzoompreview.[ch]: added a new function:
  gimp_zoom_preview_get_factor(), which is a proxy to get the zoom
  factor of the zoom model used by the zoom preview.
  Also renamed the zoom field of the private data of gimpzoompreview to
  model, since it is a gimpzoommodel.

* libgimp/gimpui.def: added gimp_zoom_preview_get_factor.

* plug-ins/common/nova.c: use gimp_zoom_preview_get_factor to
  correctly handle the position of the nova at various zoom level.
  There still are problems if there is a selection before when running
  this plugin.
2005-10-02 18:00:49 +00:00
0730c66b4c make use of private data instead of struct members. Added a
* libgimp/gimpzoompreview.[ch]: make use of private data instead of struct
  members. Added a gimp_zoom_preview_get_drawable so we can still get the
  drawable from a preview in plug-ins.

  Also changed gimp_zoom_preview_get_data to gimp_zoom_preview_get_source,
  to make it more obvious what it returns.

* libgimp/gimpui.def
* plug-ins/common/AlienMap2.c
* plug-ins/common/apply_lens.c
* plug-ins/common/blinds.c
* plug-ins/common/channel_mixer.c
* plug-ins/common/colorify.c
* plug-ins/common/flarefx.c
* plug-ins/common/illusion.c
* plug-ins/common/jigsaw.c
* plug-ins/common/mapcolor.c
* plug-ins/common/max_rgb.c
* plug-ins/common/nova.c
* plug-ins/common/polar.c
* plug-ins/common/retinex.c
* plug-ins/common/waves.c
* plug-ins/common/whirlpinch.c: changed accordingly.
2005-09-20 21:52:54 +00:00
4b0995b6a0 added the functions from gimpzoompreview.h
* libgimp/gimpui.def: added the functions from gimpzoompreview.h

* libgimpwidgets/gimpwidgets.def: added the functions from
  gimpzoommodel.h
2005-09-19 23:24:00 +00:00
b10adabb5e Added parent window API to the GimpProgress interface and to the libgimp
2005-09-09  Michael Natterer  <mitch@gimp.org>

	Added parent window API to the GimpProgress interface and to
	the libgimp progress stuff. Might look strange, but does
	the right thing in almost all cases (image window, file dialog,
	script-fu dialog etc). Fixes bug #62988.

	* app/core/gimpprogress.[ch]: added GimpProgress::get_window()
	which should return a toplevel window ID if the progress is in a
	window that wants to be the transient parent of plug-in dialogs.

	* app/widgets/gimpwidgets-utils.[ch] (gimp_window_get_native): new
	function which returns the window handle of a GtkWindow's GdkWindow.

	* app/widgets/gimpfiledialog.c: implement ::get_window().

	* app/display/gimpdisplay.[ch]: ditto. Removed window handle API.

	* app/gui/gui-vtable.c: changed accordingly.

	* libgimpbase/gimpbaseenums.[ch] (enum GimpProgressCommand):
	added GIMP_PROGRESS_COMMAND_GET_WINDOW.

	* app/plug-in/plug-in-progress.[ch] (plug_in_progress_get_window):
	new function. Also renamed some functions to match the
	GimpProgress interface, and not the legacy PDB procedure names.

	* tools/pdbgen/pdb/progress.pdb
	* app/core/gimppdbprogress.c: implement get_window() on both
	sides of the wire, keeping backward compatibility (hopefully).

	* libgimp/gimpprogress.[ch]: deprecated gimp_progress_install()
	and added gimp_progress_install_vtable() which takes a vtable with
	padding to be extensible. Added get_window() vtable entry and
	dispatch it accordingly. Also added pulse() which was implemented
	in a hackish way before. Everything is of course backward
	compatible.

	* libgimp/gimpprogressbar.c: inmplement the get_window() stuff
	so a plug-in dialog containing a progress can be the transient
	parent of another dialog in another plug-in.

	* libgimp/gimpui.[ch] (gimp_ui_get_progress_window): new function
	which returns a foreign GdkWindow of this plug-ins progress
	window.

	Renamed gimp_window_set_transient_for_default_display() to
	gimp_window_set_transient() and make it use the progress' window
	handle instead of the display's (which is the right thing to do in
	almost all cases).

	* libgimp/gimp.def
	* libgimp/gimpui.def: add the new functions.

	* tools/pdbgen/enums.pl
	* app/pdb/internal_procs.c
	* app/pdb/progress_cmds.c
	* libgimp/gimpprogress_pdb.[ch]: regenerated.

	* libgimp/gimpexport.c
	* plug-ins/*/*.c: follow API change.
2005-09-09 18:07:31 +00:00
ec56ef9d01 Address bug #307971:
2005-09-05  Sven Neumann  <sven@gimp.org>

	Address bug #307971:

	* app/core/gimp-gui.[ch]
	* app/display/gimpdisplay.[ch]
	* app/gui/gui-vtable.c
	* tools/pdbgen/pdb/display.pdb: added PDB function to obtain a
	window handle on an image display.

	* app/pdb/display_cmds.c
	* app/pdb/internal_procs.c
	* libgimp/gimpdisplay_pdb.[ch]: regenerated.

	* libgimp/gimpui.[ch]: added functions to set a GtkWindow transient
	to an image display.

	* plug-ins/common/gauss.c: use the new function exemplarily.

	* libgimp/gimp.def
	* libgimp/gimpui.def: updated.
2005-09-05 20:47:12 +00:00
4d369ec2c0 plug-ins/dbbrowser/Makefile.am plug-ins/dbbrowser/gimpprocbrowser.[ch]
2005-08-02  Michael Natterer  <mitch@gimp.org>

	* plug-ins/dbbrowser/Makefile.am
	* plug-ins/dbbrowser/gimpprocbrowser.[ch]
	* plug-ins/dbbrowser/gimpprocview.[ch]: removed these files...

	* libgimp/Makefile.am
	* libgimp/gimpui.h
	* libgimp/gimpui.def
	* libgimp/gimpprocbrowserdialog.[ch]
	* libgimp/gimpprocview.[ch]: ...and added them here. Turned the
	procedure browser into a widget called GimpProcBrowserDialog and
	changed its API completely. Fixes bug #165009.

	* plug-ins/dbbrowser/plugin-browser.c
	* plug-ins/dbbrowser/procedure-browser.c
	* plug-ins/script-fu/Makefile.am
	* plug-ins/script-fu/script-fu-console.c: changed accordingly.

	* plug-ins/pygimp/Makefile.am
	* plug-ins/pygimp/procbrowser.c: ditto (#if 0'ed stuff so it compiles).
2005-08-02 16:49:42 +00:00
52fb3812c7 Add gimp_font_select_button_*.
2005-06-06  Tor Lillqvist  <tml@novell.com>

	* libgimp/gimpui.def: Add gimp_font_select_button_*.
2005-06-06 06:56:58 +00:00
5e75f585d6 added gimp_drawable_sub_thumbnail() to enable plug-ins avoiding
2004-12-14  Michael Natterer  <mitch@gimp.org>

	* tools/pdbgen/pdb/drawable.pdb: added gimp_drawable_sub_thumbnail()
	to enable plug-ins avoiding #142074-alike bugs if they need to.

	* app/pdb/drawable_cmds.c
	* app/pdb/internal_procs.c
	* libgimp/gimpdrawable_pdb.[ch]: regenerated.

	* libgimp/gimpdrawable.[ch]
	* libgimp/gimppixbuf.[ch]: wrap it with the same convenience
	APIs as gimp_drawable_thumbnail().

	* libgimp/gimp.def
	* libgimp/gimpui.def: changed accordingly.
2004-12-13 23:36:17 +00:00
de37bbb7f8 libgimpwidgets/gimppreview.[ch] added gimp_preview_draw_buffer().
2004-09-29  Sven Neumann  <sven@gimp.org>

	* libgimpwidgets/gimppreview.[ch]
	* libgimpwidgets/gimpwidgets.def: added gimp_preview_draw_buffer().

	* libgimp/gimpaspectpreview.[ch]
	* libgimp/gimpdrawablepreview.[ch]
	* libgimp/gimpui.def: removed the public draw_buffer API.
	Implement the virtual GimpPreview::draw_buffer method instead.

	* plug-ins/common/cartoon.c
	* plug-ins/common/deinterlace.c
	* plug-ins/common/despeckle.c
	* plug-ins/common/dog.c
	* plug-ins/common/edge.c
	* plug-ins/common/engrave.c
	* plug-ins/common/exchange.c
	* plug-ins/common/gauss.c
	* plug-ins/common/grid.c
	* plug-ins/common/neon.c
	* plug-ins/common/noisify.c
	* plug-ins/common/oilify.c
	* plug-ins/common/photocopy.c
	* plug-ins/common/plasma.c
	* plug-ins/common/sel_gauss.c
	* plug-ins/common/sharpen.c
	* plug-ins/common/shift.c
	* plug-ins/common/snoise.c
	* plug-ins/common/sobel.c
	* plug-ins/common/spread.c
	* plug-ins/common/struc.c: changed accordingly. Don't pass the
	preview around as GimpDrawablePreview or GimpAspectPreview. It
	should whenever possible be accessed as GimpPreview.
2004-09-29 15:33:02 +00:00