Definition in file GUIDialog_GLObjChooser.cpp.
#include <config.h>
#include <string>
#include <vector>
#include <fxkeys.h>
#include <gui/GUISUMOViewParent.h>
#include <utils/gui/windows/GUIAppEnum.h>
#include <gui/GUIGlobals.h>
#include <utils/gui/globjects/GUIGlObject.h>
#include <utils/gui/globjects/GUIGlObjectStorage.h>
#include <utils/gui/images/GUIIconSubSys.h>
#include <utils/gui/windows/GUIMainWindow.h>
#include <microsim/MSJunction.h>
#include <guisim/GUIVehicle.h>
#include <guisim/GUIEdge.h>
#include <guisim/GUINet.h>
#include <guisim/GUIVehicleControl.h>
#include "GUIDialog_GLObjChooser.h"
#include <utils/gui/div/GUIGlobalSelection.h>
#include <utils/gui/globjects/GUIGlObject_AbstractAdd.h>
#include <utils/gui/windows/GUIAppGlobals.h>
#include <GL/gl.h>
Go to the source code of this file.
Functions | |
| FXDEFMAP (GUIDialog_GLObjChooser) GUIDialog_GLObjChooserMap[] | |
| FXIMPLEMENT (GUIDialog_GLObjChooser, FXMainWindow, GUIDialog_GLObjChooserMap, ARRAYNUMBER(GUIDialog_GLObjChooserMap)) GUIDialog_GLObjChooser | |
| FXDEFMAP | ( | GUIDialog_GLObjChooser | ) |
| FXIMPLEMENT | ( | GUIDialog_GLObjChooser | , | |
| FXMainWindow | , | |||
| GUIDialog_GLObjChooserMap | , | |||
| ARRAYNUMBER(GUIDialog_GLObjChooserMap) | ||||
| ) |
Definition at line 72 of file GUIDialog_GLObjChooser.cpp.
References GUIGlObject::getGlID(), GUIIconSubSys::getIcon(), GUIGlObject_AbstractAdd::getIDList(), GUIEdge::getIDs(), MSNet::getInstance(), GUIGlObject::getMicrosimID(), MSNet::getVehicleControl(), GLO_ADDITIONAL, GLO_EDGE, GLO_JUNCTION, GLO_LANE, GLO_SHAPE, GLO_TLLOGIC, GLO_VEHICLE, gSelected, ICON_FLAG, ICON_NO, ICON_RECENTERVIEW, GUISelectedStorage::isSelected(), MID_CANCEL, MID_CHOOSER_CENTER, MID_CHOOSER_LIST, and MID_CHOOSER_TEXT.
00082 : FXMainWindow(parent->getApp(), title, icon, NULL, DECOR_ALL, 20,20,300, 300), 00083 myObjectType(type), myParent(parent), mySelected(0) { 00084 FXHorizontalFrame *hbox = new FXHorizontalFrame(this, LAYOUT_FILL_X|LAYOUT_FILL_Y, 0,0,0,0, 0,0,0,0); 00085 // build the list 00086 FXVerticalFrame *layout1 = new FXVerticalFrame(hbox, LAYOUT_FILL_X|LAYOUT_FILL_Y|LAYOUT_TOP, 0,0,0,0, 4,4,4,4); 00087 myTextEntry = new FXTextField(layout1, 0, this, MID_CHOOSER_TEXT, LAYOUT_FILL_X|FRAME_THICK|FRAME_SUNKEN); 00088 FXVerticalFrame *style1 = new FXVerticalFrame(layout1, LAYOUT_FILL_X|LAYOUT_FILL_Y|LAYOUT_TOP|FRAME_THICK|FRAME_SUNKEN, 0,0,0,0, 0,0,0,0); 00089 myList = new FXList(style1, this, MID_CHOOSER_LIST, LAYOUT_FILL_X|LAYOUT_FILL_Y|LIST_SINGLESELECT|FRAME_SUNKEN|FRAME_THICK); 00090 // get the ids 00091 std::vector<GLuint> ids; 00092 switch (type) { 00093 case GLO_JUNCTION: 00094 ids = static_cast<GUINet*>(GUINet::getInstance())->getJunctionIDs(); 00095 break; 00096 case GLO_EDGE: 00097 ids = GUIEdge::getIDs(); 00098 break; 00099 case GLO_VEHICLE: 00100 static_cast<GUIVehicleControl&>(MSNet::getInstance()->getVehicleControl()).insertVehicleIDs(ids); 00101 break; 00102 case GLO_TLLOGIC: 00103 ids = static_cast<GUINet*>(GUINet::getInstance())->getTLSIDs(); 00104 break; 00105 case GLO_ADDITIONAL: 00106 ids = GUIGlObject_AbstractAdd::getIDList(); 00107 break; 00108 case GLO_SHAPE: 00109 ids = static_cast<GUINet*>(GUINet::getInstance())->getShapeIDs(); 00110 break; 00111 default: 00112 break; 00113 } 00114 for (std::vector<GLuint>::iterator i=ids.begin(); i!=ids.end(); ++i) { 00115 GUIGlObject *o = glStorage.getObjectBlocking(*i); 00116 if (o==0) { 00117 continue; 00118 } 00119 const std::string &name = o->getMicrosimID(); 00120 bool selected = false; 00121 if (type==GLO_EDGE) { 00122 size_t noLanes = static_cast<GUIEdge*>(o)->getLanes().size(); 00123 for (size_t j=0; j<noLanes; ++j) { 00124 const GUILaneWrapper &l = static_cast<GUIEdge*>(o)->getLaneGeometry(j); 00125 if (gSelected.isSelected(GLO_LANE, l.getGlID())) { 00126 selected = true; 00127 } 00128 } 00129 } else { 00130 selected = gSelected.isSelected(type, *i); 00131 } 00132 if (selected) { 00133 myList->appendItem(name.c_str(), GUIIconSubSys::getIcon(ICON_FLAG), (void*) o); 00134 } else { 00135 myList->appendItem(name.c_str(), 0, (void*) o); 00136 } 00137 glStorage.unblockObject(*i); 00138 } 00139 // build the buttons 00140 FXVerticalFrame *layout = new FXVerticalFrame(hbox, LAYOUT_TOP, 0,0,0,0, 4,4,4,4); 00141 new FXButton(layout, "Center\t\t", GUIIconSubSys::getIcon(ICON_RECENTERVIEW), 00142 this, MID_CHOOSER_CENTER, ICON_BEFORE_TEXT|LAYOUT_FILL_X|FRAME_THICK|FRAME_RAISED, 00143 0, 0, 0, 0, 4, 4, 4, 4); 00144 new FXHorizontalSeparator(layout,SEPARATOR_GROOVE|LAYOUT_FILL_X); 00145 new FXButton(layout, "Close\t\t", GUIIconSubSys::getIcon(ICON_NO), 00146 this, MID_CANCEL, ICON_BEFORE_TEXT|LAYOUT_FILL_X|FRAME_THICK|FRAME_RAISED, 00147 0, 0, 0, 0, 4, 4, 4, 4); 00148 00149 myParent->getParent()->addChild(this); 00150 myTextEntry->setFocus(); 00151 }
1.5.6