From 3eecba77f20f4bdd2b3600421957d67a407232cb Mon Sep 17 00:00:00 2001 From: Ryan Jones Date: Sat, 3 Dec 2016 19:34:38 -0800 Subject: [PATCH] working menu item --- interface/src/Menu.cpp | 4 +++- interface/src/Menu.h | 1 + interface/src/ui/DialogsManager.cpp | 9 ++++++++ interface/src/ui/DialogsManager.h | 5 +++++ interface/src/ui/TestingDialog.cpp | 35 +++++++++++++++++++++++++++++ interface/src/ui/TestingDialog.h | 25 +++++++++++++++++++++ 6 files changed, 78 insertions(+), 1 deletion(-) create mode 100644 interface/src/ui/TestingDialog.cpp create mode 100644 interface/src/ui/TestingDialog.h diff --git a/interface/src/Menu.cpp b/interface/src/Menu.cpp index ea1b26dd80..53e3574092 100644 --- a/interface/src/Menu.cpp +++ b/interface/src/Menu.cpp @@ -589,7 +589,9 @@ Menu::Menu() { #endif - + // Developer >> Tests >>> + MenuWrapper* testMenu = developerMenu->addMenu("Tests"); + addActionToQMenuAndActionHash(testMenu, MenuOption::RunClientScriptTests, 0, dialogsManager.data(), SLOT(showTestingResults())); // Developer > Timing >>> MenuWrapper* timingMenu = developerMenu->addMenu("Timing"); diff --git a/interface/src/Menu.h b/interface/src/Menu.h index ad11b91796..971e641f50 100644 --- a/interface/src/Menu.h +++ b/interface/src/Menu.h @@ -172,6 +172,7 @@ namespace MenuOption { const QString ResetAvatarSize = "Reset Avatar Size"; const QString ResetSensors = "Reset Sensors"; const QString RunningScripts = "Running Scripts..."; + const QString RunClientScriptTests = "Run Client Script Tests"; const QString RunTimingTests = "Run Timing Tests"; const QString ScriptEditor = "Script Editor..."; const QString ScriptedMotorControl = "Enable Scripted Motor Control"; diff --git a/interface/src/ui/DialogsManager.cpp b/interface/src/ui/DialogsManager.cpp index 679fb7f59d..b8e74148f0 100644 --- a/interface/src/ui/DialogsManager.cpp +++ b/interface/src/ui/DialogsManager.cpp @@ -158,6 +158,15 @@ void DialogsManager::showScriptEditor() { _scriptEditor->raise(); } +void DialogsManager::showTestingResults() { + if (!_testingDialog) { + _testingDialog = new TestingDialog(qApp->getWindow()); + connect(_testingDialog, SIGNAL(closed()), _testingDialog, SLOT(deleteLater())); + } + _testingDialog->show(); + _testingDialog->raise(); +} + void DialogsManager::showDomainConnectionDialog() { // if the dialog already exists we delete it so the connection data is refreshed if (_domainConnectionDialog) { diff --git a/interface/src/ui/DialogsManager.h b/interface/src/ui/DialogsManager.h index e89bc43020..4bb914ead9 100644 --- a/interface/src/ui/DialogsManager.h +++ b/interface/src/ui/DialogsManager.h @@ -17,6 +17,7 @@ #include #include "HMDToolsDialog.h" +#include "TestingDialog.h" class AnimationsDialog; class AttachmentsDialog; @@ -26,6 +27,7 @@ class DiskCacheEditor; class LodToolsDialog; class OctreeStatsDialog; class ScriptEditorWindow; +class TestingDialog; class QMessageBox; class DomainConnectionDialog; @@ -38,6 +40,7 @@ public: QPointer getHMDToolsDialog() const { return _hmdToolsDialog; } QPointer getLodToolsDialog() const { return _lodToolsDialog; } QPointer getOctreeStatsDialog() const { return _octreeStatsDialog; } + QPointer getTestingDialog() const { return _testingDialog; } void emitAddressBarShown(bool visible) { emit addressBarShown(visible); } public slots: @@ -55,6 +58,7 @@ public slots: void hmdTools(bool showTools); void showScriptEditor(); void showDomainConnectionDialog(); + void showTestingResults(); // Application Update void showUpdateDialog(); @@ -83,6 +87,7 @@ private: QPointer _lodToolsDialog; QPointer _octreeStatsDialog; QPointer _scriptEditor; + QPointer _testingDialog; QPointer _domainConnectionDialog; }; diff --git a/interface/src/ui/TestingDialog.cpp b/interface/src/ui/TestingDialog.cpp new file mode 100644 index 0000000000..0a4435e13e --- /dev/null +++ b/interface/src/ui/TestingDialog.cpp @@ -0,0 +1,35 @@ +// +// TestingDialog.cpp +// interface/src/ui +// +// Created by Ryan Jones on 12/3/2016. +// Copyright 2016 High Fidelity, Inc. +// +// Distributed under the Apache License, Version 2.0. +// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html +// + +#include + +#include "ui/TestingDialog.h" +#include "Application.h" + +TestingDialog::TestingDialog(QWidget* parent) : + QDialog(parent, Qt::Window | Qt::WindowCloseButtonHint | Qt::WindowStaysOnTopHint) +{ + DependencyManager::get()->loadOneScript(qApp->applicationDirPath() + testRunnerRelativePath); + this->setWindowTitle(windowLabel); +} + +TestingDialog::~TestingDialog() { + // TODO: Clean up here? +} + +void TestingDialog::reject() { + this->QDialog::close(); +} + +void TestingDialog::closeEvent(QCloseEvent* event) { + this->QDialog::closeEvent(event); + emit closed(); +} diff --git a/interface/src/ui/TestingDialog.h b/interface/src/ui/TestingDialog.h new file mode 100644 index 0000000000..97da4731f9 --- /dev/null +++ b/interface/src/ui/TestingDialog.h @@ -0,0 +1,25 @@ +#ifndef hifi_TestingDialog_h +#define hifi_TestingDialog_h + +#include + +const QString windowLabel = "Testing Dialog"; +const QString testRunnerRelativePath = "/scripts/developer/tests/bindUnitTest.js"; + +class TestingDialog : public QDialog { + Q_OBJECT +public: + TestingDialog(QWidget* parent); + ~TestingDialog(); + +signals: + void closed(); + +public slots: + void reject() override; + +protected: + void closeEvent(QCloseEvent*) override; +}; + +#endif \ No newline at end of file