From 1ccbe5952ce48edc24a8b656c2fed92806be0175 Mon Sep 17 00:00:00 2001 From: Klaus Basan Date: Mon, 10 Apr 2017 16:41:31 +0200 Subject: [PATCH] refs #933, start MCX from context menu --- src/blackgui/menus/aircraftmodelmenus.cpp | 43 +++++++++++++++++------ src/blackgui/menus/aircraftmodelmenus.h | 6 ++-- 2 files changed, 36 insertions(+), 13 deletions(-) diff --git a/src/blackgui/menus/aircraftmodelmenus.cpp b/src/blackgui/menus/aircraftmodelmenus.cpp index 376fbc13d..5c9481edf 100644 --- a/src/blackgui/menus/aircraftmodelmenus.cpp +++ b/src/blackgui/menus/aircraftmodelmenus.cpp @@ -17,9 +17,11 @@ #include "blackmisc/icons.h" #include "blackmisc/logmessage.h" #include "blackmisc/simulation/aircraftmodelutils.h" - +#include "blackmisc/simulation/modelconverterx.h" +#include "blackconfig/buildconfig.h" #include +using namespace BlackConfig; using namespace BlackMisc; using namespace BlackMisc::Simulation; using namespace BlackGui; @@ -84,17 +86,28 @@ namespace BlackGui if (mv->hasSingleSelectedRow()) { const CAircraftModel model(mv->selectedObject()); - if (model.hasFileName() || (!model.getIconPath().isEmpty() && this->m_messageFrame)) + bool added = false; + if (model.hasFileName()) { menuActions.addMenuSimulator(); - if (this->m_messageFrame) - { - if (!model.getIconPath().isEmpty()) - { - this->m_iconAction = menuActions.addAction(this->m_iconAction, CIcons::appAircraft16(), "Display icon", CMenuAction::pathSimulator(), { this, &CShowSimulatorFileMenu::ps_displayIcon }); - } - } this->m_fileAction = menuActions.addAction(this->m_fileAction, CIcons::text16(), "Open simulator file", CMenuAction::pathSimulator(), { this, &CShowSimulatorFileMenu::ps_showSimulatorFile }); + added = true; + if (CModelConverterX::supportsModelConverterX()) + { + this->m_modelConverterX = menuActions.addAction(this->m_modelConverterX, CIcons::appAircraft16(), "ModelConverterX", CMenuAction::pathSimulator(), { this, &CShowSimulatorFileMenu::ps_startModelConverterX }); + } + } + + if (this->m_messageFrame && !model.getIconPath().isEmpty()) + { + added = true; + menuActions.addMenuSimulator(); + this->m_iconAction = menuActions.addAction(this->m_iconAction, CIcons::appAircraft16(), "Display icon", CMenuAction::pathSimulator(), { this, &CShowSimulatorFileMenu::ps_displayIcon }); + } + + if (added) + { + menuActions.addSeparator(CMenuAction::pathSimulator()); } } this->nestedCustomMenu(menuActions); @@ -127,11 +140,19 @@ namespace BlackGui } else { - msg.setCategories(getLogCategories()); - CLogMessage::preformatted(msg); + CLogMessage::preformatted(msg); } } + void CShowSimulatorFileMenu::ps_startModelConverterX() + { + if (!CModelConverterX::supportsModelConverterX()) { return; } + const CAircraftModelView *mv = modelView(); + if (!mv->hasSingleSelectedRow()) { return; } + const CAircraftModel model(mv->selectedObject()); + CModelConverterX::startModelConverterX(model, sApp); + } + // --------------------------------- with DB data --------------------------------- CConsolidateWithDbDataMenu::CConsolidateWithDbDataMenu(CAircraftModelView *modelView, QObject *modelsTarget, bool separator) : diff --git a/src/blackgui/menus/aircraftmodelmenus.h b/src/blackgui/menus/aircraftmodelmenus.h index 61d664f85..ea72aa8be 100644 --- a/src/blackgui/menus/aircraftmodelmenus.h +++ b/src/blackgui/menus/aircraftmodelmenus.h @@ -67,13 +67,15 @@ namespace BlackGui virtual void customMenu(CMenuActions &menuActions) override; private slots: - void ps_showSimulatorFile(); //!< simulator file - void ps_displayIcon(); //!< aircraft icon if any + void ps_showSimulatorFile(); //!< simulator file + void ps_displayIcon(); //!< aircraft icon if any + void ps_startModelConverterX(); //!< show in model converter X private: BlackGui::COverlayMessagesFrame *m_messageFrame = nullptr; QAction *m_fileAction = nullptr; QAction *m_iconAction = nullptr; + QAction *m_modelConverterX = nullptr; }; //! Merge with DB data