Commit Graph

86 Commits

Author SHA1 Message Date
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 697572ccc0 app,libgimp*: fix includes to follow our include policy
- don't include <gdk-pixbuf/gdk-pixbuf.h> in headers in app/
- instead, include it in many .c files instead of <glib-object.h>,
  finally acknowledging the fact that app/ depends on gdk-pixbuf almost
  globally
- fix up includes as if libgimpbase depended in GIO, which it soon will
2013-10-15 01:58:39 +02:00
Michael Natterer e72cf05ccb app: port mtime code in gimp_data_save() to GIO
because it gets its stat() calls right.
2013-08-04 16:51:31 +02:00
Michael Natterer 13614f6182 app: change GimpData:mtime from time_t to gint64 2013-07-12 16:33:12 +02:00
Michael Natterer 5280a02ed8 Bug 700215 - Gradient name changes do not persist across sessions...
if the gradient itself isn't changed.

GimpData: implement GimpObject::name_changed() and set the "dirty"
flag to TRUE. Don't set dirty in GimpData::dirty()'s default impl
because that calls gimp_object_name_changed() anyway.
2013-05-29 22:29:29 +02:00
Michael Natterer 908f727f0a Chain up unconditionally in GObject::constructed()
It's supported since GLib 2.28.
2012-11-12 21:51:22 +01:00
Michael Natterer 5a7b7d9a4b app: add gimp_gegl_buffer_get_tile_manager()
and ust it in some get_memsize() functions instead of having a
FIXME. So many files changed because they need to inlcude <gegl.h>
now.
2012-05-02 17:46:07 +02:00
Nils Philippsen 4ec7def1d0 put operators on end of line in long expressions
This fixes commit 3a151bd1a9, GIMP is
deviating from the GNU coding style here.
2012-02-11 16:50:44 +01:00
Nils Philippsen 3a151bd1a9 app: check top_directory for plausibility 2012-02-10 16:20:15 +01:00
Michael Natterer 0729c25bc0 app: set tags for all subdirectories a data file lives in
GimpData: add gimp_data_set_folder_tags() and remove the tag logic
from gimp_data_set_filename(). The function gets the toplevel data
directory passed so it knows where to stop assigning tags.

GimpDataFactory: when loading data, keep track of the currently
processed data hierachy's toplevel directory, and pass it to above new
function. Also make sure obsolete files don't get folder-tagged.
2012-02-09 10:02:49 +01:00
Alexia Death f7554c299e app: use deletable flag for sorting user data above system data
Previously flag writable was used. This caused ritable and editable
brushes to sort first. This was not clearly understood criteria.
Now user brushes in writable folders are sorted first.
2012-02-01 21:05:16 +02:00
Alexia Death aa9806c687 app: Make resource subfolders elements in the tag cloud
This patch does following things for this purpose:
* Adds intrernal flag to GimpTag api
* Modifies GimpData gimp_data_set_filename to use the last element
  of the path, unless blacklisted, as internal tag for the resource.
* Modify tag cache to not save internal tags
* Removes a check for existing tags when objects are added to tag cache
2011-12-04 20:36:05 +02:00
Michael Natterer ede0d26b91 app: gimp_data_create_filename(): avoid evil characters in the filename
such as forbidden ones on various platforms. List collected on #gimp
with a fair portion of paranoia involved.
2011-04-13 21:25:10 +02:00
Michael Natterer fcfb7cf160 Use the new g_[s]list_free_full() instead of foreach() and free() 2011-03-07 17:11:28 +01:00
Michael Natterer 3873aa5cac app: gimp_data_duplicate() reset name, filename, writable and deletable
to default values on the copy, so the duplicated data behaves as
documented, even if a subclass copied too much. Makes duplicated
dynamics work.
2011-02-07 19:38:23 +01:00
Michael Natterer 5e4eee4653 app: implement GObject::constructed() instead of ::constructor() 2011-01-12 22:53:58 +01:00
Aurimas Juška 73b86bd9c9 app: Fix GimpTag reference handling 2010-03-03 23:35:20 +02:00
Michael Natterer 3a8b59ada5 Use ${gimp_dir} and ${gimp_data_dir} in tags.xml
* app/core/gimpdata.c (gimp_data_get_identifier): check if the data's
  path starts with either of those and use the symbolic paths in that
  case.

* data/tags/gimp-tags-default.xml.in: use them here too instead of
  /home/martin/foo/bar/...

This way we can ship a default file that makes sense, and need much
less identifier remapping. The identifiers even stay the same when
upgrading GIMP.
2009-11-07 21:14:56 +01:00
Michael Natterer 22767ca7b8 Seal GimpData completely and add the missing accessors 2009-10-31 18:48:38 +01:00
Michael Natterer 7abcfbf237 Add private struct to GimpData
And start sealing by moving "filename" there. Add
gimp_data_get_filename() and use it everywhere.
2009-10-31 15:24:57 +01:00
Michael Natterer a3558e3cb8 Remove GIMP_OBJECT() casts when calling gimp_object_get_name() 2009-08-31 22:47:18 +02:00
Martin Nordholts cb94993f40 app: Clarify corner case uses of gimp_object_name_changed() 2009-08-29 12:12:08 +02:00
Michael Natterer 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
Martin Nordholts 364d2cd84f Bug 555954 – Merge Tagging of Gimp Resources GSoC Project
Partial merge of code from Aurimas Juška.

* app/core/gimpdata.c: Implement GimpTagged::get_identifier() and
GimpTagged::get_checksum().

* app/core/gimpbrush.c: 
* app/core/gimpgradient.c
* app/core/gimppalette.c
* app/core/gimppattern.c: Implement GimpTagged::get_checksum().
They all use the GimpData implementation of
GimpTagged::get_identifier().

svn path=/trunk/; revision=27784
2008-12-13 11:58:24 +00:00
Martin Nordholts 70ed5218d6 Bug 555954 – Merge Tagging of Gimp Resources GSoC Project
Partial merge of code from Aurimas Juška.

* app/core/gimpdata.[ch] (gimp_data_make_internal): Add an
'identifier' parameter/instance struct member that can be used to
identify the internal GimpData object across sessions. It is the
internal-object counterpart to a file path.

* app/core/gimp.c
* app/core/gimpcurve.c
* app/core/gimpbrush.c
* app/core/gimppattern.c
* app/core/gimppalette.c
* app/core/gimpgradient.c
* app/core/gimp-gradients.c: Assign an identifier to the the
internal GimpData objects.

svn path=/trunk/; revision=27781
2008-12-12 07:03:42 +00:00
Martin Nordholts dca385281f Bug 555954 – Merge Tagging of Gimp Resources GSoC Project
Partial merge of code from Aurimas Juška.

* app/core/gimptag.c: A new minimal GimpTag type with only a
gimp_tag_equals() class function so that we can

* app/core/gimptagged.c
* app/core/gimpdata.c (gimp_data_add_tag, gimp_data_remove_tag):
Adapt these to GimpTag being an object instead of a GQuark.

* app/core/core-types.h: Update GimpTag typedef.

* app/core/Makefile.am: Add gimptag.[ch].

svn path=/trunk/; revision=27778
2008-12-11 22:04:05 +00:00
Sven Neumann a97d5de211 renamed gimp_data_name_compare() to gimp_data_compare() and changed it to
2008-07-10  Sven Neumann  <sven@sven-sun.berlin.jpk.com>

	* app/core/gimpdata.[ch]: renamed gimp_data_name_compare() to
	gimp_data_compare() and changed it to keep the data in three
	groups: internal, writable and system resource files. Inside the
	groups the sorting order is alphabetical.

	* app/core/gimpdatafactory.c (gimp_data_factory_new): changed
	accordingly.


svn path=/trunk/; revision=26100
2008-07-10 09:08:54 +00:00
Michael Natterer 15dd7ca20e prototype indentation and minor declatation and function reordering for
2008-04-19  Michael Natterer  <mitch@gimp.org>

	* app/core/gimpdata.c: prototype indentation and minor declatation
	and function reordering for the sake of consistency.


svn path=/trunk/; revision=25499
2008-04-19 14:48:50 +00:00
Sven Neumann e4d64122bb app/core/Makefile.am app/core/core-types.h define a simple interface for
2008-01-17  Sven Neumann  <sven@gimp.org>

	* app/core/Makefile.am
	* app/core/core-types.h
	* app/core/gimptagged.[ch]: define a simple interface for tagged
	objects.

	* app/core/gimpdata.[ch]: implement the GimpTagged interface. 

svn path=/trunk/; revision=24633
2008-01-17 10:51:31 +00:00
Michael Natterer 036085fd9e app/base/temp-buf.c app/base/tile-manager.c accept NULL in all
2007-11-16  Michael Natterer  <mitch@gimp.org>

	* app/base/temp-buf.c
	* app/base/tile-manager.c
	* app/core/gimpobject.c: accept NULL in all get_memsize() functions.

	* app/core/gimp-utils.[ch]: ditto. Added gimp_string_get_memsize().

	* app/core/gimp.c
	* app/core/gimpbrush.c
	* app/core/gimpbuffer.c
	* app/core/gimpcontainer.c
	* app/core/gimpcontext.c
	* app/core/gimpdata.c
	* app/core/gimpdrawable.c
	* app/core/gimpdrawablemodundo.c
	* app/core/gimpdrawableundo.c
	* app/core/gimpimage.c
	* app/core/gimpitempropundo.c
	* app/core/gimplayer.c
	* app/core/gimpmaskundo.c
	* app/core/gimppalette.c
	* app/core/gimpparasitelist.c
	* app/core/gimppattern.c
	* app/core/gimppreviewcache.c
	* app/core/gimpundo.c
	* app/core/gimpundostack.c
	* app/core/gimpviewable.c
	* app/pdb/gimpprocedure.c
	* app/plug-in/gimpplugindef.c
	* app/plug-in/gimppluginmanager.c
	* app/plug-in/gimppluginprocedure.c
	* app/text/gimptext.c
	* app/text/gimptextlayer.c
	* app/text/gimptextundo.c
	* app/vectors/gimpvectorsmodundo.c: simplify
	GimpObject::get_memsize() implementations accordingly.

	* app/core/gimpimageundo.c: ditto. Always keep around colormaps in
	chunks of GIMP_IMAGE_COLORMAP_SIZE to be coonsistent with the
	other colormap handling code.


svn path=/trunk/; revision=24174
2007-11-16 18:19:30 +00:00
Sven Neumann 41237259c9 In all files, changed the standard copyright notice to say "GIMP - The GNU
2006-12-09  Sven Neumann  <sven@gimp.org>

        * In all files, changed the standard copyright notice to say
        "GIMP - The GNU Image Manipulation Program".
2006-12-09 21:33:38 +00:00
William Skaggs 8166a20748 Bill Skaggs <weskaggs@primate.ucdavis.edu>
* app/core/gimpdata.c (gimp_data_class_init): fix typo
	in property construction code.
2006-10-27 18:11:46 +00:00
Sven Neumann 64e893e62f there's no need to make GTypeInfo and GInterfaceInfo structs static.
2006-10-18  Sven Neumann  <sven@gimp.org>

        * [lots of files]: there's no need to make GTypeInfo and
        GInterfaceInfo structs static.
2006-10-18 13:17:50 +00:00
Sven Neumann c3448b2cbf It makes more sense to have GimpData::dirty indicate a name change than to
2006-05-23  Sven Neumann  <sven@gimp.org>

	It makes more sense to have GimpData::dirty indicate a name change
	than to invalidate the previews whenever the name changes.

	* app/core/gimpdata.c: call gimp_object_name_changed() from
	gimp_data_real_dirty() instead of implementing
	GimpObject::name-changed and calling gimp_data_dirty() from there.

	* app/core/gimpbrushclipboard.c
	* app/core/gimppalette.c
	* app/core/gimppatternclipboard.c: call gimp_data_dirty() in place
	of gimp_object_name_changed().

	* app/core/gimpbrushgenerated.c (gimp_brush_generated_dirty):
	chain up unconditionally.
2006-05-23 15:39:45 +00:00
Sven Neumann 049872b361 app/*.[ch] converted tabs to spaces.
2006-04-12  Sven Neumann  <sven@gimp.org>

	* app/*.[ch]
	* app/*/*.[ch]: converted tabs to spaces.
2006-04-12 12:49:29 +00:00
Sven Neumann 6f8f925c69 app/core/gimpdata.c (gimp_data_error_quark)
2006-04-06  Sven Neumann  <sven@gimp.org>

	* app/core/gimpdata.c (gimp_data_error_quark)
	* libgimpconfig/gimpconfig-error.c (gimp_config_error_quark)
	* libgimpthumb/gimpthumb-error.c (gimp_thumb_error_quark):
	g_quark_from_static_string() is already reasonably fast, not much
	point in caching the result.
2006-04-06 12:07:18 +00:00
Michael Natterer e1ceed5147 define GIMP_PARAM_STATIC_STRINGS which is G_PARAM_STATIC_NAME|NICK|BLURB.
2006-01-18  Michael Natterer  <mitch@gimp.org>

	* app/config/config-types.c: define GIMP_PARAM_STATIC_STRINGS
	which is G_PARAM_STATIC_NAME|NICK|BLURB. Also define
	GIMP_PARAM_READABLE, _WRITABLE and _READWRITE which include
	GIMP_PARAM_STATIC_STRINGS.

	* app/*/*.c: use them for all object properties so their
	strings are not copied.
2006-01-18 20:29:40 +00:00
Sven Neumann a6bb2b5751 use gimp_brush_generated_new() to create the brush object. Removed
2005-11-01  Sven Neumann  <sven@gimp.org>

	* app/core/gimpbrushgenerated.c (gimp_brush_generated_load): use
	gimp_brush_generated_new() to create the brush object. Removed
	redundant calls to gimp_data_dirty().

	* app/core/gimpdata.c: freeze the data object during construction.
2005-11-01 13:04:09 +00:00
Sven Neumann c00173ccd0 app/core/gimpdata.[ch] applied a heavily modified version of the patch
2005-10-31  Sven Neumann  <sven@gimp.org>

	* app/core/gimpdata.[ch]
	* app/core/gimpdatafactory.c: applied a heavily modified version
	of the patch provided by Shlomi Fish in bug #311740. Introduces a
	cache to speed up reloading of data files.

	* app/actions/data-commands.c: set gimp busy while refreshing data
	factories.

	* app/widgets/gimpwidgets-utils.c (gimp_widget_accel_changed):
	free the return value of gimp_get_accel_string().
2005-10-31 11:29:01 +00:00
Sven Neumann 4839271341 app/core/gimpdata.c app/file/file-save.c use g_access() from gstdio.h.
2005-09-26  Sven Neumann  <sven@gimp.org>

	* app/core/gimpdata.c
	* app/file/file-save.c
	* app/file/file-open.c: use g_access() from gstdio.h.

	* app/config/gimpconfig-file.c (gimp_config_file_copy)
	* libgimpthumb/gimpthumbnail.c: use g_chmod() from gstdio.h.

	* app/file/gimprecentlist.c
	* libgimpconfig/gimpconfigwriter.c: use g_creat() from gstdio.h.
2005-09-25 23:22:05 +00:00
Sven Neumann c1363db8c0 Removed "stingy-memory-use" all over the place. This feature was really
2005-06-08  Sven Neumann  <sven@gimp.org>

	Removed "stingy-memory-use" all over the place. This feature was
	really not that useful anymore. The GUI for the preference option
	was already removed for GIMP 2.2.  Fixes bug #306617.

	* app/config/gimpbaseconfig.[ch]: set IGNORE flag on
	"stingy-memory-use".

	* app/config/gimpcoreconfig.h: added a comment that the
	font_path_writable variable is unused.

	* app/base/temp-buf.[ch]: removed code that used to deal with
	swapping temp-bufs to disk.

	* app/base/base.c: made base_config a static variable.

	* app/core/gimpdata.[ch]
	* app/core/gimpdatafactory.[ch]: removed stingy_memory_use
	parameter from data construction methods.

	* app/core/gimp-gradients.c
	* app/core/gimpbrush-load.[ch]
	* app/core/gimpbrush.[ch]
	* app/core/gimpbrushgenerated.[ch]
	* app/core/gimpbrushpipe.[ch]
	* app/core/gimpcontext.c
	* app/core/gimpgradient-load.[ch]
	* app/core/gimpgradient.[ch]
	* app/core/gimppalette-import.c
	* app/core/gimppalette.[ch]
	* app/core/gimppattern.[ch]: changed accordingly.
2005-06-08 11:27:31 +00:00
Sven Neumann 337947de29 reverted previous change for now.
2005-05-27  Sven Neumann  <sven@gimp.org>

	* app/core/gimpdata.c: reverted previous change for now.
2005-05-27 10:56:33 +00:00
Sven Neumann f0224fe104 mark properties as serializable.
2005-05-27  Sven Neumann  <sven@gimp.org>

	* app/core/gimpdata.c: mark properties as serializable.
2005-05-27 10:49:54 +00:00
Sven Neumann bbc1c947ad added more properties.
2005-05-26  Sven Neumann  <sven@gimp.org>

	* app/core/gimpdata.c: added more properties.
2005-05-25 23:47:42 +00:00
Sven Neumann 59cb5d75ba added MIME type as a construct property to GimpData.
2005-05-26  Sven Neumann  <sven@gimp.org>

	* app/core/gimpdata.[ch]: added MIME type as a construct property
	to GimpData.

	* app/core/gimpbrush-load.c
	* app/core/gimpbrushgenerated.c
	* app/core/gimpbrushpipe.c
	* app/core/gimpgradient-load.c
	* app/core/gimppalette.c
	* app/core/gimppattern.c: set the MIME type when loading a data
	object from file. MIME types needs review and GimpPalette isn't
	quite done yet...

	* app/core/gimpdashpattern.c: cosmetics.
2005-05-25 23:25:45 +00:00
Sven Neumann d336a49a53 return early if called for an internal data object. Fixes bug #172581.
2005-04-04  Sven Neumann  <sven@gimp.org>

	* app/core/gimpdata.c (gimp_data_create_filename): return early if
	called for an internal data object. Fixes bug #172581.
2005-04-04 15:14:50 +00:00
Sven Neumann 648cccde5e app/base/base.c app/base/temp-buf.c app/base/tile-swap.c
2005-02-07  Sven Neumann  <sven@gimp.org>

	* app/base/base.c
	* app/base/temp-buf.c
	* app/base/tile-swap.c
	* app/config/gimpconfig-file.c
	* app/core/gimpbrush.c
	* app/core/gimpbrushgenerated.c
	* app/core/gimpbrushpipe.c
	* app/core/gimpdata.c
	* app/core/gimpenvirontable.c
	* app/core/gimpgradient-load.c
	* app/core/gimpgradient-save.c
	* app/core/gimppalette-import.c
	* app/core/gimppalette.c
	* app/core/gimppattern.c
	* app/dialogs/user-install-dialog.c
	* app/gui/session.c
	* app/menus/menus.c
	* app/widgets/gimpdevices.c: use gstdio wrappers.
2005-02-07 01:24:22 +00:00
Michael Natterer 3eb69a85f0 tools/pdbgen/pdb/brush.pdb tools/pdbgen/pdb/gradient.pdb disallow the
2004-10-04  Michael Natterer  <mitch@gimp.org>

	* tools/pdbgen/pdb/brush.pdb
	* tools/pdbgen/pdb/gradient.pdb
	* tools/pdbgen/pdb/palette.pdb: disallow the empty string for
	new brushes, gradients and palettes and check the return value
	of gimp_data_factory_data_new(). Cleanup.

	* app/core/gimpbrushgenerated.c (gimp_brush_generated_new)
	* app/core/gimpgradient.c (gimp_gradient_new)
	* app/core/gimpdatafactory.c (gimp_data_factory_data_new): same
	here. Fixes bug #154264.

	* app/core/gimpdata.[ch] (gimp_data_set_filename): added boolean
	"deletable" parameter because it's not derivable from "writable".

	* app/core/gimpdatafactory.c (gimp_data_factory_load_data): need
	to figure "deletable" separately from "writable" to be able to
	delete unsavable stuff in the user-writable data directories.
	Fixes bug #154410.

	(gimp_data_factory_data_save_single): cleaned up.

	* app/pdb/brush_cmds.c
	* app/pdb/gradient_cmds.c
	* app/pdb/palette_cmds.c
	* libgimp/gimpbrush_pdb.c
	* libgimp/gimpgradient_pdb.c
	* libgimp/gimppalette_pdb.c: regenerated.
2004-10-04 09:39:27 +00:00
Michael Natterer c5e78fe18a added copyright header, added #defines for access(), F_OK, R_OK and X_OK.
2004-07-19  Michael Natterer  <mitch@gimp.org>

	* libgimpbase/gimpwin32-io.h: added copyright header, added
	#defines for access(), F_OK, R_OK and X_OK.

	* app/core/gimpdata.c: include the above instead of defining
	the workarounds here.

	* app/base/tile-swap.c
	* app/config/gimpconfig-dump.c
	* libgimpthumb/gimpthumb-utils.c
	* libgimpthumb/gimpthumbnail.c: for consistency, #include
	gimpwin32-io.h with "" instead of <>.
2004-07-19 13:22:44 +00:00
Sven Neumann 8c4b7b5aba app/display/gimpdisplayshell.c corrected API documentation, removed
2004-07-16  Sven Neumann  <sven@gimp.org>

	* app/core/gimpdata.c:
	* app/display/gimpcanvas.c:
	* app/display/gimpdisplayshell.c
	* app/display/gimpdisplayshell-transform.c: corrected API
	documentation, removed trailing whitespace.

	Please do always build the documentation if you add or change any
	gtk-doc comments.
2004-07-16 10:07:30 +00:00