GUIDialog_GLObjChooser.cpp File Reference


Detailed Description

Author:
Daniel Krajzewicz
Date:
Sept 2002
Version:
Id
GUIDialog_GLObjChooser.cpp 8473 2010-03-18 22:15:51Z behrisch

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


Function Documentation

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 }


Generated on Wed May 5 00:06:37 2010 for Sumo - Simulation of Urban MObility by  doxygen 1.5.6