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; }
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() ); }
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() ); }