mirror of
https://github.com/redstrate/Novus.git
synced 2025-04-23 04:27:45 +00:00
Reload models when importing via Penumbra HTTP API
This commit is contained in:
parent
e9b02d53f1
commit
020216b13d
7 changed files with 47 additions and 3 deletions
|
@ -11,6 +11,7 @@ target_sources(novus-armoury
|
||||||
include/gearlistwidget.h
|
include/gearlistwidget.h
|
||||||
include/gearview.h
|
include/gearview.h
|
||||||
include/mainwindow.h
|
include/mainwindow.h
|
||||||
|
include/penumbraapi.h
|
||||||
include/settingswindow.h
|
include/settingswindow.h
|
||||||
include/singlegearview.h
|
include/singlegearview.h
|
||||||
|
|
||||||
|
@ -22,6 +23,7 @@ target_sources(novus-armoury
|
||||||
src/gearview.cpp
|
src/gearview.cpp
|
||||||
src/main.cpp
|
src/main.cpp
|
||||||
src/mainwindow.cpp
|
src/mainwindow.cpp
|
||||||
|
src/penumbraapi.cpp
|
||||||
src/settingswindow.cpp
|
src/settingswindow.cpp
|
||||||
src/singlegearview.cpp)
|
src/singlegearview.cpp)
|
||||||
target_include_directories(novus-armoury
|
target_include_directories(novus-armoury
|
||||||
|
@ -40,6 +42,7 @@ target_link_libraries(novus-armoury
|
||||||
imgui
|
imgui
|
||||||
Qt6::Core
|
Qt6::Core
|
||||||
Qt6::Widgets
|
Qt6::Widgets
|
||||||
Qt6::Concurrent)
|
Qt6::Concurrent
|
||||||
|
Qt6::Network)
|
||||||
|
|
||||||
install(TARGETS novus-armoury ${KF${QT_MAJOR_VERSION}_INSTALL_TARGETS_DEFAULT_ARGS})
|
install(TARGETS novus-armoury ${KF${QT_MAJOR_VERSION}_INSTALL_TARGETS_DEFAULT_ARGS})
|
||||||
|
|
|
@ -14,6 +14,7 @@
|
||||||
|
|
||||||
struct GameData;
|
struct GameData;
|
||||||
class FileCache;
|
class FileCache;
|
||||||
|
class PenumbraApi;
|
||||||
|
|
||||||
class MainWindow : public NovusMainWindow
|
class MainWindow : public NovusMainWindow
|
||||||
{
|
{
|
||||||
|
@ -31,4 +32,5 @@ private:
|
||||||
|
|
||||||
GameData &data;
|
GameData &data;
|
||||||
FileCache cache;
|
FileCache cache;
|
||||||
|
PenumbraApi *m_api = nullptr;
|
||||||
};
|
};
|
18
armoury/include/penumbraapi.h
Normal file
18
armoury/include/penumbraapi.h
Normal file
|
@ -0,0 +1,18 @@
|
||||||
|
// SPDX-FileCopyrightText: 2023 Joshua Goins <josh@redstrate.com>
|
||||||
|
// SPDX-License-Identifier: GPL-3.0-or-later
|
||||||
|
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include <QNetworkAccessManager>
|
||||||
|
|
||||||
|
class PenumbraApi : public QObject
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
explicit PenumbraApi(QObject *parent = nullptr);
|
||||||
|
|
||||||
|
public Q_SLOTS:
|
||||||
|
void redrawAll();
|
||||||
|
|
||||||
|
private:
|
||||||
|
QNetworkAccessManager *m_mgr = nullptr;
|
||||||
|
};
|
|
@ -29,6 +29,7 @@ Q_SIGNALS:
|
||||||
void levelOfDetailChanged();
|
void levelOfDetailChanged();
|
||||||
|
|
||||||
void addToFullModelViewer(GearInfo &info);
|
void addToFullModelViewer(GearInfo &info);
|
||||||
|
void importedModel();
|
||||||
|
|
||||||
public Q_SLOTS:
|
public Q_SLOTS:
|
||||||
void clear();
|
void clear();
|
||||||
|
|
|
@ -18,12 +18,14 @@
|
||||||
#include "cmpeditor.h"
|
#include "cmpeditor.h"
|
||||||
#include "filecache.h"
|
#include "filecache.h"
|
||||||
#include "gearlistwidget.h"
|
#include "gearlistwidget.h"
|
||||||
|
#include "penumbraapi.h"
|
||||||
#include "settingswindow.h"
|
#include "settingswindow.h"
|
||||||
|
|
||||||
MainWindow::MainWindow(GameData *in_data)
|
MainWindow::MainWindow(GameData *in_data)
|
||||||
: NovusMainWindow()
|
: NovusMainWindow()
|
||||||
, data(*in_data)
|
, data(*in_data)
|
||||||
, cache(FileCache{*in_data})
|
, cache(FileCache{*in_data})
|
||||||
|
, m_api(new PenumbraApi(this))
|
||||||
{
|
{
|
||||||
setMinimumSize(QSize(800, 600));
|
setMinimumSize(QSize(800, 600));
|
||||||
setupMenubar();
|
setupMenubar();
|
||||||
|
@ -45,6 +47,7 @@ MainWindow::MainWindow(GameData *in_data)
|
||||||
connect(gearView, &SingleGearView::addToFullModelViewer, this, [this](GearInfo &info) {
|
connect(gearView, &SingleGearView::addToFullModelViewer, this, [this](GearInfo &info) {
|
||||||
fullModelViewer->addGear(info);
|
fullModelViewer->addGear(info);
|
||||||
});
|
});
|
||||||
|
connect(gearView, &SingleGearView::importedModel, m_api, &PenumbraApi::redrawAll);
|
||||||
|
|
||||||
auto tabWidget = new QTabWidget();
|
auto tabWidget = new QTabWidget();
|
||||||
tabWidget->addTab(gearView, QStringLiteral("Models"));
|
tabWidget->addTab(gearView, QStringLiteral("Models"));
|
||||||
|
|
15
armoury/src/penumbraapi.cpp
Normal file
15
armoury/src/penumbraapi.cpp
Normal file
|
@ -0,0 +1,15 @@
|
||||||
|
// SPDX-FileCopyrightText: 2023 Joshua Goins <josh@redstrate.com>
|
||||||
|
// SPDX-License-Identifier: GPL-3.0-or-later
|
||||||
|
|
||||||
|
#include "penumbraapi.h"
|
||||||
|
|
||||||
|
PenumbraApi::PenumbraApi(QObject *parent)
|
||||||
|
: QObject(parent)
|
||||||
|
, m_mgr(new QNetworkAccessManager(this))
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
void PenumbraApi::redrawAll()
|
||||||
|
{
|
||||||
|
m_mgr->post(QNetworkRequest(QUrl(QStringLiteral("http://localhost:42069/api/redrawAll"))), QByteArray{});
|
||||||
|
}
|
|
@ -102,8 +102,9 @@ SingleGearView::SingleGearView(GameData *data, FileCache &cache, QWidget *parent
|
||||||
tr("Import Model"),
|
tr("Import Model"),
|
||||||
QStringLiteral("%1.glb").arg(sanitizeMdlPath(gearView->getLoadedGearPath())),
|
QStringLiteral("%1.glb").arg(sanitizeMdlPath(gearView->getLoadedGearPath())),
|
||||||
tr("glTF Binary File (*.glb)"));
|
tr("glTF Binary File (*.glb)"));
|
||||||
|
if (!fileName.isEmpty()) {
|
||||||
importModel(fileName);
|
importModel(fileName);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
topControlLayout->addWidget(importButton);
|
topControlLayout->addWidget(importButton);
|
||||||
|
@ -334,6 +335,7 @@ void SingleGearView::importModel(const QString &filename)
|
||||||
file.close();
|
file.close();
|
||||||
|
|
||||||
qInfo() << "Successfully imported model!";
|
qInfo() << "Successfully imported model!";
|
||||||
|
Q_EMIT importedModel();
|
||||||
}
|
}
|
||||||
|
|
||||||
#include "moc_singlegearview.cpp"
|
#include "moc_singlegearview.cpp"
|
Loading…
Add table
Reference in a new issue