[vtkusers] [vtk-developers] connection vtkQtTree - vtkGraphLayoutView

Jeff Baumes jeff.baumes at kitware.com
Tue Mar 15 21:05:08 EDT 2011


Sure enough, vtkQtTreeView::Update() was calling SetShowRootNode(false). If
you put Update() before SetShowRootNode(true) in your code it should work. I
also just pushed a fix to master that resolves this so the order should no
longer matter.

Jeff

On Tue, Mar 15, 2011 at 7:29 PM, Nicolas Rannou <
Nicolas_Rannou at hms.harvard.edu> wrote:

> Hi Julien,
>
>  I tried:
>
> this->m_treeTableView->AddRepresentationFromInput(tree);
> this->m_treeTableView->SetShowRootNode(true);
> this->m_treeTableView->Update();
>
> but the root node is not visible in the vtkQtTreeView...
>
> Nicolas
>
> On Mar 15, 2011, at 6:31 PM, Julien Finet wrote:
>
> Did you try vtkQtTreeView::SetShowRootNode(true)  ?
> Julien.
>
> On Tue, Mar 15, 2011 at 6:28 PM, Nicolas Rannou <
> nicolas_rannou at hms.harvard.edu> wrote:
>
>>  Hi Jeff,
>>
>> another thing we noticed is that the root vertex is not shown in the
>> vtkQtTreeView. Is there any reason for that or is it a bug?
>>
>> If "A" is the tree root vertex:
>>
>> vtkGraphLayoutView:
>>
>> A--->B--->C--->D
>>     |        |
>>     |        ->E
>>     ->F
>>
>> vtkQtTreeView:
>>
>> B--->C--->D
>>     |
>>     ->E
>> F
>>
>> Thanks,
>>
>>
>> Nicolas
>>
>>
>> On 03/14/2011 02:36 PM, Nicolas Rannou wrote:
>>
>> Thanks for the feedback Jeff,
>>
>> I added it in the bug tracker. (
>> http://public.kitware.com/Bug/view.php?id=11969)
>>
>> I'll submit a patch for the vtkGraphLayoutView in the next days.
>>
>> Thanks,
>>
>> Nicolas
>>
>> On 03/14/2011 01:12 PM, Jeff Baumes wrote:
>>
>> Glancing at your message again, it appears you are also finding a bug in
>> vtkQtTreeView where it interprets edge ids as vertex ids. If you could add
>> that to the VTK bug tracker, I could hopefully take a look at it sometime
>> soon. Getting rid of edge selections in the graph layout view as I suggested
>> would work around this problem.
>>
>> On Mon, Mar 14, 2011 at 1:07 PM, Jeff Baumes <jeff.baumes at kitware.com>wrote:
>>
>>> I do not know of a simple way to make this difference in selections go
>>> away. The vtkGraphLayoutView generates vertex + edge selections, and
>>> vtkQtTreeView generates vertex-only selections. I believe the best solution
>>> is to have vtkGraphLayoutView have an option to not select edges, as you
>>> suggested. If you are interested in adding that option, you can patch
>>> vtkGraphLayoutView.cxx to add some checks in ConvertSelection() based on a
>>> new boolean member variable and submit it to us for inclusion in VTK, or you
>>> could subclass vtkGraphLayoutView and reimplement ConvertSelection() if you
>>> want to just get it working for your own application.
>>>
>>>  Jeff
>>>
>>>  On Fri, Mar 11, 2011 at 4:41 PM, Nicolas Rannou <
>>> nicolas_rannou at hms.harvard.edu> wrote:
>>>
>>>>   Hi all,
>>>>
>>>> I'm trying to connect a vtkQtTree and a vtkGraphLayout but the
>>>> selection is not working as expected.
>>>>
>>>> When I select something in the vtkGraphLayout, the selection can
>>>> contain vertices and edges.
>>>> When I select something in the vtkQtTree, the selection only contains
>>>> vertices.
>>>>
>>>> If I select edges + vertices in the vtkGraphLayout, i.e. vertices: 1
>>>> and 4, edge:3, it highlights *vertices* 1,3,4 in the vtkQtTree...
>>>>
>>>> Then I have 3 questions/issues:
>>>> (see pseudo-code at the end of the email)
>>>>
>>>> #1: should I modify the structure of my vtkTree (Add specific arrays
>>>> for vertices/edges?) so the vtkQtTree handles properly selection of
>>>> edges+vertices?
>>>>
>>>> #2: can I get my vtkQtTree to return the edges? Or should I find the
>>>> edges after it returns the vertices (is there an efficient way to do it?)?
>>>>
>>>> #3: is there a straight forward way to disable edges selection in the
>>>> vtkGraphLayoutView? (Something like: EdgesNotSelectable()?)
>>>>
>>>>
>>>> Thanks,
>>>>
>>>>
>>>> Nicolas
>>>>
>>>>
>>>> // What I do
>>>>
>>>> I first create a graph and add some arrays associated to the *vertices*.
>>>>
>>>>   vtkSmartPointer<vtkMutableDirectedGraph> graph =
>>>>     vtkSmartPointer<vtkMutableDirectedGraph>::New();
>>>>   vtkIdType a = graph->AddVertex();
>>>>   vtkIdType b = graph->AddChild(a);
>>>>   vtkIdType c = graph->AddChild(a);
>>>>
>>>>   vtkSmartPointer<vtkStringArray> cellType =
>>>>       vtkSmartPointer<vtkStringArray>::New();
>>>>   cellType->SetName("name");
>>>>   cellType->InsertValue(a, "TypeA");
>>>>   cellType->InsertValue(b, "TypeB");
>>>>   cellType->InsertValue(c, "TypeC");
>>>>
>>>>   graph->GetVertexData()->AddArray(cellType);
>>>> ...
>>>>
>>>> I convert the graph to a vtkTree and add this representation to the
>>>> vtkQtTree and to the vtkGraphLayout.
>>>>
>>>> I connect the views through vtkAnnotations and vtkEventQtSlotConnect.
>>>>   this->m_annotationLink = vtkSmartPointer<vtkAnnotationLink>::New();
>>>>
>>>> this->m_treeGraphView->GetRepresentation()->SetAnnotationLink(this->m_annotationLink);
>>>>
>>>> this->m_treeTableView->GetRepresentation()->SetAnnotationLink(this->m_annotationLink);
>>>>
>>>>   this->m_connect = vtkSmartPointer<vtkEventQtSlotConnect>::New();
>>>>   this->m_connect->Connect(this->m_treeTableView->GetRepresentation(),
>>>>     vtkCommand::SelectionChangedEvent,
>>>>     this, SLOT(selectionChanged(vtkObject*, unsigned long, void*,
>>>> void*)));
>>>>   this->m_connect->Connect(this->m_treeGraphView->GetRepresentation(),
>>>>     vtkCommand::SelectionChangedEvent,
>>>>     this, SLOT(selectionChanged(vtkObject*, unsigned long, void*,
>>>> void*)));
>>>>
>>>> selectionChanged() only call update on the 2 views
>>>>
>>>>  _______________________________________________
>>>> Powered by www.kitware.com
>>>>
>>>> Visit other Kitware open-source projects at
>>>> http://www.kitware.com/opensource/opensource.html
>>>>
>>>> Please keep messages on-topic and check the VTK FAQ at:
>>>> http://www.vtk.org/Wiki/VTK_FAQ
>>>>
>>>> Follow this link to subscribe/unsubscribe:
>>>> http://www.vtk.org/mailman/listinfo/vtkusers
>>>>
>>>>
>>>
>>>
>>> --
>>> Jeff Baumes, Ph.D.
>>> Technical Lead, Kitware Inc.
>>> (518) 881-4932
>>>
>>
>>
>>
>> --
>> Jeff Baumes, Ph.D.
>> Technical Lead, Kitware Inc.
>> (518) 881-4932
>>
>>
>>
>>
>> _______________________________________________
>> Powered by www.kitware.com
>>
>> Visit other Kitware open-source projects at
>> http://www.kitware.com/opensource/opensource.html
>>
>> Follow this link to subscribe/unsubscribe:
>> http://www.vtk.org/mailman/listinfo/vtk-developers
>>
>>
>>
>
>


-- 
Jeff Baumes, Ph.D.
Technical Lead, Kitware Inc.
(518) 881-4932
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.vtk.org/pipermail/vtkusers/attachments/20110315/32b59146/attachment.htm>


More information about the vtkusers mailing list