|
@@ -3,6 +3,7 @@
|
|
|
|
|
|
#include <iomanip>//不要忘记包含此头文件
|
|
#include <iomanip>//不要忘记包含此头文件
|
|
#include <QScrollBar>
|
|
#include <QScrollBar>
|
|
|
|
+#include <QFileInfo>
|
|
|
|
|
|
#include "gpsimu.pb.h"
|
|
#include "gpsimu.pb.h"
|
|
|
|
|
|
@@ -77,12 +78,16 @@ MainWindow::MainWindow(QWidget *parent) :
|
|
connect(timer,SIGNAL(timeout()),this,SLOT(onTimer()));
|
|
connect(timer,SIGNAL(timeout()),this,SLOT(onTimer()));
|
|
timer->start(1000);
|
|
timer->start(1000);
|
|
|
|
|
|
|
|
+ mpfb = new FileBackup();
|
|
|
|
+ mpfb->start();
|
|
|
|
+
|
|
setWindowTitle("Create Map From Lane Info");
|
|
setWindowTitle("Create Map From Lane Info");
|
|
|
|
|
|
}
|
|
}
|
|
|
|
|
|
MainWindow::~MainWindow()
|
|
MainWindow::~MainWindow()
|
|
{
|
|
{
|
|
|
|
+ delete mpfb;
|
|
delete ui;
|
|
delete ui;
|
|
}
|
|
}
|
|
|
|
|
|
@@ -2749,6 +2754,25 @@ void MainWindow::onClickLoad()
|
|
QString str = QFileDialog::getOpenFileName(this,"Load XODR",".","*.xodr");
|
|
QString str = QFileDialog::getOpenFileName(this,"Load XODR",".","*.xodr");
|
|
if(str.isEmpty())return;
|
|
if(str.isEmpty())return;
|
|
|
|
|
|
|
|
+ QString strfilepath = str;
|
|
|
|
+
|
|
|
|
+ QString strbak = str + ".bak";
|
|
|
|
+ QFileInfo fileback(strbak);
|
|
|
|
+
|
|
|
|
+ if(fileback.exists())
|
|
|
|
+ {
|
|
|
|
+ QMessageBox::StandardButton button;
|
|
|
|
+ button=QMessageBox::question(this,tr("恢复备份"),QString(tr("上次为非正常退出,是否从备份文件导入?")),QMessageBox::Yes|QMessageBox::No);
|
|
|
|
+ if(button==QMessageBox::No)
|
|
|
|
+ {
|
|
|
|
+
|
|
|
|
+ }
|
|
|
|
+ else if(button==QMessageBox::Yes)
|
|
|
|
+ {
|
|
|
|
+ str = strbak;
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
OpenDrive * pxodr = new OpenDrive(); //because add to xodr,so don't delete
|
|
OpenDrive * pxodr = new OpenDrive(); //because add to xodr,so don't delete
|
|
OpenDriveXmlParser x(pxodr);
|
|
OpenDriveXmlParser x(pxodr);
|
|
if(!x.ReadFile(str.toStdString()))
|
|
if(!x.ReadFile(str.toStdString()))
|
|
@@ -2773,6 +2797,8 @@ void MainWindow::onClickLoad()
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
+
|
|
|
|
+
|
|
bool bNeedMove = false;
|
|
bool bNeedMove = false;
|
|
bool bNeedAjustID = false;
|
|
bool bNeedAjustID = false;
|
|
unsigned short int revMajor,revMinor;
|
|
unsigned short int revMajor,revMinor;
|
|
@@ -2794,11 +2820,24 @@ void MainWindow::onClickLoad()
|
|
double xMoveX = 0;
|
|
double xMoveX = 0;
|
|
double xMoveY = 0;
|
|
double xMoveY = 0;
|
|
|
|
|
|
|
|
+ bool bAddToNow = false;
|
|
if(mxodr.GetRoadCount() > 0)
|
|
if(mxodr.GetRoadCount() > 0)
|
|
{
|
|
{
|
|
- bNeedAjustID = true;
|
|
|
|
|
|
+ QMessageBox::StandardButton button;
|
|
|
|
+ button=QMessageBox::question(this,tr("载入模式"),QString(tr("附加到当前地图?")),QMessageBox::Yes|QMessageBox::No);
|
|
|
|
+ if(button==QMessageBox::No)
|
|
|
|
+ {
|
|
|
|
+ bAddToNow = false;
|
|
|
|
+ }
|
|
|
|
+ else if(button==QMessageBox::Yes)
|
|
|
|
+ {
|
|
|
|
+ bAddToNow = true;
|
|
|
|
+ }
|
|
|
|
+
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ if(bAddToNow )bNeedAjustID = true;
|
|
|
|
+
|
|
if(mbSetOrigin == false)
|
|
if(mbSetOrigin == false)
|
|
{
|
|
{
|
|
bNeedMove = false;
|
|
bNeedMove = false;
|
|
@@ -2888,27 +2927,36 @@ void MainWindow::onClickLoad()
|
|
|
|
|
|
}
|
|
}
|
|
|
|
|
|
- for(i=0;i<nnewcount;i++)
|
|
|
|
|
|
+ if(bAddToNow)
|
|
{
|
|
{
|
|
- mxodr.GetRoadVector()->push_back(pxodr->GetRoadVector()->at(i));
|
|
|
|
- // OpenDrive * px = &mxodr;
|
|
|
|
- }
|
|
|
|
|
|
+ for(i=0;i<nnewcount;i++)
|
|
|
|
+ {
|
|
|
|
+ mxodr.GetRoadVector()->push_back(pxodr->GetRoadVector()->at(i));
|
|
|
|
+ // OpenDrive * px = &mxodr;
|
|
|
|
+ }
|
|
|
|
|
|
- for(i=0;i<nnewjunctioncount;i++)
|
|
|
|
- {
|
|
|
|
- mxodr.GetJunctionVector()->push_back(pxodr->GetJunctionVector()->at(i));
|
|
|
|
- }
|
|
|
|
|
|
+ for(i=0;i<nnewjunctioncount;i++)
|
|
|
|
+ {
|
|
|
|
+ mxodr.GetJunctionVector()->push_back(pxodr->GetJunctionVector()->at(i));
|
|
|
|
+ }
|
|
|
|
|
|
- if((mxodr.GetRoadCount()>0)&&(mxodr.GetHeader() == 0))
|
|
|
|
- mxodr.SetHeader(1,1,"adcmap",1.1,QDateTime::currentDateTime().toString("yyyy-MM-dd").toLatin1().data(),0,0,0,0,glat0,glon0,ghdg0);
|
|
|
|
|
|
+ if((mxodr.GetRoadCount()>0)&&(mxodr.GetHeader() == 0))
|
|
|
|
+ mxodr.SetHeader(1,1,"adcmap",1.1,QDateTime::currentDateTime().toString("yyyy-MM-dd").toLatin1().data(),0,0,0,0,glat0,glon0,ghdg0);
|
|
|
|
|
|
|
|
+ }
|
|
|
|
+ else
|
|
|
|
+ {
|
|
|
|
+ mxodr = *pxodr;
|
|
|
|
+ }
|
|
updateCBRoad();
|
|
updateCBRoad();
|
|
updateJunction();
|
|
updateJunction();
|
|
|
|
|
|
mbRefresh = true;
|
|
mbRefresh = true;
|
|
update();
|
|
update();
|
|
|
|
|
|
|
|
+ mpfb->Activate(strfilepath);
|
|
|
|
|
|
|
|
+ delete pxodr;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@@ -2934,6 +2982,9 @@ void MainWindow::onClickSave()
|
|
}
|
|
}
|
|
OpenDriveXmlWriter x(&mxodr);
|
|
OpenDriveXmlWriter x(&mxodr);
|
|
x.WriteFile(str.toStdString());
|
|
x.WriteFile(str.toStdString());
|
|
|
|
+
|
|
|
|
+ mnNotSave = 0;
|
|
|
|
+ mpfb->Activate(str);
|
|
}
|
|
}
|
|
|
|
|
|
void MainWindow::onClickRoadContact()
|
|
void MainWindow::onClickRoadContact()
|
|
@@ -3598,6 +3649,8 @@ void MainWindow::onClickCreateRoad()
|
|
mbRefresh = true;
|
|
mbRefresh = true;
|
|
update();
|
|
update();
|
|
|
|
|
|
|
|
+ mpfb->SetOpenDrive(mxodr);
|
|
|
|
+
|
|
}
|
|
}
|
|
|
|
|
|
int MainWindow::GetEndPoint(Road *proad, double &x, double &y, double &hdg)
|
|
int MainWindow::GetEndPoint(Road *proad, double &x, double &y, double &hdg)
|
|
@@ -4445,6 +4498,8 @@ void MainWindow::onClickRoadDel()
|
|
{
|
|
{
|
|
UpdateScene();
|
|
UpdateScene();
|
|
}
|
|
}
|
|
|
|
+
|
|
|
|
+ mpfb->SetOpenDrive(mxodr);
|
|
}
|
|
}
|
|
|
|
|
|
void MainWindow::updateCBRoad()
|
|
void MainWindow::updateCBRoad()
|
|
@@ -5051,6 +5106,8 @@ void MainWindow::on_actionSave_triggered()
|
|
void MainWindow::on_actionAutoConnect_triggered()
|
|
void MainWindow::on_actionAutoConnect_triggered()
|
|
{
|
|
{
|
|
onClickAutoConnect();
|
|
onClickAutoConnect();
|
|
|
|
+
|
|
|
|
+ mpfb->SetOpenDrive(mxodr);
|
|
}
|
|
}
|
|
|
|
|
|
void MainWindow::on_actionSet_Speed_triggered()
|
|
void MainWindow::on_actionSet_Speed_triggered()
|
|
@@ -5067,6 +5124,12 @@ void MainWindow::closeEvent(QCloseEvent *event)
|
|
event->accept(); // 接受退出信号,程序退出
|
|
event->accept(); // 接受退出信号,程序退出
|
|
return;
|
|
return;
|
|
}
|
|
}
|
|
|
|
+
|
|
|
|
+ if(mnNotSave == 0)
|
|
|
|
+ {
|
|
|
|
+ event->accept(); // 接受退出信号,程序退出
|
|
|
|
+ return;
|
|
|
|
+ }
|
|
QMessageBox::StandardButton button;
|
|
QMessageBox::StandardButton button;
|
|
button=QMessageBox::question(this,tr("退出程序"),QString(tr("确认退出程序")),QMessageBox::Yes|QMessageBox::No);
|
|
button=QMessageBox::question(this,tr("退出程序"),QString(tr("确认退出程序")),QMessageBox::Yes|QMessageBox::No);
|
|
if(button==QMessageBox::No)
|
|
if(button==QMessageBox::No)
|
|
@@ -5106,6 +5169,8 @@ void MainWindow::on_actionEdit_Road_triggered()
|
|
{
|
|
{
|
|
UpdateScene();
|
|
UpdateScene();
|
|
}
|
|
}
|
|
|
|
+
|
|
|
|
+ mpfb->SetOpenDrive(mxodr);
|
|
}
|
|
}
|
|
|
|
|
|
void MainWindow::on_actionAdd_Road_From_RTK_triggered()
|
|
void MainWindow::on_actionAdd_Road_From_RTK_triggered()
|
|
@@ -5119,6 +5184,8 @@ void MainWindow::on_actionAdd_Road_From_RTK_triggered()
|
|
mbRefresh = true;
|
|
mbRefresh = true;
|
|
update();
|
|
update();
|
|
|
|
|
|
|
|
+ mpfb->SetOpenDrive(mxodr);
|
|
|
|
+
|
|
}
|
|
}
|
|
|
|
|
|
void MainWindow::onClickSetMove()
|
|
void MainWindow::onClickSetMove()
|
|
@@ -5270,4 +5337,6 @@ void MainWindow::SaveBack()
|
|
}
|
|
}
|
|
|
|
|
|
}
|
|
}
|
|
|
|
+ mnNotSave++;
|
|
|
|
+ mpfb->SetOpenDrive(mxodr);
|
|
}
|
|
}
|