Manual-Labeling-Tool/Manual-Labeling-Client/Manual-Label-Tool-Widget/LAMPDataManagerDialog.cpp

282 lines
7.6 KiB
C++
Raw Normal View History

2025-11-20 09:32:46 +00:00
#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()
{
}