Skip to content
Snippets Groups Projects
QGCToolbox.cc 4.58 KiB
Newer Older
  • Learn to ignore specific revisions
  •  /****************************************************************************
     *
     *   (c) 2009-2016 QGROUNDCONTROL PROJECT <http://www.qgroundcontrol.org>
     *
     * QGroundControl is licensed according to the terms in the file
     * COPYING.md in the root of the source code directory.
     *
     ****************************************************************************/
    
    Don Gagne's avatar
    Don Gagne committed
    #include "FactSystem.h"
    #include "FirmwarePluginManager.h"
    
    #include "AudioOutput.h"
    
    Don Gagne's avatar
    Don Gagne committed
    #endif
    
    #include "JoystickManager.h"
    
    Don Gagne's avatar
    Don Gagne committed
    #include "LinkManager.h"
    #include "MAVLinkProtocol.h"
    
    #include "MissionCommandTree.h"
    
    Don Gagne's avatar
    Don Gagne committed
    #include "MultiVehicleManager.h"
    
    dogmaphobic's avatar
    dogmaphobic committed
    #include "QGCImageProvider.h"
    
    Don Gagne's avatar
    Don Gagne committed
    #include "UASMessageHandler.h"
    
    dogmaphobic's avatar
    dogmaphobic committed
    #include "QGCMapEngineManager.h"
    
    Jimmy Johnson's avatar
    Jimmy Johnson committed
    #include "FollowMe.h"
    
    Jimmy Johnson's avatar
    Jimmy Johnson committed
    #include "PositionManager.h"
    
    #include "VideoManager.h"
    
    Gus Grubba's avatar
    Gus Grubba committed
    #include "MAVLinkLogManager.h"
    
    #include "QGCCorePlugin.h"
    #include "QGCOptions.h"
    
    #include "SettingsManager.h"
    
    #include "QGCApplication.h"
    
    #if defined(QGC_AIRMAP_ENABLED)
    
    #include "AirMapManager.h"
    
    #if defined(QGC_GST_TAISYNC_ENABLED)
    #include "TaisyncManager.h"
    #endif
    
    
    #if defined(QGC_CUSTOM_BUILD)
    #include CUSTOMHEADER
    #endif
    
    
    QGCToolbox::QGCToolbox(QGCApplication* app)
    {
    
        // SettingsManager must be first so settings are available to any subsequent tools
    
        _settingsManager        = new SettingsManager           (app, this);
    
        //-- Scan and load plugins
        _scanAndLoadPlugins(app);
    
        _audioOutput            = new AudioOutput               (app, this);
        _factSystem             = new FactSystem                (app, this);
        _firmwarePluginManager  = new FirmwarePluginManager     (app, this);
    
        _gpsManager             = new GPSManager                (app, this);
    
    Don Gagne's avatar
    Don Gagne committed
    #endif
    
        _imageProvider          = new QGCImageProvider          (app, this);
        _joystickManager        = new JoystickManager           (app, this);
        _linkManager            = new LinkManager               (app, this);
        _mavlinkProtocol        = new MAVLinkProtocol           (app, this);
        _missionCommandTree     = new MissionCommandTree        (app, this);
        _multiVehicleManager    = new MultiVehicleManager       (app, this);
        _mapEngineManager       = new QGCMapEngineManager       (app, this);
        _uasMessageHandler      = new UASMessageHandler         (app, this);
        _qgcPositionManager     = new QGCPositionManager        (app, this);
        _followMe               = new FollowMe                  (app, this);
        _videoManager           = new VideoManager              (app, this);
        _mavlinkLogManager      = new MAVLinkLogManager         (app, this);
    
        //-- Airmap Manager
        //-- This should be "pluggable" so an arbitrary AirSpace manager can be used
        //-- For now, we instantiate the one and only AirMap provider
    
    #if defined(QGC_AIRMAP_ENABLED)
    
        _airspaceManager        = new AirMapManager             (app, this);
    
        _airspaceManager        = new AirspaceManager           (app, this);
    #endif
    #if defined(QGC_GST_TAISYNC_ENABLED)
        _taisyncManager         = new TaisyncManager            (app, this);
    
    void QGCToolbox::setChildToolboxes(void)
    {
    
        // SettingsManager must be first so settings are available to any subsequent tools
        _settingsManager->setToolbox(this);
    
    Don Gagne's avatar
    Don Gagne committed
        _audioOutput->setToolbox(this);
        _factSystem->setToolbox(this);
        _firmwarePluginManager->setToolbox(this);
    
    Don Gagne's avatar
    Don Gagne committed
    #endif
    
    Don Gagne's avatar
    Don Gagne committed
        _imageProvider->setToolbox(this);
        _joystickManager->setToolbox(this);
    
        _linkManager->setToolbox(this);
        _mavlinkProtocol->setToolbox(this);
    
        _missionCommandTree->setToolbox(this);
    
    Don Gagne's avatar
    Don Gagne committed
        _multiVehicleManager->setToolbox(this);
    
    dogmaphobic's avatar
    dogmaphobic committed
        _mapEngineManager->setToolbox(this);
    
        _uasMessageHandler->setToolbox(this);
    
    Jimmy Johnson's avatar
    Jimmy Johnson committed
        _followMe->setToolbox(this);
    
    Jimmy Johnson's avatar
    Jimmy Johnson committed
        _qgcPositionManager->setToolbox(this);
    
        _videoManager->setToolbox(this);
    
    Gus Grubba's avatar
    Gus Grubba committed
        _mavlinkLogManager->setToolbox(this);
    
        _airspaceManager->setToolbox(this);
    
    #if defined(QGC_GST_TAISYNC_ENABLED)
        _taisyncManager->setToolbox(this);
    #endif
    
    void QGCToolbox::_scanAndLoadPlugins(QGCApplication* app)
    {
    
    Gus Grubba's avatar
    Gus Grubba committed
    #if defined (QGC_CUSTOM_BUILD)
    
        _corePlugin = (QGCCorePlugin*) new CUSTOMCLASS(app, app->toolbox());
    
        if(_corePlugin) {
            return;
        }
    #endif
        //-- No plugins found, use default instance
    
        _corePlugin = new QGCCorePlugin(app, app->toolbox());
    
    QGCTool::QGCTool(QGCApplication* app, QGCToolbox* toolbox)
        : QObject(toolbox)
    
        , _app(app)
    
    {
    }
    
    void QGCTool::setToolbox(QGCToolbox* toolbox)
    {
        _toolbox = toolbox;
    }