void DatasetManager::remove( const DatasetIndex index )
{
    map<DatasetIndex, DatasetInfo *>::iterator it = m_datasets.find( index );
    DatasetInfo *pDatasetInfo = it->second;
    
    switch( pDatasetInfo->getType() )
    {
    case HEAD_BYTE:
    case HEAD_SHORT:
    case OVERLAY:
    case RGB:
        Logger::getInstance()->print( wxString::Format( wxT( "Removing index: %u type: %s" ), static_cast<unsigned int>( index ), wxT( "Anatomy" ) ), LOGLEVEL_DEBUG );
        m_anatomies.erase( m_anatomies.find( index ) );
        break;
//     case TENSOR_FIELD:
//         break;
    case MESH:
        Logger::getInstance()->print( wxString::Format( wxT( "Removing index: %u type: %s" ), static_cast<unsigned int>( index ), wxT( "Mesh" ) ), LOGLEVEL_DEBUG );
        m_meshes.erase( m_meshes.find( index ) );
        break;
//     case VECTORS:
//         break;
    case TENSORS:
        Logger::getInstance()->print( wxString::Format( wxT( "Removing index: %u type: %s" ), static_cast<unsigned int>( index ), wxT( "Tensors" ) ), LOGLEVEL_DEBUG );
        m_tensors.erase( m_tensors.find( index ) );
        break;
    case ODFS:
        Logger::getInstance()->print( wxString::Format( wxT( "Removing index: %u type: %s" ), static_cast<unsigned int>( index ), wxT( "ODFs" ) ), LOGLEVEL_DEBUG );
        m_odfs.erase( m_odfs.find( index ) );
        break;
    case FIBERS:
        Logger::getInstance()->print( wxString::Format( wxT( "Removing index: %u type: %s" ), static_cast<unsigned int>( index ), wxT( "Fibers" ) ), LOGLEVEL_DEBUG );
        m_fibers.erase( m_fibers.find( index ) );
        break;
//     case SURFACE:
//         Logger::getInstance()->print( wxString::Format( wxT( "Removing index: %u type: %s" ), index, wxT( "Surface" ) ), LOGLEVEL_DEBUG );
//         m_surfaces.erase( m_surfaces.find( index ) );
//         break;
//     case ISO_SURFACE:
//         break;
    case FIBERSGROUP:
        Logger::getInstance()->print( wxString::Format( wxT( "Removing index: %u type: %s" ), static_cast<unsigned int>( index ), wxT( "FibersGroup" ) ), LOGLEVEL_DEBUG );
        m_fibersGroup.erase( m_fibersGroup.find( index ) );
        break;
    case MAXIMAS:
        Logger::getInstance()->print( wxString::Format( wxT( "Removing index: %u type: %s" ), static_cast<unsigned int>( index ), wxT( "Maximas" ) ), LOGLEVEL_DEBUG );
        m_maximas.erase( m_maximas.find( index ) );
        break;
    default:
        Logger::getInstance()->print( wxString::Format( wxT( "Removing index: %u type: %s" ), static_cast<unsigned int>( index ), wxT( "DatasetInfo" ) ), LOGLEVEL_DEBUG );
        break;
    }

    m_datasets.erase( index );
    m_reverseDatasets.erase( pDatasetInfo );
    delete pDatasetInfo;
}
Esempio n. 2
0
void ToolBar::updateToolBar( MainFrame *mf )
{
    ToggleTool( m_toggleShowAxial->GetId(),     SceneManager::getInstance()->isAxialDisplayed() );
    ToggleTool( m_toggleShowCoronal->GetId(),   SceneManager::getInstance()->isCoronalDisplayed() );
    ToggleTool( m_toggleShowSagittal->GetId(),  SceneManager::getInstance()->isSagittalDisplayed() );
    ToggleTool( m_toggleAlphaBlending->GetId(), SceneManager::getInstance()->isAlphaBlend() );
    ToggleTool( m_toggleLighting->GetId(),      SceneManager::getInstance()->isLightingActive() );
    ToggleTool( m_toggleShowAllSelectionObjects->GetId(), SceneManager::getInstance()->getShowAllSelObj() );
    ToggleTool( m_toggleActivateAllSelectionObjects->GetId(), !SceneManager::getInstance()->getActivateAllSelObj() );

    bool isFiberSelected = false;
    bool isFiberUsingFakeTubes = false;
    bool isFiberInverted = false;
    if (mf->m_pCurrentSceneObject != NULL && mf->m_currentListIndex != -1)
    {
        DatasetInfo* pDatasetInfo = ((DatasetInfo*)mf->m_pCurrentSceneObject);

        if( pDatasetInfo->getType() == FIBERS || pDatasetInfo->getType() == FIBERSGROUP )
        {
            isFiberSelected = true;
            Fibers* pFibers = (Fibers*)pDatasetInfo;
            if( pFibers )
            {
                isFiberUsingFakeTubes = pFibers->isUsingFakeTubes();
                isFiberInverted = pFibers->isFibersInverted();
            }
        }
    }
    ToggleTool( m_toggleFakeTubes->GetId(), isFiberSelected && isFiberUsingFakeTubes);
    ToggleTool( m_toggleInverseSelection->GetId(), isFiberSelected && isFiberInverted);
    ToggleTool( m_toggleClearToBlack->GetId(), SceneManager::getInstance()->getClearToBlack() );
    ToggleTool( m_selectNormalPointer->GetId(), SceneManager::getInstance()->isRulerActive() && mf->isDrawerToolActive() );
    ToggleTool( m_selectRuler->GetId(), SceneManager::getInstance()->isRulerActive() );
    ToggleTool( m_selectDrawer->GetId(), mf->isDrawerToolActive() );
    //SetToolNormalBitmap(m_selectColorPicker->GetId(), wxBitmap(mf->m_pDatasetHelper->m_drawColorIcon));

    ToggleTool( m_toggleDrawRound->GetId(), mf->canDrawRound() );
    ToggleTool( m_toggleDraw3d->GetId(), mf->canDraw3D() );
    ToggleTool( m_selectPen->GetId(), DRAWMODE_PEN == mf->getDrawMode() );
    ToggleTool( m_selectEraser->GetId(), DRAWMODE_ERASER == mf->getDrawMode() );
    
    // Check if the currently selected anatomy can use the Color Picker.
    EnableTool( m_selectColorPicker->GetId(), DRAWMODE_PEN == mf->getDrawMode() && mf->canUseColorPicker() );
}
Esempio n. 3
0
void MenuBar::updateMenuBar( MainFrame *mf )
{
    m_itemToggleLighting->Check( SceneManager::getInstance()->isLightingActive() );

#if !_USE_LIGHT_GUI
    m_itemToggleRuler->Check( SceneManager::getInstance()->isRulerActive() );
#endif

    bool isFiberSelected( false );
    bool isFiberUsingFakeTubes( false );
    bool isFiberUsingTransparency( false );
    bool isFiberInverted( false );

    if (mf->m_pCurrentSceneObject != NULL && mf->m_currentListIndex != -1)
    {
        DatasetInfo* pDatasetInfo = ((DatasetInfo*)mf->m_pCurrentSceneObject);

        if( pDatasetInfo->getType() == FIBERS )
        {
            isFiberSelected = true;
            Fibers* pFibers = (Fibers*)pDatasetInfo;
            if( pFibers )
            {
                isFiberUsingFakeTubes = pFibers->isUsingFakeTubes();
                isFiberUsingTransparency = pFibers->isUsingTransparency();
                isFiberInverted = pFibers->isFibersInverted();
            }
        }
        else if( pDatasetInfo->getType() == FIBERSGROUP )
        {
            isFiberSelected = true;
            FibersGroup* pFibersGroup = (FibersGroup*)pDatasetInfo;
            if( pFibersGroup )
            {
                unsigned int useFakeTubesNb = 0;
                unsigned int useTransparencyNb = 0;
                unsigned int isInvertedNb = 0;
                
                vector<Fibers *> v = DatasetManager::getInstance()->getFibers();
                
                for(vector<Fibers *>::const_iterator it = v.begin(); it != v.end(); ++it )
                {
                    if( (*it)->isUsingFakeTubes())
                        ++useFakeTubesNb;
                    if( (*it)->isUsingTransparency() )
                        ++useTransparencyNb;
                    if( (*it)->isFibersInverted() )
                        ++isInvertedNb;
                }

                isFiberUsingFakeTubes = ( useFakeTubesNb == v.size() );
                isFiberUsingTransparency = ( useTransparencyNb == v.size() );
                isFiberInverted = ( isInvertedNb == v.size() );
            }
        }
    }
    m_itemSaveSelectedFibers->Enable(isFiberSelected);

#if !_USE_LIGHT_GUI
    m_itemResetFibersColors->Enable(isFiberSelected);
    m_itemToggleInvertFibersSelection->Enable(isFiberSelected);
    m_itemToggleInvertFibersSelection->Check(isFiberInverted);
    m_itemToggleUseTransparency->Enable(isFiberSelected);
    m_itemToggleUseTransparency->Check(isFiberUsingTransparency);
    m_itemToggleUseFakeTubes->Enable(isFiberSelected);
    m_itemToggleUseFakeTubes->Check(isFiberUsingFakeTubes);
    m_itemToggleUseGeometryShader->Check( SceneManager::getInstance()->isFibersGeomShaderActive() );
#if _COMPILE_GEO_SHADERS
    m_itemToggleUseGeometryShader->Enable( SceneManager::getInstance()->areGeometryShadersSupported() );
#else
    m_itemToggleUseGeometryShader->Enable(false);
#endif  // _COMPILE_GEO_SHADERS
#endif  // !_USE_LIGHT_GUI
    
    m_itemToggleShowAxial->Check( SceneManager::getInstance()->isAxialDisplayed() );
    m_itemToggleShowCoronal->Check( SceneManager::getInstance()->isCoronalDisplayed() );
    m_itemToggleShowSagittal->Check( SceneManager::getInstance()->isSagittalDisplayed() );
    m_itemToggleClearToBlack->Check( SceneManager::getInstance()->getClearToBlack() );
    m_itemToggleBlendTextureOnMesh->Check( SceneManager::getInstance()->isTexBlendOnMesh() );
    m_itemToggleFilterISO->Check( SceneManager::getInstance()->isIsoSurfaceFiltered() );
    
#if !_USE_LIGHT_GUI
    m_itemToggleShowCrosshair->Check( SceneManager::getInstance()->isCrosshairDisplayed() );
    m_itemToggleShowAxes->Check( SceneManager::getInstance()->areAxesDisplayed() );
    m_itemToggleShowColorBar->Check( SceneManager::getInstance()->isColorbarDisplayed() );
    m_itemToggleDrawPoints->Check( SceneManager::getInstance()->isPointMode() );
    m_itemToggleDrawVectors->Check( SceneManager::getInstance()->areVectorsDisplayed() );
#endif
    
    m_itemToggleDrawer->Check( mf->isDrawerToolActive() );
    m_itemToggleDrawRound->Check( mf->canDrawRound() );
    m_itemToggleDraw3d->Check( mf->canDraw3D() );
    m_itemDrawPen->Check( DRAWMODE_PEN == mf->getDrawMode() );
    m_itemDrawEraser->Check( DRAWMODE_ERASER == mf->getDrawMode() );
    
    m_itemToggleDrawRound->Enable( mf->isDrawerToolActive() );
    m_itemToggleDraw3d->Enable(    mf->isDrawerToolActive() );
    m_itemDrawPen->Enable(         mf->isDrawerToolActive() );
    m_itemDrawEraser->Enable(      mf->isDrawerToolActive() );
    m_itemDrawColorPicker->Enable( mf->isDrawerToolActive() &&
                                   mf->canUseColorPicker() &&
                                   DRAWMODE_PEN == mf->getDrawMode() );
}