nuclear@72: #include "goatview.h" nuclear@72: nuclear@72: GoatView::GoatView() nuclear@72: { nuclear@72: make_menu(); nuclear@72: make_dock(); nuclear@72: make_center(); nuclear@72: nuclear@72: statusBar(); nuclear@72: nuclear@72: setWindowTitle("GoatView"); nuclear@72: } nuclear@72: nuclear@72: GoatView::~GoatView() nuclear@72: { nuclear@72: } nuclear@72: nuclear@72: bool GoatView::make_menu() nuclear@72: { nuclear@72: QMenu *menu_file = menuBar()->addMenu("&File"); nuclear@72: nuclear@72: QAction *act_open_sce = new QAction("&Open Scene", this); nuclear@72: act_open_sce->setShortcuts(QKeySequence::Open); nuclear@72: connect(act_open_sce, &QAction::triggered, this, &GoatView::open_scene); nuclear@72: menu_file->addAction(act_open_sce); nuclear@72: nuclear@72: QAction *act_open_anm = new QAction("Open &Animation", this); nuclear@72: connect(act_open_anm, &QAction::triggered, this, &GoatView::open_anim); nuclear@72: menu_file->addAction(act_open_anm); nuclear@72: nuclear@72: QAction *act_quit = new QAction("&Quit", this); nuclear@72: act_quit->setShortcuts(QKeySequence::Quit); nuclear@72: connect(act_quit, &QAction::triggered, [&](){qApp->quit();}); nuclear@72: menu_file->addAction(act_quit); nuclear@72: return true; nuclear@72: } nuclear@72: nuclear@72: bool GoatView::make_dock() nuclear@72: { nuclear@72: // ---- side-dock ---- nuclear@72: QWidget *dock_cont = new QWidget; nuclear@72: QVBoxLayout *dock_vbox = new QVBoxLayout; nuclear@72: dock_cont->setLayout(dock_vbox); nuclear@72: nuclear@72: QPushButton *bn_quit = new QPushButton("quit"); nuclear@72: dock_vbox->addWidget(bn_quit); nuclear@72: connect(bn_quit, &QPushButton::clicked, [&](){qApp->quit();}); nuclear@72: nuclear@72: QDockWidget *dock = new QDockWidget("Scene graph", this); nuclear@72: dock->setAllowedAreas(Qt::LeftDockWidgetArea | Qt::RightDockWidgetArea); nuclear@72: dock->setWidget(dock_cont); nuclear@72: addDockWidget(Qt::LeftDockWidgetArea, dock); nuclear@72: nuclear@72: // ---- bottom dock ---- nuclear@72: dock_cont = new QWidget; nuclear@72: QHBoxLayout *dock_hbox = new QHBoxLayout; nuclear@72: dock_cont->setLayout(dock_hbox); nuclear@72: nuclear@72: QSlider *slider_time = new QSlider(Qt::Orientation::Horizontal); nuclear@72: slider_time->setDisabled(true); nuclear@72: dock_hbox->addWidget(slider_time); nuclear@72: nuclear@72: dock = new QDockWidget("Animation", this); nuclear@72: dock->setAllowedAreas(Qt::BottomDockWidgetArea); nuclear@72: dock->setWidget(dock_cont); nuclear@72: addDockWidget(Qt::BottomDockWidgetArea, dock); nuclear@72: nuclear@72: return true; nuclear@72: } nuclear@72: nuclear@72: bool GoatView::make_center() nuclear@72: { nuclear@72: GoatViewport *vport = new GoatViewport; nuclear@72: setCentralWidget(vport); nuclear@72: return true; nuclear@72: } nuclear@72: nuclear@72: void GoatView::open_scene() nuclear@72: { nuclear@72: statusBar()->showMessage("opening scene..."); nuclear@72: } nuclear@72: nuclear@72: void GoatView::open_anim() nuclear@72: { nuclear@72: statusBar()->showMessage("opening animation..."); nuclear@72: } nuclear@72: nuclear@72: nuclear@72: // ---- OpenGL viewport ---- nuclear@72: GoatViewport::GoatViewport() nuclear@72: : QGLWidget(QGLFormat(QGL::DepthBuffer)) nuclear@72: { nuclear@72: } nuclear@72: nuclear@72: GoatViewport::~GoatViewport() nuclear@72: { nuclear@72: } nuclear@72: nuclear@72: QSize GoatViewport::sizeHint() const nuclear@72: { nuclear@72: return QSize(800, 600); nuclear@72: } nuclear@72: nuclear@72: void GoatViewport::initializeGL() nuclear@72: { nuclear@72: } nuclear@72: nuclear@72: void GoatViewport::resizeGL(int xsz, int ysz) nuclear@72: { nuclear@72: glViewport(0, 0, xsz, ysz); nuclear@72: } nuclear@72: nuclear@72: void GoatViewport::paintGL() nuclear@72: { nuclear@72: glClearColor(1, 0, 0, 1); nuclear@72: glClear(GL_COLOR_BUFFER_BIT); nuclear@72: }