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

Jeff Baumes jeff.baumes at kitware.com
Tue Apr 5 13:14:57 EDT 2011


Thanks for the patch. I finally got around to merging this into VTK master.

Jeff

On Wed, Mar 16, 2011 at 1:51 PM, Nicolas Rannou <
nicolas_rannou at hms.harvard.edu> wrote:

>  Thanks both!
>
> Jeff,
> Please find enclosed a patch which allows the user to select only the
> vertex in the graph.
>
> We should just call:
> vtkGraphLayoutView::SetEdgeSelection(bool);
>
> Nicolas
>
>
> On 03/15/2011 09:05 PM, Jeff Baumes wrote:
>
> 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
>
>
>


-- 
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/20110405/ebdb7e73/attachment.htm>


More information about the vtkusers mailing list