#include "..\Header\MainWindow.h" #include "..\Header\OglViewerWidget.h" #include #include #include #include #include #include #include #include "..\Header\FileInterface.h" #define WINDOW_NAME "Mesh Viewer" MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent) , ui(new Ui::MainWindowClass) , m_curSeverity(0) { ui->setupUi(this); setWindowTitle(WINDOW_NAME); setWindowIcon(QIcon(":/images/icon.ico")); QSurfaceFormat format; format.setDepthBufferSize(24); QSurfaceFormat::setDefaultFormat(format); setupWidgets(); ui->statusBar->showMessage("MeshViewer by Anakin", 0); } MainWindow::~MainWindow() { delete ui; } void MainWindow::openFile() { QString fileName = QFileDialog::getOpenFileName(this, "Open File", "", "Mesh (*.msh)"); emit loadFile(fileName.toStdString().c_str()); } void MainWindow::setupWidgets() { OglViewerWidget* viewer = new OglViewerWidget(this); setCentralWidget(viewer); QAction *openFile = new QAction("Open file", this); connect(openFile, &QAction::triggered, this, &MainWindow::openFile); ui->mainToolBar->addAction(openFile); QSignalMapper* signalMapper = new QSignalMapper(this); QAction *x = new QAction("X", this); x->setCheckable(true); x->setChecked(true); ui->mainToolBar->addAction(x); QAction *y = new QAction("Y", this); y->setCheckable(true); y->setChecked(true); ui->mainToolBar->addAction(y); QAction *z = new QAction("Z", this); z->setCheckable(true); z->setChecked(true); ui->mainToolBar->addAction(z); connect(x, SIGNAL(triggered()), signalMapper, SLOT(map())); connect(y, SIGNAL(triggered()), signalMapper, SLOT(map())); connect(z, SIGNAL(triggered()), signalMapper, SLOT(map())); signalMapper->setMapping(x, 1); signalMapper->setMapping(y, 2); signalMapper->setMapping(z, 3); connect(signalMapper, SIGNAL(mapped(int)), viewer, SLOT(changeDirection(int))); QAction *fileInfo = new QAction("File info", this); connect(fileInfo, &QAction::triggered, this, &MainWindow::aboutFile); ui->mainToolBar->addAction(fileInfo); QAction *help = new QAction("Help", this); connect(help, &QAction::triggered, this, &MainWindow::aboutTool); ui->mainToolBar->addAction(help); } void MainWindow::aboutFile() { QMessageBox* dialog = new QMessageBox(QMessageBox::Information, WINDOW_NAME, "When i find some time, i'll add some information about\nthe file in the detailed text", QMessageBox::StandardButton::Close, this, Qt::Dialog | Qt::MSWindowsFixedSizeDialogHint); dialog->setDetailedText("This is the cool detailed text\n"); dialog->exec(); } void MainWindow::aboutTool() { QFile file(":/files/about.txt"); file.open(QIODevice::ReadOnly); QMessageBox* dialog = new QMessageBox( QMessageBox::Question, WINDOW_NAME, QString(file.readAll()), QMessageBox::StandardButton::Close, this, Qt::Dialog | Qt::MSWindowsFixedSizeDialogHint ); //dialog->setDetailedText(QString(file.readAll())); file.close(); dialog->exec(); } void MainWindow::printMessage(QString message, int severity) { if (!ui->statusBar->currentMessage().isEmpty() && severity < m_curSeverity) return; m_curSeverity = severity; int time(0); QPalette palette; switch (severity) { case 1: time = 3000; palette.setColor(QPalette::WindowText, Qt::darkYellow); break; case 2: time = 3000; palette.setColor(QPalette::WindowText, Qt::red); break; case 0: default: time = 2000; palette.setColor(QPalette::WindowText, Qt::black); break; } ui->statusBar->setPalette(palette); ui->statusBar->showMessage(message, time); }