From 72846f473350352ed5a34f2b1c416eb17f6b2626 Mon Sep 17 00:00:00 2001 From: = Date: Wed, 4 Jun 2025 22:14:24 -0400 Subject: [PATCH] Update mainwindow, add highlighting, and fix viewer logic. --- app/mainwindow.cpp | 55 ++++++++++++++++++++-------------------------- 1 file changed, 24 insertions(+), 31 deletions(-) diff --git a/app/mainwindow.cpp b/app/mainwindow.cpp index 8ce0da2..07605bc 100644 --- a/app/mainwindow.cpp +++ b/app/mainwindow.cpp @@ -224,12 +224,13 @@ MainWindow::MainWindow(QWidget *parent) QString fileStem = image->materialName; for (int i = 0; i < ui->tabWidget->count(); i++) { if (ui->tabWidget->tabText(i) == fileStem) { + delete mImageWidget; return; } } ui->tabWidget->addTab(mImageWidget, fileStem); - ui->tabWidget->setTabIcon(ui->tabWidget->count() - 1, QIcon(":/icons/icons/Icon_Image.png")); + ui->tabWidget->setTabIcon(ui->tabWidget->count() - 1, ZoneFile::AssetTypeToIcon(ASSET_IMAGE)); ui->tabWidget->setCurrentIndex(ui->tabWidget->count() - 1); }); @@ -237,24 +238,6 @@ MainWindow::MainWindow(QWidget *parent) Q_UNUSED(menu); }); - connect(mTreeWidget, &XTreeWidget::DDSFileSelected, this, [this](std::shared_ptr ddsFile, const QString aParentName) { - DDSViewer *ddsViewer = new DDSViewer(this); - ddsViewer->setAcceptDrops(false); - ddsViewer->SetDDSFile(ddsFile); - ddsViewer->setProperty("PARENT_NAME", QVariant::fromValue(aParentName)); - - QString fileStem = ddsFile->fileStem + ".dds"; - for (int i = 0; i < ui->tabWidget->count(); i++) { - if (ui->tabWidget->tabText(i) == fileStem) { - return; - } - } - - ui->tabWidget->addTab(ddsViewer, fileStem); - ui->tabWidget->setTabIcon(ui->tabWidget->count() - 1, QIcon(":/icons/icons/Icon_DDSFile.png")); - ui->tabWidget->setCurrentIndex(ui->tabWidget->count() - 1); - }); - connect(mTreeWidget, &XTreeWidget::MaterialSelected, this, [this](std::shared_ptr material, const QString aParentName) { MaterialViewer *matViewer = new MaterialViewer(this); matViewer->setAcceptDrops(false); @@ -264,12 +247,13 @@ MainWindow::MainWindow(QWidget *parent) QString fileStem = material->name; for (int i = 0; i < ui->tabWidget->count(); i++) { if (ui->tabWidget->tabText(i) == fileStem) { + delete matViewer; return; } } ui->tabWidget->addTab(matViewer, fileStem); - ui->tabWidget->setTabIcon(ui->tabWidget->count() - 1, QIcon(":/icons/icons/Icon_Material.png")); + ui->tabWidget->setTabIcon(ui->tabWidget->count() - 1, ZoneFile::AssetTypeToIcon(ASSET_MATERIAL)); ui->tabWidget->setCurrentIndex(ui->tabWidget->count() - 1); }); @@ -282,12 +266,13 @@ MainWindow::MainWindow(QWidget *parent) QString fileStem = ddsFile->fileStem + ".dds"; for (int i = 0; i < ui->tabWidget->count(); i++) { if (ui->tabWidget->tabText(i) == fileStem) { + delete ddsViewer; return; } } ui->tabWidget->addTab(ddsViewer, fileStem); - ui->tabWidget->setTabIcon(ui->tabWidget->count() - 1, QIcon(":/icons/icons/Icon_DDSFile.png")); + ui->tabWidget->setTabIcon(ui->tabWidget->count() - 1, ZoneFile::AssetTypeToIcon(ASSET_IMAGE)); ui->tabWidget->setCurrentIndex(ui->tabWidget->count() - 1); }); @@ -300,12 +285,13 @@ MainWindow::MainWindow(QWidget *parent) QString fileStem = iwiFile->fileStem + ".iwi"; for (int i = 0; i < ui->tabWidget->count(); i++) { if (ui->tabWidget->tabText(i) == fileStem) { + delete iwiViewer; return; } } ui->tabWidget->addTab(iwiViewer, fileStem); - ui->tabWidget->setTabIcon(ui->tabWidget->count() - 1, QIcon(":/icons/icons/Icon_IWIFile.png")); + ui->tabWidget->setTabIcon(ui->tabWidget->count() - 1, ZoneFile::AssetTypeToIcon(ASSET_IMAGE)); ui->tabWidget->setCurrentIndex(ui->tabWidget->count() - 1); }); @@ -317,13 +303,14 @@ MainWindow::MainWindow(QWidget *parent) QString fileStem = aFastFile->GetStem(); for (int i = 0; i < ui->tabWidget->count(); i++) { - if (ui->tabWidget->tabText(i) == fileStem + ".ff") { + if (ui->tabWidget->tabText(i) == fileStem) { + delete fastFileViewer; return; } } ui->tabWidget->addTab(fastFileViewer, fileStem); - ui->tabWidget->setTabIcon(ui->tabWidget->count() - 1, QIcon(":/icons/icons/Icon_FastFile.png")); + ui->tabWidget->setTabIcon(ui->tabWidget->count() - 1, ZoneFile::AssetTypeToIcon(ASSET_FAST_FILE)); ui->tabWidget->setCurrentIndex(ui->tabWidget->count() - 1); }); @@ -333,9 +320,10 @@ MainWindow::MainWindow(QWidget *parent) zoneFileViewer->SetZoneFile(aZoneFile); zoneFileViewer->setProperty("PARENT_NAME", QVariant::fromValue(aParentName)); - QString fileStem = aZoneFile->GetStem() + ".zone"; + QString fileStem = aZoneFile->GetBaseStem() + ".zone"; for (int i = 0; i < ui->tabWidget->count(); i++) { if (ui->tabWidget->tabText(i) == fileStem) { + delete zoneFileViewer; return; } } @@ -353,7 +341,7 @@ MainWindow::MainWindow(QWidget *parent) scrollArea->setWidget(containerWidget); ui->tabWidget->addTab(scrollArea, fileStem); - ui->tabWidget->setTabIcon(ui->tabWidget->count() - 1, QIcon(":/icons/icons/Icon_ZoneFile.png")); + ui->tabWidget->setTabIcon(ui->tabWidget->count() - 1, ZoneFile::AssetTypeToIcon(ASSET_ZONE_FILE)); ui->tabWidget->setCurrentIndex(ui->tabWidget->count() - 1); }); @@ -366,12 +354,13 @@ MainWindow::MainWindow(QWidget *parent) QString fileStem = aZoneFile->GetStem() + ".str"; for (int i = 0; i < ui->tabWidget->count(); i++) { if (ui->tabWidget->tabText(i) == fileStem) { + delete localStrViewer; return; } } ui->tabWidget->addTab(localStrViewer, fileStem); - ui->tabWidget->setTabIcon(ui->tabWidget->count() - 1, QIcon(":/icons/icons/Icon_String.png")); + ui->tabWidget->setTabIcon(ui->tabWidget->count() - 1, ZoneFile::AssetTypeToIcon(ASSET_LOCAL_STRING)); ui->tabWidget->setCurrentIndex(ui->tabWidget->count() - 1); }); @@ -384,12 +373,13 @@ MainWindow::MainWindow(QWidget *parent) QString fileStem = aTechSet->name; for (int i = 0; i < ui->tabWidget->count(); i++) { if (ui->tabWidget->tabText(i) == fileStem) { + delete techSetViewer; return; } } ui->tabWidget->addTab(techSetViewer, aTechSet->name); - ui->tabWidget->setTabIcon(ui->tabWidget->count() - 1, QIcon(":/icons/icons/Icon_TechSetFile.png")); + ui->tabWidget->setTabIcon(ui->tabWidget->count() - 1, ZoneFile::AssetTypeToIcon(ASSET_TECH_SET)); ui->tabWidget->setCurrentIndex(ui->tabWidget->count() - 1); }); @@ -402,12 +392,13 @@ MainWindow::MainWindow(QWidget *parent) QString fileStem = aStrTable->name; for (int i = 0; i < ui->tabWidget->count(); i++) { if (ui->tabWidget->tabText(i) == fileStem) { + delete strTableViewer; return; } } ui->tabWidget->addTab(strTableViewer, fileStem); - ui->tabWidget->setTabIcon(ui->tabWidget->count() - 1, QIcon(":/icons/icons/Icon_StringTable.png")); + ui->tabWidget->setTabIcon(ui->tabWidget->count() - 1, ZoneFile::AssetTypeToIcon(ASSET_STRING_TABLE)); ui->tabWidget->setCurrentIndex(ui->tabWidget->count() - 1); }); @@ -420,12 +411,13 @@ MainWindow::MainWindow(QWidget *parent) QString fileStem = aSound->path.split('/').last(); for (int i = 0; i < ui->tabWidget->count(); i++) { if (ui->tabWidget->tabText(i) == fileStem) { + delete soundViewer; return; } } ui->tabWidget->addTab(soundViewer, fileStem); - ui->tabWidget->setTabIcon(ui->tabWidget->count() - 1, QIcon(":/icons/icons/Icon_Sound.png")); + ui->tabWidget->setTabIcon(ui->tabWidget->count() - 1, ZoneFile::AssetTypeToIcon(ASSET_SOUND)); ui->tabWidget->setCurrentIndex(ui->tabWidget->count() - 1); }); @@ -522,13 +514,14 @@ void MainWindow::Reset() { and opens the selected file. */ bool MainWindow::OpenFastFile(const QString aFastFilePath) { - const QString fastFileStem = aFastFilePath.section("/", -1, -1).section('.', 0, 0); + const QString fastFileStem = aFastFilePath.section("/", -1, -1); if (mTreeWidget->HasFastFile(fastFileStem)) { LogManager::instance().addError("Can't add duplicate file!"); return false; } std::shared_ptr fastFile = FastFileFactory::Create(aFastFilePath); + fastFile->SetStem(fastFileStem); mTreeWidget->AddFastFile(fastFile); // Open zone file after decompressing ff and writing