Commit Graph

3505 Commits

Author SHA1 Message Date
73b86bd9c9 app: Fix GimpTag reference handling 2010-03-03 23:35:20 +02:00
e9abde75ee app: if there is no "text", generate the layer name from "markup"
Add gimp_markup_extract_text() which does just what it says (includes
code stolen from gmarkup.c), and use it if the layer's text object
doesn't have any text set.
2010-03-02 21:19:57 +01:00
15081a3a73 app: Make catmul-rom coords intepolation clamp pressure 2010-02-24 02:15:50 +02:00
7ea07c884b app: some code cleanup
- move curve creation and signal connection to a utility function
- formatting cleanup
2010-02-23 20:59:10 +01:00
ced0c1af79 app: Fix some code ugliness intoduced by my last commit 2010-02-23 21:16:35 +02:00
0e1715fae2 app: Make the curve changes have immedate effect and have a working curve 2010-02-23 20:16:28 +02:00
3a8c234261 app: Make all inputs for an output respect curves 2010-02-23 17:41:01 +02:00
902e49fcc8 app: Make dynamics output curve getting work right. 2010-02-23 17:41:01 +02:00
62c0472ca5 Bug 600316 - Animated brushes, angle calculation
This was just a small bug in the angle->index calculation.
2010-02-23 14:32:24 +01:00
bdf4269e30 app: Add props for curves 2010-02-22 20:34:11 +02:00
652c6756c4 app: cosmetic cleanups in the new dynamics stuff in core/ 2010-02-22 08:53:50 +01:00
468b30b585 app: Add type for dynamics output 2010-02-22 01:00:16 +02:00
0908e53148 app: use the new unit conversion functions
and get rid of the brainfuck idea that app/ has to use _gimp_unit_foo()
functions, passing a gimp pointer. Instead, simply use the libgimpbase
API all over the place. Should we ever allow more than one gimp instance,
they will simply have to share one unit database.
2010-02-21 16:46:39 +01:00
592fce0f7b app: properly implement GimpData::duplicate() 2010-02-16 19:58:06 +01:00
12aa801441 app: protect against calling a subclass' GimpItem::get_node() impl directly
gimp_drawable_get_mode_node() was calling gimp_drawable_get_node()
instead of gimp_item_get_node() if the mode_node didn't already exist.
Fortunately that was never the case i nthe current code. Added
warnings in the GimpItem::get_node() impls that would go off in such a
situation.
2010-02-14 20:26:16 +01:00
5f46061830 app: add gimp_item_peek_node() and use it
so we can avoid peeking into the GimpItem struct if we want to get to
the item's node without implicitly creating it if it doesn't already
exist.
2010-02-14 13:55:45 +01:00
f9cb5fbc10 app: derive GimpContext from GimpViewable instead of GimpObject
because the device info container wants to be displayed in a container
view soon. Also we are about to get lists of tool presets and stuff,
which are also contexts.
2010-02-13 15:04:32 +01:00
c4562c5a93 core: use g_param_spec_boxed() for tile managers, not g_param_spec_pointer() 2010-02-10 12:42:30 +01:00
8afdbd8053 Let gimp_item_tree_get_insert_pos() return a boolean indicating success
and move more precondition checks there. Remove lots and lots of
checks from all its callers and simply bail out if it returns FALSE.
2010-02-09 22:32:54 +01:00
e83954c49a Add more precondition checks to gimp_item_tree_get_insert_pos() 2010-02-09 22:32:53 +01:00
37d10415df Make sure all items of a subtree get added to / removed from the name hash
when whole item hierarchies are added or removed, like when a layer
group goes to the undo stack and back.
2010-02-09 22:32:51 +01:00
6e49a0fa5d Move gimp_edit_paste_as_new() to gimp_image_new_from_buffer()
because it better fits there, and it's never actually been a "paste"
from the implementation point of view.
2010-02-09 22:32:49 +01:00
903604113f Add utility function to create images to gimpimage-new.[ch]
Add gimp_image_new_from_drawable(), from_component() and from_pixbuf()
and remove that duplicated code from gimptoolbox-dnd.c and
gimpdisplayshell-dnd.c
2010-02-09 22:32:48 +01:00
9a561646c2 Move the undo disable/freeze APIs to gimpimage-undo.[ch] 2010-02-09 22:32:48 +01:00
052dcd0164 Update the layer stack in gimp_image_active_layer_notify()
instead of in gimp_image_set_active_layer()
2010-02-09 22:32:47 +01:00
7413ec9f31 Argh, when removing items, also remove them from the name hash 2010-02-09 22:32:47 +01:00
11ca58ccf2 Use G_TYPE_CHECK_INSTANCE_TYPE() instead of GIMP_IS_ITEM()
See below...
2010-02-09 22:32:46 +01:00
7bb64cd864 Nuke two more local variables that make no sense any longer 2010-02-09 22:32:45 +01:00
430588ac38 Make sure we don't try to reorder items into their children 2010-02-09 22:32:44 +01:00
52eaf96a6c Some of the stupidity from the previous commit was copied from here 2010-02-09 22:32:43 +01:00
2cb6669d01 Fix a lot of stupidity in gimp_item_tree_uniquefy_name()
Don't write to the string returned by gimp_object_get_name(). Pull
most of the code out of the inner loop (which also means to allocate
only one instead of three strings in the inner loop). Don't use the
object as storage for the name that gets generated in the inner loop.
Also, a space can't hurt so it's now "Foo #1" instead of "Foo#1".
2010-02-09 22:32:43 +01:00
6b1872359d Get rid of one more local variable in gimp_image_add_layer() 2010-02-09 22:32:42 +01:00
b83e82514b Use G_TYPE_CHECK_INSTANCE_TYPE() instead of GIMP_IS_ITEM()
so we check for the real type of the items that are in the tree. Also
added some more precondition checks.
2010-02-09 22:32:42 +01:00
1e84abc396 Connect to "notify::active-item" of the item trees
and emit "active-foo-changed" in the signal handlers instead of in
gimp_image_set_active_foo().
2010-02-09 22:32:41 +01:00
3514271fde Give unnamed items proper names
Use the item class' default name unstead of "Unnamed" so they
will be called "Layer", "Channel" and "Path".
2010-02-09 22:32:38 +01:00
5de2482526 Add some comment to group the functions 2010-02-09 22:32:37 +01:00
217d80bb78 Move get_item_by_name() from GimpItemStack to GimpItemTree
and turn its code into a simple hash table lookup.
2010-02-07 16:34:44 +01:00
8a7f2e8f51 Bug 604175 - gimp_vectors_import() is O(n**2) in gimp_list_uniquefy_name(), for some data
Switch off unique names for all individual item stacks and make sure
that all items in a GimpItemTree have unique names across all
containers. Uses a hash table and thus gets rid of the O(n**2)
complexity of the unique name code in GimpList.
2010-02-07 16:23:02 +01:00
2034a3676c Use gimp_item_tree_rename_item() also when undoing an item rename
so all item renaming goes through GimpItemTree API. Add "push_undo"
parameter to gimp_item_tree_rename_item().
2010-02-07 15:56:53 +01:00
bcf7603e04 Add gimp_item_tree_rename_item()
and call it from gimp_item_real_rename() if the item is attached to an
image; simply use gimp_object_set_name() otherwise.
2010-02-07 15:39:42 +01:00
5455ce895d Cause less eye cancer 2010-02-07 15:27:21 +01:00
d9d13bc08d Add some more precondition checks to GimpItemTree functions 2010-02-07 15:07:30 +01:00
e00c59461a No need to pass the active item to GimpItemTree functions any longer 2010-02-07 15:01:31 +01:00
c9645cc0d3 Add "active-item" property and API to GimpItemTree
and use it to store the image's active layer, channel and vectors.
2010-02-07 14:52:34 +01:00
78375e0ec5 Move gimp_image_get_insert_pos() to gimp_item_tree_get_insert_pos() 2010-02-07 14:08:52 +01:00
82f8cee292 Use the newly added get_parent() APIs
Get rid of tons of local "parent" variables and inline the
get_parent() calls. They were on separate lines only to make them
readable at all.
2010-02-07 13:46:46 +01:00
e0224cdbfb Add get_parent() API for items, layers, channels and vectors
this is pretty pointless from an abstraction point of view, but using
these functions will make the code a lot more readable by getting rid
of tons of ugly casts to and from GimpViewable whenever getting an
item's parent.
2010-02-07 12:03:07 +01:00
1b7d60cc87 Add gimp_item_tree_add_item() and gimp_item_tree_remove_item()
and use them from gimp_image_add,remove_layer,channel,vectors().
Removes quite some code duplication from the remove() functions but
almost none from add() because of the ongoing floating selection
madness. We need the calls to the item tree anyway because it's
going to ensure unique names of its items.
2010-02-07 11:47:33 +01:00
7bfd5dcf75 Merge the layer, channel and vectors reorder undo into one item undo
- get rid of the individual undo types and add GIMP_UNDO_ITEM_REORDER.
- replace the pushing functions by a single one.
- merge all the actual undo code into gimpitempropundo.[ch].
- use gimp_item_tree_reorder_item() to do the actual reordering.
- fix gimp_item_tree_reorder_item() to use an ordinary "push_undo"
  boolean again instead of a pointer to an undo function.

GimpVectorsPropUndo is now a completely empty skeleton. Keep it around
anyway, maybe we'll get vectors properties to undo soon.
2010-02-06 16:41:54 +01:00
804e692c86 Add some item tree infrastructure that will be needed later
- add gimp_image_get_layer_tree(), channel_tree() and vectors_tree()
- change GimpItem::get_container() to GimpItem::get_tree()
- implement gimp_item_get_container() using gimp_item_get_tree()
2010-02-06 16:17:23 +01:00