Browse Source

Merge branch 'master' of http://111.33.136.149:3000/adc_pilot/modularization

zhangjia 3 years ago
parent
commit
849ea95268

+ 44 - 0
src/tool/map_lanetoxodr/OpenDrive/OpenDrive.cpp

@@ -158,6 +158,50 @@ void OpenDrive::Clear()
 	mJunctionVector.clear();
 }
 
+OpenDrive::OpenDrive (const OpenDrive& openDrive)
+{
+    mRoadVector = openDrive.mRoadVector;
+    mJunctionVector = openDrive.mJunctionVector;
+    Header * pHeader = openDrive.mHeader;
+    if(pHeader != NULL)
+    {
+        unsigned short int revMajor,revMinor;
+        std::string name,date;
+        float version;
+        double north,south,east,west,lat0,lon0,hdg0;
+        pHeader->GetAllParams(revMajor,revMinor,name,version,date,north,south,east,west,lat0,lon0,hdg0);
+
+        mHeader = new Header(revMajor,revMinor,name,version,date,north,south,east,west,lat0,lon0,hdg0);
+
+    }
+    else
+    {
+        mHeader == NULL;
+    }
+}
+
+const OpenDrive& OpenDrive::operator=(const OpenDrive& rhs)
+{
+    mRoadVector = rhs.mRoadVector;
+    mJunctionVector = rhs.mJunctionVector;
+    Header * pHeader = rhs.mHeader;
+    if(pHeader != NULL)
+    {
+        unsigned short int revMajor,revMinor;
+        std::string name,date;
+        float version;
+        double north,south,east,west,lat0,lon0,hdg0;
+        pHeader->GetAllParams(revMajor,revMinor,name,version,date,north,south,east,west,lat0,lon0,hdg0);
+
+        mHeader = new Header(revMajor,revMinor,name,version,date,north,south,east,west,lat0,lon0,hdg0);
+
+    }
+    else
+    {
+        mHeader == NULL;
+    }
+}
+
 /**
  * Destructor
  */

+ 8 - 6
src/tool/map_lanetoxodr/OpenDrive/OpenDrive.h

@@ -42,13 +42,12 @@ private:
 	unsigned int mLastAddedRoad;
 	unsigned int mLastAddedJunction;
 
-	//-------------------------------------------------
+//	//-------------------------------------------------
+
+//	/**
+//	 * Copy constructor, makes the object non-copyable
+//	 */
 
-	/**
-	 * Copy constructor, makes the object non-copyable
-	 */
-    OpenDrive (const OpenDrive& openDrive){};
-    const OpenDrive& operator=(const OpenDrive& rhs){};
 
 public:
 	/**
@@ -56,6 +55,9 @@ public:
 	 */
 	OpenDrive();
 
+    OpenDrive (const OpenDrive& openDrive);
+    const OpenDrive& operator=(const OpenDrive& rhs);
+
 	//-------------------------------------------------
 
 	/**

+ 47 - 0
src/tool/map_lanetoxodr/mainwindow.cpp

@@ -495,6 +495,7 @@ void MainWindow::CreateTab1View(QTabWidget * p)
     pCB->addItem("Scene");
     pCB->setCurrentIndex(0);
     pCB->setGeometry(nXPos,nYPos,nLEWidth,nLEHeight);
+    mpCBViewMode = pCB;
     connect(pCB,SIGNAL(currentIndexChanged(int)),this,SLOT(onViewModeChange(int)));
 
     nXPos = 10;
@@ -3051,6 +3052,7 @@ void MainWindow::onClickCreateRoad()
 {
     if(mvectorrc.size()<1)return;
 
+    SaveBack();
     Road * p1, *p2;
     int nroad1index;
     int nroad2index;
@@ -4364,6 +4366,7 @@ void MainWindow::onClickRoadDel()
         return;
     }
 
+    SaveBack();
     mxodr.DeleteRoad(index);
 
     nroadsize = mxodr.GetRoadCount();
@@ -4438,6 +4441,10 @@ void MainWindow::onClickRoadDel()
     updateCBRoad();
     mbRefresh = true;
     update();
+    if(mpCBViewMode->currentIndex() == 1)
+    {
+        UpdateScene();
+    }
 }
 
 void MainWindow::updateCBRoad()
@@ -5086,17 +5093,24 @@ void MainWindow::on_actionEdit_Road_Lane_triggered()
 
 void MainWindow::on_actionEdit_Road_triggered()
 {
+    SaveBack();
     std::string strroadid = mpCBRoad->currentText().toStdString();
     RoadEditDialog rd(&mxodr,strroadid,this);
     int res = rd.exec();
 
+
     updateCBRoad();
     mbRefresh = true;
     update();
+    if(mpCBViewMode->currentIndex() == 1)
+    {
+        UpdateScene();
+    }
 }
 
 void MainWindow::on_actionAdd_Road_From_RTK_triggered()
 {
+    SaveBack();
     DialogAddRoadFromRTK arfrd(&mxodr,glon0,glat0,this);
     arfrd.exec();
     mpLELat0->setText(QString::number(glat0,'f',7));
@@ -5224,3 +5238,36 @@ void MainWindow::on_actionCalc_Road_S_triggered()
     DialogCalcS calcs(&mxodr,glon0,glat0,this);
     calcs.exec();
 }
+
+void MainWindow::on_actionBack_triggered()
+{
+    if(mvectorxodrback.size()>0)
+    {
+        mxodr = mvectorxodrback.at(mvectorxodrback.size() -1);
+        updateCBRoad();
+        mbRefresh = true;
+        update();
+        if(mpCBViewMode->currentIndex() == 1)
+        {
+            UpdateScene();
+        }
+        mvectorxodrback.erase(mvectorxodrback.begin() + mvectorxodrback.size()-1);
+    }
+    else
+    {
+        QMessageBox::warning(this,"Warning","No Back Option",QMessageBox::YesAll);
+    }
+}
+
+void MainWindow::SaveBack()
+{
+    if(mxodr.GetRoadCount() > 0)
+    {
+        mvectorxodrback.push_back(mxodr);
+        if(mvectorxodrback.size() > 10)
+        {
+            mvectorxodrback.erase(mvectorxodrback.begin());
+        }
+
+    }
+}

+ 8 - 0
src/tool/map_lanetoxodr/mainwindow.h

@@ -197,6 +197,8 @@ private slots:
 
     void on_actionCalc_Road_S_triggered();
 
+    void on_actionBack_triggered();
+
 private:
 
 
@@ -290,6 +292,8 @@ private:
 
     QCheckBox * mpCheckFromSel, * mpCheckToSel;
 
+    QComboBox * mpCBViewMode;
+
  //   QLineEdit * mpLE_StartLat, * mpLE_StartLon, * mpLE_StartHeading;
 
 //    QLineEdit * mpLE_EndLat, * mpLE_EndLon;
@@ -403,6 +407,10 @@ private:
 
     std::vector<QGraphicsPathItem *> mvectorviewitem;
 
+    std::vector<OpenDrive> mvectorxodrback;
+
+    void SaveBack();
+
 
 };
 

+ 11 - 1
src/tool/map_lanetoxodr/mainwindow.ui

@@ -42,6 +42,8 @@
     <addaction name="actionSet_Speed"/>
     <addaction name="actionSet_Traffic_Light"/>
     <addaction name="actionCalc_Road_S"/>
+    <addaction name="separator"/>
+    <addaction name="actionBack"/>
    </widget>
    <widget class="QMenu" name="menuTool">
     <property name="title">
@@ -102,7 +104,7 @@
     <string>Edit Road</string>
    </property>
    <property name="toolTip">
-    <string>编辑导率</string>
+    <string>编辑道路</string>
    </property>
   </action>
   <action name="actionMerge_Road">
@@ -130,6 +132,14 @@
     <string>Calc Road S</string>
    </property>
   </action>
+  <action name="actionBack">
+   <property name="text">
+    <string>回退</string>
+   </property>
+   <property name="toolTip">
+    <string>回退</string>
+   </property>
+  </action>
  </widget>
  <layoutdefault spacing="6" margin="11"/>
  <resources>