Add window menu
This commit is contained in:
parent
f6219154f1
commit
7e2381a211
2 changed files with 44 additions and 5 deletions
|
@ -1,10 +1,19 @@
|
||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
#include <QMainWindow>
|
#include <QMainWindow>
|
||||||
|
#include <QVulkanInstance>
|
||||||
|
|
||||||
struct Context;
|
struct Context;
|
||||||
|
class ToolWindowManager;
|
||||||
|
|
||||||
class MainWindow : public QMainWindow {
|
class MainWindow : public QMainWindow {
|
||||||
public:
|
public:
|
||||||
MainWindow(Context& context);
|
MainWindow(Context& context);
|
||||||
|
|
||||||
|
private:
|
||||||
|
void addSceneView();
|
||||||
|
|
||||||
|
Context& context;
|
||||||
|
ToolWindowManager* manager = nullptr;
|
||||||
|
QVulkanInstance* instance = nullptr;
|
||||||
};
|
};
|
||||||
|
|
|
@ -10,7 +10,7 @@
|
||||||
#include "renderwindow.h"
|
#include "renderwindow.h"
|
||||||
#include "renderer.h"
|
#include "renderer.h"
|
||||||
|
|
||||||
MainWindow::MainWindow(Context& context) {
|
MainWindow::MainWindow(Context& context) : context(context) {
|
||||||
setWindowTitle("Level Editor");
|
setWindowTitle("Level Editor");
|
||||||
resize(1280, 720);
|
resize(1280, 720);
|
||||||
|
|
||||||
|
@ -36,6 +36,8 @@ MainWindow::MainWindow(Context& context) {
|
||||||
openRecentAction->setIcon(QIcon::fromTheme("document-open-recent"));
|
openRecentAction->setIcon(QIcon::fromTheme("document-open-recent"));
|
||||||
fileMenu->addAction(openRecentAction);
|
fileMenu->addAction(openRecentAction);
|
||||||
|
|
||||||
|
fileMenu->addSeparator();
|
||||||
|
|
||||||
QAction* saveAction = new QAction("Save");
|
QAction* saveAction = new QAction("Save");
|
||||||
saveAction->setIcon(QIcon::fromTheme("document-save"));
|
saveAction->setIcon(QIcon::fromTheme("document-save"));
|
||||||
saveAction->setShortcut(QKeySequence("CTRL+S"));
|
saveAction->setShortcut(QKeySequence("CTRL+S"));
|
||||||
|
@ -77,15 +79,45 @@ MainWindow::MainWindow(Context& context) {
|
||||||
editMenu->addAction(userPreferenes);
|
editMenu->addAction(userPreferenes);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
QMenu* windowMenu = new QMenu("Window");
|
||||||
|
mainMenuBar->addMenu(windowMenu);
|
||||||
|
|
||||||
|
// window
|
||||||
|
{
|
||||||
|
QAction* newWindowAction = new QAction("New Window");
|
||||||
|
connect(newWindowAction, &QAction::triggered, [&context] {
|
||||||
|
MainWindow* window = new MainWindow(context);
|
||||||
|
window->show();
|
||||||
|
});
|
||||||
|
newWindowAction->setIcon(QIcon::fromTheme("window-new"));
|
||||||
|
windowMenu->addAction(newWindowAction);
|
||||||
|
|
||||||
|
QMenu* newViewMenu = new QMenu("New View");
|
||||||
|
newViewMenu->setIcon(QIcon::fromTheme("folder-new"));
|
||||||
|
windowMenu->addMenu(newViewMenu);
|
||||||
|
|
||||||
|
QAction* addSceneView = new QAction("Scene View");
|
||||||
|
connect(addSceneView, &QAction::triggered, this, &MainWindow::addSceneView);
|
||||||
|
addSceneView->setIcon(QIcon::fromTheme("view-fullscreen"));
|
||||||
|
newViewMenu->addAction(addSceneView);
|
||||||
|
}
|
||||||
|
|
||||||
mainMenuBar->addSeparator();
|
mainMenuBar->addSeparator();
|
||||||
|
|
||||||
QMenu* helpMenu = new QMenu("Help");
|
QMenu* helpMenu = new QMenu("Help");
|
||||||
mainMenuBar->addMenu(helpMenu);
|
mainMenuBar->addMenu(helpMenu);
|
||||||
|
|
||||||
QVulkanInstance* instance = new QVulkanInstance();
|
instance = new QVulkanInstance();
|
||||||
instance->setVkInstance(context.renderer->getInstance());
|
instance->setVkInstance(context.renderer->getInstance());
|
||||||
instance->create();
|
instance->create();
|
||||||
|
|
||||||
|
manager = new ToolWindowManager();
|
||||||
|
setCentralWidget(manager);
|
||||||
|
|
||||||
|
addSceneView();
|
||||||
|
}
|
||||||
|
|
||||||
|
void MainWindow::addSceneView() {
|
||||||
RendererWindow* window = new RendererWindow(context);
|
RendererWindow* window = new RendererWindow(context);
|
||||||
window->setVulkanInstance(instance);
|
window->setVulkanInstance(instance);
|
||||||
|
|
||||||
|
@ -93,8 +125,6 @@ MainWindow::MainWindow(Context& context) {
|
||||||
wrapper->setWindowIcon(QIcon::fromTheme("view-fullscreen"));
|
wrapper->setWindowIcon(QIcon::fromTheme("view-fullscreen"));
|
||||||
wrapper->setWindowTitle("Scene View");
|
wrapper->setWindowTitle("Scene View");
|
||||||
|
|
||||||
ToolWindowManager* manager = new ToolWindowManager();
|
|
||||||
setCentralWidget(manager);
|
|
||||||
|
|
||||||
manager->addToolWindow(wrapper, ToolWindowManager::AreaReference(ToolWindowManager::EmptySpace));
|
manager->addToolWindow(wrapper, ToolWindowManager::AreaReference(ToolWindowManager::EmptySpace));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Reference in a new issue