SeaBee3GUI.h
00001
00002
00003
00004
00005
00006
00007 #ifndef SEABEE3MAINDISPLAYFORM_H
00008 #define SEABEE3MAINDISPLAYFORM_H
00009
00010 #include <qvariant.h>
00011 #include <qpixmap.h>
00012 #include <qmainwindow.h>
00013 #include <list>
00014 #include <IceUtil/Mutex.h>
00015 #include <queue>
00016 #include "Component/ModelManager.H"
00017 #include "Image/Image.H"
00018 #include "Image/PixelsTypes.H"
00019 #include "Qt/SeaBee3GUICommunicator.H"
00020 #include "GUI/SimpleMeter.H"
00021 #include "Util/MathFunctions.H"
00022 #include "Robots/SeaBeeIII/MapperI.H"
00023 #include "Image/CutPaste.H"
00024 #include "Raster/PngParser.H"
00025 #include "Raster/GenericFrame.H"
00026 #include "Image/Point2D.H"
00027 #include "Ice/RobotSimEvents.ice.H"
00028
00029 class QVBoxLayout;
00030 class QHBoxLayout;
00031 class QGridLayout;
00032 class QSpacerItem;
00033 class QAction;
00034 class QActionGroup;
00035 class QToolBar;
00036 class QPopupMenu;
00037 class ImageCanvas;
00038 class QGroupBox;
00039 class QFrame;
00040 class QLabel;
00041 class QLineEdit;
00042 class QCheckBox;
00043 class QSpinBox;
00044 class QButtonGroup;
00045 class QRadioButton;
00046 class QTabWidget;
00047 class QWidget;
00048 class QPushButton;
00049 class QLCDNumber;
00050 class QComboBox;
00051 class SeaBee3GUICommunicator;
00052
00053 class SeaBee3MainDisplayForm : public QMainWindow
00054 {
00055 Q_OBJECT
00056
00057 public:
00058 SeaBee3MainDisplayForm( QWidget* parent = 0, const char* name = 0, WFlags fl = WType_TopLevel );
00059 ~SeaBee3MainDisplayForm();
00060
00061 QGroupBox* groupBox9_4;
00062 QFrame* frame3;
00063 ImageCanvas* ThrusterCurrentMeterCanvas4;
00064 ImageCanvas* ThrusterCurrentMeterCanvas5;
00065 ImageCanvas* ThrusterCurrentMeterCanvas2;
00066 ImageCanvas* ThrusterCurrentMeterCanvas3;
00067 ImageCanvas* ThrusterCurrentMeterCanvas6;
00068 QLabel* textLabel2;
00069 QLabel* textLabel2_2;
00070 QLabel* textLabel2_2_2;
00071 QLabel* textLabel2_2_3;
00072 QLabel* textLabel2_2_4;
00073 QLabel* textLabel2_2_5;
00074 QLabel* textLabel2_2_6;
00075 QLabel* textLabel2_2_7;
00076 ImageCanvas* ThrusterCurrentMeterCanvas7;
00077 QLabel* textLabel1_3;
00078 QLabel* textLabel1_2;
00079 QLabel* textLabel1;
00080 ImageCanvas* ThrusterCurrentMeterCanvas1;
00081 ImageCanvas* ThrusterCurrentMeterCanvas0;
00082 QGroupBox* groupBox1;
00083 QGroupBox* groupBox9_3;
00084 QLineEdit* field_int_press;
00085 ImageCanvas* IPressureCanvas;
00086 QCheckBox* ExtPressAuto;
00087 QSpinBox* IntPressMax;
00088 QSpinBox* IntPressMin;
00089 QSpinBox* ExtPressMax;
00090 QSpinBox* ExtPressMin;
00091 QGroupBox* groupBox6;
00092 ImageCanvas* CompassCanvas;
00093 QLineEdit* field_heading;
00094 QCheckBox* IntPressAuto;
00095 QGroupBox* groupBox10;
00096 ImageCanvas* EPressureCanvas;
00097 QLineEdit* field_ext_press;
00098 ImageCanvas* ImageDisplay0_2_2;
00099 QLineEdit* desired_heading_field_2_3;
00100 QLineEdit* desired_heading_field_2_2;
00101 QGroupBox* groupBox10_2;
00102 QGroupBox* groupBox2;
00103 QButtonGroup* buttonGroup1;
00104 QRadioButton* radio_manual;
00105 QRadioButton* radio_auto;
00106 QLineEdit* desired_speed_field;
00107 QLineEdit* desired_depth_field;
00108 QLabel* textLabel2_3_2_2;
00109 QLabel* textLabel2_2_2_3_2_2;
00110 QLabel* textLabel2_2_2_3_2_2_2;
00111 QLineEdit* desired_heading_field;
00112 QGroupBox* groupBox4;
00113 QLabel* textLabel2_3_2_2_2;
00114 QLabel* textLabel2_3_2_2_2_2;
00115 QLineEdit* heading_output_field;
00116 QLineEdit* depth_output_field;
00117 QTabWidget* tabWidget3;
00118 QWidget* tab;
00119 QFrame* frame4;
00120 ImageCanvas* ImageDisplay1;
00121 ImageCanvas* ImageDisplay2;
00122 ImageCanvas* ImageDisplay3;
00123 ImageCanvas* ImageDisplay0;
00124 QWidget* TabPage;
00125 QFrame* frame4_2;
00126 ImageCanvas* MovementDisplay0;
00127 ImageCanvas* MovementDisplay1;
00128 QWidget* tab_2;
00129 QGroupBox* groupBox9_2;
00130 QLabel* textLabel2_3_2_2_3_3_2;
00131 QLabel* textLabel2_3_2_2_3_2_2;
00132 QLineEdit* field_depth_i;
00133 QLineEdit* field_depth_d;
00134 QLineEdit* field_depth_k;
00135 QLabel* textLabel2_3_2_2_3_2_4_2_2;
00136 QLabel* textLabel2_3_2_2_3_4_2;
00137 QLineEdit* field_depth_p;
00138 QGroupBox* groupBox11;
00139 QLabel* textLabel1_4_2;
00140 QLabel* textLabel1_4_3;
00141 QLabel* textLabel1_4_3_2;
00142 QLabel* textLabel1_4;
00143 QPushButton* recordButton;
00144 QPushButton* stopButton;
00145 QPushButton* eraseButton;
00146 QPushButton* saveButton;
00147 QLabel* textLabel1_4_4;
00148 QLCDNumber* dataLoggerLCD;
00149 QGroupBox* groupBox9;
00150 QLabel* textLabel2_3_2_2_3_2_4_2;
00151 QLabel* textLabel2_3_2_2_3_2;
00152 QLabel* textLabel2_3_2_2_3_3;
00153 QLabel* textLabel2_3_2_2_3_4;
00154 QLineEdit* field_heading_i;
00155 QLineEdit* field_heading_k;
00156 QLineEdit* field_heading_d;
00157 QLineEdit* field_heading_p;
00158 QWidget* TabPage_2;
00159 ImageCanvas* MapCanvas;
00160 QGroupBox* groupBox15;
00161 QLabel* textLabel1_5;
00162 QLineEdit* MapName;
00163 QPushButton* SaveMapBtn;
00164 QPushButton* LoadMapBtn;
00165 QGroupBox* groupBox12;
00166 QPushButton* PlatformBtn;
00167 QLabel* PlatformPic;
00168 QLabel* GatePic;
00169 QPushButton* GateBtn;
00170 QLabel* PipePic;
00171 QPushButton* PipeBtn;
00172 QLabel* BuoyPic;
00173 QPushButton* FlareBtn;
00174 QLabel* BinPic;
00175 QLabel* BarbwirePic;
00176 QLabel* MachineGunNestPic;
00177 QLabel* OctagonSurfacePic;
00178 QPushButton* BinBtn;
00179 QPushButton* OctagonSurfaceBtn;
00180 QPushButton* MachineGunNestBtn;
00181 QPushButton* BarbwireBtn;
00182 QGroupBox* groupBox13;
00183 QComboBox* ObjectList;
00184 QLabel* textLabel2_3;
00185 QLineEdit* MapObjectY;
00186 QLabel* textLabel1_6;
00187 QLabel* textLabel2_4;
00188 QLineEdit* MapObjectX;
00189 QLineEdit* MapObjectVarX;
00190 QLineEdit* MapObjectVarY;
00191 QLabel* textLabel1_7;
00192 QPushButton* DeleteBtn;
00193 QPushButton* PlaceBtn;
00194 QWidget* TabPage_3;
00195 QPushButton* BriefcaseFoundBtn;
00196 QPushButton* BombingRunBtn;
00197 QPushButton* ContourFoundBoxesBtn;
00198 QPushButton* BarbwireDoneBtn;
00199 QPushButton* ContourFoundBarbwireBtn;
00200 QPushButton* FlareDoneBtn;
00201 QPushButton* GateFoundBtn;
00202 QPushButton* InitDoneBtn;
00203 QPushButton* GateDoneBtn;
00204 QPushButton* ContourFoundFlareBtn;
00205 QWidget* TabPage_4;
00206 QLabel* textLabel1_8;
00207 QLineEdit* colorFileLoadText;
00208 QPushButton* ColorPickLoadBut;
00209 QLabel* textLabel2_3_2_2_5;
00210 QLabel* textLabel2_3_2_2_4;
00211 QLabel* textLabel2_3_2_2_4_3;
00212 QLabel* textLabel2_3_2_2_7;
00213 QLabel* textLabel2_3_2_2_6;
00214 QLineEdit* v_mean_val;
00215 QLineEdit* h1__mean_val;
00216 QLineEdit* h2_mean_val;
00217 QLineEdit* s_mean_val;
00218 ImageCanvas* AvgColorImg;
00219 QLabel* textLabel2_3_2_2_4_3_2;
00220 QLineEdit* h1_std_val;
00221 QLineEdit* h2_std_val;
00222 QLineEdit* v_std_val;
00223 QLineEdit* s_std_val;
00224 ImageCanvas* ColorPickerImg;
00225
00226 virtual void setSensorVotes( std::vector<ImageIceMod::SensorVote> votes );
00227 virtual void setCompositeHeading( int heading );
00228 virtual void setCompositeDepth( int depth );
00229 virtual void pushRectAngle( float a );
00230 virtual Image<PixRGB<byte> > makeCompassImage( int heading );
00231 virtual void setThrusterMeters( int zero, int one, int two, int three, int four, int five, int six, int seven );
00232
00233 public slots:
00234 virtual void pushFwdRectangle( ImageIceMod::QuadrilateralIce quad );
00235 virtual void pushRectRatio( float r );
00236 virtual void pushContourPoint( Point2D<int> p );
00237 virtual void setSalientPoint( Point2D<float> p );
00238 virtual void Image1Click( int a, int b, int c );
00239 virtual void init( ModelManager * mgr );
00240 virtual void setImage( Image<PixRGB<byte> > & img, std::string cameraID );
00241 virtual void ToggleCamera0();
00242 virtual void ToggleCamera1();
00243 virtual void ToggleCamera2();
00244 virtual void ToggleCamera3();
00245 virtual void ToggleCamera( std::string cameraID, bool active );
00246 virtual void registerCommunicator( nub::soft_ref<SeaBee3GUICommunicator> c );
00247 virtual void setJSAxis( int axis, float val );
00248 virtual void setSensorValues( int heading, int pitch, int roll, int intPressure, int extPressure, int headingValue, int depthValue );
00249 virtual void updateDesiredHeading();
00250 virtual void updateDesiredDepth();
00251 virtual void updateDesiredSpeed();
00252 virtual void updateHeadingPID();
00253 virtual void updateDepthPID();
00254 virtual void manualClicked();
00255 virtual void autoClicked();
00256 virtual void sendInitDone();
00257 virtual void sendGateFound();
00258 virtual void sendGateDone();
00259 virtual void sendContourFoundFlare();
00260 virtual void sendFlareDone();
00261 virtual void sendContourFoundBarbwire();
00262 virtual void sendBarbwireDone();
00263 virtual void sendContourFoundBoxes();
00264 virtual void sendBombingRunDone();
00265 virtual void sendBriefcaseFound();
00266 virtual void addPlatform();
00267 virtual void addGate();
00268 virtual void addPipe();
00269 virtual void addFlare();
00270 virtual void addBin();
00271 virtual void addBarbwire();
00272 virtual void addMachineGunNest();
00273 virtual void addOctagonSurface();
00274 virtual void selectObject( int index );
00275 virtual void refreshMapImage();
00276 virtual void moveObject();
00277 virtual void deleteObject();
00278 virtual void saveMap();
00279 virtual void loadMap();
00280 virtual void loadColorPickerImg();
00281 virtual void clickColorPickerImg( int x, int y, int but );
00282
00283 protected:
00284 std::vector<ImageIceMod::QuadrilateralIce> itsFwdRectangles;
00285 std::vector<Point2D<int> > itsRectangles;
00286 std::vector<MapperI::MapObject> mapObjects;
00287 SimpleMeter *currentMeter7;
00288 SimpleMeter *currentMeter6;
00289 SimpleMeter *currentMeter5;
00290 SimpleMeter *currentMeter4;
00291 SimpleMeter *currentMeter3;
00292 SimpleMeter *currentMeter2;
00293 SimpleMeter *currentMeter1;
00294 SimpleMeter *currentMeter0;
00295 nub::soft_ref<SeaBee3GUICommunicator> GUIComm;
00296 ModelManager *itsMgr;
00297 std::list<int> headingHist;
00298 std::list<int> extPressHist;
00299 std::list<int> intPressHist;
00300 IceUtil::Mutex itsDataMutex;
00301 int selectedIndex;
00302 Image<PixRGB<byte > > MapImage;
00303 Point2D<float> itsSalientPoint;
00304 std::list<float> itsRectAngles;
00305 std::list<float> itsRectRatios;
00306 int itsCompositeHeading;
00307 int itsCompositeDepth;
00308 std::vector<ImageIceMod::SensorVote> itsSensorVotes;
00309 int itsCurrentHeading;
00310 int itsCurrentDepth;
00311 Image<PixH2SV2<float> > itsConvert;
00312
00313
00314 protected slots:
00315 virtual void languageChange();
00316
00317 private:
00318 QPixmap image0;
00319 QPixmap image1;
00320 QPixmap image2;
00321 QPixmap image3;
00322 QPixmap image4;
00323 QPixmap image5;
00324 QPixmap image6;
00325 QPixmap image7;
00326 QPixmap image8;
00327
00328 };
00329
00330 #endif // SEABEE3MAINDISPLAYFORM_H