void TabWidget::stopDragTab(const QPoint& globalPos) { if (_isFloating && count() == 0) { closeFloatingPane(); } QWidget* draggedPanel = _gui->stopDragPanel(); const std::list<TabWidget*> panes = _gui->getPanes(); bool foundTabWidgetUnderneath = false; for (std::list<TabWidget*>::const_iterator it = panes.begin(); it!=panes.end(); ++it) { if ((*it)->isWithinWidget(globalPos)) { (*it)->appendTab(draggedPanel); foundTabWidgetUnderneath = true; break; } } if (!foundTabWidgetUnderneath) { ///if we reach here that means the mouse is not over any tab widget, then float the panel TabWidget* newTab = new TabWidget(_gui,TabWidget::CLOSABLE); newTab->appendTab(draggedPanel); QPoint windowPos = globalPos; newTab->floatPane(&windowPos); } }
void Gui::createGroupGui(const NodePtr & group, CreateNodeReason reason) { boost::shared_ptr<NodeGroup> isGrp = boost::dynamic_pointer_cast<NodeGroup>( group->getEffectInstance()->shared_from_this() ); assert(isGrp); boost::shared_ptr<NodeCollection> collection = boost::dynamic_pointer_cast<NodeCollection>(isGrp); assert(collection); TabWidget* where = 0; if (_imp->_lastFocusedGraph) { TabWidget* isTab = dynamic_cast<TabWidget*>( _imp->_lastFocusedGraph->parentWidget() ); if (isTab) { where = isTab; } else { QMutexLocker k(&_imp->_panesMutex); assert( !_imp->_panes.empty() ); where = _imp->_panes.front(); } } QGraphicsScene* scene = new QGraphicsScene(this); scene->setItemIndexMethod(QGraphicsScene::NoIndex); NodeGraph* nodeGraph = new NodeGraph(this, collection, scene, this); nodeGraph->setObjectName( QString::fromUtf8(group->getLabel().c_str()) ); _imp->_groups.push_back(nodeGraph); if ( where && reason == eCreateNodeReasonUserCreate && !getApp()->isCreatingPythonGroup() ) { where->appendTab(nodeGraph, nodeGraph); QTimer::singleShot( 25, nodeGraph, SLOT(centerOnAllNodes()) ); } else { nodeGraph->setVisible(false); } }
void Gui::appendTabToDefaultViewerPane(PanelWidget* tab, ScriptObject* obj) { TabWidget* viewerAnchor = getAnchor(); assert(viewerAnchor); viewerAnchor->appendTab(tab, obj); }
void TabWidget::floatCurrentWidget(){ if(!_currentWidget) return; QWidget* w = _currentWidget; removeTab(w); TabWidget* newTab = new TabWidget(_gui,TabWidget::CLOSABLE); newTab->appendTab(w); newTab->floatTab(w); }
void TabWidget::floatTab(QWidget* tab) { std::vector<QWidget*>::iterator it = std::find(_tabs.begin(),_tabs.end(),tab); if (it != _tabs.end()) { TabWidget* newTab = new TabWidget(_gui,TabWidget::CLOSABLE); removeTab(*it); newTab->appendTab(*it); newTab->floatPane(); if(_tabBar->count() == 0){ _floatButton->setEnabled(false); } } }
void Gui::createGroupGui(const NodePtr & group, const CreateNodeArgs& args) { NodeGroupPtr isGrp = toNodeGroup( group->getEffectInstance()->shared_from_this() ); assert(isGrp); NodeCollectionPtr collection = boost::dynamic_pointer_cast<NodeCollection>(isGrp); assert(collection); TabWidget* where = 0; if (_imp->_lastFocusedGraph) { TabWidget* isTab = dynamic_cast<TabWidget*>( _imp->_lastFocusedGraph->parentWidget() ); if (isTab) { where = isTab; } else { std::list<TabWidgetI*> panes = getApp()->getTabWidgetsSerialization(); assert( !panes.empty() ); where = dynamic_cast<TabWidget*>(panes.front()); } } QGraphicsScene* scene = new QGraphicsScene(this); scene->setItemIndexMethod(QGraphicsScene::NoIndex); std::string newName = isGrp->getNode()->getFullyQualifiedName(); for (std::size_t i = 0; i < newName.size(); ++i) { if (newName[i] == '.') { newName[i] = '_'; } } newName += "_NodeGraph"; std::string label = tr(" Node Graph").toStdString(); NodeGraph::makeFullyQualifiedLabel(group, &label); NodeGraph* nodeGraph = new NodeGraph(this, collection, newName, scene, this); nodeGraph->setLabel(label); nodeGraph->setObjectName( QString::fromUtf8( group->getLabel().c_str() ) ); _imp->_groups.push_back(nodeGraph); SERIALIZATION_NAMESPACE::NodeSerializationPtr serialization = args.getPropertyUnsafe<SERIALIZATION_NAMESPACE::NodeSerializationPtr>(kCreateNodeArgsPropNodeSerialization); bool showSubGraph = args.getPropertyUnsafe<bool>(kCreateNodeArgsPropSubGraphOpened); if ( showSubGraph && where && !serialization ) { where->appendTab(nodeGraph, nodeGraph); QTimer::singleShot( 25, nodeGraph, SLOT(centerOnAllNodes()) ); } else { nodeGraph->setVisible(false); } }
void Gui::activateViewerTab(ViewerInstance* viewer) { OpenGLViewerI* viewport = viewer->getUiContext(); { QMutexLocker l(&_imp->_viewerTabsMutex); for (std::list<ViewerTab*>::iterator it = _imp->_viewerTabs.begin(); it != _imp->_viewerTabs.end(); ++it) { if ( (*it)->getViewer() == viewport ) { TabWidget* viewerAnchor = getAnchor(); assert(viewerAnchor); viewerAnchor->appendTab(*it, *it); (*it)->show(); } } } Q_EMIT viewersChanged(); }