282 lines
7.6 KiB
C++
282 lines
7.6 KiB
C++
|
|
#include "LAMPDataManagerDialog.h"
|
|||
|
|
#include <QFileInfo>
|
|||
|
|
#include <QHeaderView>
|
|||
|
|
#include <QToolButton>
|
|||
|
|
#include <QSpacerItem>
|
|||
|
|
#include <QCloseEvent>
|
|||
|
|
#include "ManualLabelToolWidget.h"
|
|||
|
|
#include "WidgetSettingClass.h"
|
|||
|
|
#include <QFileDialog>
|
|||
|
|
#include <QDialog>
|
|||
|
|
#include "LampDataItem.h"
|
|||
|
|
#include "LampWindDataItem.h"
|
|||
|
|
#include <filesystem>
|
|||
|
|
|
|||
|
|
LampDataManager::LampDataManager(ManualLabelToolWidget* InmainWidget, QWidget* parent)
|
|||
|
|
: QDialog(parent),
|
|||
|
|
mainWidget(InmainWidget)
|
|||
|
|
{
|
|||
|
|
setupUI();
|
|||
|
|
clearCurrentFile();
|
|||
|
|
dataitems.clear();
|
|||
|
|
this->setWindowTitle(u8"<EFBFBD><EFBFBD><EFBFBD>ݹ<EFBFBD><EFBFBD><EFBFBD>");
|
|||
|
|
this->resize(500, 600);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
LampDataManager::~LampDataManager()
|
|||
|
|
{
|
|||
|
|
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
void LampDataManager::LoadRasterFile(QString RasterPath)
|
|||
|
|
{
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
void LampDataManager::showtreeWidgetBtnClicked()
|
|||
|
|
{
|
|||
|
|
if (isShowTreeWidgetflag) {
|
|||
|
|
//
|
|||
|
|
this->datatreeWidget->setHidden(true);
|
|||
|
|
isShowTreeWidgetflag = false;
|
|||
|
|
showtreeWidgetBtn->setText(tr(u8"չ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>б<EFBFBD>"));
|
|||
|
|
}
|
|||
|
|
else {
|
|||
|
|
this->datatreeWidget->setHidden(false);
|
|||
|
|
isShowTreeWidgetflag = true;
|
|||
|
|
showtreeWidgetBtn->setText(tr(u8"<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>б<EFBFBD>"));
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
void LampDataManager::showtextEditBtnClicked()
|
|||
|
|
{
|
|||
|
|
if (isShowExtendWidgetflag) {
|
|||
|
|
this->textEdit->setHidden(true);
|
|||
|
|
isShowExtendWidgetflag = false;
|
|||
|
|
showtextEditBtn->setText(tr(u8"չ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϸ<EFBFBD><EFBFBD>Ϣ"));
|
|||
|
|
}
|
|||
|
|
else {
|
|||
|
|
this->textEdit->setHidden(false);
|
|||
|
|
isShowExtendWidgetflag = true;
|
|||
|
|
showtextEditBtn->setText(tr(u8"<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϸ<EFBFBD><EFBFBD>Ϣ"));
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
void LampDataManager::openRasterFile()
|
|||
|
|
{
|
|||
|
|
QString lastFileDialogPath = WidgetSettingClass::instance().getLastFileDialogPath();
|
|||
|
|
if (lastFileDialogPath.isEmpty()) {
|
|||
|
|
lastFileDialogPath = ".";
|
|||
|
|
}
|
|||
|
|
// <20><><EFBFBD><EFBFBD>Ӱ<EFBFBD><D3B0>
|
|||
|
|
// 2. ѡ<><D1A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>
|
|||
|
|
QString lampwindPath = QFileDialog::getOpenFileName(
|
|||
|
|
this,
|
|||
|
|
tr(u8"<EFBFBD><EFBFBD>ѡ<EFBFBD><EFBFBD>Ӱ<EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>"),
|
|||
|
|
lastFileDialogPath,
|
|||
|
|
tr(LAMPWINDDATAFILEFILTER)
|
|||
|
|
);
|
|||
|
|
if (std::filesystem::exists(lampwindPath.toUtf8().constData())) {
|
|||
|
|
WidgetSettingClass::instance().setLastFileDialogPath(lampwindPath);
|
|||
|
|
this->openLampWindFile(lampwindPath);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
}
|
|||
|
|
void LampDataManager::openLampWindDataFile()
|
|||
|
|
{
|
|||
|
|
|
|||
|
|
QString lastFileDialogPath = WidgetSettingClass::instance().getLastFileDialogPath();
|
|||
|
|
if (lastFileDialogPath.isEmpty()) {
|
|||
|
|
lastFileDialogPath = ".";
|
|||
|
|
}
|
|||
|
|
// <20><><EFBFBD><EFBFBD>Ӱ<EFBFBD><D3B0>
|
|||
|
|
// 2. ѡ<><D1A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>
|
|||
|
|
QString lampwindPath = QFileDialog::getOpenFileName(
|
|||
|
|
this,
|
|||
|
|
tr(u8"<EFBFBD><EFBFBD>ѡ<EFBFBD><EFBFBD><EFBFBD>糡<EFBFBD>ļ<EFBFBD>"),
|
|||
|
|
lastFileDialogPath,
|
|||
|
|
tr(LAMPWINDDATAFILEFILTER)
|
|||
|
|
);
|
|||
|
|
|
|||
|
|
if (std::filesystem::exists(lampwindPath.toUtf8().constData())) {
|
|||
|
|
WidgetSettingClass::instance().setLastFileDialogPath(lampwindPath);
|
|||
|
|
this->openLampWindFile(lampwindPath);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
void LampDataManager::closeEvent(QCloseEvent* event)
|
|||
|
|
{
|
|||
|
|
event->ignore();
|
|||
|
|
this->hide();
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
void LampDataManager::reject()
|
|||
|
|
{
|
|||
|
|
this->hide();
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
void LampDataManager::setupUI()
|
|||
|
|
{
|
|||
|
|
// 4. <20><><EFBFBD>ò<EFBFBD><C3B2><EFBFBD> - <20><><EFBFBD>ǽ<EFBFBD><C7BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɵ<EFBFBD><C9B5>Ի<EFBFBD><D4BB><EFBFBD><EFBFBD>Ĺؼ<C4B9><D8BC><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
QVBoxLayout* layout = new QVBoxLayout(this);
|
|||
|
|
fileToolbar = new QToolBar(this);
|
|||
|
|
showtreeWidgetBtn = new QPushButton(tr(u8"<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>б<EFBFBD>"), this);
|
|||
|
|
datatreeWidget = new QTreeWidget(this);
|
|||
|
|
showtextEditBtn = new QPushButton(tr(u8"<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϸ<EFBFBD><EFBFBD>Ϣ"), this);
|
|||
|
|
textEdit = new QTextEdit(this);
|
|||
|
|
layout->addWidget(fileToolbar); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӵ<EFBFBD><D3B5><EFBFBD><EFBFBD>ֶ<EFBFBD><D6B6><EFBFBD>
|
|||
|
|
layout->addWidget(showtreeWidgetBtn); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӵ<EFBFBD><D3B5><EFBFBD><EFBFBD>ֶ<EFBFBD><D6B6><EFBFBD>
|
|||
|
|
layout->addWidget(datatreeWidget); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӵ<EFBFBD><D3B5><EFBFBD><EFBFBD>ֶ<EFBFBD><D6B6><EFBFBD>
|
|||
|
|
layout->addWidget(showtextEditBtn); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӵ<EFBFBD><D3B5><EFBFBD><EFBFBD>ֶ<EFBFBD><D6B6><EFBFBD>
|
|||
|
|
layout->addWidget(textEdit); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӵ<EFBFBD><D3B5><EFBFBD><EFBFBD>ֶ<EFBFBD><D6B6><EFBFBD>
|
|||
|
|
layout->setAlignment(Qt::AlignTop);
|
|||
|
|
setLayout(layout);
|
|||
|
|
|
|||
|
|
isShowTreeWidgetflag = true;
|
|||
|
|
isShowExtendWidgetflag = true;
|
|||
|
|
|
|||
|
|
datatreeWidget->setColumnCount(2); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
datatreeWidget->setHeaderLabels(QStringList() << u8"<EFBFBD><EFBFBD><EFBFBD><EFBFBD>" << u8"<EFBFBD><EFBFBD><EFBFBD><EFBFBD>"); // <20><><EFBFBD><EFBFBD><EFBFBD>б<EFBFBD><D0B1><EFBFBD>
|
|||
|
|
datatreeWidget->setColumnWidth(0, 150);
|
|||
|
|
|
|||
|
|
|
|||
|
|
LoadFileAction = fileToolbar->addAction(tr(u8"<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>"));
|
|||
|
|
//openFileAction = fileToolbar->addAction(tr(u8"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>"));
|
|||
|
|
removeFileAction = fileToolbar->addAction(tr(u8"<EFBFBD>Ƴ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>"));
|
|||
|
|
removeAllFileAction = fileToolbar->addAction(tr(u8"<EFBFBD>Ƴ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>"));
|
|||
|
|
|
|||
|
|
|
|||
|
|
QObject::connect(this->showtreeWidgetBtn, SIGNAL(clicked()), this, SLOT(showtreeWidgetBtnClicked()));
|
|||
|
|
QObject::connect(this->showtextEditBtn, SIGNAL(clicked()), this, SLOT(showtextEditBtnClicked()));
|
|||
|
|
QObject::connect(this->removeFileAction, SIGNAL(triggered()), this, SLOT(removeNodeItem()));
|
|||
|
|
QObject::connect(this->removeAllFileAction, SIGNAL(triggered()), this, SLOT(removeALLNodeItems()));
|
|||
|
|
QObject::connect(this->LoadFileAction, SIGNAL(triggered()), this, SLOT(onShowData()));
|
|||
|
|
QObject::connect(this->datatreeWidget, SIGNAL(currentItemChanged(QTreeWidgetItem*, QTreeWidgetItem*)), this, SLOT(oncurrentItemChanged(QTreeWidgetItem*, QTreeWidgetItem*)));
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
void LampDataManager::openLampWindFile(QString winddatapath)
|
|||
|
|
{
|
|||
|
|
LampWindDataItem* item = new LampWindDataItem(this->datatreeWidget);
|
|||
|
|
item->OpenFileData(winddatapath);
|
|||
|
|
this->AddDataNode(item);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
void LampDataManager::AddDataNode(LampDataItem* item)
|
|||
|
|
{
|
|||
|
|
item->InitTreeNode();
|
|||
|
|
this->dataitems.append(item);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
void LampDataManager::oncurrentItemChanged(QTreeWidgetItem* current, QTreeWidgetItem* previous)
|
|||
|
|
{
|
|||
|
|
QTreeWidgetItem* currentItem = datatreeWidget->currentItem();
|
|||
|
|
if (currentItem == nullptr) return;
|
|||
|
|
|
|||
|
|
QTreeWidgetItem* rootnode = nullptr;
|
|||
|
|
|
|||
|
|
if (currentItem->parent() == nullptr) {
|
|||
|
|
rootnode = currentItem;
|
|||
|
|
}
|
|||
|
|
else {
|
|||
|
|
// <20><>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD><EFBFBD>ӽڵ<D3BD>
|
|||
|
|
QTreeWidgetItem* parent = currentItem->parent();
|
|||
|
|
rootnode = parent;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
if (rootnode) {
|
|||
|
|
LampDataItem* lampItem = static_cast<LampDataItem*>(rootnode);
|
|||
|
|
QString context = lampItem->getDescription();
|
|||
|
|
this->textEdit->clear();
|
|||
|
|
this->textEdit->setText(context);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
void LampDataManager::removeNodeItem()
|
|||
|
|
{
|
|||
|
|
QTreeWidgetItem* currentItem = datatreeWidget->currentItem();
|
|||
|
|
if (currentItem == nullptr) return;
|
|||
|
|
|
|||
|
|
QTreeWidgetItem* rootnode = nullptr;
|
|||
|
|
|
|||
|
|
if (currentItem->parent() == nullptr) {
|
|||
|
|
rootnode = currentItem;
|
|||
|
|
}
|
|||
|
|
else {
|
|||
|
|
// <20><>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD><EFBFBD>ӽڵ<D3BD>
|
|||
|
|
QTreeWidgetItem* parent = currentItem->parent();
|
|||
|
|
rootnode = parent;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
if (rootnode) {
|
|||
|
|
LampDataItem* lampItem = static_cast<LampDataItem*>(rootnode);
|
|||
|
|
int32_t hashcode = lampItem->getHash();
|
|||
|
|
for (int32_t i = 0; i < this->dataitems.count(); i++) {
|
|||
|
|
if (this->dataitems[i]->getHash() == hashcode) {
|
|||
|
|
this->dataitems.removeAt(i);
|
|||
|
|
break;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
int index = datatreeWidget->indexOfTopLevelItem(rootnode);
|
|||
|
|
if (index >= 0) {
|
|||
|
|
delete datatreeWidget->takeTopLevelItem(index);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
this->textEdit->clear();
|
|||
|
|
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
void LampDataManager::removeALLNodeItems()
|
|||
|
|
{
|
|||
|
|
if (!datatreeWidget) return;
|
|||
|
|
|
|||
|
|
// ѭ<><D1AD>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>ɾ<EFBFBD><C9BE>ÿһ<C3BF><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڵ<EFBFBD>
|
|||
|
|
while (datatreeWidget->topLevelItemCount() > 0) {
|
|||
|
|
QTreeWidgetItem* item = datatreeWidget->takeTopLevelItem(0); // ȡ<><C8A1><EFBFBD><EFBFBD>0<EFBFBD><30><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڵ<EFBFBD>
|
|||
|
|
if (item) {
|
|||
|
|
delete item; // <20><><EFBFBD><EFBFBD><EFBFBD>ֶ<EFBFBD>ɾ<EFBFBD><C9BE><EFBFBD><EFBFBD>takeTopLevelItem<65><6D><EFBFBD>Ƴ<EFBFBD><C6B3><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
this->dataitems.clear();
|
|||
|
|
this->textEdit->clear();
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
void LampDataManager::onShowData()
|
|||
|
|
{
|
|||
|
|
// <20><><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD>ѡ<EFBFBD><EFBFBD><F1B2A2BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
for (int32_t i = 0; i < datatreeWidget->topLevelItemCount(); i++) {
|
|||
|
|
QTreeWidgetItem* item = datatreeWidget->topLevelItem(i);
|
|||
|
|
LampDataItem* lampItem = static_cast<LampDataItem*>(item);
|
|||
|
|
lampItem->showData(mainWidget);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
void LampDataManager::loadFile(const QString& filePath)
|
|||
|
|
{
|
|||
|
|
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
void LampDataManager::clearCurrentFile()
|
|||
|
|
{
|
|||
|
|
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
void LampDataManager::onLoadDataClicked()
|
|||
|
|
{
|
|||
|
|
|
|||
|
|
}
|
|||
|
|
|