Browse Source

change map_lanetoxodr. for easy select road edit and connect.

yuchuli 3 years ago
parent
commit
fe486bf98b

+ 53 - 5
src/tool/map_lanetoxodr/mainwindow.cpp

@@ -882,6 +882,13 @@ void MainWindow::CreateTab1View(QTabWidget * p)
     pCB->addItem("end");
     mpCBRC1 = pCB;
 
+    QCheckBox * pCheck = new QCheckBox(pGroup);
+    pCheck->setText("act");
+    pCheck->setGeometry(nXPos,nYPos,nLEWidth,nLEHeight);
+    mpCheckFromSel = pCheck;
+    mpCheckFromSel->setChecked(false);
+
+
     nXPos = 10;
     nYPos = nYPos + mnFontHeight * 2;
 
@@ -897,6 +904,15 @@ void MainWindow::CreateTab1View(QTabWidget * p)
     pCB->addItem("end");
     mpCBRC2 = pCB;
 
+    pCheck = new QCheckBox(pGroup);
+    pCheck->setText("act");
+    pCheck->setGeometry(nXPos,nYPos,nLEWidth,nLEHeight);
+    mpCheckToSel = pCheck;
+    mpCheckToSel->setChecked(false);
+
+    nXPos = 10;
+    nYPos = nYPos + mnFontHeight * 2;
+
     pPB = new QPushButton(pGroup);
     pPB->setText("Road Contact");
     pPB->setGeometry(nXPos,nYPos,nLEWidth,nLEHeight);
@@ -1158,7 +1174,7 @@ void MainWindow::onClickXY(double x, double y)
     rel_x = selx - mfViewMoveX;
     rel_y = sely - mfViewMoveY;
 
-    Road * pRoad;
+    Road * pRoad = 0;
     GeometryBlock * pgeob;
     double fdis,nearx,neary,hdg;
     double fs;
@@ -1186,12 +1202,42 @@ void MainWindow::onClickXY(double x, double y)
         }
     }
 
+    if(mpCheckFromSel->isChecked())
+    {
+        if(pRoad != 0)ComboToString(pRoad->GetRoadId(),mpCBRoad1);
+        mpCheckFromSel->setChecked(false);
+    }
+
+    if(mpCheckToSel->isChecked())
+    {
+        if(pRoad != 0)ComboToString(pRoad->GetRoadId(),mpCBRoad2);
+        mpCheckToSel->setChecked(false);
+    }
+
 
     mpLE_SelLon->setText(QString::number(lon,'f',7));
     mpLE_SelLat->setText(QString::number(lat,'f',7));
     update();
 }
 
+void MainWindow::ComboToString(std::string strroadid,QComboBox * pCB)
+{
+    int i;
+    int nsize = pCB->count();
+    for(i=0;i<nsize;i++)
+    {
+        if(pCB->itemText(i).toStdString() == strroadid)
+        {
+            break;
+        }
+    }
+    if(i<nsize)
+    {
+        if(i != pCB->currentIndex())
+            pCB->setCurrentIndex(i);
+    }
+}
+
 void MainWindow::onChangeScale(int scale)
 {
     mnfac = scale;
@@ -4850,7 +4896,8 @@ void MainWindow::on_actionAutoConnect_triggered()
 
 void MainWindow::on_actionSet_Speed_triggered()
 {
-    SpeedDialog sd(&mxodr,this);
+    std::string strroadid = mpCBRoad->currentText().toStdString();
+    SpeedDialog sd(&mxodr,strroadid,this);
     int res = sd.exec();
 }
 
@@ -4875,7 +4922,8 @@ void MainWindow::closeEvent(QCloseEvent *event)
 
 void MainWindow::on_actionSet_Traffic_Light_triggered()
 {
-    TrafficLightDialog td(&mxodr,this);
+    std::string strroadid = mpCBRoad->currentText().toStdString();
+    TrafficLightDialog td(&mxodr,strroadid,this);
     int res = td.exec();
 }
 
@@ -4886,8 +4934,8 @@ void MainWindow::on_actionEdit_Road_Lane_triggered()
 
 void MainWindow::on_actionEdit_Road_triggered()
 {
-
-    RoadEditDialog rd(&mxodr,this);
+    std::string strroadid = mpCBRoad->currentText().toStdString();
+    RoadEditDialog rd(&mxodr,strroadid,this);
     int res = rd.exec();
 }
 

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

@@ -22,6 +22,7 @@
 #include <QComboBox>
 #include <QDateTime>
 #include <QMessageBox>
+#include <QCheckBox>
 
 #include <QSlider>
 
@@ -87,6 +88,10 @@ private:
     QTimer *timer;
     QGraphicsScene *scene;
 
+public:
+    static void ComboToString(std::string strroadid,QComboBox * pCB);
+
+
 public:
      void resizeEvent(QResizeEvent *event);
 
@@ -266,6 +271,8 @@ private:
 
     QLineEdit *  mpLE_SelX, * mpLE_SelY, * mpLE_SelLat, * mpLE_SelLon;
 
+    QCheckBox * mpCheckFromSel, * mpCheckToSel;
+
  //   QLineEdit * mpLE_StartLat, * mpLE_StartLon, * mpLE_StartHeading;
 
 //    QLineEdit * mpLE_EndLat, * mpLE_EndLon;
@@ -372,6 +379,8 @@ private:
 
     void updateCBRoad();
     void updateJunction();
+
+
 };
 
 #endif // MAINWINDOW_H

+ 7 - 1
src/tool/map_lanetoxodr/roadeditdialog.cpp

@@ -1,12 +1,15 @@
 #include "roadeditdialog.h"
 #include "ui_roadeditdialog.h"
 
+
+#include "mainwindow.h"
+
 #include "math.h"
 
 #define VIEW_WIDTH 850
 #define VIEW_HEIGHT 450
 
-RoadEditDialog::RoadEditDialog(OpenDrive * pxodr,QWidget *parent) :
+RoadEditDialog::RoadEditDialog(OpenDrive * pxodr,std::string strdefroad,QWidget *parent) :
     QDialog(parent),
     ui(new Ui::RoadEditDialog)
 {
@@ -46,6 +49,9 @@ RoadEditDialog::RoadEditDialog(OpenDrive * pxodr,QWidget *parent) :
         ui->comboBox_Road->addItem(strname);
 
     }
+
+    MainWindow::ComboToString(strdefroad,ui->comboBox_Road);
+
 }
 
 RoadEditDialog::~RoadEditDialog()

+ 1 - 1
src/tool/map_lanetoxodr/roadeditdialog.h

@@ -23,7 +23,7 @@ class RoadEditDialog : public QDialog
     Q_OBJECT
 
 public:
-    explicit RoadEditDialog(OpenDrive * pxodr,QWidget *parent = nullptr);
+    explicit RoadEditDialog(OpenDrive * pxodr,std::string strdefroad,QWidget *parent = nullptr);
     ~RoadEditDialog();
 
 private:

+ 5 - 1
src/tool/map_lanetoxodr/speeddialog.cpp

@@ -1,7 +1,9 @@
 #include "speeddialog.h"
 #include "ui_speeddialog.h"
 
-SpeedDialog::SpeedDialog(OpenDrive * pxodr,QWidget *parent) :
+#include "mainwindow.h"
+
+SpeedDialog::SpeedDialog(OpenDrive * pxodr,std::string strdefroad,QWidget *parent) :
     QDialog(parent),
     ui(new Ui::SpeedDialog)
 {
@@ -17,6 +19,8 @@ SpeedDialog::SpeedDialog(OpenDrive * pxodr,QWidget *parent) :
         ui->comboBox_Road->addItem(strname);
 
     }
+
+    MainWindow::ComboToString(strdefroad,ui->comboBox_Road);
 }
 
 SpeedDialog::~SpeedDialog()

+ 1 - 1
src/tool/map_lanetoxodr/speeddialog.h

@@ -13,7 +13,7 @@ class SpeedDialog : public QDialog
     Q_OBJECT
 
 public:
-    explicit SpeedDialog(OpenDrive * pxodr,QWidget *parent = nullptr);
+    explicit SpeedDialog(OpenDrive * pxodr,std::string strdefroad,QWidget *parent = nullptr);
     ~SpeedDialog();
 
 private slots:

+ 4 - 1
src/tool/map_lanetoxodr/trafficlightdialog.cpp

@@ -4,9 +4,11 @@
 #include "trafficlightlanevaliditydialog.h"
 #include "trafficlightpositiondialog.h"
 
+#include "mainwindow.h"
+
 #include <QMessageBox>
 
-TrafficLightDialog::TrafficLightDialog(OpenDrive * pxodr,QWidget *parent) :
+TrafficLightDialog::TrafficLightDialog(OpenDrive * pxodr,std::string strdefroad,QWidget *parent) :
     QDialog(parent),
     ui(new Ui::TrafficLightDialog)
 {
@@ -27,6 +29,7 @@ TrafficLightDialog::TrafficLightDialog(OpenDrive * pxodr,QWidget *parent) :
 
     }
 
+    MainWindow::ComboToString(strdefroad,ui->comboBox_Road);
 
 
     setWindowTitle("Edit Traffic Light");

+ 1 - 1
src/tool/map_lanetoxodr/trafficlightdialog.h

@@ -13,7 +13,7 @@ class TrafficLightDialog : public QDialog
     Q_OBJECT
 
 public:
-    explicit TrafficLightDialog(OpenDrive * pxodr,QWidget *parent = nullptr);
+    explicit TrafficLightDialog(OpenDrive * pxodr,std::string strdefroad,QWidget *parent = nullptr);
     ~TrafficLightDialog();
 
 private slots: