Maraiah/source/tycho/cc_source/menu.cc

96 lines
1.6 KiB
C++

#include "tycho.h"
#include "mapprops.h"
#include "menu.h"
#include "project.h"
#include "../ui/ui_menu.h"
#include "../ui/ui_about.h"
#include <QFileDialog>
#include <QMdiSubWindow>
#include <iostream>
Menu::Menu(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::Menu)
{
ui->setupUi(this);
dbgPrintFunc();
}
Menu::~Menu()
{
dbgPrintFunc();
}
void Menu::mapNew()
{
QScopedPointer view{new ProjectView};
addProject(view.take());
}
void Menu::mapOpen()
{
auto fname =
QFileDialog::getOpenFileName(
this,
tr("Open Map File"),
QString(),
tr("Marathon Map files (*.scen *.sceA Map)"));
QScopedPointer view{new ProjectView};
if(view->model()->open(fname)) {
addProject(view.take());
}
}
void Menu::openAbout()
{
QDialog dlg{this};
Ui::About about{};
about.setupUi(&dlg);
about.labelVer->setText(tr(TYCHO_VERSION));
about.labelAuthors->setText(tr(TYCHO_AUTHORS).replace(':', '\n'));
dlg.exec();
}
void Menu::openMapProperties()
{
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);
}
ProjectView *Menu::activeProject() const
{
auto win = activeSubWindow();
return win ? qobject_cast<ProjectView *>(win->widget()) : nullptr;
}
QMdiSubWindow *Menu::activeSubWindow() const
{
return ui->mdiArea->activeSubWindow();
}
void Menu::addProject(ProjectView *view)
{
auto win = ui->mdiArea->addSubWindow(view);
win->showMaximized();
}
// EOF