96 lines
1.6 KiB
C++
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
|