Computer Assited Medical Intervention Tool Kit  version 4.1
Public Member Functions | List of all members
camitk::InterfaceNode Class Referenceabstract

This class describe what are the methods to implement for a hierarchical tree node. More...

#include <InterfaceNode.h>

Inherited by camitk::Component.

Public Member Functions

virtual void addChild (InterfaceNode *)=0
 add a child Component (sub item in the hierarchy), and modify the child's parent to be equal to this instance More...
 
virtual void attachChild (InterfaceNode *)=0
 add a child Component (but leave its parent unchanged) More...
 
virtual void deleteChildren ()=0
 delete all sub Component, but do not delete the pointer (only the top-level component has the right to do that) More...
 
virtual bool doubleClicked ()=0
 this method is called each time the InterfaceNode is double clicked by the user. More...
 
virtual const ComponentListgetChildren ()=0
 get the list of the InterfaceNode children (sub items in the hierarchy) More...
 
virtual QPixmap getIcon ()=0
 Get the pixmap that will be displayed for this node. More...
 
virtual QString getName () const =0
 get the name to be displayed More...
 
virtual InterfaceNodegetParent ()=0
 get the parent Component More...
 
virtual QMenu * getPopupMenu (QWidget *parent=nullptr)=0
 get the popup menu to display (or NULL if inexistant) More...
 
virtual bool inItalic () const =0
 should the name be displayed in italic? More...
 
virtual void removeChild (InterfaceNode *)=0
 remove a sub Component (only the top-level component has the right to do that) More...
 
virtual void setName (const QString &)=0
 set the name to be displayed More...
 
virtual void setParent (InterfaceNode *)=0
 set the parent Component More...
 
virtual ~InterfaceNode ()=default
 empty virtual destructor, to avoid memory leak More...
 

Detailed Description

This class describe what are the methods to implement for a hierarchical tree node.

An InterfaceNode can only have one parent, even if it is a child of more than one InterfaceNodes.

Consequence: an InterfaceNode can be present many times in the hierarchy, but can only depends from one parent. To add an InterfaceNode as a child and change its parent to this use addChild(). To add an InterfaceNode as a child without modifying its parent, use attachChild().

This class defines an "interface" (in the OOP/java meaning of the term). See the introduction of GoF: "Program to an interface, not an implementation." To see what Erich Gamma has to say about it: http://www.artima.com/lejava/articles/designprinciplesP.html To see what Bjarne Stroustrup has to say about it: http://www.artima.com/intv/modern.html

Constructor & Destructor Documentation

◆ ~InterfaceNode()

virtual camitk::InterfaceNode::~InterfaceNode ( )
virtualdefault

empty virtual destructor, to avoid memory leak

Member Function Documentation

◆ addChild()

virtual void camitk::InterfaceNode::addChild ( InterfaceNode )
pure virtual

add a child Component (sub item in the hierarchy), and modify the child's parent to be equal to this instance

This is to be used with care. The preferred method to add a child component is to use the Component's constructor with the parent parameter: Component(Component *, const QString &, Representation rep) .

Note
If the use of this method does not update the new child in the Explorer, then you may need to force the rebuild of the explorer nodes by calling Component::refreshInterfaceNode() as follows:
this->addChild(otherComponent);
this->refreshInterfaceNode(); // check first without this, it should work in most of the cases.

see attachChild() Component::refreshInterfaceNode()

Implemented in camitk::Component.

Referenced by camitk::Component::Component().

◆ attachChild()

virtual void camitk::InterfaceNode::attachChild ( InterfaceNode )
pure virtual

add a child Component (but leave its parent unchanged)

There can be some refresh problem, see the note in addChild()

Implemented in camitk::Component.

◆ deleteChildren()

virtual void camitk::InterfaceNode::deleteChildren ( )
pure virtual

delete all sub Component, but do not delete the pointer (only the top-level component has the right to do that)

Implemented in camitk::Component.

◆ doubleClicked()

virtual bool camitk::InterfaceNode::doubleClicked ( )
pure virtual

this method is called each time the InterfaceNode is double clicked by the user.

Returns
a boolean telling if there was modification made in the Component due to this double click

Implemented in camitk::Component.

◆ getChildren()

virtual const ComponentList& camitk::InterfaceNode::getChildren ( )
pure virtual

get the list of the InterfaceNode children (sub items in the hierarchy)

Implemented in camitk::Component.

◆ getIcon()

virtual QPixmap camitk::InterfaceNode::getIcon ( )
pure virtual

Get the pixmap that will be displayed for this node.

If you want your component to have a nice pixmap displayed in the explorer, for example, you just need to

  1. declare a new static member and redefines the getIcon() method (in MyComponent.h):
    public:
    virtual QPixmap getIcon();
    private:
    static QPixmap * myPixmap; // declare a ptr here (it is static for optimization)
  2. add these lines in your code (in MyComponent.cpp):
// use this two lines or better use a Qt resource bundle (recommanded!)
#include "myComponent_pixmap.xpm" // include the pixmap resource file or use a Qt resource bundle
QPixmap * MyComponent::myPixmap = NULL; // static initialization
QPixmap MyComponent::getIcon() {
// check if the class instance was already used somewhere
if (!myPixmap) {
// create the pixmap from the data like this (or using the Qt resource bundle, see Qt documentation)
myPixmap = new QPixmap(myComponent_pixmap); // myComponent_pixmap is the name of the char[] found in the .xpm file
}
// return the object (not the pointer
return (*myPixmap);
}

And that all folks! A nice icon will be now used to display your component!

Note
Recommanded pixmap size is 20x20 (not nice, but efficient)...

Implemented in camitk::Component, camitk::MeshComponent, PMLComponent, and VtkMeshComponent.

◆ getName()

virtual QString camitk::InterfaceNode::getName ( ) const
pure virtual

get the name to be displayed

Implemented in camitk::Component.

◆ getParent()

virtual InterfaceNode* camitk::InterfaceNode::getParent ( )
pure virtual

get the parent Component

Implemented in camitk::Component.

◆ getPopupMenu()

virtual QMenu* camitk::InterfaceNode::getPopupMenu ( QWidget *  parent = nullptr)
pure virtual

get the popup menu to display (or NULL if inexistant)

Implemented in camitk::Component.

◆ inItalic()

virtual bool camitk::InterfaceNode::inItalic ( ) const
pure virtual

should the name be displayed in italic?

Implemented in camitk::Component.

◆ removeChild()

virtual void camitk::InterfaceNode::removeChild ( InterfaceNode )
pure virtual

remove a sub Component (only the top-level component has the right to do that)

Implemented in camitk::Component.

Referenced by camitk::Component::setParent().

◆ setName()

virtual void camitk::InterfaceNode::setName ( const QString &  )
pure virtual

set the name to be displayed

Implemented in camitk::Component.

◆ setParent()

virtual void camitk::InterfaceNode::setParent ( InterfaceNode )
pure virtual

set the parent Component

Implemented in camitk::Component.

Referenced by camitk::Component::addChild().


The documentation for this class was generated from the following file: