text: /*********************************************************************/
  /* Copyright (c) 2018, EPFL/Blue Brain Project                       */
  /*                     Raphael Dumusc <raphael.dumusc@epfl.ch>       */
  /* All rights reserved.                                              */
  /*                                                                   */
  /* Redistribution and use in source and binary forms, with or        */
  /* without modification, are permitted provided that the following   */
  /* conditions are met:                                               */
  /*                                                                   */
  /*   1. Redistributions of source code must retain the above         */
  /*      copyright notice, this list of conditions and the following  */
  /*      disclaimer.                                                  */
  /*                                                                   */
  /*   2. Redistributions in binary form must reproduce the above      */
  /*      copyright notice, this list of conditions and the following  */
  /*      disclaimer in the documentation and/or other materials       */
  /*      provided with the distribution.                              */
  /*                                                                   */
  /*    THIS  SOFTWARE  IS  PROVIDED  BY  THE  ECOLE  POLYTECHNIQUE    */
  /*    FEDERALE DE LAUSANNE  ''AS IS''  AND ANY EXPRESS OR IMPLIED    */
  /*    WARRANTIES, INCLUDING, BUT  NOT  LIMITED  TO,  THE  IMPLIED    */
  /*    WARRANTIES OF MERCHANTABILITY AND FITNESS FOR  A PARTICULAR    */
  /*    PURPOSE  ARE  DISCLAIMED.  IN  NO  EVENT  SHALL  THE  ECOLE    */
  /*    POLYTECHNIQUE  FEDERALE  DE  LAUSANNE  OR  CONTRIBUTORS  BE    */
  /*    LIABLE  FOR  ANY  DIRECT,  INDIRECT,  INCIDENTAL,  SPECIAL,    */
  /*    EXEMPLARY,  OR  CONSEQUENTIAL  DAMAGES  (INCLUDING, BUT NOT    */
  /*    LIMITED TO,  PROCUREMENT  OF  SUBSTITUTE GOODS OR SERVICES;    */
  /*    LOSS OF USE, DATA, OR  PROFITS;  OR  BUSINESS INTERRUPTION)    */
  /*    HOWEVER CAUSED AND  ON ANY THEORY OF LIABILITY,  WHETHER IN    */
  /*    CONTRACT, STRICT LIABILITY,  OR TORT  (INCLUDING NEGLIGENCE    */
  /*    OR OTHERWISE) ARISING  IN ANY WAY  OUT OF  THE USE OF  THIS    */
  /*    SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.   */
  /*                                                                   */
  /* The views and conclusions contained in the software and           */
  /* documentation are those of the authors and should not be          */
  /* interpreted as representing official policies, either expressed   */
  /* or implied, of Ecole polytechnique federale de Lausanne.          */
  /*********************************************************************/
  
  #include "ContextMenu.h"
  
  ContextMenuPtr ContextMenu::create()
  {
      return ContextMenuPtr{new ContextMenu()};
  }
  
  const QPointF& ContextMenu::getPosition() const
  {
      return _pos;
  }
  
  void ContextMenu::setPosition(const QPointF& pos)
  {
      if (pos == _pos)
          return;
  
      _pos = pos;
      emit positionChanged();
      emit modified(shared_from_this());
  }
  
  bool ContextMenu::isVisible() const
  {
      return _visible;
  }
  
  QStringList ContextMenu::getCopiedUris() const
  {
      return QStringList::fromStdList(_copiedUris);
  }
  
  void ContextMenu::setVisible(const bool visible)
  {
      if (_visible == visible)
          return;
  
      _visible = visible;
      emit visibleChanged(visible);
      emit modified(shared_from_this());
  }
  
  void ContextMenu::setCopiedUris(const QStringList& copiedUris)
  {
      auto uris = copiedUris.toStdList();
      if (_copiedUris == uris)
          return;
  
      _copiedUris = std::move(uris);
      emit copiedUrisChanged();
      emit modified(shared_from_this());
  }
  