Archived
1
Fork 0

Add window menu

This commit is contained in:
Joshua Goins 2018-12-24 10:43:14 -05:00
parent f6219154f1
commit 7e2381a211
2 changed files with 44 additions and 5 deletions

View file

@ -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;
}; };

View file

@ -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));
} }