Scene::Item_id Scene::addItem(CGAL::Three::Scene_item* item) { Bbox bbox_before = bbox(); m_entries.push_back(item); connect(item, SIGNAL(itemChanged()), this, SLOT(itemChanged())); connect(item, SIGNAL(redraw()), this, SLOT(callDraw())); if(item->isFinite() && !item->isEmpty() && bbox_before + item->bbox() != bbox_before ) { Q_EMIT updated_bbox(); } QList<QStandardItem*> list; for(int i=0; i<5; i++) { list<<new QStandardItem(); list.at(i)->setEditable(false); } invisibleRootItem()->appendRow(list); for(int i=0; i<5; i++){ index_map[list.at(i)->index()] = m_entries.size() -1; } Q_EMIT updated(); Item_id id = m_entries.size() - 1; Q_EMIT newItem(id); CGAL::Three::Scene_group_item* group = qobject_cast<CGAL::Three::Scene_group_item*>(item); if(group) addGroup(group); return id; }
Scene::Item_id Scene::addItem(CGAL::Three::Scene_item* item) { CGAL::Three::Scene_group_item* group = qobject_cast<CGAL::Three::Scene_group_item*>(item); if(group) m_group_entries.prepend(group); Bbox bbox_before = bbox(); m_entries.push_back(item); connect(item, SIGNAL(itemChanged()), this, SLOT(itemChanged())); connect(item, SIGNAL(redraw()), this, SLOT(callDraw())); if(item->isFinite() && !item->isEmpty() && bbox_before + item->bbox() != bbox_before ) { Q_EMIT updated_bbox(); } QList<QStandardItem*> list; for(int i=0; i<5; i++) { list<<new QStandardItem(); list.at(i)->setEditable(false); } invisibleRootItem()->appendRow(list); for(int i=0; i<5; i++){ index_map[list.at(i)->index()] = m_entries.size() -1; } Q_EMIT updated(); Item_id id = m_entries.size() - 1; Q_EMIT newItem(id); //if group selected, add item to it if(mainSelectionIndex() >=0) { //if new item is a group, don't do that, to avoid any ambiguity if(!group) { CGAL::Three::Scene_group_item* selected_group = qobject_cast<CGAL::Three::Scene_group_item*>(m_entries.at(mainSelectionIndex())); if(selected_group) { selected_group->addChild(item); group_added(); } } } return id; }