Esempio n. 1
0
CGAL::Three::Scene_item*
Scene::replaceItem(Scene::Item_id index, CGAL::Three::Scene_item* item, bool emit_item_about_to_be_destroyed)
{
    if(index < 0 || index >= m_entries.size())
        return 0;

    if(emit_item_about_to_be_destroyed) {
    Q_EMIT itemAboutToBeDestroyed(m_entries[index]);
    }

    connect(item, SIGNAL(itemChanged()),
            this, SLOT(itemChanged()));
    std::swap(m_entries[index], item);
    if ( item->isFinite() && !item->isEmpty() &&
         m_entries[index]->isFinite() && !m_entries[index]->isEmpty() &&
         item->bbox()!=m_entries[index]->bbox() )
    {
    Q_EMIT updated_bbox();
    }
  Q_EMIT updated();
    itemChanged(index);
    Q_EMIT restoreCollapsedState();
    group_added();
    return item;
}
Esempio n. 2
0
int
Scene::erase(int index)
{
    clear();
    index_map.clear();
    if(index < 0 || index >= m_entries.size())
        return -1;

    CGAL::Three::Scene_item* item = m_entries[index];
    CGAL::Three::Scene_group_item* group =
            qobject_cast<CGAL::Three::Scene_group_item*>(item);
  if(group)
  {
      m_group_entries.removeAll(group);
  }
    Q_FOREACH(CGAL::Three::Scene_group_item* group, m_group_entries)
    {
        if(group->getChildren().contains(item))
            group->removeChild(item);
    }
  Q_EMIT itemAboutToBeDestroyed(item);
    delete item;
    m_entries.removeAll(item);
    selected_item = -1;
    Q_FOREACH(Scene_item* item, m_entries)
    {
        organize_items(item, invisibleRootItem(), 0);
    }
Esempio n. 3
0
Scene_item*
Scene::replaceItem(Scene::Item_id index, Scene_item* item, bool emit_item_about_to_be_destroyed)
{
    item->changed();
    if(index < 0 || index >= m_entries.size())
        return 0;

    if(emit_item_about_to_be_destroyed) {
    Q_EMIT itemAboutToBeDestroyed(m_entries[index]);
    }

    connect(item, SIGNAL(itemChanged()),
            this, SLOT(itemChanged()));
    std::swap(m_entries[index], item);
    if ( item->isFinite() && !item->isEmpty() &&
         m_entries[index]->isFinite() && !m_entries[index]->isEmpty() &&
         item->bbox()!=m_entries[index]->bbox() )
    {
    Q_EMIT updated_bbox();
    }
  Q_EMIT updated();
    itemChanged(index);
    // QAbstractListModel::reset();
    return item;
}
Esempio n. 4
0
Scene::Item_id
Scene::erase(Scene::Item_id index)
{
  CGAL::Three::Scene_item* item = m_entries[index];
  if(item->parentGroup()
     && item->parentGroup()->isChildLocked(item))
    return -1;
  //clears the Scene_view
    clear();
    index_map.clear();
    if(index < 0 || index >= m_entries.size())
        return -1;
  if(item->parentGroup())
    item->parentGroup()->removeChild(item);

  //removes the item from all groups that contain it
  Q_EMIT itemAboutToBeDestroyed(item);
    item->deleteLater();
    m_entries.removeAll(item);
    selected_item = -1;
    //re-creates the Scene_view
    Q_FOREACH(Scene_item* item, m_entries)
    {
        organize_items(item, invisibleRootItem(), 0);
    }
Esempio n. 5
0
int
Scene::erase(QList<int> indices)
{
    QList<Scene_item*> to_be_removed;

    int max_index = -1;
    Q_FOREACH(int index, indices) {
        if(index < 0 || index >= m_entries.size())
            continue;
        max_index = (std::max)(max_index, index);
        Scene_item* item = m_entries[index];
        to_be_removed.push_back(item);
    }



  Q_FOREACH(Scene_item* item, to_be_removed) {
    Q_EMIT itemAboutToBeDestroyed(item);
    delete item;
    m_entries.removeAll(item);
  }
Esempio n. 6
0
int
Scene::erase(int index)
{
  if(index < 0 || index >= entries.size())
    return -1;

  Scene_item* item = entries[index];
  emit itemAboutToBeDestroyed(item);
  delete item;
  entries.removeAt(index);

  selected_item = -1;
  emit updated();
  QAbstractListModel::reset();

  if(--index >= 0)
    return index;
  if(!entries.isEmpty())
    return 0;
  return -1;
}
Esempio n. 7
0
int
Scene::erase(int index)
{
    if(index < 0 || index >= m_entries.size())
        return -1;

    Scene_item* item = m_entries[index];
  Q_EMIT itemAboutToBeDestroyed(item);
    delete item;
    m_entries.removeAt(index);

  selected_item = -1;

  QAbstractListModel::beginResetModel();
  Q_EMIT updated();
  QAbstractListModel::endResetModel();

    if(--index >= 0)
        return index;
    if(!m_entries.isEmpty())
        return 0;
    return -1;
}