So, I felt familiar when Will wrote:
> In principle it shouldn't be
> so hard if you understand how to use tree view widgets (which I do,
> although I don't like them particularly). ÂAnd in principle the GIMP
> hierarchical organization should be very helpful, because it means
> that most of the work can be done in a few places. ÂBut in reality 
> it  means that only Mitch has any hope of doing it, because it
> involves  making changes in (if I remember correctly)
> GimpDataFactory,  GimpContainerTreeView, and/or GimpContainerEditor,
> all of whose  roles and interactions are undefined, and all of which
> are inherited  by many different things, with no explicit rules for
> the ways they are  used. ÂThe result is that any change is a shot in
> the dark, which will  probably break things all over the place.

Because those classes were the ones I became entangled in over the 
last weekend, when I tried to do something as simple as put an up and 
down arrow on the Tools dialog. (Bug #158666)

I can get to put the buttons, and to pass the ContainerEditor to the 
click callback. As I've written on the bug report, I could  not find 
out, given the editor, what is selected, and it's index. Sven showed 
me a function call - gimp_container_get_child_index - to get to the 
index once I get what is selected, them a call to 
gimp_container_reorder could do the job of going up or down one 
place. (I will also need to get the container list's lenght to know 
when the selected item is at the bottom).

As far as I was able to see, one have to go through the embeded 
GtkTree descendant embeded in the GimpContainerEditor in order to 
retireve what is selected.

Will does understand that widget. I do  not. When I googled for it, I 
got a 100 page pdf just explaining the GtkTreeView.

 I tried to get to the selected object by doing:
static void
_gimp_tool_view_editor_move (GtkWidget             *widget,
                             GimpContainerEditor   *editor,
                             gint                   direction)

  GimpContainerTreeView *tree_view     = editor->view;
  GimpContainer         *container     = 
gimp_container_view_get_container (tree_view);
  GtkTreeSelection      *selection     = gtk_tree_view_get_selection 
  GList                 *rows          = 
gtk_tree_selection_get_selected_rows (
  GimpObject            *selected      = g_list_nth_data (rows, 0);

I can be on the right track, orway off it - but I need to know if this 
is teh way to go.
And...if this is the way to go, might I suggest a method for 
retrieving the selection straight from a GimpContainerEditor, without 
having to mess with the GimpContainerTreeView?

Thank you everybody.

Gimp-developer mailing list

Reply via email to