Commit bf3f89d2 authored by Guenter Schwann's avatar Guenter Schwann
Browse files

696: Move IVE toolbar actions to actionbar

parent 65e9e66e
Pipeline #6640 passed with stage
in 7 minutes and 53 seconds
...@@ -81,8 +81,6 @@ MainWindow::MainWindow(ive::IVEditorCore *core, QWidget *parent) ...@@ -81,8 +81,6 @@ MainWindow::MainWindow(ive::IVEditorCore *core, QWidget *parent)
connect(m_core->actionSaveFile(), &QAction::triggered, this, [=]() { exportXml(); }); connect(m_core->actionSaveFile(), &QAction::triggered, this, [=]() { exportXml(); });
connect(m_core->actionSaveFileAs(), &QAction::triggered, this, [=]() { exportXmlAs(); }); connect(m_core->actionSaveFileAs(), &QAction::triggered, this, [=]() { exportXmlAs(); });
connect(m_core->actionQuit(), &QAction::triggered, this, &MainWindow::onQuitRequested); connect(m_core->actionQuit(), &QAction::triggered, this, &MainWindow::onQuitRequested);
connect(m_core->actionExportFunctions(), &QAction::triggered, this, &MainWindow::onExportFunctionsRequested);
connect(m_core->actionExportType(), &QAction::triggered, this, &MainWindow::onExportTypeRequested);
// Register the actions to the action manager // Register the actions to the action manager
ActionsManager::registerAction(Q_FUNC_INFO, m_core->actionNewFile(), "Create file", "Create new empty file"); ActionsManager::registerAction(Q_FUNC_INFO, m_core->actionNewFile(), "Create file", "Create new empty file");
...@@ -177,16 +175,6 @@ void MainWindow::onCreateFileRequested() ...@@ -177,16 +175,6 @@ void MainWindow::onCreateFileRequested()
} }
} }
void MainWindow::onExportFunctionsRequested()
{
m_core->document()->exportSelectedFunctions();
}
void MainWindow::onExportTypeRequested()
{
m_core->document()->exportSelectedType();
}
/*! /*!
* \brief Exports the document document to the output file \a savePath using the template file \a templatePath. * \brief Exports the document document to the output file \a savePath using the template file \a templatePath.
* Returns \c true on success. * Returns \c true on success.
......
...@@ -57,8 +57,6 @@ protected: ...@@ -57,8 +57,6 @@ protected:
public Q_SLOTS: public Q_SLOTS:
void onOpenFileRequested(); void onOpenFileRequested();
void onCreateFileRequested(); void onCreateFileRequested();
void onExportFunctionsRequested();
void onExportTypeRequested();
bool exportXml(const QString &savePath = QString(), const QString &templatePath = QString()); bool exportXml(const QString &savePath = QString(), const QString &templatePath = QString());
bool exportXmlAs(const QString &savePath = QString(), const QString &templatePath = QString()); bool exportXmlAs(const QString &savePath = QString(), const QString &templatePath = QString());
void onQuitRequested(); void onQuitRequested();
......
...@@ -28,6 +28,7 @@ ...@@ -28,6 +28,7 @@
#include "itemeditor/ivfunctiongraphicsitem.h" #include "itemeditor/ivfunctiongraphicsitem.h"
#include "itemeditor/ivitemmodel.h" #include "itemeditor/ivitemmodel.h"
#include "ivcreatortool.h" #include "ivcreatortool.h"
#include "iveditorcore.h"
#include "ivexporter.h" #include "ivexporter.h"
#include "ivvisualizationmodelbase.h" #include "ivvisualizationmodelbase.h"
#include "properties/ivpropertiesdialog.h" #include "properties/ivpropertiesdialog.h"
...@@ -45,10 +46,11 @@ ...@@ -45,10 +46,11 @@
namespace ive { namespace ive {
IVAppWidget::IVAppWidget(InterfaceDocument *doc, QWidget *parent) IVAppWidget::IVAppWidget(IVEditorCore *core, QWidget *parent)
: QWidget(parent) : QWidget(parent)
, ui(new Ui::IVAppWidget) , ui(new Ui::IVAppWidget)
, m_document(doc) , m_ivCore(core)
, m_document(core->document())
{ {
ui->setupUi(this); ui->setupUi(this);
...@@ -66,6 +68,10 @@ IVAppWidget::IVAppWidget(InterfaceDocument *doc, QWidget *parent) ...@@ -66,6 +68,10 @@ IVAppWidget::IVAppWidget(InterfaceDocument *doc, QWidget *parent)
for (QAction *action : initActions()) { for (QAction *action : initActions()) {
ui->toolBar->addAction(action); ui->toolBar->addAction(action);
} }
ui->toolBar->addSeparator();
for (QAction *action : initViewActions()) {
ui->toolBar->addAction(action);
}
}); });
} }
...@@ -493,4 +499,25 @@ QVector<QAction *> IVAppWidget::initActions() ...@@ -493,4 +499,25 @@ QVector<QAction *> IVAppWidget::initActions()
return m_toolbarActions; return m_toolbarActions;
} }
QVector<QAction *> IVAppWidget::initViewActions()
{
if (!m_viewActions.isEmpty() || !m_ivCore) {
return m_viewActions;
}
m_viewActions.append(m_ivCore->actionToggleMinimap());
m_viewActions.append(m_ivCore->actionToggleE2EView());
m_viewActions.append(m_ivCore->actionExportFunctions());
m_viewActions.append(m_ivCore->actionExportType());
auto actionSaveSceneRender =
new QAction(QIcon(QLatin1String(":/toolbar/icns/render.svg")), tr("Render Scene..."), this);
ive::ActionsManager::registerAction(
Q_FUNC_INFO, actionSaveSceneRender, "Render", "Save current scene complete render.");
connect(actionSaveSceneRender, &QAction::triggered, this, [this]() { m_ivCore->onSaveRenderRequested(); });
m_viewActions.append(actionSaveSceneRender);
return m_viewActions;
}
} // namespace ive } // namespace ive
...@@ -32,6 +32,7 @@ namespace ive { ...@@ -32,6 +32,7 @@ namespace ive {
class GraphicsView; class GraphicsView;
class InterfaceDocument; class InterfaceDocument;
class IVCreatorTool; class IVCreatorTool;
class IVEditorCore;
/*! /*!
The main widget including all of the IV editor UI The main widget including all of the IV editor UI
...@@ -41,7 +42,7 @@ class IVAppWidget : public QWidget ...@@ -41,7 +42,7 @@ class IVAppWidget : public QWidget
Q_OBJECT Q_OBJECT
public: public:
explicit IVAppWidget(InterfaceDocument *doc, QWidget *parent = nullptr); explicit IVAppWidget(IVEditorCore *core, QWidget *parent = nullptr);
~IVAppWidget(); ~IVAppWidget();
GraphicsView *graphicsView() const; GraphicsView *graphicsView() const;
...@@ -68,6 +69,7 @@ private: ...@@ -68,6 +69,7 @@ private:
void initSharedView(); void initSharedView();
QVector<QAction *> initActions(); QVector<QAction *> initActions();
QVector<QAction *> initViewActions();
Ui::IVAppWidget *ui = nullptr; Ui::IVAppWidget *ui = nullptr;
IVCreatorTool *m_tool { nullptr }; IVCreatorTool *m_tool { nullptr };
...@@ -77,8 +79,11 @@ private: ...@@ -77,8 +79,11 @@ private:
QAction *m_actZoomOut { nullptr }; QAction *m_actZoomOut { nullptr };
QAction *m_actExitToRoot { nullptr }; QAction *m_actExitToRoot { nullptr };
QAction *m_actExitToParent { nullptr }; QAction *m_actExitToParent { nullptr };
QVector<QAction *> m_toolbarActions; QVector<QAction *> m_toolbarActions;
QVector<QAction *> m_viewActions;
QPointer<IVEditorCore> m_ivCore;
QPointer<InterfaceDocument> m_document; QPointer<InterfaceDocument> m_document;
}; };
......
...@@ -93,7 +93,7 @@ shared::ui::GraphicsViewBase *IVEditorCore::chartView() ...@@ -93,7 +93,7 @@ shared::ui::GraphicsViewBase *IVEditorCore::chartView()
QWidget *IVEditorCore::mainwidget() QWidget *IVEditorCore::mainwidget()
{ {
if (!m_mainWidget) { if (!m_mainWidget) {
m_mainWidget = new IVAppWidget(m_document); m_mainWidget = new IVAppWidget(this);
} }
return m_mainWidget; return m_mainWidget;
} }
...@@ -125,7 +125,9 @@ void IVEditorCore::populateCommandLineArguments(shared::CommandLineParser *parse ...@@ -125,7 +125,9 @@ void IVEditorCore::populateCommandLineArguments(shared::CommandLineParser *parse
QAction *IVEditorCore::actionExportFunctions() QAction *IVEditorCore::actionExportFunctions()
{ {
if (m_actionExportFunctions == nullptr) { if (m_actionExportFunctions == nullptr) {
m_actionExportFunctions = new QAction(tr("Export selected entity"), this); m_actionExportFunctions =
new QAction(QIcon(":/toolbar/icns/export_selected.svg"), tr("Export selected entity"), this);
connect(m_actionExportFunctions, &QAction::triggered, m_document, &InterfaceDocument::exportSelectedFunctions);
} }
return m_actionExportFunctions; return m_actionExportFunctions;
} }
...@@ -133,7 +135,9 @@ QAction *IVEditorCore::actionExportFunctions() ...@@ -133,7 +135,9 @@ QAction *IVEditorCore::actionExportFunctions()
QAction *IVEditorCore::actionExportType() QAction *IVEditorCore::actionExportType()
{ {
if (m_actionExportType == nullptr) { if (m_actionExportType == nullptr) {
m_actionExportType = new QAction(tr("Export component type"), this); m_actionExportType =
new QAction(QIcon(":/toolbar/icns/export_component_type.svg"), tr("Export component type"), this);
connect(m_actionExportType, &QAction::triggered, m_document, &InterfaceDocument::exportSelectedType);
} }
return m_actionExportType; return m_actionExportType;
} }
...@@ -141,7 +145,8 @@ QAction *IVEditorCore::actionExportType() ...@@ -141,7 +145,8 @@ QAction *IVEditorCore::actionExportType()
QAction *IVEditorCore::actionToggleE2EView() QAction *IVEditorCore::actionToggleE2EView()
{ {
if (m_actionToggleE2EView == nullptr) { if (m_actionToggleE2EView == nullptr) {
m_actionToggleE2EView = new QAction(tr("&Show end to end dataflow"), this); m_actionToggleE2EView =
new QAction(QIcon(QIcon(":/toolbar/icns/end_to_end.png")), tr("Show end to end dataflow"), this);
m_actionToggleE2EView->setCheckable(true); m_actionToggleE2EView->setCheckable(true);
} }
return m_actionToggleE2EView; return m_actionToggleE2EView;
...@@ -489,7 +494,7 @@ void IVEditorCore::onSaveRenderRequested() ...@@ -489,7 +494,7 @@ void IVEditorCore::onSaveRenderRequested()
dialog.setDefaultSuffix(".png"); dialog.setDefaultSuffix(".png");
if (dialog.exec() == QDialog::Accepted) { if (dialog.exec() == QDialog::Accepted) {
const QString fileName = dialog.selectedUrls().value(0).toLocalFile(); const QString fileName = dialog.selectedUrls().value(0).toLocalFile();
// saveSceneRender(fileName); saveSceneRender(fileName);
} }
} }
......
...@@ -35,12 +35,10 @@ ...@@ -35,12 +35,10 @@
namespace spctr { namespace spctr {
IVEditorData::IVEditorData( IVEditorData::IVEditorData(SpaceCreatorProjectManager *projectManager, QObject *parent)
SpaceCreatorProjectManager *projectManager, const QList<QAction *> &ivActions, QObject *parent)
: QObject(parent) : QObject(parent)
, m_undoGroup(new QUndoGroup(this)) , m_undoGroup(new QUndoGroup(this))
, m_projectManager(projectManager) , m_projectManager(projectManager)
, m_ivActions(ivActions)
{ {
Core::Context contexts; Core::Context contexts;
contexts.add(spctr::Constants::K_IV_EDITOR_ID); contexts.add(spctr::Constants::K_IV_EDITOR_ID);
...@@ -73,30 +71,10 @@ IVEditorData::~IVEditorData() ...@@ -73,30 +71,10 @@ IVEditorData::~IVEditorData()
Core::IEditor *IVEditorData::createEditor() Core::IEditor *IVEditorData::createEditor()
{ {
auto *ivEditor = new IVQtCEditor(m_projectManager, m_ivActions); auto *ivEditor = new IVQtCEditor(m_projectManager);
connect(ivEditor->ivDocument(), &spctr::IVEditorDocument::ivDataLoaded, this,
[this](const QString &fileName, IVEditorCorePtr data) {
data->minimapView()->setVisible(m_minimapVisible);
m_undoGroup->addStack(data->undoStack());
});
return ivEditor; return ivEditor;
} }
void IVEditorData::showMinimap(bool visible)
{
m_minimapVisible = visible;
for (auto openedDocument : Core::DocumentModel::openedDocuments()) {
if (auto document = qobject_cast<spctr::IVEditorDocument *>(openedDocument)) {
if (document->ivEditorCore()) {
document->ivEditorCore()->minimapView()->setVisible(visible);
}
}
}
}
void IVEditorData::onCurrentEditorChanged(Core::IEditor *editor) void IVEditorData::onCurrentEditorChanged(Core::IEditor *editor)
{ {
if (auto ivEditor = qobject_cast<IVQtCEditor *>(editor)) { if (auto ivEditor = qobject_cast<IVQtCEditor *>(editor)) {
......
...@@ -37,14 +37,11 @@ class IVEditorData : public QObject ...@@ -37,14 +37,11 @@ class IVEditorData : public QObject
{ {
Q_OBJECT Q_OBJECT
public: public:
IVEditorData( IVEditorData(SpaceCreatorProjectManager *projectManager, QObject *parent = nullptr);
SpaceCreatorProjectManager *projectManager, const QList<QAction *> &ivActions, QObject *parent = nullptr);
~IVEditorData() override; ~IVEditorData() override;
Core::IEditor *createEditor(); Core::IEditor *createEditor();
void showMinimap(bool visible);
IVEditorCorePtr ivPlugin(const QString &fileName); IVEditorCorePtr ivPlugin(const QString &fileName);
private Q_SLOTS: private Q_SLOTS:
...@@ -54,10 +51,7 @@ private: ...@@ -54,10 +51,7 @@ private:
MscContext *m_context = nullptr; MscContext *m_context = nullptr;
QUndoGroup *m_undoGroup = nullptr; QUndoGroup *m_undoGroup = nullptr;
bool m_minimapVisible = false;
QPointer<SpaceCreatorProjectManager> m_projectManager; QPointer<SpaceCreatorProjectManager> m_projectManager;
QList<QAction *> m_ivActions;
}; };
} }
...@@ -27,10 +27,9 @@ ...@@ -27,10 +27,9 @@
namespace spctr { namespace spctr {
IVEditorFactory::IVEditorFactory( IVEditorFactory::IVEditorFactory(SpaceCreatorProjectManager *projectManager, QObject *parent)
SpaceCreatorProjectManager *projectManager, const QList<QAction *> &ivActions, QObject *parent)
: IEditorFactory() : IEditorFactory()
, m_editorData(new IVEditorData(projectManager, ivActions)) , m_editorData(new IVEditorData(projectManager))
{ {
setId(spctr::Constants::K_IV_EDITOR_ID); setId(spctr::Constants::K_IV_EDITOR_ID);
setDisplayName(QCoreApplication::translate("IV Editor", spctr::Constants::C_IVEDITOR_DISPLAY_NAME)); setDisplayName(QCoreApplication::translate("IV Editor", spctr::Constants::C_IVEDITOR_DISPLAY_NAME));
......
...@@ -34,8 +34,7 @@ class IVEditorFactory : public Core::IEditorFactory ...@@ -34,8 +34,7 @@ class IVEditorFactory : public Core::IEditorFactory
Q_OBJECT Q_OBJECT
public: public:
explicit IVEditorFactory( explicit IVEditorFactory(SpaceCreatorProjectManager *projectManager, QObject *parent);
SpaceCreatorProjectManager *projectManager, const QList<QAction *> &ivActions, QObject *parent);
#if QTC_VERSION == 48 #if QTC_VERSION == 48
Core::IEditor *createEditor() override { return createIVEditor(); } Core::IEditor *createEditor() override { return createIVEditor(); }
......
...@@ -73,6 +73,7 @@ void IVMainWidget::init() ...@@ -73,6 +73,7 @@ void IVMainWidget::init()
m_plugin->document()->init(); m_plugin->document()->init();
layout->addWidget(m_plugin->mainwidget()); layout->addWidget(m_plugin->mainwidget());
connect(m_plugin->actionToggleE2EView(), &QAction::triggered, this, &IVMainWidget::requestE2EDataflow);
m_plugin->setupMiniMap(); m_plugin->setupMiniMap();
} }
......
...@@ -38,6 +38,9 @@ public: ...@@ -38,6 +38,9 @@ public:
IVEditorCorePtr ivPlugin() const; IVEditorCorePtr ivPlugin() const;
Q_SIGNALS:
void requestE2EDataflow();
public Q_SLOTS: public Q_SLOTS:
void setMinimapVisible(bool visible); void setMinimapVisible(bool visible);
......
...@@ -26,27 +26,29 @@ ...@@ -26,27 +26,29 @@
#include "mainmodel.h" #include "mainmodel.h"
#include "msceditorcore.h" #include "msceditorcore.h"
#include "spacecreatorpluginconstants.h" #include "spacecreatorpluginconstants.h"
#include "spacecreatorprojectimpl.h"
#include "spacecreatorprojectmanager.h" #include "spacecreatorprojectmanager.h"
#include <QFileInfo> #include <QFileInfo>
#include <QToolBar> #include <QToolBar>
#include <QUndoCommand> #include <QUndoCommand>
#include <editormanager/editormanager.h>
#include <utils/qtcassert.h> #include <utils/qtcassert.h>
namespace spctr { namespace spctr {
IVQtCEditor::IVQtCEditor(SpaceCreatorProjectManager *projectManager, const QList<QAction *> &ivActions) IVQtCEditor::IVQtCEditor(SpaceCreatorProjectManager *projectManager)
: Core::IEditor() : Core::IEditor()
, m_document(new IVEditorDocument(projectManager, this)) , m_document(new IVEditorDocument(projectManager, this))
, m_editorWidget(new IVMainWidget) , m_editorWidget(new IVMainWidget)
, m_projectManager(projectManager) , m_projectManager(projectManager)
, m_globalToolbarActions(ivActions)
{ {
setContext(Core::Context(spctr::Constants::K_IV_EDITOR_ID)); setContext(Core::Context(spctr::Constants::K_IV_EDITOR_ID));
setWidget(m_editorWidget); setWidget(m_editorWidget);
connect(m_document, &spctr::IVEditorDocument::ivDataLoaded, this, connect(m_document, &spctr::IVEditorDocument::ivDataLoaded, this,
[this](const QString &, IVEditorCorePtr data) { m_editorWidget->init(data); }); [this](const QString &, IVEditorCorePtr data) { m_editorWidget->init(data); });
connect(m_editorWidget, &IVMainWidget::requestE2EDataflow, this, &IVQtCEditor::showCurrentE2EDataflow);
} }
IVQtCEditor::~IVQtCEditor() IVQtCEditor::~IVQtCEditor()
...@@ -76,15 +78,21 @@ QWidget *IVQtCEditor::toolBar() ...@@ -76,15 +78,21 @@ QWidget *IVQtCEditor::toolBar()
m_toolbar = new QToolBar; m_toolbar = new QToolBar;
m_toolbar->addAction(ivCore->actionUndo()); m_toolbar->addAction(ivCore->actionUndo());
m_toolbar->addAction(ivCore->actionRedo()); m_toolbar->addAction(ivCore->actionRedo());
m_toolbar->addSeparator();
for (QAction *action : qAsConst(m_globalToolbarActions)) {
m_toolbar->addAction(action);
}
} }
return m_toolbar; return m_toolbar;
} }
void IVQtCEditor::showCurrentE2EDataflow()
{
if (auto ivEditor = qobject_cast<spctr::IVQtCEditor *>(Core::EditorManager::currentEditor())) {
SpaceCreatorProjectImpl *project = m_projectManager->project(ivEditor->ivPlugin());
if (project) {
ivEditor->showE2EDataflow(project->allMscFiles());
}
}
}
void IVQtCEditor::showE2EDataflow(const QStringList &mscFiles) void IVQtCEditor::showE2EDataflow(const QStringList &mscFiles)
{ {
if (ivPlugin().isNull()) { if (ivPlugin().isNull()) {
......
...@@ -40,7 +40,7 @@ class IVQtCEditor : public Core::IEditor ...@@ -40,7 +40,7 @@ class IVQtCEditor : public Core::IEditor
Q_OBJECT Q_OBJECT
public: public:
IVQtCEditor(SpaceCreatorProjectManager *projectManager, const QList<QAction *> &ivActions); IVQtCEditor(SpaceCreatorProjectManager *projectManager);
~IVQtCEditor(); ~IVQtCEditor();
Core::IDocument *document() const override; Core::IDocument *document() const override;
...@@ -50,6 +50,7 @@ public: ...@@ -50,6 +50,7 @@ public:
QWidget *toolBar() override; QWidget *toolBar() override;
public Q_SLOTS: public Q_SLOTS:
void showCurrentE2EDataflow();
void showE2EDataflow(const QStringList &mscFiles); void showE2EDataflow(const QStringList &mscFiles);
private: private:
...@@ -58,7 +59,6 @@ private: ...@@ -58,7 +59,6 @@ private:
IVMainWidget *m_editorWidget = nullptr; IVMainWidget *m_editorWidget = nullptr;
QPointer<ive::EndToEndView> m_endToEndView; QPointer<ive::EndToEndView> m_endToEndView;
QPointer<SpaceCreatorProjectManager> m_projectManager; QPointer<SpaceCreatorProjectManager> m_projectManager;
QList<QAction *> m_globalToolbarActions;
}; };
} }
...@@ -129,16 +129,9 @@ bool SpaceCreatorPlugin::initialize(const QStringList &arguments, QString *error ...@@ -129,16 +129,9 @@ bool SpaceCreatorPlugin::initialize(const QStringList &arguments, QString *error
m_showMinimapAction, Constants::SHOW_MINIMAP_ID, Core::Context(Core::Constants::C_EDIT_MODE)); m_showMinimapAction, Constants::SHOW_MINIMAP_ID, Core::Context(Core::Constants::C_EDIT_MODE));
connect(m_showMinimapAction, &QAction::triggered, this, &SpaceCreatorPlugin::setMinimapVisible); connect(m_showMinimapAction, &QAction::triggered, this, &SpaceCreatorPlugin::setMinimapVisible);
m_showE2EDataflow =
new QAction(QIcon(QLatin1String(":/toolbar/icns/end_to_end.png")), tr("Show end to end dataflow"), this);
Core::Command *showE2ECmd = Core::ActionManager::registerAction(
m_showE2EDataflow, Constants::SHOW_E2E_ID, Core::Context(Core::Constants::C_EDIT_MODE));
connect(m_showE2EDataflow, &QAction::triggered, this, &SpaceCreatorPlugin::showE2EDataflow);
Core::ActionContainer *menu = Core::ActionManager::createMenu(Constants::MENU_ID); Core::ActionContainer *menu = Core::ActionManager::createMenu(Constants::MENU_ID);
menu->menu()->setTitle(tr("SpaceCreator")); menu->menu()->setTitle(tr("SpaceCreator"));
menu->addAction(showMinimapCmd); menu->addAction(showMinimapCmd);
menu->addAction(showE2ECmd);
menu->addSeparator(); menu->addSeparator();
menu->addAction(messageDeclCmd); menu->addAction(messageDeclCmd);
menu->addAction(checkInstancesCmd); menu->addAction(checkInstancesCmd);
...@@ -148,38 +141,10 @@ bool SpaceCreatorPlugin::initialize(const QStringList &arguments, QString *error ...@@ -148,38 +141,10 @@ bool SpaceCreatorPlugin::initialize(const QStringList &arguments, QString *error
menu->addAction(checkDVMessagesCmd); menu->addAction(checkDVMessagesCmd);
Core::ActionManager::actionContainer(Core::Constants::M_TOOLS)->addMenu(menu); Core::ActionManager::actionContainer(Core::Constants::M_TOOLS)->addMenu(menu);
// IV
m_actionSaveSceneRender =
new QAction(QIcon(QLatin1String(":/toolbar/icns/render.svg")), tr("Render Scene..."), this);
Core::Command *renderCmd = Core::ActionManager::registerAction(m_actionSaveSceneRender, Constants::IV_RENDER_ID);
ive::ActionsManager::registerAction(
Q_FUNC_INFO, m_actionSaveSceneRender, "Render", "Save current scene complete render.");
connect(m_actionSaveSceneRender, &QAction::triggered, this, []() {
if (auto ivEditor = qobject_cast<spctr::IVQtCEditor *>(Core::EditorManager::currentEditor())) {
ivEditor->ivPlugin()->onSaveRenderRequested();
}
});
m_exportSelectedIV =
new QAction(QIcon(QLatin1String(":/toolbar/icns/export_selected.svg")), tr("Export selected entity"), this);