1 /** Aesalon, a tool to visualize program behaviour in real time.
2 Copyright (C) 2009-2011, Aesalon development team.
4 Aesalon is distributed under the terms of the GNU GPLv3. See
5 the included file LICENSE for more information.
7 @file src/visualizer/RootWindow.cpp
12 #include <QApplication>
14 #include <QHBoxLayout>
15 #include <QVBoxLayout>
17 #include <QPushButton>
18 #include <QMdiSubWindow>
20 #include "visualizer/RootWindow.h"
21 #include "visualizer/InputManagerWidget.h"
22 #include "visualizer/ArtisanManagerWidget.h"
23 #include "util/MessageSystem.h"
25 namespace Visualizer
{
27 RootWindow::RootWindow() {
28 setWindowTitle(tr("Aesalon Visualizer"));
29 setWindowIcon(QIcon(":/icon.png"));
31 m_mdiArea
= new QMdiArea();
32 //m_mdiArea->setViewMode(QMdiArea::TabbedView);
33 setCentralWidget(m_mdiArea
);
35 m_inputManager
= new InputManager();
39 QMenu
*aesalonMenu
= new QMenu(tr("&Aesalon"));
40 aesalonMenu
->addAction(tr("&Close"), this, SLOT(close()));
41 aesalonMenu
->addAction(tr("&Quit"), qApp
, SLOT(closeAllWindows()));
42 menuBar()->addMenu(aesalonMenu
);
44 QMenu
*windowMenu
= new QMenu(tr("&Window"));
45 windowMenu
->addAction(tr("Create &input manager"), this, SLOT(createInputManager()));
46 menuBar()->addMenu(windowMenu
);
48 windowMenu
->addAction(tr("Create &artisan manager"), this, SLOT(createArtisanManager()));
49 menuBar()->addMenu(windowMenu
);
51 QMenu
*helpMenu
= new QMenu(tr("&Help"));
52 helpMenu
->addAction(tr("&About . . ."), m_aboutAesalon
, SLOT(show()));
53 helpMenu
->addAction(tr("About &Qt . . ."), qApp
, SLOT(aboutQt()));
54 menuBar()->addMenu(helpMenu
);
57 createArtisanManager();
60 RootWindow::~RootWindow() {
64 void RootWindow::createInputManager() {
65 InputManagerWidget
*imw
= new InputManagerWidget(m_inputManager
);
66 QMdiSubWindow
*msw
= m_mdiArea
->addSubWindow(imw
);
67 msw
->setAttribute(Qt::WA_DeleteOnClose
);
68 msw
->setWindowTitle(tr("Input manager"));
72 void RootWindow::createArtisanManager() {
73 ArtisanManagerWidget
*amw
= new ArtisanManagerWidget(m_inputManager
->artisanManager());
74 connect(amw
, SIGNAL(newViewport(Artisan::Viewport
*)), this, SLOT(addSubwindow(Artisan::Viewport
*)));
75 QMdiSubWindow
*msw
= m_mdiArea
->addSubWindow(amw
);
76 msw
->setAttribute(Qt::WA_DeleteOnClose
);
77 msw
->setWindowTitle(tr("Artisan manager"));
81 void RootWindow::addSubwindow(Artisan::Viewport
*viewport
) {
82 QMdiSubWindow
*msw
= m_mdiArea
->addSubWindow(viewport
);
83 msw
->setAttribute(Qt::WA_DeleteOnClose
);
84 msw
->setWindowTitle(viewport
->windowTitle());
88 void RootWindow::createAboutBox() {
89 m_aboutAesalon
= new QWidget();
91 QBoxLayout
*layout
= new QHBoxLayout();
92 m_aboutAesalon
->setLayout(layout
);
94 QLabel
*iconLabel
= new QLabel();
95 iconLabel
->setPixmap(QPixmap(":/icon.png"));
96 layout
->addWidget(iconLabel
);
98 QVBoxLayout
*rightLayout
= new QVBoxLayout();
99 QLabel
*aboutText
= new QLabel();
101 "Aesalon: a tool to visualize memory in real-time.<br />"
102 "Copyright (C) 2009-2011, Aesalon Development Team. <br />"
103 "Aesalon is released under the terms of the GNU GPLv3. "
104 "See the included file LICENSE for details."
108 rightLayout
->addWidget(aboutText
);
110 QPushButton
*okay
= new QPushButton(tr("Ok"));
111 rightLayout
->addWidget(okay
);
112 connect(okay
, SIGNAL(clicked(bool)), m_aboutAesalon
, SLOT(hide()));
114 layout
->addLayout(rightLayout
);
117 } // namespace Visualizer