// // DesktopScriptingInterface.h // interface/src/scripting // // Created by David Rowe on 25 Aug 2015. // Copyright 2015 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 "DesktopScriptingInterface.h" #include #include #include #include "Application.h" #include "MainWindow.h" #include #include #include /**jsdoc * The possible docking locations of an InteractiveWindow. * @typedef {object} InteractiveWindow.DockAreas * @property {InteractiveWindow.DockArea} TOP - Dock to the top edge of the Interface window. * @property {InteractiveWindow.DockArea} BOTTOM - Dock to the bottom edge of the Interface window. * @property {InteractiveWindow.DockArea} LEFT - Dock to the left edge of the Interface window. * @property {InteractiveWindow.DockArea} RIGHT - Dock to the right edge of the Interface window. */ /**jsdoc * A docking location of an InteractiveWindow. * * * * * * * * * * *
ValueName

Description
0TOPDock to the top edge of the Interface window.
1BOTTOMDock to the bottom edge of the Interface window.
2LEFTDock to the left edge of the Interface window.
3RIGHTDock to the right edge of the Interface window.
* @typedef {number} InteractiveWindow.DockArea */ static const QVariantMap DOCK_AREA { { "TOP", DockArea::TOP }, { "BOTTOM", DockArea::BOTTOM }, { "LEFT", DockArea::LEFT }, { "RIGHT", DockArea::RIGHT } }; int DesktopScriptingInterface::getWidth() { QSize size = qApp->getWindow()->windowHandle()->screen()->virtualSize(); return size.width(); } int DesktopScriptingInterface::getHeight() { QSize size = qApp->getWindow()->windowHandle()->screen()->virtualSize(); return size.height(); } /**jsdoc * The possible display modes for an InteractiveWindow. * @typedef {object} InteractiveWindow.PresentationModes * @property {InteractiveWindow.PresentationMode} VIRTUAL - The window is displayed inside Interface: in the desktop window in * desktop mode or on the HUD surface in HMD mode. * @property {InteractiveWindow.PresentationMode} NATIVE - The window is displayed separately from the Interface window, as its * own separate window. */ /**jsdoc * A display mode for an InteractiveWindow. * * * * * * * * *
ValueName

Description
0VIRTUALThe window is displayed inside Interface: in the desktop window in * desktop mode or on the HUD surface in HMD mode.
1NATIVEThe window is displayed separately from the Interface window, as its * own separate window.
* @typedef {number} InteractiveWindow.PresentationMode */ QVariantMap DesktopScriptingInterface::getPresentationMode() { static QVariantMap presentationModes { { "VIRTUAL", Virtual }, { "NATIVE", Native } }; return presentationModes; } QVariantMap DesktopScriptingInterface::getDockArea() { return DOCK_AREA; } void DesktopScriptingInterface::setHUDAlpha(float alpha) { qApp->getApplicationCompositor().setAlpha(alpha); } void DesktopScriptingInterface::show(const QString& path, const QString& title) { if (QThread::currentThread() != thread()) { QMetaObject::invokeMethod(this, "show", Qt::QueuedConnection, Q_ARG(QString, path), Q_ARG(QString, title)); return; } DependencyManager::get()->show(path, title); } InteractiveWindowPointer DesktopScriptingInterface::createWindow(const QString& sourceUrl, const QVariantMap& properties) { if (QThread::currentThread() != thread()) { InteractiveWindowPointer interactiveWindow = nullptr; BLOCKING_INVOKE_METHOD(this, "createWindow", Q_RETURN_ARG(InteractiveWindowPointer, interactiveWindow), Q_ARG(QString, sourceUrl), Q_ARG(QVariantMap, properties)); return interactiveWindow; } return new InteractiveWindow(sourceUrl, properties);; }