diff --git a/ChangeLog b/ChangeLog index 096ec8aaa0d1660303766df5e5447aea0f66f167..d548f22bc77640a82e4a9506542adcf93ca0eff3 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +2008-11-09 Øyvind Kolås + + * bin/editor.c: (raise), (lower), (gui_press_event): + * bin/gegl-tree-editor-action.c: (gegl_move_item_up), + (gegl_move_item_down): added raise/lower commands to the menu when in + move mode. + 2008-11-09 Øyvind Kolås * bin/gegl-tree-editor-action.c: (gegl_remove_item): added a function diff --git a/bin/editor.c b/bin/editor.c index 6df3290cb81da0b1661461a2a8bc65ba6b4a6a9e..c2098f526f4b88800a430c1a8e21f4b014c2841b 100644 --- a/bin/editor.c +++ b/bin/editor.c @@ -933,6 +933,35 @@ static void path_slice (cairo_t *cr, } void gegl_remove_item (GeglNode *node); +void gegl_move_item_up (GeglNode *node); +void gegl_move_item_down (GeglNode *node); + + +static gint raise (gint argc, char **argv) +{ + GeglNode *self = tree_editor_get_active (editor.tree_editor); + GeglNode *parent = gegl_parent (self); + + if (g_str_equal (gegl_node_get_operation (parent), "gegl:over")) + { + gegl_move_item_up (parent); + tree_editor_set_active (editor.tree_editor, self); + } + return 0; +} + +static gint lower (gint argc, char **argv) +{ + GeglNode *self = tree_editor_get_active (editor.tree_editor); + GeglNode *parent = gegl_parent (self); + + if (g_str_equal (gegl_node_get_operation (parent), "gegl:over")) + { + gegl_move_item_down (parent); + tree_editor_set_active (editor.tree_editor, self); + } + return 0; +} static gint remove_item (gint argc, char **argv) { @@ -1284,6 +1313,8 @@ gui_press_event (GtkWidget *widget, case STATE_MOVE: menu_add ("paint", G_CALLBACK (do_command), "set-state strokes"); menu_add ("path", G_CALLBACK (do_command), "set-state edit-nodes"); + menu_add ("raise", G_CALLBACK (do_command), "raise"); + menu_add ("lower", G_CALLBACK (do_command), "lower"); menu_add ("width", G_CALLBACK (do_command), "set-state edit-width"); menu_add ("remove", G_CALLBACK (do_command), "remove-item"); /* check the current curve type,. */ diff --git a/bin/gegl-tree-editor-action.c b/bin/gegl-tree-editor-action.c index 832598c6e7af1413d698c91e09a0de11fab02d1d..c98a93816a6c0341e7e91435e00dd63c481d30dd 100644 --- a/bin/gegl-tree-editor-action.c +++ b/bin/gegl-tree-editor-action.c @@ -403,6 +403,27 @@ add_sibling_op (GtkAction *action, gpointer userdata) gtk_tree_selection_select_iter (tree_selection, &iter); } +void gegl_move_item_up (GeglNode *node); +void gegl_move_item_up (GeglNode *node) +{ + /* hack hack */ + tree_editor_set_active (editor.tree_editor, node); + move_up (NULL, tree_editor_get_treeview (editor.tree_editor)); + node = tree_editor_get_active (editor.tree_editor); + property_editor_rebuild (editor.property_editor, node); +} + + +void gegl_move_item_down (GeglNode *node); +void gegl_move_item_down (GeglNode *node) +{ + /* hack hack */ + tree_editor_set_active (editor.tree_editor, node); + move_down (NULL, tree_editor_get_treeview (editor.tree_editor)); + node = tree_editor_get_active (editor.tree_editor); + property_editor_rebuild (editor.property_editor, node); +} + void gegl_remove_item (GeglNode *node); void gegl_remove_item (GeglNode *node)