DYTSrouce/src/ui/Menu/FileManagerMenu.cpp

171 lines
6.0 KiB
C++
Raw Normal View History

2025-01-04 04:12:51 +00:00
#include "FileManagerMenu.h"
#include <QFileDialog>
#include <QMessageBox>
#include "app/Application.h"
#include "common/RecourceHelper.h"
#include "ui/MainFrame.h"
#include "ui/WorkSpace/WorkSpaceDlg.h"
#include "common/SpdLogger.h"
#include "workspace/WorkSpace.h"
#include "workspace/WorkSpaceManager.h"
2025-10-12 14:14:16 +00:00
#include "workspace/FileEntry.h"
#include "utils/FileUtils.h"
2025-01-04 04:12:51 +00:00
#include "ui_FileManagerMenu.h"
FileManagerMenu::FileManagerMenu(QWidget* parent)
: QWidget(parent)
, ui(new Ui::FileManagerMenu) {
ui->setupUi(this);
InitConnect();
}
FileManagerMenu::~FileManagerMenu() {
delete ui;
}
void FileManagerMenu::InitConnect() {
connect(ui->menu_new_file, &QToolButton::clicked, this, &FileManagerMenu::NewWorkSpace);
connect(ui->menu_open_file, &QToolButton::clicked, this, &FileManagerMenu::OpenWorkSpace);
connect(ui->menu_save_file, &QToolButton::clicked, this, &FileManagerMenu::SaveWorkSpace);
2025-10-12 14:14:16 +00:00
// add file entity buttons
connect(ui->menu_wave_file, &QToolButton::clicked, this, &FileManagerMenu::AddWaveFile);
connect(ui->menu_surface_file, &QToolButton::clicked, this, &FileManagerMenu::AddSurfaceFile);
connect(ui->menu_table_file, &QToolButton::clicked, this, &FileManagerMenu::AddTableFile);
connect(ui->menu_light_file, &QToolButton::clicked, this, &FileManagerMenu::AddLightFile);
2025-01-04 04:12:51 +00:00
}
void FileManagerMenu::NewWorkSpace() {
LOG_INFO("click newworkspace");
WorkSpaceDlg* dlg = new WorkSpaceDlg(&MainFrame::Get());
dlg->exec();
}
void FileManagerMenu::OpenWorkSpace() {
LOG_INFO("click newworkspace");
QString selfilter = tr("Dyt (*.dyt)");
const QString workspacePath = Application::GetWorkSpacePath();
QString dytFile = QFileDialog::getOpenFileName(&MainFrame::Get(), tr("open dyt file"), workspacePath,
tr("Dyt (*.dyt);;All files (*.*)"),
&selfilter);
LOG_INFO("user select file: {}", dytFile.toStdString());
if (dytFile.isEmpty()) {
return;
}
emit LoadDyt(dytFile);
}
void FileManagerMenu::SaveWorkSpace() {
LOG_INFO("click SaveWorkSpace");
2025-01-04 04:12:51 +00:00
WorkSpace* workspace = WorkSpaceManager::Get().GetCurrent();
if (nullptr == workspace) {
LOG_WARN("workspace is nullptr");
QMessageBox::warning(&MainFrame::Get(), tr("warning"), tr("workspace is nullptr"));
2025-01-04 04:12:51 +00:00
return;
}
const QString name = workspace->GetName();
QString dytFile = workspace->GetPath();
LOG_INFO("save {} dyt file: {}", name.toLocal8Bit().constData(),
dytFile.toLocal8Bit().constData());
2025-01-04 04:12:51 +00:00
bool success = workspace->Save(dytFile);
LOG_INFO("save dyt: {}", success);
}
2025-10-12 14:14:16 +00:00
void FileManagerMenu::AddWaveFile() {
auto current = WorkSpaceManager::Get().GetCurrent();
if (nullptr == current) {
QMessageBox::information(&MainFrame::Get(), tr("prompt"), tr("please create workspace first"));
return;
}
switch (current->CreateFileEntry(FileEntryType::Curve)) {
case WorkSpace::FileEntryResult::Ok:
break;
case WorkSpace::FileEntryResult::LimitExceeded:
QMessageBox::information(&MainFrame::Get(), tr("prompt"), tr("up to 9 files allowed for this type"));
break;
case WorkSpace::FileEntryResult::Duplicate:
QMessageBox::information(&MainFrame::Get(), tr("prompt"), tr("file already added for this type"));
break;
case WorkSpace::FileEntryResult::CopyFailed:
QMessageBox::information(&MainFrame::Get(), tr("prompt"), tr("copy file failed"));
break;
}
}
void FileManagerMenu::AddSurfaceFile() {
auto current = WorkSpaceManager::Get().GetCurrent();
if (nullptr == current) {
QMessageBox::information(&MainFrame::Get(), tr("prompt"), tr("please create workspace first"));
return;
}
switch (current->CreateFileEntry(FileEntryType::Surface)) {
case WorkSpace::FileEntryResult::Ok:
break;
case WorkSpace::FileEntryResult::LimitExceeded:
QMessageBox::information(&MainFrame::Get(), tr("prompt"), tr("up to 9 files allowed for this type"));
break;
case WorkSpace::FileEntryResult::Duplicate:
QMessageBox::information(&MainFrame::Get(), tr("prompt"), tr("file already added for this type"));
break;
case WorkSpace::FileEntryResult::CopyFailed:
QMessageBox::information(&MainFrame::Get(), tr("prompt"), tr("copy file failed"));
break;
}
}
void FileManagerMenu::AddTableFile() {
auto current = WorkSpaceManager::Get().GetCurrent();
if (nullptr == current) {
QMessageBox::information(&MainFrame::Get(), tr("prompt"), tr("please create workspace first"));
return;
}
switch (current->CreateFileEntry(FileEntryType::Table)) {
case WorkSpace::FileEntryResult::Ok:
break;
case WorkSpace::FileEntryResult::LimitExceeded:
QMessageBox::information(&MainFrame::Get(), tr("prompt"), tr("up to 9 files allowed for this type"));
break;
case WorkSpace::FileEntryResult::Duplicate:
QMessageBox::information(&MainFrame::Get(), tr("prompt"), tr("file already added for this type"));
break;
case WorkSpace::FileEntryResult::CopyFailed:
QMessageBox::information(&MainFrame::Get(), tr("prompt"), tr("copy file failed"));
break;
}
}
void FileManagerMenu::AddLightFile() {
auto current = WorkSpaceManager::Get().GetCurrent();
if (nullptr == current) {
QMessageBox::information(&MainFrame::Get(), tr("prompt"), tr("please create workspace first"));
return;
}
switch (current->CreateFileEntry(FileEntryType::Light)) {
case WorkSpace::FileEntryResult::Ok:
break;
case WorkSpace::FileEntryResult::LimitExceeded:
QMessageBox::information(&MainFrame::Get(), tr("prompt"), tr("up to 9 files allowed for this type"));
break;
case WorkSpace::FileEntryResult::Duplicate:
QMessageBox::information(&MainFrame::Get(), tr("prompt"), tr("file already added for this type"));
break;
case WorkSpace::FileEntryResult::CopyFailed:
QMessageBox::information(&MainFrame::Get(), tr("prompt"), tr("copy file failed"));
break;
}
}