Hi Miklos,

To get things straight, it is not possible to "select a node" via the API. All you can do is to select a GUI representation of a node in some Qt widget (there might exist several Qt widgets in the same application allowing to "select the node").

Further, "GetCurrentSelection()" always return the selection of the active workbench part or "null" if there is no active part. Since most of the views and editors do not register a selection provider, the returned selection will be null.

If your code below is executed from a button click within your view, "GetCurrentSelection()" returns the selected items of your view (probably none), because it is the active workbench part (the user clicked your button).

You might want to read more about the selection mechanism here:

http://www.mitk.org/wiki/Article%3A%20Using%20The%20Selection%20Service

- Sascha

On 06/18/2012 04:31 PM, Miklos Espak wrote:
Hi Sascha,

I want to achieve that the GetCurrentSelection() function returns the node that I want to select. If the selection event is fired and the OnSelectionChanged function of the view is invoked automatically, that is a plus, but I can invoke it myself.

I tried this now, but did not help:

berry::ISelectionProvider::Pointer selectionProvider = GetSite()->GetSelectionProvider(); berry::SingleNodeSelection* singleSelection = new berry::SingleNodeSelection();
  singleSelection->SetNode(d->surfaceNode);
  berry::ISelection::Pointer selection;
  selection = singleSelection;
  selectionProvider->SetSelection(selection);

Is this how it should work?

The GetCurrentSelection still returns an empty list.

Thanks,
Miklos

On Mon, Jun 18, 2012 at 2:39 PM, Sascha Zelzer <s.zel...@dkfz-heidelberg.de <mailto:s.zel...@dkfz-heidelberg.de>> wrote:

    Hi Miklos,

    I guess what you want is to change the selection state of some
    widget in your application (for example the selection in the
    datamanager).

    You can either use the Qt API of the widget directly (if you have
    access to it) or you could work with the selection provider of a
    particular view to change that views selection state. Have a look
    at IWorkbenchPartSite::GetSelectionProvider() and the
    "SetSelection()" method of the returned ISelectionProvider instance.

    - Sascha


    On 06/18/2012 01:29 PM, Miklos Espak wrote:
    Hi Andreas,

    now I tried, but did not help.

      d->referenceNode->SetSelected(false);
      d->surfaceNode->SetSelected(true);
      FireNodeSelected(d->surfaceNode);
      QList < itk::SmartPointer<mitk::DataNode> > currentSelection =
    this->GetCurrentSelection();
      MITK_INFO << "SurfaceExtractorView::createSurfaceNode()
    selected node number: " << currentSelection.size();


    The code prints zero.

    Regards,
    Miklos

    On Mon, Jun 18, 2012 at 12:19 PM, Fetzer, Andreas
    <a.fet...@dkfz-heidelberg.de
    <mailto:a.fet...@dkfz-heidelberg.de>> wrote:

        Hi Miklos,

        you have to call FireNodeSelected(DataNode*). SetSelected
        just changes the property value.

        Regards
        Andreas

        On 18.06.2012, at 12:10, Miklos Espak wrote:

        Hi,


        is there a way to select a node programmatically?

        I tried a code snippet that I found in the MITK code base,
        but it does not work.


        ------------------------------------------------
         d->referenceNode->SetSelected(false);
         d->surfaceNode->SetSelected(true);

         // EMULATE INITIAL SELECTION EVENTS
         // send the current selection
         berry::IWorkbenchPart::Pointer activePart =
        this->GetSite()->GetPage()->GetActivePart();
         if (activePart.IsNotNull())
         {
          QList < itk::SmartPointer<mitk::DataNode> >
        currentSelection = this->GetCurrentSelection();
          this->OnSelectionChanged(activePart, currentSelection);
         }
        ------------------------------------------------

        d->referenceNode and d->surfaceNode are added to the data
        storage. The problem is that even I change their "selected"
        property, the currentSelection is empty.

        Any idea?

        Thank you,
        Miklos

        
------------------------------------------------------------------------------
        Live Security Virtual Conference
        Exclusive live event will cover all the ways today's security and
        threat landscape has changed and how IT managers can respond.
        Discussions
        will include endpoint security, mobile security and the
        latest in malware
        threats.
        
http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/_______________________________________________
        mitk-users
        
<http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/_______________________________________________%0Amitk-users>
        mailing list
        mitk-users@lists.sourceforge.net
        
<mailto:mitk-users@lists.sourceforge.net><mailto:mitk-users@lists.sourceforge.net
        <mailto:mitk-users@lists.sourceforge.net>>
        https://lists.sourceforge.net/lists/listinfo/mitk-users





------------------------------------------------------------------------------
Live Security Virtual Conference
Exclusive live event will cover all the ways today's security and 
threat landscape has changed and how IT managers can respond. Discussions 
will include endpoint security, mobile security and the latest in malware 
threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/
_______________________________________________
mitk-users mailing list
mitk-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/mitk-users

Reply via email to