void GeomScreen::s_add_geom(int src, int type, Stringc name) { Geom* addGeom = 0; lastSelectedGeom = NULL; if ( type == POD_GEOM_TYPE ) { addGeom = aircraftPtr->createGeom(POD_GEOM_TYPE); } else if ( type == WING_GEOM_TYPE ) { addGeom = aircraftPtr->createGeom(WING_GEOM_TYPE); } else if ( type == FUSE_GEOM_TYPE ) { addGeom = aircraftPtr->createGeom(FUSE_GEOM_TYPE); } else if ( type == HAVOC_GEOM_TYPE ) { addGeom = aircraftPtr->createGeom(HAVOC_GEOM_TYPE); } else if ( type == EXT_GEOM_TYPE ) { addGeom = aircraftPtr->createGeom(EXT_GEOM_TYPE); } else if ( type == MS_WING_GEOM_TYPE ) { addGeom = aircraftPtr->createGeom(MS_WING_GEOM_TYPE); } else if ( type == BLANK_GEOM_TYPE ) { addGeom = aircraftPtr->createGeom(BLANK_GEOM_TYPE); } else if ( type == DUCT_GEOM_TYPE ) { addGeom = aircraftPtr->createGeom(DUCT_GEOM_TYPE); } else if ( type == PROP_GEOM_TYPE ) { addGeom = aircraftPtr->createGeom(PROP_GEOM_TYPE); } else if ( type == ENGINE_GEOM_TYPE ) { addGeom = aircraftPtr->createGeom(ENGINE_GEOM_TYPE); } else if ( type == HWB_GEOM_TYPE ) { addGeom = aircraftPtr->createGeom(HWB_GEOM_TYPE); } else if ( type == FUSELAGE_GEOM_TYPE ) { addGeom = aircraftPtr->createGeom(FUSELAGE_GEOM_TYPE); } else if ( type == CABIN_LAYOUT_GEOM_TYPE ) { addGeom = aircraftPtr->createGeom(CABIN_LAYOUT_GEOM_TYPE); } if (addGeom && name.get_length() > 0) { addGeom->setName(name); } if (src != ScriptMgr::SCRIPT) { loadGeomBrowser(); deselectGeomBrowser(); if ( addGeom ) selectGeomBrowser(addGeom); loadActiveGeomOutput(); screenMgrPtr->updateGeomScreens(); aircraftPtr->flagActiveGeom(); loadGeomBrowser(); if ( addGeom ) { if (src == ScriptMgr::GUI) scriptMgr->addLine("add", addGeom->getTypeStr(), addGeom->getName()); } } }
void GeomScreen::screenCB( Fl_Widget* w ) { if ( w == geomUI->addGeomButton ) { int type = geomUI->geomTypeChoice->value(); if ( type >= WING_GEOM_TYPE ) // Compensate for removing Wing Type type += 1; s_add_geom(ScriptMgr::GUI, type, Stringc("")); } else if ( w == geomUI->geomBrowser) { s_select_gui(); } else if ( w == geomUI->noshowGeomButton ) { vector<Geom*> selVec = getSelectedGeomVec(); for ( int i = 0 ; i < (int)selVec.size() ; i++ ) { selVec[i]->setNoShowFlag( 1 ); } aircraftPtr->triggerDraw(); loadGeomBrowser(); } else if ( w == geomUI->showGeomButton ) { vector<Geom*> selVec = getSelectedGeomVec(); for ( int i = 0 ; i < (int)selVec.size() ; i++ ) { selVec[i]->setNoShowFlag( 0 ); } aircraftPtr->triggerDraw(); loadGeomBrowser(); } else if ( w == geomUI->selectAllGeomButton ) { s_select_all(ScriptMgr::GUI); } else if ( w == geomUI->activeGeomInput ) { Geom* activeGeom = aircraftPtr->getActiveGeom(); if ( activeGeom ) { Stringc name = geomUI->activeGeomInput->value(); activeGeom->setName( name ); loadGeomBrowser(); name.quote('\"'); scriptMgr->addLine("gen", "name", name); } else { aircraftPtr->setName( geomUI->activeGeomInput->value() ); loadGeomBrowser(); } vector<Geom*> selVec = getSelectedGeomVec(); if ( selVec.size() == 1 ) aircraftPtr->modifyGeom( selVec[0] ); } else if ( w == geomUI->cutGeomButton ) { s_cut(ScriptMgr::GUI, deque< Stringc >()); } else if ( w == geomUI->copyGeomButton ) { s_copy(ScriptMgr::GUI, deque< Stringc >()); } else if ( w == geomUI->pasteGeomButton ) { s_paste(ScriptMgr::GUI); } else if ( w == geomUI->wireGeomButton ) { setGeomDisplayFlag( GEOM_WIRE_FLAG ); } else if ( w == geomUI->hiddenGeomButton ) { setGeomDisplayFlag( GEOM_HIDDEN_FLAG ); } else if ( w == geomUI->shadeGeomButton ) { setGeomDisplayFlag( GEOM_SHADE_FLAG ); } else if ( w == geomUI->textureGeomButton ) { setGeomDisplayFlag( GEOM_TEXTURE_FLAG ); } else if ( w == geomUI->moveUpButton ) { aircraftPtr->reorderGeom( Aircraft::MOVE_UP ); deselectGeomBrowser(); Geom * activeGeom = aircraftPtr->getActiveGeom(); if ( activeGeom ) selectGeomBrowser(activeGeom); loadGeomBrowser(); } else if ( w == geomUI->moveDownButton ) { aircraftPtr->reorderGeom( Aircraft::MOVE_DOWN ); deselectGeomBrowser(); Geom * activeGeom = aircraftPtr->getActiveGeom(); if ( activeGeom ) selectGeomBrowser(activeGeom); loadGeomBrowser(); } else if ( w == geomUI->moveTopButton ) { aircraftPtr->reorderGeom( Aircraft::MOVE_TOP ); deselectGeomBrowser(); Geom * activeGeom = aircraftPtr->getActiveGeom(); if ( activeGeom ) selectGeomBrowser(activeGeom); loadGeomBrowser(); } else if ( w == geomUI->moveBotButton ) { aircraftPtr->reorderGeom( Aircraft::MOVE_BOT ); deselectGeomBrowser(); Geom * activeGeom = aircraftPtr->getActiveGeom(); if ( activeGeom ) selectGeomBrowser(activeGeom); loadGeomBrowser(); } else if ( w == geomUI->defaultAircraftTypeChoice ) { int id = geomUI->defaultAircraftTypeChoice->value(); VspPreferences::Instance()->setDefaultCompFileID( id ); aircraftPtr->setDefaultCompGroupID(id); } }