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
|
||||
|
||||
#include <QMainWindow>
|
||||
#include <QVulkanInstance>
|
||||
|
||||
struct Context;
|
||||
class ToolWindowManager;
|
||||
|
||||
class MainWindow : public QMainWindow {
|
||||
public:
|
||||
MainWindow(Context& context);
|
||||
|
||||
private:
|
||||
void addSceneView();
|
||||
|
||||
Context& context;
|
||||
ToolWindowManager* manager = nullptr;
|
||||
QVulkanInstance* instance = nullptr;
|
||||
};
|
||||
|
|
|
@ -10,7 +10,7 @@
|
|||
#include "renderwindow.h"
|
||||
#include "renderer.h"
|
||||
|
||||
MainWindow::MainWindow(Context& context) {
|
||||
MainWindow::MainWindow(Context& context) : context(context) {
|
||||
setWindowTitle("Level Editor");
|
||||
resize(1280, 720);
|
||||
|
||||
|
@ -36,6 +36,8 @@ MainWindow::MainWindow(Context& context) {
|
|||
openRecentAction->setIcon(QIcon::fromTheme("document-open-recent"));
|
||||
fileMenu->addAction(openRecentAction);
|
||||
|
||||
fileMenu->addSeparator();
|
||||
|
||||
QAction* saveAction = new QAction("Save");
|
||||
saveAction->setIcon(QIcon::fromTheme("document-save"));
|
||||
saveAction->setShortcut(QKeySequence("CTRL+S"));
|
||||
|
@ -77,15 +79,45 @@ MainWindow::MainWindow(Context& context) {
|
|||
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();
|
||||
|
||||
QMenu* helpMenu = new QMenu("Help");
|
||||
mainMenuBar->addMenu(helpMenu);
|
||||
|
||||
QVulkanInstance* instance = new QVulkanInstance();
|
||||
instance = new QVulkanInstance();
|
||||
instance->setVkInstance(context.renderer->getInstance());
|
||||
instance->create();
|
||||
|
||||
manager = new ToolWindowManager();
|
||||
setCentralWidget(manager);
|
||||
|
||||
addSceneView();
|
||||
}
|
||||
|
||||
void MainWindow::addSceneView() {
|
||||
RendererWindow* window = new RendererWindow(context);
|
||||
window->setVulkanInstance(instance);
|
||||
|
||||
|
@ -93,8 +125,6 @@ MainWindow::MainWindow(Context& context) {
|
|||
wrapper->setWindowIcon(QIcon::fromTheme("view-fullscreen"));
|
||||
wrapper->setWindowTitle("Scene View");
|
||||
|
||||
ToolWindowManager* manager = new ToolWindowManager();
|
||||
setCentralWidget(manager);
|
||||
|
||||
manager->addToolWindow(wrapper, ToolWindowManager::AreaReference(ToolWindowManager::EmptySpace));
|
||||
}
|
||||
|
||||
|
|
Reference in a new issue