Beispiel #1
0
void
EventManager::onCurrentBodyItemChanged(BodyItem* bodyItem)
{
    if( bodyItem == nullptr ){
        _curBodyItem = nullptr;
        _curLink = nullptr;
        _lnkSelChangedCon.disconnect();
        LinkManager::instance()->setCurrentBodyLink(nullptr, nullptr);
        for(auto it = begin(_curLinkChangedEvMap) ; it != end(_curLinkChangedEvMap) ; ++it){
            it->second(nullptr, nullptr);
        }
        return;
    }

    if( bodyItem != _curBodyItem ){
        _curBodyItem = bodyItem;
        _curLink = _curBodyItem->body()->rootLink();
    }

    if( _lnkSelChangedCon.connected() == true ){
      _lnkSelChangedCon.disconnect();
    }
    if( _lnkSelChangedCon.connected() == false ){
        LinkSelectionView* lnkSelView = LinkSelectionView::mainInstance();
        if( lnkSelView ){
            _lnkSelChangedCon = lnkSelView->sigSelectionChanged(_curBodyItem).connect(bind(&EventManager::onLinkItemSelected, this));
        }
    }
    LinkManager::instance()->setCurrentBodyLink(_curBodyItem->body(), _curLink);

    for(auto it = begin(_curLinkChangedEvMap) ; it != end(_curLinkChangedEvMap) ; ++it){
        it->second(_curBodyItem->body(), _curLink);
    }
}
Beispiel #2
0
bool
EventManager::initialize()
{
    if( _curBodyChangedCon.connected() == false ){
        _curBodyChangedCon = BodyBar::instance()->sigCurrentBodyItemChanged().connect(
                                                     boost::bind(&EventManager::onCurrentBodyItemChanged, this, _1));
    }

    if( _lnkSelChangedCon.connected() == false ){
        LinkSelectionView* lnkSelView = LinkSelectionView::mainInstance();
        if( lnkSelView ){            
            _lnkSelChangedCon =
                lnkSelView->sigSelectionChanged(_curBodyItem).connect(bind(&EventManager::onLinkItemSelected, this));
        }
    }
    
    RootItem* rootItem = RootItem::instance();
    _itemAddCon.disconnect();
    _itemAddCon = rootItem->sigItemAdded().connect(boost::bind(&EventManager::onItemAdd, this, _1));

    _itemRemoveCon.disconnect();
    _itemRemoveCon = rootItem->sigSubTreeRemoved().connect(boost::bind(&EventManager::onSubTreeRemoved, this, _1, _2));
           
    _isInitialized = true;

    return true;
}
void EditableSceneBodyImpl::onLinkVisibilityCheckToggled()
{
    LinkSelectionView* selectionView = LinkSelectionView::mainInstance();

    if(linkVisibilityCheck->isChecked()){
        connectionToSigLinkSelectionChanged.reset(
            selectionView->sigSelectionChanged(bodyItem).connect(
                boost::bind(&EditableSceneBodyImpl::onLinkSelectionChanged, this)));
        onLinkSelectionChanged();
    } else {
        connectionToSigLinkSelectionChanged.disconnect();
        boost::dynamic_bitset<> visibilities;
        visibilities.resize(self->numSceneLinks(), true);
        self->setLinkVisibilities(visibilities);
    }
}
Beispiel #4
0
void BodyItemImpl::onLinkVisibilityCheckToggled()
{
    LinkSelectionView* selectionView = LinkSelectionView::mainInstance();

    connectionToSigLinkSelectionChanged.disconnect();
    
    if(linkVisibilityCheck->isChecked()){
        if(sceneBody){
            sceneBody->setLinkVisibilities(selectionView->getLinkSelection(self));
        }
        connectionToSigLinkSelectionChanged =
            selectionView->sigSelectionChanged(self).connect(
                boost::bind(&BodyItemImpl::onLinkSelectionChanged, this));
    } else {
        if(sceneBody){
            boost::dynamic_bitset<> visibilities;
            visibilities.resize(body->numLinks(), true);
            sceneBody->setLinkVisibilities(visibilities);
        }
    }
}