Maraiah/source/tycho/cc_source/menu.cc

140 lines
2.6 KiB
C++
Raw Normal View History

2019-05-30 00:09:58 -07:00
#include "tycho.h"
#include "mapprops.h"
#include "menu.h"
2019-06-13 18:10:33 -07:00
#include "project.h"
#include "../ui/ui_menu.h"
#include "../ui/ui_about.h"
2019-06-14 10:03:32 -07:00
#include "../ui/ui_license.h"
2019-05-15 21:28:33 -07:00
2019-06-13 19:52:25 -07:00
#include <QCloseEvent>
2019-05-30 00:09:58 -07:00
#include <QFileDialog>
2019-06-13 18:10:33 -07:00
#include <QMdiSubWindow>
2019-05-30 00:09:58 -07:00
#include <iostream>
Menu::Menu(QWidget *parent) :
2019-05-15 21:28:33 -07:00
QMainWindow(parent),
ui(new Ui::Menu)
2019-05-15 21:28:33 -07:00
{
ui->setupUi(this);
2019-06-13 19:52:25 -07:00
ui->actionOpen->setShortcut(QKeySequence(QKeySequence::Open));
ui->actionNew->setShortcut(QKeySequence(QKeySequence::New));
ui->actionQuit->setShortcut(QKeySequence(QKeySequence::Quit));
ui->actionAbout->setShortcut(QKeySequence(QKeySequence::HelpContents));
ui->actionMapProps->setShortcut(QKeySequence(tr("Ctrl+P")));
2019-06-10 09:05:05 -07:00
dbgPrintFunc();
2019-05-15 21:28:33 -07:00
}
Menu::~Menu()
2019-05-15 21:28:33 -07:00
{
2019-05-30 00:09:58 -07:00
dbgPrintFunc();
}
void Menu::mapNew()
2019-05-30 00:09:58 -07:00
{
2019-06-13 18:10:33 -07:00
QScopedPointer view{new ProjectView};
addProject(view.take());
2019-05-30 00:09:58 -07:00
}
void Menu::mapOpen()
2019-05-30 00:09:58 -07:00
{
auto fname =
QFileDialog::getOpenFileName(
this,
tr("Open Map File"),
QString(),
tr("Marathon Map files (*.scen *.sceA Map)"));
2019-06-13 18:10:33 -07:00
QScopedPointer view{new ProjectView};
if(view->model()->open(fname)) {
addProject(view.take());
}
2019-05-30 00:09:58 -07:00
}
void Menu::openAbout()
2019-05-30 00:09:58 -07:00
{
QDialog dlg{this};
2019-06-14 10:03:32 -07:00
Ui::About ui{};
2019-05-30 00:09:58 -07:00
2019-06-14 10:03:32 -07:00
ui.setupUi(&dlg);
ui.labelVer->setText(tr(tychoVersion()));
ui.labelAuthors->setText(tr(tychoAuthors()).replace(':', '\n'));
connect(ui.btnLicense, &QPushButton::clicked, this, [&](){
openLicense(&dlg);
});
dlg.exec();
}
void Menu::openLicense(QWidget *parent)
{
QDialog dlg{parent};
Ui::License ui{};
ui.setupUi(&dlg);
ui.text->setPlainText(tychoLicenseText());
connect(ui.btnCopy, &QPushButton::clicked, this, [&]() {
ui.text->selectAll();
ui.text->copy();
});
2019-05-30 00:09:58 -07:00
dlg.exec();
2019-05-16 14:50:59 -07:00
}
void Menu::openMapProperties()
2019-05-16 14:50:59 -07:00
{
2019-06-13 18:10:33 -07:00
auto view = activeProject();
if(view) {
MapProps props{view->model(), view};
props.exec();
}
}
void Menu::updateActions()
{
auto view = activeProject();
bool active = view != nullptr;
ui->actionMapProps->setEnabled(active);
dbgPrintFunc();
2019-06-13 18:10:33 -07:00
}
2019-06-13 19:52:25 -07:00
void Menu::closeEvent(QCloseEvent *event)
{
for(auto *win : ui->mdiArea->subWindowList()) {
if(!win->close()) {
event->ignore();
return;
}
}
event->accept();
}
2019-06-13 18:10:33 -07:00
ProjectView *Menu::activeProject() const
{
return qobject_cast<ProjectView *>(activeSubWindow());
2019-06-13 18:10:33 -07:00
}
QMdiSubWindow *Menu::activeSubWindow() const
{
return ui->mdiArea->activeSubWindow();
}
void Menu::addProject(ProjectView *view)
{
auto win = ui->mdiArea->addSubWindow(view);
win->showMaximized();
2019-05-15 21:28:33 -07:00
}
// EOF