docs: def addNode(self, cls=None, point=None):
          """
          Creates a new node instance in the scene.  If the optional \
          cls parameter is not supplied, then the default node class \
          will be used when creating the node.  If a point is \
          supplied, then the node will be created at that position, \
          otherwise the node will be created under the cursor.
          
          :param      node    subclass of <XNode>
          :param      point   <QPointF>
          
          :return     <XNode> || None
          """
          # make sure we have a valid class
          if not cls:
              cls = self.defaultNodeClass()
              
          if not cls:
              return None
          
          # create the new node
          node = cls(self)
          node.setLayer(self.currentLayer())
          node.rebuild()
          self.addItem(node)
          
          if point == 'center':
              x = self.sceneRect().width() / 2.0
              y = self.sceneRect().height() / 2.0
              
              x -= (node.rect().width() / 2.0)
              y -= (node.rect().height() / 2.0)
              
              node.setPos(x, y)
              
          elif not point:
              pos    = self._mainView.mapFromGlobal(QCursor.pos())
              point  = self._mainView.mapToScene(pos)
              if ( point ):
                  x = point.x() - node.rect().width() / 2.0
                  y = point.y() - node.rect().height() / 2.0
                  node.setPos(x, y)
          else:
              x = float(point.x())
              y = float(point.y())
              node.setPos(x, y)
          
          return node