265 lines
7.5 KiB
C++
265 lines
7.5 KiB
C++
#include "NameMapDlg.h"
|
||
#include "ui_NameMapDlg.h"
|
||
#include "qdir.h"
|
||
#include "qstring.h"
|
||
#include "qfiledialog.h"
|
||
#include <qtextstream.h>
|
||
#include "qinputdialog.h"
|
||
#include <qpushbutton.h>
|
||
// #include "ObjGraphicsHeadCell.h"
|
||
#include <QHeaderView>
|
||
#include "geometryutils.h"
|
||
NameMapDlg::NameMapDlg(QDialog *parent) :
|
||
QDialog(parent),
|
||
NM_UI(new Ui::NameMapDlg)
|
||
{
|
||
NM_UI->setupUi(this);
|
||
setWindowFlags(windowFlags()& ~Qt::WindowMaximizeButtonHint);
|
||
setFixedSize(this->width(), this->height());
|
||
|
||
this->setWindowFlags(this->windowFlags() |Qt::Dialog);
|
||
this->setWindowModality(Qt::ApplicationModal);
|
||
|
||
NM_UI->tableWidget->horizontalHeader()->setSectionResizeMode(QHeaderView::Stretch);
|
||
|
||
QIcon icon;
|
||
icon.addFile(GetImagePath() + "UIMake/addRow.png");
|
||
NM_UI->pushButton_addRow->setIcon(icon);
|
||
icon.addFile(GetImagePath() + "UIMake/delRow.png");
|
||
NM_UI->pushButton_delRow->setIcon(icon);
|
||
QIcon icon_save;
|
||
icon_save.addFile(GetImagePath() + "UIMake/save.png");
|
||
NM_UI->pushButton_save->setIcon(icon_save);
|
||
QIcon icon_load, icon_download;
|
||
icon_load.addFile(GetImagePath() + "UIMake/load.png");
|
||
NM_UI->pushButton_Load->setIcon(icon_load);
|
||
//icon_download.addFile(GetImagePath() + "UIMake/download.png");
|
||
//NM_UI->pushButton_downLoad->setIcon(icon_download);
|
||
|
||
connect(NM_UI->comboBox, SIGNAL(currentTextChanged(QString)), this, SLOT(slotComboxChanged()));
|
||
connect(NM_UI->pushButton, SIGNAL(clicked()), this, SLOT(slotApply()));
|
||
connect(NM_UI->pushButton, SIGNAL(clicked()), this, SLOT(accept()));
|
||
connect(NM_UI->pushButton_2, SIGNAL(clicked()), this, SLOT(reject()));
|
||
connect(NM_UI->pushButton_3, SIGNAL(clicked()), this, SLOT(slotComboxChanged()));
|
||
connect(NM_UI->pushButton_addRow, SIGNAL(clicked()), this, SLOT(slotAddRow()));
|
||
connect(NM_UI->pushButton_delRow, SIGNAL(clicked()), this, SLOT(slotDelRow()));
|
||
connect(NM_UI->pushButton_save, SIGNAL(clicked()), this, SLOT(slotSave()));
|
||
connect(NM_UI->pushButton_Load, SIGNAL(clicked()), this, SLOT(slotLoad()));
|
||
//connect(NM_UI->pushButton_downLoad, SIGNAL(clicked()), this, SLOT(slotDownLoad()));
|
||
|
||
freshTableList();
|
||
freshTable();
|
||
}
|
||
|
||
NameMapDlg::~NameMapDlg()
|
||
{
|
||
delete NM_UI;
|
||
}
|
||
|
||
void NameMapDlg::freshTableList()
|
||
{
|
||
NM_UI->comboBox->clear();
|
||
tableList.clear();
|
||
|
||
QString mapFolder_Path = GetConfPath() + "output_nameMap";
|
||
QDir dir(mapFolder_Path);
|
||
if(!dir.exists()) return;
|
||
|
||
QStringList filters;
|
||
filters<<QString("*.ini");
|
||
dir.setFilter(QDir::Files | QDir::NoSymLinks); //设置类型过滤器,只为文件格式
|
||
dir.setNameFilters(filters); //设置文件名称过滤器,只为filters格式
|
||
|
||
int dir_count = dir.count();
|
||
if(dir_count <= 0) return;
|
||
|
||
for(int i = 0; i < dir_count; i++)
|
||
{
|
||
QString file_name = dir[i].split(".ini")[0];
|
||
tableList.append(file_name);
|
||
|
||
NM_UI->comboBox->addItem(file_name, i);
|
||
}
|
||
|
||
//NM_UI->comboBox->addItems(tableList);
|
||
}
|
||
|
||
void NameMapDlg::freshTable()
|
||
{
|
||
QString tablePath = GetConfPath() + "output_nameMap\\" + NM_UI->comboBox->currentText() + ".ini";
|
||
QFile file;
|
||
file.setFileName(tablePath);
|
||
if(!file.open(QIODevice::ReadOnly | QIODevice::Text)) return;
|
||
|
||
curMap.clear();
|
||
|
||
while(!file.atEnd())
|
||
{
|
||
QString temp = QString(file.readLine());
|
||
QStringList tempList = temp.split(" ");
|
||
if(tempList.size() == 2) curMap.insert(tempList[0], tempList[1]);
|
||
}
|
||
|
||
NM_UI->tableWidget->clear();
|
||
NM_UI->tableWidget->setRowCount(curMap.size());
|
||
NM_UI->tableWidget->setColumnCount(2);
|
||
QStringList headers;
|
||
headers<<"原始名称"<<QStringLiteral("新名称");
|
||
NM_UI->tableWidget->setHorizontalHeaderLabels(headers);
|
||
QMap<QString, QString>::iterator iter = curMap.begin();
|
||
int curR = 0;
|
||
while(iter != curMap.end())
|
||
{
|
||
QTableWidgetItem *item1 = new QTableWidgetItem(iter.key());
|
||
QTableWidgetItem *item2 = new QTableWidgetItem(iter.value());
|
||
NM_UI->tableWidget->setItem(curR, 0, item1);
|
||
NM_UI->tableWidget->setItem(curR++, 1, item2);
|
||
|
||
iter++;
|
||
}
|
||
}
|
||
|
||
void NameMapDlg::freshTable(QString filePath)
|
||
{
|
||
QString tablePath = filePath;
|
||
QFile file;
|
||
file.setFileName(tablePath);
|
||
if(!file.open(QIODevice::ReadOnly | QIODevice::Text)) return;
|
||
|
||
curMap.clear();
|
||
|
||
while(!file.atEnd())
|
||
{
|
||
QString temp = QString(file.readLine());
|
||
QStringList tempList = temp.split(" ");
|
||
if(tempList.size() == 2) curMap.insert(tempList[0], tempList[1]);
|
||
}
|
||
|
||
NM_UI->tableWidget->clear();
|
||
NM_UI->tableWidget->setRowCount(curMap.size());
|
||
NM_UI->tableWidget->setColumnCount(2);
|
||
QStringList headers;
|
||
headers<<"原始名称"<<"新名称";
|
||
NM_UI->tableWidget->setHorizontalHeaderLabels(headers);
|
||
QMap<QString, QString>::iterator iter = curMap.begin();
|
||
int curR = 0;
|
||
while(iter != curMap.end())
|
||
{
|
||
QTableWidgetItem *item1 = new QTableWidgetItem(iter.key());
|
||
QTableWidgetItem *item2 = new QTableWidgetItem(iter.value());
|
||
NM_UI->tableWidget->setItem(curR, 0, item1);
|
||
NM_UI->tableWidget->setItem(curR++, 1, item2);
|
||
|
||
iter++;
|
||
}
|
||
}
|
||
|
||
void NameMapDlg::slotComboxChanged()
|
||
{
|
||
int index = NM_UI->comboBox->currentIndex();
|
||
freshTable();
|
||
}
|
||
|
||
void NameMapDlg::slotApply()
|
||
{
|
||
int rowNum = NM_UI->tableWidget->rowCount();
|
||
int colNum = NM_UI->tableWidget->columnCount();
|
||
|
||
curMap.clear();
|
||
|
||
for(int r = 0; r < rowNum; r++)
|
||
{
|
||
QString keyV, valueV;
|
||
for(int c = 0; c < colNum; c++)
|
||
{
|
||
if(NM_UI->tableWidget->item(r, c) == NULL) continue;
|
||
if(c == 0) keyV = NM_UI->tableWidget->item(r, c)->text().toUpper();
|
||
else valueV = NM_UI->tableWidget->item(r, c)->text().toUpper();
|
||
}
|
||
curMap.insert(keyV, valueV);
|
||
}
|
||
//emit signal_nameMap(curMap);
|
||
}
|
||
|
||
void NameMapDlg::slotAddRow()
|
||
{
|
||
int curRowNum = NM_UI->tableWidget->rowCount();
|
||
NM_UI->tableWidget->setRowCount(curRowNum + 1);
|
||
|
||
QTableWidgetItem *item1 = new QTableWidgetItem("oldName");
|
||
QTableWidgetItem *item2 = new QTableWidgetItem("newName");
|
||
NM_UI->tableWidget->setItem(curRowNum, 0, item1);
|
||
NM_UI->tableWidget->setItem(curRowNum, 1, item2);
|
||
}
|
||
|
||
void NameMapDlg::slotDelRow()
|
||
{
|
||
NM_UI->tableWidget->removeRow(NM_UI->tableWidget->currentRow());
|
||
}
|
||
|
||
void NameMapDlg::slotSave()
|
||
{
|
||
bool isOK;
|
||
QString fileName = QInputDialog::getText(NULL, "save file name",
|
||
"Please input the new name",
|
||
QLineEdit::Normal,
|
||
"表格名称",
|
||
&isOK);
|
||
if(isOK && fileName != "")
|
||
{
|
||
QString roadID_Path = GetConfPath() + "output_nameMap\\" + fileName + ".ini";
|
||
QFile file(roadID_Path);
|
||
if(file.open(QIODevice::WriteOnly | QIODevice::Text)){
|
||
QString allText;
|
||
file.seek(0);
|
||
|
||
int rowNum = NM_UI->tableWidget->rowCount();
|
||
int colNum = NM_UI->tableWidget->columnCount();
|
||
|
||
for(int r = 0; r < rowNum; r++)
|
||
{
|
||
QString keyV, valueV;
|
||
for(int c = 0; c < colNum; c++)
|
||
{
|
||
if(NM_UI->tableWidget->item(r, c) == NULL) continue;
|
||
if(c == 0) keyV = NM_UI->tableWidget->item(r, c)->text().toUpper();
|
||
else valueV = NM_UI->tableWidget->item(r, c)->text().toUpper();
|
||
}
|
||
allText += keyV + " " + valueV + "\n";
|
||
}
|
||
|
||
QTextStream outText(&file);
|
||
outText << allText;
|
||
}file.close();
|
||
}
|
||
|
||
freshTableList();
|
||
}
|
||
|
||
void NameMapDlg::slotLoad()
|
||
{
|
||
QFileDialog *fileDlg = new QFileDialog(this);
|
||
fileDlg->setWindowTitle("选择文件");
|
||
fileDlg->setDirectory("C:\\Users\\Administrator\\Desktop");
|
||
fileDlg->setNameFilter(tr("File(*.ini*)"));
|
||
fileDlg->setViewMode(QFileDialog::Detail);
|
||
QStringList fileNames;
|
||
if(!fileDlg->exec()) return;
|
||
fileNames = fileDlg->selectedFiles();
|
||
freshTable(fileNames[0]);
|
||
}
|
||
|
||
void NameMapDlg::slotDownLoad()
|
||
{
|
||
QString file_path = QFileDialog::getSaveFileName(NULL,
|
||
"save file",
|
||
"C:\\Users\\Administrator\\Desktop" ,
|
||
"ini files (*.ini);;all files(*.*)");
|
||
|
||
}
|
||
|
||
QMap<QString, QString> NameMapDlg::getNameMap()
|
||
{
|
||
return curMap;
|
||
}
|