//==== Show/NoShow Active Geoms and Children ====// void ManageGeomScreen::NoShowActiveGeoms( bool flag ) { //==== Load Active Geom IDs And Children ====// vector<string> geom_id_vec; vector<string> active_geom_vec = m_VehiclePtr->GetActiveGeomVec(); for ( int i = 0 ; i < ( int )active_geom_vec.size() ; i++ ) { Geom* gPtr = m_VehiclePtr->FindGeom( active_geom_vec[i] ); if ( gPtr ) { gPtr->LoadIDAndChildren( geom_id_vec ); } } //==== Set No Show Flag ====// vector< Geom* > geom_vec = m_VehiclePtr->FindGeomVec( geom_id_vec ); for ( int i = 0 ; i < ( int )geom_vec.size() ; i++ ) { if ( geom_vec[i] ) { geom_vec[i]->SetSetFlag( SET_SHOWN , !flag ); geom_vec[i]->SetSetFlag( SET_NOT_SHOWN , flag ); } } //jrg FIX!!! // aircraftPtr->triggerDraw(); LoadBrowser(); }
//==== Item in Geom Browser Was Selected ====// void ManageGeomScreen::GeomBrowserCallback() { //==== Find Vector of All Selections ====// vector< string > selVec = GetSelectedBrowserItems(); //==== Find Last Selected Geom ====// int last = m_GeomUI->geomBrowser->value(); if ( ( last >= 2 ) && Fl::event_state( FL_ALT ) ) // Select Children { Geom* lastSelGeom = m_VehiclePtr->FindGeom( m_DisplayedGeomVec[last - 2] ); if ( lastSelGeom ) { vector<string> cVec; lastSelGeom->LoadIDAndChildren( cVec ); for ( int i = 1 ; i < ( int )cVec.size(); i++ ) { SelectGeomBrowser( cVec[i] ); selVec.push_back( cVec[i] ); } } } //==== Check if Geom Already Selected ====// m_CollapseFlag = false; if ( m_LastSelectedGeomID != "NONE" && selVec.size() == 1 ) { string lastSel = selVec[0]; if ( lastSel == m_LastSelectedGeomID ) { m_CollapseFlag = true; Geom* lastSelGeom = m_VehiclePtr->FindGeom( m_LastSelectedGeomID ); if ( lastSelGeom ) { lastSelGeom->m_GuiDraw.ToggleDisplayChildrenFlag(); if ( lastSelGeom->GetChildIDVec().size() == 0 ) // No Children Dont Collapse { lastSelGeom->m_GuiDraw.SetDisplayChildrenFlag( true ); } } } } m_LastSelectedGeomID = "NONE"; if ( selVec.size() == 1 ) { m_LastSelectedGeomID = selVec[0]; } m_VehiclePtr->SetActiveGeomVec( selVec ); LoadActiveGeomOutput(); // m_ScreenMgr->UpdateAllScreens(); ShowHideGeomScreens(); //jrg FIX!!! // aircraftPtr->triggerDraw(); }
//==== Load Active Geom IDs and Children ===// vector< string > ManageGeomScreen::GetActiveGeoms() { //==== Load Active Geom IDs And Children ====// vector<string> geom_id_vec; vector<string> active_geom_vec = m_VehiclePtr->GetActiveGeomVec(); for ( int i = 0 ; i < ( int )active_geom_vec.size() ; i++ ) { Geom* gPtr = m_VehiclePtr->FindGeom( active_geom_vec[i] ); if ( gPtr ) { if ( gPtr->m_GuiDraw.GetDisplayChildrenFlag() ) { geom_id_vec.push_back( active_geom_vec[i] ); } else { gPtr->LoadIDAndChildren( geom_id_vec ); } } } return geom_id_vec; }