Commit Graph

67 Commits

Author SHA1 Message Date
0b2d8fedc3 libgimp, libgimpwidgets: ability to generate a GimpIntRadioFrame for GimpChoice arguments.
This includes a new function gimp_prop_choice_radio_frame_new() which
creates GimpIntRadioFrame from GimpChoice properties.

GimpChoice GimpProcedure arguments are still creating a combo box by
default, but it is now possible to override this default behavior to get
a radio frame by calling first:

```C
gimp_procedure_dialog_get_widget (dialog, "arg-name", GIMP_TYPE_INT_RADIO_FRAME);
```
2024-06-06 20:20:30 +02:00
ead5d01d27 libgimp*, plug-ins: reorganize the resource property choosers.
- Move the property widget functions for GimpResource properties into a new
  libgimp/gimppropwidgets.[ch] file. This mirrors the files
  libgimpwidgets/gimppropwidgets.[ch] which are for more generic property types.
- Rename the functions gimp_prop_chooser_*_new() to gimp_prop_*_chooser_new().
- gimp_prop_chooser_factory() doesn't need to be public.
- Add a label to GimpResourceSelectButton, make so that the
  gimp_prop_chooser_*_new() functions set the property nick to this label and
  add this label to the size group in GimpProcedureDialog.
2023-10-01 21:02:33 +02:00
4163a29af3 app, libgimp: new GimpChoice procedure argument.
These will replace the int arguments used in place of enums. The problem of int
arguments used as list of choices is that it makes calling PDB functions very
opaque. This is especially bad when a list is long, so you constantly have to
refer to the documentation to understand what a series of numbers mean in
argument lists.

And the second issue is that plug-in developers have to manually maintain a list
of values both in the GUI and in the documentation string. This help text may
get out-of-sync, may end up with missing values or whatnot. Also if it is used
as tooltips, it makes for very weird tooltips in the graphical interface, with
an overlong technical list of int-values mapping which should ideally only be
made visible in the PDB procedure browser listing.
2023-10-01 20:52:02 +02:00
41201f0865 libgimpwidgets: new GimpIntRadioFrame object.
A proper class for a frame containing radio buttons. This object has a
"value" property and will therefore be very easy to use in various API
binding a config property to a widget property.

A GimpIntRadioFrame is also what gimp_prop_int_radio_frame_new() will
return now.

gimp_prop_int_radio_box_new() on the other hand is being removed. It is
used nowhere and is unneeded. If someone really needs a non-labelled
group of radio buttons, they can also create a GimpIntRadioFrame, remove
the label and hide the borders. At least they will still be able to
easily bind it to a config property.
2022-06-15 21:18:37 +02:00
7056f1b960 app, libgimpwidgets: move gimp_prop_spin_scale_new() and…
… gimp_prop_widget_set_factor() to libgimpwidgets.

Now that GimpSpinScale is in libgimpwidgets, it's time to move the
associated prop too, to make it a prop widget with such a widget easily
creatable by plug-ins.

While doing so, I update both these functions logic, binding properties
together with the g_object_bind_property*() APIs (as we do already in
some other recent prop functions) rather than connecting to signals
ourselves. It makes for much simpler code.
2022-02-19 00:14:44 +01:00
4fecdd57d8 libgimpwidgets: allow editable GimpLabelColor.
I was initially considering a second widget, but it makes actually much
more sense to make the editability a property of the GimpLabelColor. It
also mean it can be switched on or off depending on situations.
2022-02-17 23:13:42 +01:00
1c03df05c5 libgimpwidgets: new gimp_prop_label_color_new(). 2022-02-17 23:13:42 +01:00
9357552059 libgimpwidgets: new GimpLabelEntry widget and associated prop API…
… gimp_prop_label_entry_new().
2022-02-17 23:13:42 +01:00
ca72c41fcd libgimp, libgimpwidgets: support of GimpRGB properties in…
… GimpProcedureDialog.

Technically I added:
- New gimp_prop_color_select_new() property widget to create a
  GimpColorButton for a given GimpRGB property.
- gimp_procedure_dialog_get_widget() now supports a GimpRGB property and
  will create a GimpColorArea by default.
- When the default doesn't suit you, a new function
  gimp_procedure_dialog_get_color_widget() allows to create either a
  GimpColorArea or a GimpColorButton (editable = TRUE), as well as
  choose the area type (small or large checks, as well as flat area,
  i.e. no alpha support).
2021-04-20 16:54:40 +02:00
2ea5dec56e libgimpwidgets: improved gimp_prop_scale_entry_new(), new function…
… gimp_label_spin_set_digits() and deleted gimp_prop_opacity_entry_new()

- The "digits" argument for the number of decimal places in
  gimp_prop_scale_entry_new() is now mostly useless since GimpLabelSpin
  (hence GimpScaleEntry too) got a nice estimation algorithm of sensible
  values.
- Add gimp_label_spin_set_digits() function to manually set the digits
  property when we don't like the estimated value.
- Also add a new "factor" argument to gimp_prop_scale_entry_new(). Its
  role is to allow a GimpScaleEntry showing a factored range, typically
  a [0, 100] range for some types of [0, 1] properties.
- Remove gimp_prop_opacity_entry_new() which was basically a
  special-case of gimp_prop_scale_entry_new() and which can now be
  easily reproduced by simply set factor=100.0.
- Update all usage of gimp_prop_scale_entry_new() in app/ and plug-ins/
  with updated arguments. It is interesting to note that all existing
  usage were either integers (digits=1) or when double, the estimated
  decimal places are the same as the ones which were manually set (hence
  showing the generic estimation is not too bad). So the new function
  gimp_label_spin_set_digits() was not even needed once in current code.
2020-11-25 02:32:22 +01:00
4ea2b430be libgimpwidgets: new GimpLabeled class and GimpLabelSpin subclass.
There is currently no property widget which just creates a
GimpSpinButton with a label. Just as the GimpScaleEntry was needed, this
one is as well.
I am creating a GimpLabeled abstract class which will represent various
widgets with a label. While this may seem a bit over-engineered for such
a basic feature, this will actually bring some consistency and a common
parent. In particular this can be used to get the GtkLabel with a common
interface to add them all in a common GtkSizeGroup when generating
dialogs automatically, hence make dialogs with properly aligned labels
and edition widgets.
2020-11-05 18:06:52 +01:00
0f05825a29 app, libgimpwidgets, plug-ins: default increments for GimpScaleEntry.
Instead of setting always manually the step and page increments when
creating a GimpScaleEntry, let's just generate some common cases
automatically. Indeed the increments are rarely something you want to
care about. The algorithm used is:
- For a range under 1.0, use a hundredth and a tenth (typically a [0,
  1.0] range will step-increment of 0.01 and page-increment of 0.1).
- For small ranges (under 40), step-increment by 1, page-increment by 2.
- For bigger ranges, step-increment by 1, page-increment by 10.

For use cases when you absolutely want specific increment values, I add
the gimp_scale_entry_set_increments() function. It is much better to
have a small and understandable constructor call followed by
configuration calls (only when needed) rather than a constructor with a
crazy amount of parameters. Hence gimp_scale_entry_new() went from 17
arguments (absolutely unreadable calls) to now 5.
2020-10-30 12:33:46 +01:00
5238958e55 libgimpwidgets: make GimpScaleEntry into its own widget.
Instead of the gimp_scale_entry_new() which creates several bound yet
independant widgets, and in the same time pack them into an existing
grid and return a GtkAdjustment (while heavily relying on GObject data
to link widgets), let's have a proper custom widget with its own clean
API.
This also simplifies the gimp_prop_scale_entry_new() property widget
variant.

First advantage is that we don't force the usage of a grid to use this
widget (there are a few pieces of code which create a GtkGrid with only
this inside just to be able to use this feature).

Second thing is that I am creating a much simpler API.
gimp_scale_entry_new() had 17 parameters! How crazy is that? So I
removed all the grid packing related parameters. Also I moved the spin
button/scale unconstraining parameters into their separate function,
because the constrained behavior is the most common use case, so it's
stupid to add 3 permanent dummy parameters for most calls. Instead the
few times where we'll want different ranges for the spin button and the
scale, we'll call the separate API gimp_scale_entry_set_range().

Thirdly the tooltip can be set directly with gimp_help_set_help_data()
since this is now its own widget. No need to have dedicated logics
anymore, better stay generic. Similarly no need of a custom function to
switch sensitivitivy (instead of generic gtk_widget_set_sensitive()).

Fourth thing is that we should not use macros for the public API, but
proper functions, because macros are not properly introspected for
binding.

For future improvements, maybe we could even make this widget implement
GtkOrientable interface, in order to be able to use it vertically.

Note: right now, I created a separate gimp_scale_entry_new2() and only
modified the property widget API to use this new code. Eventually I will
remove fully the old gimp_scale_entry_new() function (and the new code
will replace it).
2020-10-30 11:02:20 +01:00
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
d02d97e310 libgimpwidgets: add gimp_prop_int_radio_frame,box_new() 2019-10-03 15:59:09 +02:00
8cfef5e60d libgimpwidgets: more docs and annotations 2019-08-09 12:32:09 +02:00
5f700549e7 Change the license URL from http://www.gnu.org/licenses/ to https:// 2018-07-11 23:29:46 +02:00
9954030487 app/widgets: port the gimpstrokeeditor to GtkGrid 2018-05-20 21:06:33 +02:00
1f0d296eb6 libgimpwidgets: remove most deprecated cruft 2018-05-20 21:06:29 +02:00
e4ae1faf06 libgimpwidgets: remove deprecated functions and s/GtkObject/GtkAdjustment/ 2018-05-20 21:06:26 +02:00
caef6d0deb libgimp*: various doc fixes 2017-06-03 21:22:12 +02:00
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
ed7cdba5b6 libgimpwidgets: add gimp_prop_icon_image_new()
and deprecate gimp_prop_stock_image_new().
2014-05-09 00:56:24 +02:00
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
012457e81d libgimpwidgets: port more deprecations to GIMP_DEPRECATED 2012-05-06 00:30:54 +02:00
844df2b4df libgimp*: add guards that #error out if individual files are included
This only helps to maintain proper includes in app/ and shouldn't
affect plug-ins at all, because these are supposed to only include the
main headers from libgimp/ since the beginning of time.

The gimpfootypes.h files do not have these guards, so we can continue
to maintain app/'s include policy that is very likely to error out if
wrong things are included.
2011-04-28 14:30:41 +02:00
c36f762f7d libgimpwidgets: deprecate GimpUnitMenu and gimp_prop_unit_menu_new()
Add gimp_prop_unit_combo_box_new() and adapt all places using the
prop_unit_menu. Some things are broken now, like there are no pixel
digits set, resolution unit menus show "pixels" and warn badly when
pixels is selected, and file-pdf-load is not built right now.
More fixes to come...
2010-10-14 23:03:34 +02:00
d9b5207aa2 Change licence to GPLv3 (and to LGPLv3 for libgimp).
2009-01-17  Michael Natterer  <mitch@gimp.org>

	* all files with a GPL header and all COPYING files:

	Change licence to GPLv3 (and to LGPLv3 for libgimp).

	Cleaned up some copyright headers and regenerated the parsers in
	the ImageMap plugin.


svn path=/trunk/; revision=27913
2009-01-17 22:28:01 +00:00
0a824ddba0 added parameter "gboolean property_is_pixel" which indicates that the
2007-10-14  Michael Natterer  <mitch@gimp.org>

	* libgimpwidgets/gimppropwidgets.[ch] (gimp_prop_size_entry_new):
	added parameter "gboolean property_is_pixel" which indicates that
	the stored property value is always in pixels and not in the
	selected unit.

	* app/tools/gimptextoptions.c
	* app/widgets/gimpstrokeeditor.c: pass FALSE to keep the old
	behavior.

	* app/tools/gimprectangleoptions.c (gimp_rectangle_options_gui):
	added property "fixed-unit" which is used for all fixed values
	now. Perhaps we need separate units for width/height/size. Enable
	the unit menu on the "Width" and "Height" size entries of the
	"Fixed" section and configure them to store the value in
	pixels. This was the easy part, some other widgets still need unit
	support.

	* app/tools/gimprectangletool.c (gimp_rectangle_tool_start): set
	the image's resolution on the size entries changed above.


svn path=/trunk/; revision=23821
2007-10-14 18:51:58 +00:00
b0b7c165ff libgimpwidgets/gimpenumcombobox.h libgimpwidgets/gimpenumlabel.h
2007-08-11  Sven Neumann  <sven@gimp.org>

	* libgimpwidgets/gimpenumcombobox.h
	* libgimpwidgets/gimpenumlabel.h
	* libgimpwidgets/gimpenumstore.h
	* libgimpwidgets/gimpenumwidgets.h
	* libgimpwidgets/gimppropwidgets.h: added missing G_BEGIN_DECLS
	and G_END_DECLS.


svn path=/trunk/; revision=23221
2007-08-11 21:52:48 +00:00
31565ecb6e gimp_prop_string_combo_box_new() takes a GtkTreeModel, not a GtkTreeStore.
2007-03-08  Sven Neumann  <sven@gimp.org>

	* libgimpwidgets/gimppropwidgets.[ch]: gimp_prop_string_combo_box_new()
	takes a GtkTreeModel, not a GtkTreeStore.


svn path=/trunk/; revision=22071
2007-03-08 10:06:31 +00:00
0a203e30c4 libgimpwidgets/Makefile.am libgimpwidgets/gimpwidgetstypes.h
2007-02-12  Sven Neumann  <sven@gimp.org>

	* libgimpwidgets/Makefile.am
	* libgimpwidgets/gimpwidgetstypes.h
	* libgimpwidgets/gimpwidgets.h
	* libgimpwidgets/gimpstringcombobox.[ch]: added GimpStringComboBox.

	* libgimpwidgets/gimppropwidgets.[ch]: added a prop widget
	constructor that uses the new widget.

	* libgimpwidgets/gimpwidgets.def: updated.

	* app/widgets/gimpcontrollereditor.c: use a GimpStringComboBox if
	the module specifies a tree model with string values.

	* modules/gimpinputdevicestore.c: minor cleanup.

	* modules/controller_linux_input.c: keep a pointer to the input
	device store and unref it in the finalizer.


svn path=/trunk/; revision=21900
2007-02-12 15:29:45 +00:00
988e1a442d libgimpwidgets/gimppropwidgets.[ch] added new function
2006-12-18  Sven Neumann  <sven@gimp.org>

	* libgimpwidgets/gimppropwidgets.[ch]
	* libgimpwidgets/gimpwidgets.def: added new function
	gimp_prop_file_chooser_button_new_with_dialog().
2006-12-18 07:28:41 +00:00
93d3fd43ca Bill Skaggs <weskaggs@primate.ucdavis.edu>
* libgimpwidgets/gimppropwidgets.[ch]: revert previous
	change; was not necessary.
2006-09-22 18:22:53 +00:00
0a7140b526 Bill Skaggs <weskaggs@primate.ucdavis.edu>
* libgimpwidgets/gimppropwidgets.[ch]: added
	gimp_prop_toggle_button_new(), and re-implemented
	gimp_prop_check_button_new() in terms of it, as basically
	a convenience function now.
2006-09-21 20:09:57 +00:00
99f979e118 deprecate the GimpFileEntry widget, use GtkFileChooserButton instead.
2006-06-09  Sven Neumann  <sven@gimp.org>

	* libgimpwidgets/gimpfileentry.[ch]: deprecate the GimpFileEntry
	widget, use GtkFileChooserButton instead.

	* libgimpwidgets/gimppatheditor.c: undef GIMP_DISABLE_DEPRECATED
	as long as we are still using GimpFileEntry here.

	* libgimpwidgets/gimppropwidgets.[ch]: removed
	gimp_prop_file_entry_new(); use gimp_prop_file_chooser_button_new()
	instead.
2006-06-09 07:12:33 +00:00
54b4773e86 renamed parameters to please gtk-doc.
2006-04-22  Sven Neumann  <sven@gimp.org>

	* libgimpwidgets/gimppropwidgets.[ch] (gimp_prop_scale_entry_new):
	renamed parameters to please gtk-doc.
2006-04-22 02:58:02 +00:00
d60faca9a1 libgimpwidgets/gimppropwidgets.[ch] added gimp_prop_hscale_new().
2005-08-06  Sven Neumann  <sven@gimp.org>

	* libgimpwidgets/gimppropwidgets.[ch]
	* libgimpwidgets/gimpwidgets.def: added gimp_prop_hscale_new().

	* app/tools/gimpforegroundselectoptions.c: added a control for the
	stroke width.

	* app/tools/gimpforegroundselecttool.c: cancel the tool if the
	active drawable or the image size changes.

	* app/widgets/gimpcontrollerlist.c: fixed signedness warning.
2005-08-06 13:03:59 +00:00
57f97f737b libgimpwidgets/Makefile.am libgimpwidgets/gimpwidgets.h
2005-06-25  Sven Neumann  <sven@gimp.org>

	* libgimpwidgets/Makefile.am
	* libgimpwidgets/gimpwidgets.h
	* libgimpwidgets/gimpwidgetstypes.h
	* libgimpwidgets/gimpenumlabel.[ch]: added new widget GimpEnumLabel.

	* libgimpwidgets/gimppropwidgets.[ch]: added
	gimp_prop_enum_label_new().

	* libgimpwidgets/gimpwidgets.def: updated.

	* modules/cdisplay_lcms.c (cdisplay_lcms_configure): started to
	add a view on the current color managment configuration.
2005-06-24 22:46:42 +00:00
01c245133a added gimp_prop_file_chooser_button_new(), a convenience constructor for
2005-03-25  Sven Neumann  <sven@gimp.org>

	* libgimpwidgets/gimppropwidgets.[ch]: added
	gimp_prop_file_chooser_button_new(), a convenience constructor for
	GtkFileChooserButton.

	* libgimpwidgets/gimpwidgets.def: updated.

	* app/dialogs/preferences-dialog.c: use the new prop widget on the
	color management page.
2005-03-25 00:37:16 +00:00
5cf9a16f9f documentation fixes.
2005-02-05  Sven Neumann  <sven@gimp.org>

	* libgimpwidgets/gimppropwidgets.[ch]: documentation fixes.
2005-02-05 11:51:48 +00:00
f23ae07ce1 Bill Skaggs <weskaggs@primate.ucdavis.edu>
* libgimpwidgets/gimppropwidgets.[ch]: oops, use libgimp header.
2005-02-04 20:51:19 +00:00
ea88dc750a Bill Skaggs <weskaggs@primate.ucdavis.edu>
* libgimpwidgets/gimppropwidgets.[ch]: magic-copied from app/widgets
	and un-movable things then removed.

	* libgimpwidgets/Makefile.am
	* libgimpwidgets/gimpwidgets.def
	* libgimpwidgets/gimpwidgets.h: corresponding changes

	* app/widgets/gimppropwidgets.[ch]: remove functions that were
	moved.

	* app/dialogs/stroke-dialog.c
	* app/dialogs/tips-dialog.c
	* app/dialogs/user-install-dialog.c
	* app/tools/gimpairbrushtool.c
	* app/tools/gimpblendoptions.c
	* app/tools/gimpbucketfilloptions.c
	* app/tools/gimpclonetool.c
	* app/tools/gimpcoloroptions.c
	* app/tools/gimpcolorpickeroptions.c
	* app/tools/gimpconvolvetool.c
	* app/tools/gimpcropoptions.c
	* app/tools/gimpcurvestool.c
	* app/tools/gimpdodgeburntool.c
	* app/tools/gimperasertool.c
	* app/tools/gimpflipoptions.c
	* app/tools/gimphistogramoptions.c
	* app/tools/gimpimagemaptool.c
	* app/tools/gimpinkoptions-gui.c
	* app/tools/gimplevelstool.c
	* app/tools/gimpmagnifyoptions.c
	* app/tools/gimpmeasureoptions.c
	* app/tools/gimpmoveoptions.c
	* app/tools/gimpselectionoptions.c
	* app/tools/gimpsmudgetool.c
	* app/tools/gimpthresholdtool.c
	* app/tools/gimptransformoptions.c
	* app/tools/gimpvectoroptions.c
	* app/widgets/gimpcontainerbox.c
	* app/widgets/gimpcontrollereditor.c
	* app/widgets/gimpdevicestatus.c
	* app/widgets/gimpgrideditor.c
	* app/widgets/gimphistogrambox.c
	* app/widgets/gimphistogrameditor.c
	* app/widgets/gimpsizebox.c
	* app/widgets/gimpstrokeeditor.c
	* app/widgets/gimptemplateeditor.c
	* app/widgets/gimptooloptionseditor.c: fix includes
2005-02-04 20:48:02 +00:00
24786d2b73 added gimp_prop_expander_new().
2005-01-22  Sven Neumann  <sven@gimp.org>

	* app/widgets/gimppropwidgets.[ch]: added gimp_prop_expander_new().

	* app/paint/gimppaintoptions.[ch]: added a property to track the
	state of the "Pressure sensitivity" expander.

	* app/tools/gimppaintoptions-gui.c: use gimp_prop_expander_new()
	to create the "Pressure sensitivity" expander.
2005-01-22 20:32:34 +00:00
d90360e29f added new prop_widget gimp_prop_int_combo_box_new() which takes a
2004-12-08  Michael Natterer  <mitch@gimp.org>

	* app/widgets/gimppropwidgets.[ch]: added new prop_widget
	gimp_prop_int_combo_box_new() which takes a pre-built GimpIntStore
	and allows to create views on int properties with arbitrary sets
	of values (not just enums).

	* app/widgets/gimpcontrollereditor.c
	(gimp_controller_editor_constructor): added support for generic
	combo boxes controlled exclusively by controller properties: if an
	int property "foo" is followed by an object property "foo-values"
	and the contained object is a GimpIntStore, use that store as
	model for selecting "foo"'s values using
	gimp_prop_int_combo_box_new().

	(Allows for more flexible controller configuration, the actual use
	case in the midi controller is still work in progress).
2004-12-08 12:46:21 +00:00
f0fcfaabb2 added gimp_prop_label_new().
2004-06-25  Michael Natterer  <mitch@gimp.org>

	* app/widgets/gimppropwidgets.[ch]: added gimp_prop_label_new().

	* app/widgets/gimpgrideditor.c: HIGified capitalization.
2004-06-24 22:23:05 +00:00
311f033d34 if the label_widget is a button, set the button label as bold. Cache the
2004-05-03  Sven Neumann  <sven@gimp.org>

	* libgimpwidgets/gimpframe.c: if the label_widget is a button, set
	the button label as bold. Cache the indentation instead of
	calculating it over and over again.

	* themes/Default/gtkrc: set HIG-compliant spacing for the
	action_area.

	* app/widgets/gimppropwidgets.[ch]: added
	gimp_prop_enum_radio_box_new() for a radio group that is no
	embedded in a frame.

	* app/widgets/gimpstrokeeditor.c: use a frame-less radio box for
	the Stroke style.

	* app/gui/file-new-dialog.c
	* app/gui/grid-dialog.c
	* app/gui/stroke-dialog.c: HIG-compliant spacings.
2004-05-03 15:37:56 +00:00
1d2976f934 app/widgets/gimppropwidgets.[ch] replaced
2004-04-19  Sven Neumann  <sven@gimp.org>

	* app/widgets/gimppropwidgets.[ch]
	* app/gui/preferences-dialog.c: replaced
	gimp_prop_boolean_option_menu_new() with
	gimp_prop_boolean_combo_box_new().
2004-04-18 23:48:30 +00:00
89cf45541a app/widgets/Makefile.am app/widgets/widgets-types.h removed GimpEnumMenu.
2004-04-18  Sven Neumann  <sven@gimp.org>

	* app/widgets/Makefile.am
	* app/widgets/widgets-types.h
	* app/widgets/gimpenummenu.[ch]: removed GimpEnumMenu.

	* app/widgets/gimpenumwidgets.[ch]: moved widget constructors that
	don't use GimpEnumMenu from gimpenummenu.[ch] to these new files.

	* app/widgets/gimpenumcombobox.[ch]: added a GtkComboBox widget
	using GimpEnumStore; replaces GimpEnumMenu.

	* app/widgets/gimpenumstore.[ch]: added new function
	gimp_enum_store_lookup_by_value().

	* app/widgets/gimppropwidgets.[ch]: replaced
	gimp_prop_enum_option_menu_new() with gimp_prop_enum_combo_box_new().

	* app/gui/brush-select.[ch]
	* app/gui/convert-dialog.c
	* app/gui/layers-commands.c
	* app/gui/preferences-dialog.c
	* app/gui/resize-dialog.c
	* app/tools/gimpblendoptions.c
	* app/tools/gimpcolorbalancetool.c
	* app/tools/gimpcroptool.c
	* app/tools/gimpcurvestool.c
	* app/tools/gimplevelstool.c
	* app/tools/gimpmagnifytool.c
	* app/tools/gimppaintoptions-gui.c
	* app/tools/gimpselectionoptions.c
	* app/tools/gimptransformoptions.c
	* app/widgets/gimpcolorframe.c
	* app/widgets/gimpeditor.c
	* app/widgets/gimpgrideditor.c
	* app/widgets/gimphistogrameditor.c
	* app/widgets/gimpstrokeeditor.c
	* app/widgets/gimptemplateeditor.c
	* app/widgets/gimptexteditor.c: ported to GimpEnumComboBox.
2004-04-18 15:12:42 +00:00
894cf70dd5 Added infrastructure to make sure we don't write to the global brush,
2004-01-28  Michael Natterer  <mitch@gimp.org>

	Added infrastructure to make sure we don't write to the global
	brush, pattern etc. directories. Needed to make this configurable
	because we can't rely on the global directories being read-only,
	having certain names or being otherwise detectable at runtime in a
	sane way. Fixes bug #132214.

	* libgimpbase/gimpdatafiles.[ch]: added "const gchar *dirname" to
	the GimpDataFileData struct so callbacks don't need to call
	g_path_get_dirname() for each file.

	* libgimpwidgets/gimpfileentry.c: made it work with non UTF-8
	encoded filenames.

	* libgimpwidgets/gimppatheditor.[ch]: ditto. Added GUI and API for
	setting/getting a second "writable_path". The widget makes sure
	that the writable_path is always a subset of the path.

	* app/config/gimpconfig-utils.[ch]: added new function
	gimp_config_build_writable_path().

	* app/config/gimpcoreconfig.[ch]: added separate properties for
	the writable brush, pattern, gradient, palette and font paths.

	* app/config/gimprc-blurbs.h: added (still empty) blurbs for the
	new properties.

	* app/core/gimpdata.[ch] (gimp_data_set_filename): added parameter
	"gboolean writable". Set data->writable to FALSE by default. If
	"writable" is passed as TRUE, still check if we can write to the
	file before setting data->writable to TRUE.

	(gimp_data_create_filename): changed "data_path" parameter to
	"dest_dir" and assume dest_dir is writable.

	(gimp_data_duplicate): set data->dirty to TRUE to make sure
	duplicated things will be saved.

	* app/core/gimpbrush.c
	* app/core/gimpbrushgenerated.c
	* app/core/gimpbrushpipe.c
	* app/core/gimpgradient.c
	* app/core/gimppalette.c
	* app/core/gimppattern.c: don't set the data's filename and don't
	touch data->dirty in the _load() functions because that's done by
	the data factory now. Don't touch data->dirty in the _duplicate()
	functions because that's done by gimp_data_duplicate() itself now.

	* app/core/gimpdatafactory.[ch] (gimp_data_factory_new): added
	"writable_property_name" and remember it.
	Added utility function gimp_data_factory_get_save_dir() which
	determines the directory to save new datas to.
	Added public function gimp_data_factory_data_save_single() which
	saves a single data object.
	Make sure new things get saved to the first writable directory
	as specified in preferences.

	* app/core/gimp.c (gimp_real_initialize): pass the writable_paths'
	property names to gimp_data_factory_new().

	* app/widgets/gimpdataeditor.c (gimp_data_editor_save_dirty): use
	gimp_data_factory_data_save_single() instead of implementing
	saving here.

	* app/widgets/gimppropwidgets.[ch] (gimp_prop_path_editor_new):
	added "const gchar *writable_property_name" parameter (can be
	NULL).

	Added the needed callbacks to handle the writable_path and made
	the path_editor and file_entry code aware of non UTF-8 filename
	encodings. Some general cleanup.

	* app/gui/preferences-dialog.c: changed accordingly.
2004-01-28 21:53:50 +00:00