#include "FileManagerMenu.h" #include #include #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" #include "workspace/FileEntry.h" #include "utils/FileUtils.h" #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); // 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); } 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"); WorkSpace* workspace = WorkSpaceManager::Get().GetCurrent(); if (nullptr == workspace) { LOG_WARN("workspace is nullptr"); QMessageBox::warning(&MainFrame::Get(), tr("warning"), tr("workspace is nullptr")); return; } const QString name = workspace->GetName(); QString dytFile = workspace->GetPath(); LOG_INFO("save {} dyt file: {}", name.toLocal8Bit().constData(), dytFile.toLocal8Bit().constData()); bool success = workspace->Save(dytFile); LOG_INFO("save dyt: {}", success); } 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; } }