QVector<QVector<QPair<int, int>>> SearchingTree::searchValidCorr() { QVector<QVector<QPair<int, int>>> candidates; //Expand tree while (1) { SearchingNode * LastOne = sTree[sTree.size() - 1]; if (LastOne->VolumeProportion > volumeThreshold) { evaluateNode(LastOne); if (LastOne->energy < energyThreshold) candidates.push_back(LastOne->corr); else LastOne->valid = false; } if (LastOne->currentPair.second < totalB - 1 && expandBranch(LastOne)) { continue; } if (LastOne->currentPair.first < totalA - 1) { if (LastOne->parent != NULL) { if (LastOne->parent->next != NULL) { expandChild(LastOne->parent->next); continue; } } SearchingNode * parent = LastOne->pre; if (parent == NULL) break; while (parent->pre != NULL) parent = parent->pre; expandChild(parent); continue; } } return candidates; }
void QNodeTreeView::doSelectFC(const FieldContainerPtr &pFC) { if(pFC == getSelectedFC()) return; BranchType branch; QListViewItem *pSelectedItem = this->selectedItem (); if(getBranch(pFC, branch)) { expandBranch(branch); } else { QListViewItem *pItem = findItemInChildren(pFC, pSelectedItem); if(pItem) { this->setSelected (pItem, true); this->ensureItemVisible(pItem ); } } }
ccDBRoot::ccDBRoot(ccCustomQTreeView* dbTreeWidget, QTreeView* propertiesTreeWidget, QObject* parent) : QAbstractItemModel(parent) { m_treeRoot = new ccHObject("DB Tree"); //DB Tree assert(dbTreeWidget); m_dbTreeWidget = dbTreeWidget; m_dbTreeWidget->setModel(this); m_dbTreeWidget->header()->hide(); //drag & drop support m_dbTreeWidget->setDragEnabled(true); m_dbTreeWidget->setAcceptDrops(true); //m_dbTreeWidget->viewport()->setAcceptDrops(true); m_dbTreeWidget->setDropIndicatorShown(true); m_dbTreeWidget->setDragDropMode(QAbstractItemView::InternalMove); setSupportedDragActions(Qt::MoveAction); /*//already done in ui file! m_dbTreeWidget->setEditTriggers(QAbstractItemView::EditKeyPressed); m_dbTreeWidget->setDragDropMode(QAbstractItemView::InternalMove); m_dbTreeWidget->setSelectionMode(QAbstractItemView::ExtendedSelection); m_dbTreeWidget->setUniformRowHeights(true); //*/ //context menu on DB tree elements m_dbTreeWidget->setContextMenuPolicy(Qt::CustomContextMenu); m_expandBranch = new QAction("Expand branch",this); m_collapseBranch = new QAction("Collapse branch",this); m_gatherInformation = new QAction("Information (recursive)",this); m_sortSiblingsType = new QAction("Sort siblings by type",this); m_sortSiblingsAZ = new QAction("Sort siblings by name (A-Z)",this); m_sortSiblingsZA = new QAction("Sort siblings by name (Z-A)",this); m_deleteSelectedEntities = new QAction("Delete",this); m_toggleSelectedEntities = new QAction("Toggle",this); m_toggleSelectedEntitiesVisibility = new QAction("Toggle visibility",this); m_toggleSelectedEntitiesColor = new QAction("Toggle color",this); m_toggleSelectedEntitiesNormals = new QAction("Toggle normals",this); m_toggleSelectedEntitiesMat = new QAction("Toggle materials/textures",this); m_toggleSelectedEntitiesSF = new QAction("Toggle SF",this); m_toggleSelectedEntities3DName = new QAction("Toggle 3D name",this); m_addEmptyGroup = new QAction("Add empty group",this); m_alignCameraWithEntity = new QAction("Align camera",this); m_alignCameraWithEntityReverse = new QAction("Align camera (reverse)",this); m_contextMenuPos = QPoint(-1,-1); //connect custom context menu actions connect(m_dbTreeWidget, SIGNAL(customContextMenuRequested(const QPoint&)), this, SLOT(showContextMenu(const QPoint&))); connect(m_expandBranch, SIGNAL(triggered()), this, SLOT(expandBranch())); connect(m_collapseBranch, SIGNAL(triggered()), this, SLOT(collapseBranch())); connect(m_gatherInformation, SIGNAL(triggered()), this, SLOT(gatherRecursiveInformation())); connect(m_sortSiblingsAZ, SIGNAL(triggered()), this, SLOT(sortSiblingsAZ())); connect(m_sortSiblingsZA, SIGNAL(triggered()), this, SLOT(sortSiblingsZA())); connect(m_sortSiblingsType, SIGNAL(triggered()), this, SLOT(sortSiblingsType())); connect(m_deleteSelectedEntities, SIGNAL(triggered()), this, SLOT(deleteSelectedEntities())); connect(m_toggleSelectedEntities, SIGNAL(triggered()), this, SLOT(toggleSelectedEntities())); connect(m_toggleSelectedEntitiesVisibility, SIGNAL(triggered()), this, SLOT(toggleSelectedEntitiesVisibility())); connect(m_toggleSelectedEntitiesColor, SIGNAL(triggered()), this, SLOT(toggleSelectedEntitiesColor())); connect(m_toggleSelectedEntitiesNormals, SIGNAL(triggered()), this, SLOT(toggleSelectedEntitiesNormals())); connect(m_toggleSelectedEntitiesMat, SIGNAL(triggered()), this, SLOT(toggleSelectedEntitiesMat())); connect(m_toggleSelectedEntitiesSF, SIGNAL(triggered()), this, SLOT(toggleSelectedEntitiesSF())); connect(m_toggleSelectedEntities3DName, SIGNAL(triggered()), this, SLOT(toggleSelectedEntities3DName())); connect(m_addEmptyGroup, SIGNAL(triggered()), this, SLOT(addEmptyGroup())); connect(m_alignCameraWithEntity, SIGNAL(triggered()), this, SLOT(alignCameraWithEntityDirect())); connect(m_alignCameraWithEntityReverse, SIGNAL(triggered()), this, SLOT(alignCameraWithEntityIndirect())); //other DB tree signals/slots connection connect(m_dbTreeWidget->selectionModel(), SIGNAL(selectionChanged(const QItemSelection&, const QItemSelection&)), this, SLOT(changeSelection(const QItemSelection&, const QItemSelection&))); //Properties Tree assert(propertiesTreeWidget); m_propertiesTreeWidget = propertiesTreeWidget; m_propertiesModel = new QStandardItemModel(0, 2, parent); /*//already done in ui file! m_propertiesTreeWidget->header()->hide(); m_propertiesTreeWidget->setSelectionMode(QAbstractItemView::NoSelection); m_propertiesTreeWidget->setAllColumnsShowFocus(true); //*/ m_ccPropDelegate = new ccPropertiesTreeDelegate(m_propertiesModel, m_propertiesTreeWidget); m_propertiesTreeWidget->setItemDelegate(m_ccPropDelegate); m_propertiesTreeWidget->setModel(m_propertiesModel); m_propertiesTreeWidget->header()->setResizeMode(QHeaderView::Interactive); m_propertiesTreeWidget->header()->setStretchLastSection(true); m_propertiesTreeWidget->setEnabled(false); //Properties tree signals/slots connection connect(m_ccPropDelegate, SIGNAL(ccObjectPropertiesChanged(ccHObject*)), this, SLOT(updateCCObject(ccHObject*))); connect(m_ccPropDelegate, SIGNAL(ccObjectAppearanceChanged(ccHObject*)), this, SLOT(redrawCCObject(ccHObject*))); connect(m_ccPropDelegate, SIGNAL(ccObjectAndChildrenAppearanceChanged(ccHObject*)), this, SLOT(redrawCCObjectAndChildren(ccHObject*))); }