diff --git a/apps/OpenSpace/ext/launcher/CMakeLists.txt b/apps/OpenSpace/ext/launcher/CMakeLists.txt index 4a8ac23822..b62b5f8a34 100644 --- a/apps/OpenSpace/ext/launcher/CMakeLists.txt +++ b/apps/OpenSpace/ext/launcher/CMakeLists.txt @@ -23,7 +23,7 @@ target_include_directories( set(HEADER_FILES assettreeitem.h assettreemodel.h - editorwindow.h + profileedit.h ui_editorwindow.h filesystemaccess.h launcherwindow.h @@ -33,7 +33,7 @@ set(HEADER_FILES set(SOURCE_FILES assettreeitem.cpp assettreemodel.cpp - editorwindow.cpp + profileedit.cpp filesystemaccess.cpp launcherwindow.cpp ) diff --git a/apps/OpenSpace/ext/launcher/editorwindow.cpp b/apps/OpenSpace/ext/launcher/editorwindow.cpp deleted file mode 100644 index 87f0221ee8..0000000000 --- a/apps/OpenSpace/ext/launcher/editorwindow.cpp +++ /dev/null @@ -1,182 +0,0 @@ -/***************************************************************************************** - * * - * OpenSpace * - * * - * Copyright (c) 2014-2020 * - * * - * Permission is hereby granted, free of charge, to any person obtaining a copy of this * - * software and associated documentation files (the "Software"), to deal in the Software * - * without restriction, including without limitation the rights to use, copy, modify, * - * merge, publish, distribute, sublicense, and/or sell copies of the Software, and to * - * permit persons to whom the Software is furnished to do so, subject to the following * - * conditions: * - * * - * The above copyright notice and this permission notice shall be included in all copies * - * or substantial portions of the Software. * - * * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, * - * INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A * - * PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT * - * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF * - * CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE * - * OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. * - ****************************************************************************************/ - -#include "editorwindow.h" -#include "ui_editorwindow.h" -#include -#include -#include -#include "launcherwindow.h" -#include "filesystemaccess.h" -#include -#include -#include - - -std::string testContents = -"0Dir_1\n" -"0 File 1\n" -"0 File 2\n" -"0 Dir_x1\n" -"0 Dir_x2\n" -"0 Dir_x3\n" -"0 File x1\n" -"1 File x2\n" -"0 Dir_y1\n" -"0 Dir_y2\n" -"0 File y1\n" -"0 File y2\n" -"0 File 3\n" -"0File A\n" -"0Dir 2\n" -"0 Dir B1\n" -"1 File C1\n" -"0 File B2\n" -"0 Dir B1\n" -"0 File C1\n"; - -editorwindow::editorwindow(const QString assetPath, const std::string& profilePath, QWidget *parent) - : QDialog(parent) - , ui(new Ui::editorwindow) - , _assetTreeModel(tr("Asset"), tr("Enabled")) - , _filesystemAccess(".asset", {"scene", "global", "customization", "examples"}, - true, true) - , _assetPath(assetPath) -{ - ui->setupUi(this); - ui->lineEditProfile->setPlaceholderText(_helperTextProfileName); - ui->lineEditStartTime->setPlaceholderText(_helperTextStartTime); - ui->textEditFeaturedNodes->setPlaceholderText(_helperTextFeaturedNodes); - ui->lineEditInitialAnchorNode->setPlaceholderText(_helperTextInitialAnchorNode); - - //Test section using QFileSystemModel - std::string reportAssets = _filesystemAccess.useQtFileSystemModelToTraverseDir( - _assetPath); - _assetTreeModel.importModelData(reportAssets); //(testContents) - - ui->treeView->setModel(&_assetTreeModel); - ui->treeView->setRootIndex(_assetTreeModel.index(-1, 0)); - ui->treeView->setColumnWidth(0, ui->treeView->width() * 0.8); - ui->treeView->setAnimated(true); - ui->treeView->setSortingEnabled(false); - - int column = 0; - int nRows = _assetTreeModel.rowCount(_assetTreeModel.index(-1, column)); - traverseToExpandSelectedItems(nRows, _assetTreeModel.index(-1, 0)); - - connect(ui->buttonBox, SIGNAL(accepted()), this, SLOT(parseSelections())); - connect(ui->buttonBox, SIGNAL(rejected()), this, SLOT(cancel())); - - if (profilePath.length() != 0) { - loadProfile(profilePath); - } -} - -void editorwindow::loadProfile(std::string filepath) { -#ifdef WIN32 - const std::string search = "/"; - const std::string replace = "\\"; - if (filepath.find(search) != std::string::npos) { - size_t start_pos = 0; - while ((start_pos = filepath.find(search, start_pos)) != std::string::npos) { - filepath.replace(start_pos, search.length(), replace); - start_pos += replace.length(); - } - } -#endif //WIN32 - if (!std::filesystem::exists(filepath)) { - throw std::runtime_error("Could not find file)"); - } - - std::ifstream f(filepath); - - std::vector lines; - std::string line; - while (std::getline(f, line)) { - lines.push_back(std::move(line)); - } - - openspace::Profile p(lines); - std::optional t = p.time(); - if (t.has_value()) { - ui->lineEditStartTime->setText(QString::fromUtf8(t.value().time.c_str())); - } -} - -editorwindow::~editorwindow() { - delete ui; -} - -bool editorwindow::traverseToExpandSelectedItems(int nRows, QModelIndex parent) { - bool isChecked = false; - - for (int r = 0; r < nRows; r++) { - QModelIndex idx = _assetTreeModel.index(r, 0, parent); - - if (!_assetTreeModel.isItemAsset(idx)) { - int nChildRows = _assetTreeModel.childCount(idx); - if (traverseToExpandSelectedItems(nChildRows, idx)) { - ui->treeView->setExpanded(idx, true); - isChecked = true; - } - } - else if (_assetTreeModel.isItemChecked(idx)) { - isChecked = true; - } - } - return isChecked; -} - -void editorwindow::setProfileName(QString name) { - _helperTextProfileName = name; - ui->lineEditProfile->setText(_helperTextProfileName); -} - -void editorwindow::setStartTime(QString timeString) { - _helperTextStartTime = timeString; - ui->lineEditStartTime->setText(_helperTextStartTime); -} - -void editorwindow::setFeaturedNodes(QString featuredNodes) { - _helperTextFeaturedNodes = featuredNodes; - ui->textEditFeaturedNodes->setText(_helperTextFeaturedNodes); -} - -void editorwindow::setInitAnchorNode(QString initAnchorNode) { - _helperTextInitialAnchorNode = initAnchorNode; - ui->lineEditInitialAnchorNode->setText(_helperTextInitialAnchorNode); -} - -void editorwindow::setCustomizations(QString customizations) { - _helperTextCustomizations = customizations; - ui->textEditCustomizations->setText(_helperTextCustomizations); -} - -std::vector editorwindow::parseSelections() { - return _assetTreeModel.selectedAssets(); -} - -void editorwindow::cancel() { - -} diff --git a/apps/OpenSpace/ext/launcher/editorwindow.h b/apps/OpenSpace/ext/launcher/editorwindow.h deleted file mode 100644 index 6c38e5d9ac..0000000000 --- a/apps/OpenSpace/ext/launcher/editorwindow.h +++ /dev/null @@ -1,73 +0,0 @@ -/***************************************************************************************** - * * - * OpenSpace * - * * - * Copyright (c) 2014-2020 * - * * - * Permission is hereby granted, free of charge, to any person obtaining a copy of this * - * software and associated documentation files (the "Software"), to deal in the Software * - * without restriction, including without limitation the rights to use, copy, modify, * - * merge, publish, distribute, sublicense, and/or sell copies of the Software, and to * - * permit persons to whom the Software is furnished to do so, subject to the following * - * conditions: * - * * - * The above copyright notice and this permission notice shall be included in all copies * - * or substantial portions of the Software. * - * * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, * - * INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A * - * PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT * - * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF * - * CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE * - * OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. * - ****************************************************************************************/ - -#ifndef __OPENSPACE_LAUNCHER___EDITORWINDOW___H__ -#define __OPENSPACE_LAUNCHER___EDITORWINDOW___H__ - -#include -#include -#include -#include -#include -#include "assettreemodel.h" -#include "filesystemaccess.h" - -namespace Ui { -class editorwindow; -} - -class editorwindow : public QDialog -{ - Q_OBJECT - -public slots: - void cancel(); - -public: - explicit editorwindow(QString assetPath, const std::string& profileName, - QWidget* parent = nullptr); - ~editorwindow(); - std::vector parseSelections(); - void setProfileName(QString name); - void setStartTime(QString timeString); - void setFeaturedNodes(QString featuredNodes); - void setInitAnchorNode(QString initAnchorNode); - void setCustomizations(QString customizations); - -private: - bool traverseToExpandSelectedItems(int nRows, QModelIndex parent); - void loadProfile(std::string profilePath); - Ui::editorwindow *ui; - QString _helperTextProfileName = "Enter profile name"; - QString _helperTextStartTime = "YYYY-MM-DDThh:mm:ss (leave blank for default time)"; - QString _helperTextFeaturedNodes = "Comma-separated list (i.e. Moon, Earth, Sun)"; - QString _helperTextInitialAnchorNode = "i.e. Earth"; - QString _helperTextCustomizations; - assetTreeModel _assetTreeModel; - QWidget* _parent; - filesystemAccess _filesystemAccess; - QString _assetPath; -}; - -#endif // __OPENSPACE_LAUNCHER___EDITORWINDOW___H__ diff --git a/apps/OpenSpace/ext/launcher/launcherwindow.cpp b/apps/OpenSpace/ext/launcher/launcherwindow.cpp index 1651a8a1fe..b4b2d270a3 100644 --- a/apps/OpenSpace/ext/launcher/launcherwindow.cpp +++ b/apps/OpenSpace/ext/launcher/launcherwindow.cpp @@ -1,55 +1,43 @@ -/***************************************************************************************** - * * - * OpenSpace * - * * - * Copyright (c) 2014-2020 * - * * - * Permission is hereby granted, free of charge, to any person obtaining a copy of this * - * software and associated documentation files (the "Software"), to deal in the Software * - * without restriction, including without limitation the rights to use, copy, modify, * - * merge, publish, distribute, sublicense, and/or sell copies of the Software, and to * - * permit persons to whom the Software is furnished to do so, subject to the following * - * conditions: * - * * - * The above copyright notice and this permission notice shall be included in all copies * - * or substantial portions of the Software. * - * * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, * - * INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A * - * PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT * - * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF * - * CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE * - * OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. * - ****************************************************************************************/ - #include "launcherwindow.h" -#include "editorwindow.h" +#include "profileedit.h" #include "./ui_launcherwindow.h" #include #include "filesystemaccess.h" #include -LauncherWindow::LauncherWindow(std::string basePath, QWidget* parent) +LauncherWindow::LauncherWindow(QWidget *parent) : QMainWindow(parent) , ui(new Ui::LauncherWindow) , _fileAccess_profiles(".profile", {"./"}, true, false) , _fileAccess_winConfigs(".xml", {"./"}, true, false) - , _basePath(QString::fromUtf8(basePath.c_str())) + , _filesystemAccess(".asset", {"scene", "global", "customization", "examples"}, + true, true) + , _pData({_metaData, + _moduleData, + _assetData, + _reportAssetsInFilesystem, + _propsData, + _keybindingsData, + _deltaTimesData, + _timeData, + _cameraData, + _markNodesData, + _addedScriptsData}) { ui->setupUi(this); - QString logoPath = _basePath + "/data/openspace-horiz-logo.png"; - QPixmap pix(logoPath); + QPixmap pix("../profileGUI/openspace-horizontal-color-transparent.png"); ui->logolabel->setPixmap(pix.scaled(400, 120, Qt::KeepAspectRatio)); connect(ui->newButton, SIGNAL(released()), this, SLOT(openWindow_new())); connect(ui->editButton, SIGNAL(released()), this, SLOT(openWindow_edit())); + connect(ui->buttonSim, SIGNAL(released()), this, SLOT(simulateData())); populateProfilesList(); populateWindowConfigsList(); } void LauncherWindow::populateProfilesList() { std::string reportProfiles = _fileAccess_profiles.useQtFileSystemModelToTraverseDir( - _basePath + "/data/profiles"); + "/home/gene/Desktop/OpenSpace/data/profiles"); std::stringstream instream(reportProfiles); std::string iline; QStringList profilesListLine; @@ -61,7 +49,7 @@ void LauncherWindow::populateProfilesList() { void LauncherWindow::populateWindowConfigsList() { std::string reportConfigs = _fileAccess_winConfigs.useQtFileSystemModelToTraverseDir( - _basePath + "/config"); + "/home/gene/Desktop/OpenSpace/config"); std::stringstream instream(reportConfigs); std::string iline; QStringList windowConfigsListLine; @@ -72,37 +60,231 @@ void LauncherWindow::populateWindowConfigsList() { } void LauncherWindow::openWindow_new() { - myEditorWindow = new editorwindow(_basePath + "/data/assets", ""); + clearData(); + myEditorWindow = new ProfileEdit(_pData); myEditorWindow->exec(); - std::vector results = myEditorWindow->parseSelections(); - receiveAssets(results); } void LauncherWindow::openWindow_edit() { - std::string editProfilePath = _basePath.toUtf8().constData(); - editProfilePath += "/data/profiles/"; - editProfilePath += ui->comboBoxProfiles->currentText().toUtf8().constData(); - editProfilePath += ".profile"; - myEditorWindow = new editorwindow(_basePath + "/data/assets", editProfilePath); + //simulateData(); + myEditorWindow = new ProfileEdit(_pData); int selectedProfileIdx = ui->comboBoxProfiles->currentIndex(); QString profileToSet = ui->comboBoxProfiles->itemText(selectedProfileIdx); myEditorWindow->setProfileName(profileToSet); myEditorWindow->exec(); - std::vector results = myEditorWindow->parseSelections(); - receiveAssets(results); } void LauncherWindow::receiveAssets(std::vector results) { - //std::string windowText; - //for (std::string line : results) { - // windowText += line + "\n"; - //} - //ui->textEdit->setText(QString::fromUtf8(windowText.c_str())); + std::string windowText; + for (std::string line : results) { + windowText += line + "\n"; + } } LauncherWindow::~LauncherWindow() { delete ui; delete myEditorWindow; } + +void LauncherWindow::simulateData() { + initialize_meta(); + initialize_modules(); + initialize_assets(); + initialize_properties(); + initialize_keybindings(); + initialize_deltaTimes(); + initialize_time(); + initialize_camera(); + initialize_markNodes(); + initialize_addedScripts(); +} + +void LauncherWindow::clearData() { + _metaData = {"", "", "", "", "", ""}; + _moduleData.clear(); + _assetData.clear(); + _propsData.clear(); + _keybindingsData.clear(); + _deltaTimesData._times.clear(); + _timeData.time = ""; + _cameraData.type = Camera::Type::Nav; + _cameraData.nav = {"", "", "", {"", "", ""}, {"", "", ""}, "", ""}; + _cameraData.geo = {"", "", "", ""}; + _markNodesData.clear(); + _addedScriptsData = ""; +} + +void LauncherWindow::initialize_meta() { + _metaData.name = "The meta name"; + _metaData.version = "0.15.2"; + _metaData.description = "Description here"; + _metaData.author = "Author"; + _metaData.url = "http://openspaceproject.com"; + _metaData.license = "MIT"; +} + +void LauncherWindow::initialize_modules() { + _moduleData = { + { + "base", + "Do stuff for base if it's loaded", + "" + }, + { + "globebrowsing", + "", + "" + }, + { + "gaia", + "", + "Command if gaia not loaded" + }, + { + "kameleon", + "script {\n line1\n line2\n}", + "Command if gaia not loaded" + }, + }; + +} + +void LauncherWindow::initialize_assets() { + _reportAssetsInFilesystem = _filesystemAccess.useQtFileSystemModelToTraverseDir( + "/home/gene/Desktop/OpenSpace/data/assets"); + + _assetData = { + {"", "base"}, + {"examples", "spheres"}, + {"examples", "slidedeck"}, + {"scene/milkyway/gaia", "galah"}, + {"scene/solarsystem/missions/pioneer", "pioneer10"}, + {"scene/solarsystem/missions/spacex", "roadster"}, + {"scene/solarsystem/sun", "glare"}, + {"scene/solarsystem/sun", "marker"}, + {"util", "layer_helper"}, + {"customization", "gui"} + }; +} + +void LauncherWindow::initialize_properties() { + _propsData = { + { + Property::SetType::SetPropertyValueSingle, + "NavigationHandler.OrbitalNavigator.FollowAnchorNodeRotationDistance", + "20.0" + }, + { + Property::SetType::SetPropertyValue, + "Scene.Pluto.Renderable.Enabled", + "false" + }, + { + Property::SetType::SetPropertyValueSingle, + "Scene.Charon.Renderable.Enabled", + "false" + }, + { + Property::SetType::SetPropertyValueSingle, + "Scene.PlutoBarycenterTrail.Renderable.Enabled", + "false" + }, + { + Property::SetType::SetPropertyValueSingle, + "NavigationHandler.OrbitalNavigator.FollowAnchorNodeRotationDistance", + "20.0" + }, + { + Property::SetType::SetPropertyValue, + "Scene.Pluto.Renderable.Enabled", + "false" + }, + { + Property::SetType::SetPropertyValueSingle, + "Scene.Styx.Renderable.Enabled", + "false" + }, + { + Property::SetType::SetPropertyValueSingle, + "Scene.PlutoBarycenterTrail.Renderable.Enabled", + "false" + }, + { + Property::SetType::SetPropertyValueSingle, + "NavigationHandler.OrbitalNavigator.FollowAnchorNodeRotationDistance", + "20.0" + }, + { + Property::SetType::SetPropertyValue, + "Scene.Pluto.Renderable.Enabled", + "false" + }, + { + Property::SetType::SetPropertyValueSingle, + "Scene.StyxRenderableTrail.Renderable.Enabled", + "false" + }, + { + Property::SetType::SetPropertyValueSingle, + "Scene.PlutoBarycenterTrail.Renderable.Enabled", + "false" + }, + }; +} + +void LauncherWindow::initialize_keybindings() { + _keybindingsData = { + { + {Key::Equal, KeyModifier::Control}, + "Documentation for ctrl+=", + "Name for the keybinding", + "/Path/to/keys", + true, + "openspace.keybindings.local.variable.1" + }, + { + {Key::KeypadAdd, KeyModifier::Shift}, + "Documentation for shift++", + "Name for the keybinding", + "/Path/to/keys", + true, + "openspace.keybindings.local.variable.2" + }, + { + {Key::Keypad3, KeyModifier::NoModifier}, + "Documentation for '3'", + "Name for the keybinding", + "/Path/to/keys", + false, + "openspace.keybindings.local.variable.3" + }, + }; +} + +void LauncherWindow::initialize_deltaTimes() { + std::vector dt = {1, 2, 5, 10, 30, + 60, 120, 300, 600, 1800, + 3600, 7200, 10800, 21600, 43200, + 86400, 172800, 345600, 604800}; + _deltaTimesData.loadValues(dt); +} + +void LauncherWindow::initialize_time() { + _timeData.type = OSTime::Type::Absolute; + _timeData.time = "2011-04-17T21:23:59"; +} + +void LauncherWindow::initialize_camera() { + _cameraData.type = Camera::Type::Nav; + _cameraData.nav = {"Earth", "Moon", "SUNREF", {"1", "2", "3"}, {"4", "5", "6"}, "180.0", "359.9"}; +} + +void LauncherWindow::initialize_markNodes() { + _markNodesData = {"Earth", "Moon", "Mars", "Jupiter", "Sun"}; +} + +void LauncherWindow::initialize_addedScripts() { + _addedScriptsData = "line1\nline2\nline3\nline4\nline5"; +} diff --git a/apps/OpenSpace/ext/launcher/launcherwindow.h b/apps/OpenSpace/ext/launcher/launcherwindow.h index 8152ad161c..e4fd199487 100644 --- a/apps/OpenSpace/ext/launcher/launcherwindow.h +++ b/apps/OpenSpace/ext/launcher/launcherwindow.h @@ -1,33 +1,8 @@ -/***************************************************************************************** - * * - * OpenSpace * - * * - * Copyright (c) 2014-2020 * - * * - * Permission is hereby granted, free of charge, to any person obtaining a copy of this * - * software and associated documentation files (the "Software"), to deal in the Software * - * without restriction, including without limitation the rights to use, copy, modify, * - * merge, publish, distribute, sublicense, and/or sell copies of the Software, and to * - * permit persons to whom the Software is furnished to do so, subject to the following * - * conditions: * - * * - * The above copyright notice and this permission notice shall be included in all copies * - * or substantial portions of the Software. * - * * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, * - * INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A * - * PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT * - * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF * - * CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE * - * OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. * - ****************************************************************************************/ +#ifndef LAUNCHERWINDOW_H +#define LAUNCHERWINDOW_H -#ifndef __OPENSPACE_LAUNCHER___LAUNCHERWINDOW___H__ -#define __OPENSPACE_LAUNCHER___LAUNCHERWINDOW___H__ - -#include #include -#include "editorwindow.h" +#include "profileedit.h" #include "filesystemaccess.h" QT_BEGIN_NAMESPACE @@ -41,19 +16,45 @@ class LauncherWindow : public QMainWindow public slots: void openWindow_edit(); void openWindow_new(); + void simulateData(); public: - LauncherWindow(std::string basePath, QWidget* parent = nullptr); + LauncherWindow(QWidget *parent = nullptr); ~LauncherWindow(); void receiveAssets(std::vector results); private: void populateProfilesList(); void populateWindowConfigsList(); + void clearData(); + void initialize_meta(); + void initialize_modules(); + void initialize_assets(); + void initialize_properties(); + void initialize_keybindings(); + void initialize_deltaTimes(); + void initialize_time(); + void initialize_camera(); + void initialize_markNodes(); + void initialize_addedScripts(); + Ui::LauncherWindow *ui; - editorwindow* myEditorWindow; + ProfileEdit* myEditorWindow; filesystemAccess _fileAccess_profiles; filesystemAccess _fileAccess_winConfigs; - QString _basePath; + + Meta _metaData; + std::vector _moduleData; + std::vector _assetData; + filesystemAccess _filesystemAccess; + std::string _reportAssetsInFilesystem; + std::vector _propsData; + std::vector _keybindingsData; + DeltaTimes _deltaTimesData; + OSTime _timeData; + Camera _cameraData; + std::vector _markNodesData; + std::string _addedScriptsData; + ProfileBlock _pData; }; -#endif // __OPENSPACE_LAUNCHER___LAUNCHERWINDOW___H__ +#endif // LAUNCHERWINDOW_H diff --git a/apps/OpenSpace/ext/launcher/launcherwindow.ui b/apps/OpenSpace/ext/launcher/launcherwindow.ui new file mode 100644 index 0000000000..2a9fedfbc0 --- /dev/null +++ b/apps/OpenSpace/ext/launcher/launcherwindow.ui @@ -0,0 +1,206 @@ + + + LauncherWindow + + + + 0 + 0 + 473 + 576 + + + + LauncherWindow + + + false + + + background: rgb(46, 52, 54); + +QPushButton { + background: rgb(186, 189, 182); +} + + + + + + 270 + 440 + 100 + 40 + + + + + Arial + + + + background: rgb(186, 189, 182) + + + New Profile + + + + + + 130 + 350 + 240 + 60 + + + + + Arial + + + + background: rgb(186, 189, 182) + + + Start OpenSpace + + + + + + 130 + 440 + 100 + 40 + + + + + Arial + + + + background: rgb(186, 189, 182) + + + Edit Profile + + + + + + 40 + 10 + 400 + 120 + + + + + + + + + + 130 + 180 + 240 + 50 + + + + + + + 130 + 270 + 240 + 50 + + + + + + + 130 + 160 + 151 + 17 + + + + + Arial + + + + <html><head/><body><p><span style=" font-size:12pt; font-weight:600; color:#ffffff;">Choose Profile</span></p></body></html> + + + Qt::RichText + + + + + + 130 + 250 + 151 + 17 + + + + + Arial + + + + <html><head/><body><p><span style=" font-size:12pt; font-weight:600; color:#ffffff;">Window Options</span></p></body></html> + + + Qt::RichText + + + + + + 210 + 500 + 89 + 25 + + + + simData + + + + + + false + + + + 0 + 0 + 473 + 22 + + + + + OpenSpace Launcher + + + + + + + false + + + + + + diff --git a/apps/OpenSpace/ext/launcher/profileedit.cpp b/apps/OpenSpace/ext/launcher/profileedit.cpp new file mode 100644 index 0000000000..7d2dc63c57 --- /dev/null +++ b/apps/OpenSpace/ext/launcher/profileedit.cpp @@ -0,0 +1,246 @@ +#include "profileedit.h" +#include "./ui_profileedit.h" +#include "filesystemaccess.h" + + +ProfileEdit::ProfileEdit(ProfileBlock imported, QWidget *parent) + : QDialog(parent) + , ui(new Ui::ProfileEdit) + , _pData(imported) +{ + ui->setupUi(this); + + ui->text_meta->setText(summarizeText_meta()); + ui->text_meta->setReadOnly(true); + + ui->text_modules->setText(summarizeText_modules()); + ui->text_modules->setReadOnly(true); + + ui->text_assets->setText(summarizeText_assets()); + ui->text_assets->setReadOnly(true); + + ui->text_properties->setText(summarizeText_properties()); + ui->text_properties->setReadOnly(true); + + ui->text_keybindings->setText(summarizeText_keybindings()); + ui->text_keybindings->setReadOnly(true); + + ui->text_time->setText(summarizeText_time()); + ui->text_time->setReadOnly(true); + + ui->text_deltatimes->setText(summarizeText_deltaTimes()); + ui->text_deltatimes->setReadOnly(true); + + ui->text_camera->setText(summarizeText_camera()); + ui->text_camera->setReadOnly(true); + + ui->text_marknodes->setText(summarizeText_markNodes()); + ui->text_marknodes->setReadOnly(true); + + ui->text_additionalscripts->setText(summarizeText_addedScripts()); + ui->text_additionalscripts->setReadOnly(true); + + connect(ui->edit_meta, SIGNAL(clicked()), this, SLOT(openMeta())); + connect(ui->edit_properties, SIGNAL(clicked()), this, SLOT(openProperties())); + connect(ui->edit_modules, SIGNAL(clicked()), this, SLOT(openModules())); + connect(ui->edit_keybindings, SIGNAL(clicked()), this, SLOT(openKeybindings())); + connect(ui->edit_assets, SIGNAL(clicked()), this, SLOT(openAssets())); + connect(ui->edit_time, SIGNAL(clicked()), this, SLOT(openTime())); + connect(ui->edit_additionalscripts, SIGNAL(clicked()), this, SLOT(openAddedScripts())); + connect(ui->edit_deltatimes, SIGNAL(clicked()), this, SLOT(openDeltaTimes())); + connect(ui->edit_camera, SIGNAL(clicked()), this, SLOT(openCamera())); + connect(ui->edit_marknodes, SIGNAL(clicked()), this, SLOT(openMarkNodes())); +} + +void ProfileEdit::setProfileName(QString profileToSet) { + ui->line_profile->setText(profileToSet); +} + +void ProfileEdit::openMeta() { + _meta = new meta(_pData._metaData); + _meta->exec(); + ui->text_meta->setText(summarizeText_meta()); +} + +QString ProfileEdit::summarizeText_meta() { + QString s = QString(_pData._metaData.name.c_str()); + s += ", " + QString(_pData._metaData.version.c_str()); + s += ", " + QString(_pData._metaData.description.c_str()); + s += ", " + QString(_pData._metaData.author.c_str()); + s += ", " + QString(_pData._metaData.url.c_str()); + s += ", " + QString(_pData._metaData.license.c_str()); + + return s; +} + +void ProfileEdit::openModules() { + _modules = new osmodules(_pData._moduleData); + _modules->exec(); + ui->text_modules->setText(summarizeText_modules()); +} + +QString ProfileEdit::summarizeText_modules() { + QString results = QString("\n").arg(_pData._moduleData.size()); + for (Module m : _pData._moduleData) { + results += " " + QString(m.name.c_str()); + if (m.loadedInstruction.size() > 0 && m.notLoadedInstruction.size() > 0) { + results += " (has commands for both loaded & non-loaded conditions)"; + } + else if (m.loadedInstruction.size() > 0) { + results += " (has command for loaded condition)"; + } + else if (m.notLoadedInstruction.size() > 0) { + results += " (has command for non-loaded condition)"; + } + results += "\n"; + } + return results; +} + +void ProfileEdit::openProperties() { + _properties = new properties(_pData._propsData); + _properties->exec(); + ui->text_properties->setText(summarizeText_properties()); +} + +QString ProfileEdit::summarizeText_properties() { + QString results = QString("\n").arg(_pData._propsData.size()); + for (Property p : _pData._propsData) { + results += " " + QString(p.name.c_str()) + " = "; + results += QString(p.value.c_str()) + "\n"; + } + return results; +} + +void ProfileEdit::openKeybindings() { + _keybindings = new keybindings(_pData._keybindingsData); + _keybindings->exec(); + ui->text_keybindings->setText(summarizeText_keybindings()); +} + +QString ProfileEdit::summarizeText_keybindings() { + QString results = + QString("\n").arg(_pData._keybindingsData.size()); + for (Keybinding k : _pData._keybindingsData) { + results += " " + QString(k.name.c_str()) + " ("; + int keymod = static_cast(k.key.modifier); + if (keymod != static_cast(KeyModifier::NoModifier)) { + results += QString(keyModifierNames.at(keymod).c_str()) + "+"; + } + results += QString(keyNames.at(static_cast(k.key.key)).c_str()); + results += ")\n"; + } + return results; +} + +void ProfileEdit::openAssets() { + _assets = new assets(_pData._assetData, _pData._reportAssetsInFilesystem); + _assets->exec(); + ui->text_assets->setText(summarizeText_assets()); +} + +QString ProfileEdit::summarizeText_assets() { + QString results = QString("\n").arg(_pData._assetData.size()); + for (Asset a : _pData._assetData) { + results += " " + QString(a.path.c_str()) + "/"; + results += QString(a.name.c_str()) + "\n"; + } + return results; +} + +void ProfileEdit::openTime() { + _time = new ostime(_pData._timeData); + _time->exec(); + ui->text_time->setText(summarizeText_time()); +} + +QString ProfileEdit::summarizeText_time() { + QString results; + if (_pData._timeData.type == OSTime::Type::Absolute) { + results = "Absolute time: "; + } + else if (_pData._timeData.type == OSTime::Type::Relative) { + results = "Relative time: "; + } + results += QString(_pData._timeData.time.c_str()); + return results; +} + +void ProfileEdit::openDeltaTimes() { + _deltaTimes = new deltaTimes(_pData._deltaTimesData); + _deltaTimes->exec(); + ui->text_deltatimes->setText(summarizeText_deltaTimes()); +} + +QString ProfileEdit::summarizeText_deltaTimes() { + QString results = + QString("\n").arg(_pData._deltaTimesData.size()); + for (size_t i = 0; i < _pData._deltaTimesData.size(); ++i) { + results += _deltaTimes->createSummaryForDeltaTime(i, + _pData._deltaTimesData._times.at(i), false); + results += "\t" + QString::number(_pData._deltaTimesData._times.at(i)) + "\n"; + } + return results; +} + +void ProfileEdit::openAddedScripts() { + _addedScripts = new addedScripts(_pData._addedScriptsData); + _addedScripts->exec(); + ui->text_additionalscripts->setText(summarizeText_addedScripts()); +} + +QString ProfileEdit::summarizeText_addedScripts() { + return QString(_pData._addedScriptsData.c_str()); +} + +void ProfileEdit::openCamera() { + _camera = new camera(_pData._cameraData); + _camera->exec(); + ui->text_camera->setText(summarizeText_camera()); +} + +QString ProfileEdit::summarizeText_camera() { + QString results; + if (_pData._cameraData.type == Camera::Type::Nav) { + results = "setNavigationState: "; + results += QString(_pData._cameraData.nav.anchor.c_str()) + " "; + results += QString(_pData._cameraData.nav.aim.c_str()) + " "; + results += QString(_pData._cameraData.nav.referenceFrame.c_str()) + " "; + results += "Pos=" + QString(_pData._cameraData.nav.position[0].c_str()) + ","; + results += QString(_pData._cameraData.nav.position[1].c_str()) + ","; + results += QString(_pData._cameraData.nav.position[2].c_str()) + " "; + if (_pData._cameraData.nav.up[0].length() > 0) { + results += "Up=" + QString(_pData._cameraData.nav.up[0].c_str()) + ","; + results += QString(_pData._cameraData.nav.up[1].c_str()) + ","; + results += QString(_pData._cameraData.nav.up[2].c_str()) + " "; + } + results += "Yaw=" + QString(_pData._cameraData.nav.yaw.c_str()) + " "; + results += "Pitch=" + QString(_pData._cameraData.nav.pitch.c_str()) + " "; + } + else if (_pData._cameraData.type == Camera::Type::Geo) { + results = "goToGeo: "; + results += QString(_pData._cameraData.geo.anchor.c_str()) + " "; + results += "Lat=" + QString(_pData._cameraData.geo.latitude.c_str()) + " "; + results += "Lon=" + QString(_pData._cameraData.geo.longitude.c_str()) + " "; + results += "Alt=" + QString(_pData._cameraData.geo.altitude.c_str()) + " "; + } + return results; +} + +void ProfileEdit::openMarkNodes() { + _markNodes = new markNodes(_pData._markNodesData); + _markNodes->exec(); + ui->text_marknodes->setText(summarizeText_markNodes()); +} + +QString ProfileEdit::summarizeText_markNodes() { + QString results; + for (auto s : _pData._markNodesData) { + results += QString(s.c_str()) + " "; + } + return results; +} + +ProfileEdit::~ProfileEdit() { + delete ui; +} diff --git a/apps/OpenSpace/ext/launcher/profileedit.h b/apps/OpenSpace/ext/launcher/profileedit.h new file mode 100644 index 0000000000..0feff6a030 --- /dev/null +++ b/apps/OpenSpace/ext/launcher/profileedit.h @@ -0,0 +1,87 @@ +#ifndef PROFILEEDIT_H +#define PROFILEEDIT_H + +#include +#include +#include "meta.h" +#include "properties.h" +#include "osmodules.h" +#include "keybindings.h" +#include "assets.h" +#include "ostime.h" +#include "addedScripts.h" +#include "deltaTimes.h" +#include "camera.h" +#include "markNodes.h" +#include "ostime.h" + +QT_BEGIN_NAMESPACE +namespace Ui { +class ProfileEdit; +} +QT_END_NAMESPACE + +struct ProfileBlock { + Meta& _metaData; + std::vector& _moduleData; + std::vector& _assetData; + std::string& _reportAssetsInFilesystem; + std::vector& _propsData; + std::vector& _keybindingsData; + DeltaTimes& _deltaTimesData; + OSTime& _timeData; + Camera& _cameraData; + std::vector& _markNodesData; + std::string& _addedScriptsData; +}; + +class ProfileEdit : public QDialog +{ + Q_OBJECT + +public slots: + void openMeta(); + void openProperties(); + void openModules(); + void openKeybindings(); + void openAssets(); + void openTime(); + void openAddedScripts(); + void openDeltaTimes(); + void openCamera(); + void openMarkNodes(); + +public: + explicit ProfileEdit(ProfileBlock imported, QWidget *parent = nullptr); + ~ProfileEdit(); + void setProfileName(QString profileToSet); + +private: + QString summarizeText_meta(); + QString summarizeText_modules(); + QString summarizeText_assets(); + QString summarizeText_properties(); + QString summarizeText_keybindings(); + QString summarizeText_deltaTimes(); + QString summarizeText_time(); + QString summarizeText_camera(); + QString summarizeText_markNodes(); + QString summarizeText_addedScripts(); + + Ui::ProfileEdit *ui; + QWidget* _parent; + meta* _meta; + properties* _properties; + osmodules* _modules; + keybindings* _keybindings; + assets* _assets; + ostime* _time; + addedScripts* _addedScripts; + deltaTimes* _deltaTimes; + camera* _camera; + markNodes* _markNodes; + + ProfileBlock _pData; +}; + +#endif // PROFILEEDIT_H diff --git a/apps/OpenSpace/ext/launcher/profileedit.ui b/apps/OpenSpace/ext/launcher/profileedit.ui new file mode 100644 index 0000000000..7328746b20 --- /dev/null +++ b/apps/OpenSpace/ext/launcher/profileedit.ui @@ -0,0 +1,838 @@ + + + ProfileEdit + + + + 0 + 0 + 400 + 790 + + + + Profile Editor + + + + + 50 + 750 + 341 + 32 + + + + Qt::Horizontal + + + QDialogButtonBox::Cancel|QDialogButtonBox::Ok + + + + + + 10 + 60 + 381 + 671 + + + + + + + true + + + + 444 + 56 + + + + QFrame::StyledPanel + + + QFrame::Plain + + + + + 4 + 0 + 111 + 17 + + + + + Arial + + + + <html><head/><body><p><span style=" font-weight:600;">Meta</span></p></body></html> + + + + + + 328 + 20 + 41 + 25 + + + + Edit + + + + + + 10 + 18 + 311 + 35 + + + + + Arial + 10 + + + + Qt::ScrollBarAlwaysOff + + + QTextEdit::NoWrap + + + + + + + + true + + + + 444 + 56 + + + + QFrame::StyledPanel + + + QFrame::Plain + + + + + 4 + 0 + 111 + 17 + + + + + Arial + + + + <html><head/><body><p><span style=" font-weight:600;">Modules</span></p></body></html> + + + + + + 328 + 20 + 41 + 25 + + + + Edit + + + + + + 10 + 18 + 311 + 35 + + + + + Arial + 10 + + + + Qt::ScrollBarAlwaysOff + + + QTextEdit::NoWrap + + + + + + + + true + + + + 444 + 56 + + + + QFrame::StyledPanel + + + QFrame::Plain + + + + + 4 + 0 + 111 + 17 + + + + + Arial + + + + <html><head/><body><p><span style=" font-weight:600;">Assets</span></p></body></html> + + + + + + 328 + 20 + 41 + 25 + + + + Edit + + + + + + 10 + 18 + 311 + 35 + + + + + Arial + 10 + + + + Qt::ScrollBarAlwaysOff + + + QTextEdit::NoWrap + + + + + + + + true + + + + 444 + 56 + + + + QFrame::StyledPanel + + + QFrame::Plain + + + + + 4 + 0 + 111 + 17 + + + + + Arial + + + + <html><head/><body><p><span style=" font-weight:600;">Properties</span></p></body></html> + + + + + + 328 + 20 + 41 + 25 + + + + Edit + + + + + + 10 + 18 + 311 + 35 + + + + + Arial + 10 + + + + Qt::ScrollBarAlwaysOff + + + QTextEdit::NoWrap + + + + + + + + true + + + + 444 + 56 + + + + QFrame::StyledPanel + + + QFrame::Plain + + + + + 4 + 0 + 111 + 17 + + + + + Arial + + + + <html><head/><body><p><span style=" font-weight:600;">Keybindings</span></p></body></html> + + + + + + 328 + 20 + 41 + 25 + + + + Edit + + + + + + 10 + 18 + 311 + 35 + + + + + Arial + 10 + + + + Qt::ScrollBarAlwaysOff + + + QTextEdit::NoWrap + + + + + + + + true + + + + 444 + 56 + + + + QFrame::StyledPanel + + + QFrame::Plain + + + + + 4 + 0 + 111 + 17 + + + + + Arial + + + + <html><head/><body><p><span style=" font-weight:600;">Time</span></p></body></html> + + + + + + 328 + 20 + 41 + 25 + + + + Edit + + + + + + 10 + 18 + 311 + 35 + + + + + Arial + 10 + + + + Qt::ScrollBarAlwaysOff + + + QTextEdit::NoWrap + + + + + + + + true + + + + 444 + 56 + + + + QFrame::StyledPanel + + + QFrame::Plain + + + + + 4 + 0 + 111 + 17 + + + + + Arial + + + + <html><head/><body><p><span style=" font-weight:600;">Delta Times</span></p></body></html> + + + + + + 328 + 20 + 41 + 25 + + + + Edit + + + + + + 10 + 18 + 311 + 35 + + + + + Arial + 10 + + + + Qt::ScrollBarAlwaysOff + + + QTextEdit::NoWrap + + + + + + + + true + + + + 444 + 56 + + + + QFrame::StyledPanel + + + QFrame::Plain + + + + + 4 + 0 + 111 + 17 + + + + + Arial + + + + <html><head/><body><p><span style=" font-weight:600;">Camera</span></p></body></html> + + + + + + 328 + 20 + 41 + 25 + + + + Edit + + + + + + 10 + 18 + 311 + 35 + + + + + Arial + 10 + + + + Qt::ScrollBarAlwaysOff + + + QTextEdit::NoWrap + + + + + + + + true + + + + 444 + 56 + + + + QFrame::StyledPanel + + + QFrame::Plain + + + + + 4 + 0 + 181 + 17 + + + + + Arial + + + + <html><head/><body><p><span style=" font-weight:600;">Mark Interesting Nodes</span></p></body></html> + + + + + + 328 + 20 + 41 + 25 + + + + Edit + + + + + + 10 + 18 + 311 + 35 + + + + + Arial + 10 + + + + Qt::ScrollBarAlwaysOff + + + QTextEdit::NoWrap + + + + + + + + true + + + + 444 + 56 + + + + QFrame::StyledPanel + + + QFrame::Plain + + + + + 4 + 0 + 171 + 17 + + + + + Arial + + + + <html><head/><body><p><span style=" font-weight:600;">Additional Scripts</span></p></body></html> + + + + + + 328 + 20 + 41 + 25 + + + + Edit + + + + + + 10 + 18 + 311 + 35 + + + + + Arial + 10 + + + + Qt::ScrollBarAlwaysOff + + + QTextEdit::NoWrap + + + + + + + + + + 10 + 22 + 111 + 21 + + + + + Arial + 13 + + + + <html><head/><body><p><span style=" font-weight:600;">Profile Name:</span></p></body></html> + + + + + + 130 + 20 + 201 + 25 + + + + + Arial + 12 + + + + <html><head/><body><p>Name of profile filename</p></body></html> + + + + + + + buttonBox + accepted() + ProfileEdit + accept() + + + 248 + 254 + + + 157 + 274 + + + + + buttonBox + rejected() + ProfileEdit + reject() + + + 316 + 260 + + + 286 + 274 + + + + + diff --git a/apps/OpenSpace/ext/launcher/ui_launcherwindow.h b/apps/OpenSpace/ext/launcher/ui_launcherwindow.h index 56f4cc8f51..a95dfe70a1 100644 --- a/apps/OpenSpace/ext/launcher/ui_launcherwindow.h +++ b/apps/OpenSpace/ext/launcher/ui_launcherwindow.h @@ -1,37 +1,13 @@ -/***************************************************************************************** - * * - * OpenSpace * - * * - * Copyright (c) 2014-2020 * - * * - * Permission is hereby granted, free of charge, to any person obtaining a copy of this * - * software and associated documentation files (the "Software"), to deal in the Software * - * without restriction, including without limitation the rights to use, copy, modify, * - * merge, publish, distribute, sublicense, and/or sell copies of the Software, and to * - * permit persons to whom the Software is furnished to do so, subject to the following * - * conditions: * - * * - * The above copyright notice and this permission notice shall be included in all copies * - * or substantial portions of the Software. * - * * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, * - * INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A * - * PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT * - * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF * - * CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE * - * OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. * - ****************************************************************************************/ - /******************************************************************************** ** Form generated from reading UI file 'launcherwindow.ui' ** -** Created by: Qt User Interface Compiler version 5.12.2 +** Created by: Qt User Interface Compiler version 5.15.0 ** ** WARNING! All changes made in this file will be lost when recompiling UI file! ********************************************************************************/ -#ifndef __OPENSPACE_LAUNCHER_UI__LAUNCHERWINDOW___H__ -#define __OPENSPACE_LAUNCHER_UI__LAUNCHERWINDOW___H__ +#ifndef UI_LAUNCHERWINDOW_H +#define UI_LAUNCHERWINDOW_H #include #include @@ -43,7 +19,6 @@ #include #include #include -#include #include QT_BEGIN_NAMESPACE @@ -60,6 +35,7 @@ public: QComboBox *comboBoxWindowConfigs; QLabel *labelChoose; QLabel *labelOptions; + QPushButton *buttonSim; QMenuBar *menubar; QMenu *menuOpenSpace_Launcher; QStatusBar *statusbar; @@ -68,61 +44,61 @@ public: { if (LauncherWindow->objectName().isEmpty()) LauncherWindow->setObjectName(QString::fromUtf8("LauncherWindow")); - LauncherWindow->resize(586, 600); + LauncherWindow->resize(473, 576); LauncherWindow->setAutoFillBackground(false); - LauncherWindow->setStyleSheet(QString::fromUtf8( - "background: rgb(46, 52, 54);\n" - "\n" - "QPushButton {\n" - " background: rgb(186, 189, 182);\n" - "}") - ); + LauncherWindow->setStyleSheet(QString::fromUtf8("background: rgb(46, 52, 54);\n" +"\n" +"QPushButton {\n" +" background: rgb(186, 189, 182);\n" +"}")); centralwidget = new QWidget(LauncherWindow); centralwidget->setObjectName(QString::fromUtf8("centralwidget")); newButton = new QPushButton(centralwidget); newButton->setObjectName(QString::fromUtf8("newButton")); - newButton->setGeometry(QRect(300, 420, 100, 40)); + newButton->setGeometry(QRect(270, 440, 100, 40)); QFont font; font.setFamily(QString::fromUtf8("Arial")); newButton->setFont(font); newButton->setStyleSheet(QString::fromUtf8("background: rgb(186, 189, 182)")); qBtn_start = new QPushButton(centralwidget); qBtn_start->setObjectName(QString::fromUtf8("qBtn_start")); - qBtn_start->setGeometry(QRect(160, 330, 240, 60)); + qBtn_start->setGeometry(QRect(130, 350, 240, 60)); qBtn_start->setFont(font); qBtn_start->setStyleSheet(QString::fromUtf8("background: rgb(186, 189, 182)")); editButton = new QPushButton(centralwidget); editButton->setObjectName(QString::fromUtf8("editButton")); - editButton->setGeometry(QRect(160, 420, 100, 40)); + editButton->setGeometry(QRect(130, 440, 100, 40)); editButton->setFont(font); editButton->setStyleSheet(QString::fromUtf8("background: rgb(186, 189, 182)")); logolabel = new QLabel(centralwidget); logolabel->setObjectName(QString::fromUtf8("logolabel")); - logolabel->setGeometry(QRect(80, 0, 400, 120)); + logolabel->setGeometry(QRect(40, 10, 400, 120)); comboBoxProfiles = new QComboBox(centralwidget); comboBoxProfiles->setObjectName(QString::fromUtf8("comboBoxProfiles")); - comboBoxProfiles->setGeometry(QRect(160, 160, 240, 50)); + comboBoxProfiles->setGeometry(QRect(130, 180, 240, 50)); comboBoxWindowConfigs = new QComboBox(centralwidget); comboBoxWindowConfigs->setObjectName(QString::fromUtf8("comboBoxWindowConfigs")); - comboBoxWindowConfigs->setGeometry(QRect(160, 250, 240, 50)); + comboBoxWindowConfigs->setGeometry(QRect(130, 270, 240, 50)); labelChoose = new QLabel(centralwidget); labelChoose->setObjectName(QString::fromUtf8("labelChoose")); - labelChoose->setGeometry(QRect(160, 140, 151, 17)); + labelChoose->setGeometry(QRect(130, 160, 151, 17)); labelChoose->setFont(font); labelChoose->setTextFormat(Qt::RichText); labelOptions = new QLabel(centralwidget); labelOptions->setObjectName(QString::fromUtf8("labelOptions")); - labelOptions->setGeometry(QRect(160, 230, 151, 17)); + labelOptions->setGeometry(QRect(130, 250, 151, 17)); labelOptions->setFont(font); labelOptions->setTextFormat(Qt::RichText); + buttonSim = new QPushButton(centralwidget); + buttonSim->setObjectName(QString::fromUtf8("buttonSim")); + buttonSim->setGeometry(QRect(210, 500, 89, 25)); LauncherWindow->setCentralWidget(centralwidget); menubar = new QMenuBar(LauncherWindow); menubar->setObjectName(QString::fromUtf8("menubar")); menubar->setEnabled(false); - menubar->setGeometry(QRect(0, 0, 586, 22)); + menubar->setGeometry(QRect(0, 0, 473, 22)); menuOpenSpace_Launcher = new QMenu(menubar); - menuOpenSpace_Launcher->setObjectName( - QString::fromUtf8("menuOpenSpace_Launcher")); + menuOpenSpace_Launcher->setObjectName(QString::fromUtf8("menuOpenSpace_Launcher")); LauncherWindow->setMenuBar(menubar); statusbar = new QStatusBar(LauncherWindow); statusbar->setObjectName(QString::fromUtf8("statusbar")); @@ -134,48 +110,20 @@ public: retranslateUi(LauncherWindow); QMetaObject::connectSlotsByName(LauncherWindow); - } + } // setupUi void retranslateUi(QMainWindow *LauncherWindow) { - LauncherWindow->setWindowTitle(QApplication::translate( - "LauncherWindow", - "LauncherWindow", - nullptr)); - newButton->setText(QApplication::translate( - "LauncherWindow", - "New Profile", - nullptr) - ); - qBtn_start->setText(QApplication::translate( - "LauncherWindow", - "Start OpenSpace", - nullptr) - ); - editButton->setText(QApplication::translate( - "LauncherWindow", - "Edit Profile", - nullptr) - ); + LauncherWindow->setWindowTitle(QCoreApplication::translate("LauncherWindow", "LauncherWindow", nullptr)); + newButton->setText(QCoreApplication::translate("LauncherWindow", "New Profile", nullptr)); + qBtn_start->setText(QCoreApplication::translate("LauncherWindow", "Start OpenSpace", nullptr)); + editButton->setText(QCoreApplication::translate("LauncherWindow", "Edit Profile", nullptr)); logolabel->setText(QString()); - labelChoose->setText(QApplication::translate( - "LauncherWindow", - "

Choose Profile

", - nullptr) - ); - labelOptions->setText(QApplication::translate( - "LauncherWindow", - "

Window Options

", - nullptr) - ); - menuOpenSpace_Launcher->setTitle(QApplication::translate( - "LauncherWindow", - "OpenSpace Launcher", - nullptr) - ); - } + labelChoose->setText(QCoreApplication::translate("LauncherWindow", "

Choose Profile

", nullptr)); + labelOptions->setText(QCoreApplication::translate("LauncherWindow", "

Window Options

", nullptr)); + buttonSim->setText(QCoreApplication::translate("LauncherWindow", "simData", nullptr)); + menuOpenSpace_Launcher->setTitle(QCoreApplication::translate("LauncherWindow", "OpenSpace Launcher", nullptr)); + } // retranslateUi }; @@ -185,4 +133,4 @@ namespace Ui { QT_END_NAMESPACE -#endif // __OPENSPACE_LAUNCHER_UI__LAUNCHERWINDOW___H__ +#endif // UI_LAUNCHERWINDOW_H diff --git a/apps/OpenSpace/ext/launcher/ui_profileedit.h b/apps/OpenSpace/ext/launcher/ui_profileedit.h new file mode 100644 index 0000000000..dabc8fb790 --- /dev/null +++ b/apps/OpenSpace/ext/launcher/ui_profileedit.h @@ -0,0 +1,375 @@ +/******************************************************************************** +** Form generated from reading UI file 'profileedit.ui' +** +** Created by: Qt User Interface Compiler version 5.15.0 +** +** WARNING! All changes made in this file will be lost when recompiling UI file! +********************************************************************************/ + +#ifndef UI_PROFILEEDIT_H +#define UI_PROFILEEDIT_H + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +QT_BEGIN_NAMESPACE + +class Ui_ProfileEdit +{ +public: + QDialogButtonBox *buttonBox; + QWidget *verticalLayoutWidget; + QVBoxLayout *verticalLayout; + QFrame *frame_meta; + QLabel *label_meta; + QPushButton *edit_meta; + QTextEdit *text_meta; + QFrame *frame_modules; + QLabel *label_modules; + QPushButton *edit_modules; + QTextEdit *text_modules; + QFrame *frame_assets; + QLabel *label_assets; + QPushButton *edit_assets; + QTextEdit *text_assets; + QFrame *frame_properties; + QLabel *label_properties; + QPushButton *edit_properties; + QTextEdit *text_properties; + QFrame *frame_keybindings; + QLabel *label_keybindings; + QPushButton *edit_keybindings; + QTextEdit *text_keybindings; + QFrame *frame_time; + QLabel *label_time; + QPushButton *edit_time; + QTextEdit *text_time; + QFrame *frame_deltatimes; + QLabel *label_deltatimes; + QPushButton *edit_deltatimes; + QTextEdit *text_deltatimes; + QFrame *frame_camera; + QLabel *label_camera; + QPushButton *edit_camera; + QTextEdit *text_camera; + QFrame *frame_marknodes; + QLabel *label_marknodes; + QPushButton *edit_marknodes; + QTextEdit *text_marknodes; + QFrame *frame_additionalscripts; + QLabel *label_additionalscripts; + QPushButton *edit_additionalscripts; + QTextEdit *text_additionalscripts; + QLabel *label_profile; + QLineEdit *line_profile; + + void setupUi(QDialog *ProfileEdit) + { + if (ProfileEdit->objectName().isEmpty()) + ProfileEdit->setObjectName(QString::fromUtf8("ProfileEdit")); + ProfileEdit->resize(400, 790); + buttonBox = new QDialogButtonBox(ProfileEdit); + buttonBox->setObjectName(QString::fromUtf8("buttonBox")); + buttonBox->setGeometry(QRect(50, 750, 341, 32)); + buttonBox->setOrientation(Qt::Horizontal); + buttonBox->setStandardButtons(QDialogButtonBox::Cancel|QDialogButtonBox::Ok); + verticalLayoutWidget = new QWidget(ProfileEdit); + verticalLayoutWidget->setObjectName(QString::fromUtf8("verticalLayoutWidget")); + verticalLayoutWidget->setGeometry(QRect(10, 60, 381, 671)); + verticalLayout = new QVBoxLayout(verticalLayoutWidget); + verticalLayout->setObjectName(QString::fromUtf8("verticalLayout")); + verticalLayout->setContentsMargins(0, 0, 0, 0); + frame_meta = new QFrame(verticalLayoutWidget); + frame_meta->setObjectName(QString::fromUtf8("frame_meta")); + frame_meta->setEnabled(true); + frame_meta->setMaximumSize(QSize(444, 56)); + frame_meta->setFrameShape(QFrame::StyledPanel); + frame_meta->setFrameShadow(QFrame::Plain); + label_meta = new QLabel(frame_meta); + label_meta->setObjectName(QString::fromUtf8("label_meta")); + label_meta->setGeometry(QRect(4, 0, 111, 17)); + QFont font; + font.setFamily(QString::fromUtf8("Arial")); + label_meta->setFont(font); + edit_meta = new QPushButton(frame_meta); + edit_meta->setObjectName(QString::fromUtf8("edit_meta")); + edit_meta->setGeometry(QRect(328, 20, 41, 25)); + text_meta = new QTextEdit(frame_meta); + text_meta->setObjectName(QString::fromUtf8("text_meta")); + text_meta->setGeometry(QRect(10, 18, 311, 35)); + QFont font1; + font1.setFamily(QString::fromUtf8("Arial")); + font1.setPointSize(10); + text_meta->setFont(font1); + text_meta->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff); + text_meta->setLineWrapMode(QTextEdit::NoWrap); + + verticalLayout->addWidget(frame_meta); + + frame_modules = new QFrame(verticalLayoutWidget); + frame_modules->setObjectName(QString::fromUtf8("frame_modules")); + frame_modules->setEnabled(true); + frame_modules->setMaximumSize(QSize(444, 56)); + frame_modules->setFrameShape(QFrame::StyledPanel); + frame_modules->setFrameShadow(QFrame::Plain); + label_modules = new QLabel(frame_modules); + label_modules->setObjectName(QString::fromUtf8("label_modules")); + label_modules->setGeometry(QRect(4, 0, 111, 17)); + label_modules->setFont(font); + edit_modules = new QPushButton(frame_modules); + edit_modules->setObjectName(QString::fromUtf8("edit_modules")); + edit_modules->setGeometry(QRect(328, 20, 41, 25)); + text_modules = new QTextEdit(frame_modules); + text_modules->setObjectName(QString::fromUtf8("text_modules")); + text_modules->setGeometry(QRect(10, 18, 311, 35)); + text_modules->setFont(font1); + text_modules->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff); + text_modules->setLineWrapMode(QTextEdit::NoWrap); + + verticalLayout->addWidget(frame_modules); + + frame_assets = new QFrame(verticalLayoutWidget); + frame_assets->setObjectName(QString::fromUtf8("frame_assets")); + frame_assets->setEnabled(true); + frame_assets->setMaximumSize(QSize(444, 56)); + frame_assets->setFrameShape(QFrame::StyledPanel); + frame_assets->setFrameShadow(QFrame::Plain); + label_assets = new QLabel(frame_assets); + label_assets->setObjectName(QString::fromUtf8("label_assets")); + label_assets->setGeometry(QRect(4, 0, 111, 17)); + label_assets->setFont(font); + edit_assets = new QPushButton(frame_assets); + edit_assets->setObjectName(QString::fromUtf8("edit_assets")); + edit_assets->setGeometry(QRect(328, 20, 41, 25)); + text_assets = new QTextEdit(frame_assets); + text_assets->setObjectName(QString::fromUtf8("text_assets")); + text_assets->setGeometry(QRect(10, 18, 311, 35)); + text_assets->setFont(font1); + text_assets->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff); + text_assets->setLineWrapMode(QTextEdit::NoWrap); + + verticalLayout->addWidget(frame_assets); + + frame_properties = new QFrame(verticalLayoutWidget); + frame_properties->setObjectName(QString::fromUtf8("frame_properties")); + frame_properties->setEnabled(true); + frame_properties->setMaximumSize(QSize(444, 56)); + frame_properties->setFrameShape(QFrame::StyledPanel); + frame_properties->setFrameShadow(QFrame::Plain); + label_properties = new QLabel(frame_properties); + label_properties->setObjectName(QString::fromUtf8("label_properties")); + label_properties->setGeometry(QRect(4, 0, 111, 17)); + label_properties->setFont(font); + edit_properties = new QPushButton(frame_properties); + edit_properties->setObjectName(QString::fromUtf8("edit_properties")); + edit_properties->setGeometry(QRect(328, 20, 41, 25)); + text_properties = new QTextEdit(frame_properties); + text_properties->setObjectName(QString::fromUtf8("text_properties")); + text_properties->setGeometry(QRect(10, 18, 311, 35)); + text_properties->setFont(font1); + text_properties->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff); + text_properties->setLineWrapMode(QTextEdit::NoWrap); + + verticalLayout->addWidget(frame_properties); + + frame_keybindings = new QFrame(verticalLayoutWidget); + frame_keybindings->setObjectName(QString::fromUtf8("frame_keybindings")); + frame_keybindings->setEnabled(true); + frame_keybindings->setMaximumSize(QSize(444, 56)); + frame_keybindings->setFrameShape(QFrame::StyledPanel); + frame_keybindings->setFrameShadow(QFrame::Plain); + label_keybindings = new QLabel(frame_keybindings); + label_keybindings->setObjectName(QString::fromUtf8("label_keybindings")); + label_keybindings->setGeometry(QRect(4, 0, 111, 17)); + label_keybindings->setFont(font); + edit_keybindings = new QPushButton(frame_keybindings); + edit_keybindings->setObjectName(QString::fromUtf8("edit_keybindings")); + edit_keybindings->setGeometry(QRect(328, 20, 41, 25)); + text_keybindings = new QTextEdit(frame_keybindings); + text_keybindings->setObjectName(QString::fromUtf8("text_keybindings")); + text_keybindings->setGeometry(QRect(10, 18, 311, 35)); + text_keybindings->setFont(font1); + text_keybindings->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff); + text_keybindings->setLineWrapMode(QTextEdit::NoWrap); + + verticalLayout->addWidget(frame_keybindings); + + frame_time = new QFrame(verticalLayoutWidget); + frame_time->setObjectName(QString::fromUtf8("frame_time")); + frame_time->setEnabled(true); + frame_time->setMaximumSize(QSize(444, 56)); + frame_time->setFrameShape(QFrame::StyledPanel); + frame_time->setFrameShadow(QFrame::Plain); + label_time = new QLabel(frame_time); + label_time->setObjectName(QString::fromUtf8("label_time")); + label_time->setGeometry(QRect(4, 0, 111, 17)); + label_time->setFont(font); + edit_time = new QPushButton(frame_time); + edit_time->setObjectName(QString::fromUtf8("edit_time")); + edit_time->setGeometry(QRect(328, 20, 41, 25)); + text_time = new QTextEdit(frame_time); + text_time->setObjectName(QString::fromUtf8("text_time")); + text_time->setGeometry(QRect(10, 18, 311, 35)); + text_time->setFont(font1); + text_time->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff); + text_time->setLineWrapMode(QTextEdit::NoWrap); + + verticalLayout->addWidget(frame_time); + + frame_deltatimes = new QFrame(verticalLayoutWidget); + frame_deltatimes->setObjectName(QString::fromUtf8("frame_deltatimes")); + frame_deltatimes->setEnabled(true); + frame_deltatimes->setMaximumSize(QSize(444, 56)); + frame_deltatimes->setFrameShape(QFrame::StyledPanel); + frame_deltatimes->setFrameShadow(QFrame::Plain); + label_deltatimes = new QLabel(frame_deltatimes); + label_deltatimes->setObjectName(QString::fromUtf8("label_deltatimes")); + label_deltatimes->setGeometry(QRect(4, 0, 111, 17)); + label_deltatimes->setFont(font); + edit_deltatimes = new QPushButton(frame_deltatimes); + edit_deltatimes->setObjectName(QString::fromUtf8("edit_deltatimes")); + edit_deltatimes->setGeometry(QRect(328, 20, 41, 25)); + text_deltatimes = new QTextEdit(frame_deltatimes); + text_deltatimes->setObjectName(QString::fromUtf8("text_deltatimes")); + text_deltatimes->setGeometry(QRect(10, 18, 311, 35)); + text_deltatimes->setFont(font1); + text_deltatimes->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff); + text_deltatimes->setLineWrapMode(QTextEdit::NoWrap); + + verticalLayout->addWidget(frame_deltatimes); + + frame_camera = new QFrame(verticalLayoutWidget); + frame_camera->setObjectName(QString::fromUtf8("frame_camera")); + frame_camera->setEnabled(true); + frame_camera->setMaximumSize(QSize(444, 56)); + frame_camera->setFrameShape(QFrame::StyledPanel); + frame_camera->setFrameShadow(QFrame::Plain); + label_camera = new QLabel(frame_camera); + label_camera->setObjectName(QString::fromUtf8("label_camera")); + label_camera->setGeometry(QRect(4, 0, 111, 17)); + label_camera->setFont(font); + edit_camera = new QPushButton(frame_camera); + edit_camera->setObjectName(QString::fromUtf8("edit_camera")); + edit_camera->setGeometry(QRect(328, 20, 41, 25)); + text_camera = new QTextEdit(frame_camera); + text_camera->setObjectName(QString::fromUtf8("text_camera")); + text_camera->setGeometry(QRect(10, 18, 311, 35)); + text_camera->setFont(font1); + text_camera->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff); + text_camera->setLineWrapMode(QTextEdit::NoWrap); + + verticalLayout->addWidget(frame_camera); + + frame_marknodes = new QFrame(verticalLayoutWidget); + frame_marknodes->setObjectName(QString::fromUtf8("frame_marknodes")); + frame_marknodes->setEnabled(true); + frame_marknodes->setMaximumSize(QSize(444, 56)); + frame_marknodes->setFrameShape(QFrame::StyledPanel); + frame_marknodes->setFrameShadow(QFrame::Plain); + label_marknodes = new QLabel(frame_marknodes); + label_marknodes->setObjectName(QString::fromUtf8("label_marknodes")); + label_marknodes->setGeometry(QRect(4, 0, 181, 17)); + label_marknodes->setFont(font); + edit_marknodes = new QPushButton(frame_marknodes); + edit_marknodes->setObjectName(QString::fromUtf8("edit_marknodes")); + edit_marknodes->setGeometry(QRect(328, 20, 41, 25)); + text_marknodes = new QTextEdit(frame_marknodes); + text_marknodes->setObjectName(QString::fromUtf8("text_marknodes")); + text_marknodes->setGeometry(QRect(10, 18, 311, 35)); + text_marknodes->setFont(font1); + text_marknodes->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff); + text_marknodes->setLineWrapMode(QTextEdit::NoWrap); + + verticalLayout->addWidget(frame_marknodes); + + frame_additionalscripts = new QFrame(verticalLayoutWidget); + frame_additionalscripts->setObjectName(QString::fromUtf8("frame_additionalscripts")); + frame_additionalscripts->setEnabled(true); + frame_additionalscripts->setMaximumSize(QSize(444, 56)); + frame_additionalscripts->setFrameShape(QFrame::StyledPanel); + frame_additionalscripts->setFrameShadow(QFrame::Plain); + label_additionalscripts = new QLabel(frame_additionalscripts); + label_additionalscripts->setObjectName(QString::fromUtf8("label_additionalscripts")); + label_additionalscripts->setGeometry(QRect(4, 0, 171, 17)); + label_additionalscripts->setFont(font); + edit_additionalscripts = new QPushButton(frame_additionalscripts); + edit_additionalscripts->setObjectName(QString::fromUtf8("edit_additionalscripts")); + edit_additionalscripts->setGeometry(QRect(328, 20, 41, 25)); + text_additionalscripts = new QTextEdit(frame_additionalscripts); + text_additionalscripts->setObjectName(QString::fromUtf8("text_additionalscripts")); + text_additionalscripts->setGeometry(QRect(10, 18, 311, 35)); + text_additionalscripts->setFont(font1); + text_additionalscripts->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff); + text_additionalscripts->setLineWrapMode(QTextEdit::NoWrap); + + verticalLayout->addWidget(frame_additionalscripts); + + label_profile = new QLabel(ProfileEdit); + label_profile->setObjectName(QString::fromUtf8("label_profile")); + label_profile->setGeometry(QRect(10, 22, 111, 21)); + QFont font2; + font2.setFamily(QString::fromUtf8("Arial")); + font2.setPointSize(13); + label_profile->setFont(font2); + line_profile = new QLineEdit(ProfileEdit); + line_profile->setObjectName(QString::fromUtf8("line_profile")); + line_profile->setGeometry(QRect(130, 20, 201, 25)); + QFont font3; + font3.setFamily(QString::fromUtf8("Arial")); + font3.setPointSize(12); + line_profile->setFont(font3); + + retranslateUi(ProfileEdit); + QObject::connect(buttonBox, SIGNAL(accepted()), ProfileEdit, SLOT(accept())); + QObject::connect(buttonBox, SIGNAL(rejected()), ProfileEdit, SLOT(reject())); + + QMetaObject::connectSlotsByName(ProfileEdit); + } // setupUi + + void retranslateUi(QDialog *ProfileEdit) + { + ProfileEdit->setWindowTitle(QCoreApplication::translate("ProfileEdit", "Profile Editor", nullptr)); + label_meta->setText(QCoreApplication::translate("ProfileEdit", "

Meta

", nullptr)); + edit_meta->setText(QCoreApplication::translate("ProfileEdit", "Edit", nullptr)); + label_modules->setText(QCoreApplication::translate("ProfileEdit", "

Modules

", nullptr)); + edit_modules->setText(QCoreApplication::translate("ProfileEdit", "Edit", nullptr)); + label_assets->setText(QCoreApplication::translate("ProfileEdit", "

Assets

", nullptr)); + edit_assets->setText(QCoreApplication::translate("ProfileEdit", "Edit", nullptr)); + label_properties->setText(QCoreApplication::translate("ProfileEdit", "

Properties

", nullptr)); + edit_properties->setText(QCoreApplication::translate("ProfileEdit", "Edit", nullptr)); + label_keybindings->setText(QCoreApplication::translate("ProfileEdit", "

Keybindings

", nullptr)); + edit_keybindings->setText(QCoreApplication::translate("ProfileEdit", "Edit", nullptr)); + label_time->setText(QCoreApplication::translate("ProfileEdit", "

Time

", nullptr)); + edit_time->setText(QCoreApplication::translate("ProfileEdit", "Edit", nullptr)); + label_deltatimes->setText(QCoreApplication::translate("ProfileEdit", "

Delta Times

", nullptr)); + edit_deltatimes->setText(QCoreApplication::translate("ProfileEdit", "Edit", nullptr)); + label_camera->setText(QCoreApplication::translate("ProfileEdit", "

Camera

", nullptr)); + edit_camera->setText(QCoreApplication::translate("ProfileEdit", "Edit", nullptr)); + label_marknodes->setText(QCoreApplication::translate("ProfileEdit", "

Mark Interesting Nodes

", nullptr)); + edit_marknodes->setText(QCoreApplication::translate("ProfileEdit", "Edit", nullptr)); + label_additionalscripts->setText(QCoreApplication::translate("ProfileEdit", "

Additional Scripts

", nullptr)); + edit_additionalscripts->setText(QCoreApplication::translate("ProfileEdit", "Edit", nullptr)); + label_profile->setText(QCoreApplication::translate("ProfileEdit", "

Profile Name:

", nullptr)); +#if QT_CONFIG(tooltip) + line_profile->setToolTip(QCoreApplication::translate("ProfileEdit", "

Name of profile filename

", nullptr)); +#endif // QT_CONFIG(tooltip) + } // retranslateUi + +}; + +namespace Ui { + class ProfileEdit: public Ui_ProfileEdit {}; +} // namespace Ui + +QT_END_NAMESPACE + +#endif // UI_PROFILEEDIT_H