| 
							- /*
 -  * Carla plugin host
 -  * Copyright (C) 2011-2019 Filipe Coelho <falktx@falktx.com>
 -  *
 -  * This program is free software; you can redistribute it and/or
 -  * modify it under the terms of the GNU General Public License as
 -  * published by the Free Software Foundation; either version 2 of
 -  * the License, or any later version.
 -  *
 -  * This program is distributed in the hope that it will be useful,
 -  * but WITHOUT ANY WARRANTY; without even the implied warranty of
 -  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
 -  * GNU General Public License for more details.
 -  *
 -  * For a full copy of the GNU General Public License see the doc/GPL.txt file.
 -  */
 - 
 - #ifndef CARLA_HOST_HPP_INCLUDED
 - #define CARLA_HOST_HPP_INCLUDED
 - 
 - //---------------------------------------------------------------------------------------------------------------------
 - // Imports (Global)
 - 
 - #if defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 6))
 - # pragma GCC diagnostic push
 - # pragma GCC diagnostic ignored "-Wconversion"
 - # pragma GCC diagnostic ignored "-Weffc++"
 - # pragma GCC diagnostic ignored "-Wsign-conversion"
 - #endif
 - 
 - #include <QtWidgets/QMainWindow>
 - 
 - #if defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 6))
 - # pragma GCC diagnostic pop
 - #endif
 - 
 - //---------------------------------------------------------------------------------------------------------------------
 - // Imports (Custom)
 - 
 - #include "carla_shared.hpp"
 - #include "carla_widgets.hpp"
 - 
 - #include "CarlaHost.h"
 - #include "CarlaJuceUtils.hpp"
 - 
 - CARLA_BACKEND_USE_NAMESPACE;
 - 
 - //---------------------------------------------------------------------------------------------------------------------
 - 
 - class CarlaHost : public QObject
 - {
 -     Q_OBJECT
 - 
 - public:
 -     // host handle
 -     CarlaHostHandle handle;
 - 
 -     // info about this host object
 -     bool isControl;
 -     bool isPlugin;
 -     bool isRemote;
 -     bool nsmOK;
 - 
 -     // settings
 -     EngineProcessMode processMode;
 -     EngineTransportMode transportMode;
 -     QCarlaString transportExtra;
 -     EngineProcessMode nextProcessMode;
 -     bool processModeForced;
 -     QCarlaString audioDriverForced;
 - 
 -     // settings
 -     bool experimental;
 -     bool exportLV2;
 -     bool forceStereo;
 -     bool manageUIs;
 -     uint maxParameters;
 -     bool resetXruns;
 -     bool preferPluginBridges;
 -     bool preferUIBridges;
 -     bool preventBadBehaviour;
 -     bool showLogs;
 -     bool showPluginBridges;
 -     bool showWineBridges;
 -     bool uiBridgesTimeout;
 -     bool uisAlwaysOnTop;
 - 
 -     // settings
 -     QString pathBinaries;
 -     QString pathResources;
 - 
 -     CarlaHost();
 - 
 - signals:
 -     void SignalTerminate();
 -     void SignalSave();
 - 
 -     // Engine stuff
 -     void EngineStartedCallback(uint, int, int, uint, float, QString);
 -     void EngineStoppedCallback();
 - 
 - private:
 -     CARLA_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR(CarlaHost)
 - };
 - 
 - //---------------------------------------------------------------------------------------------------------------------
 - // Host Window
 - 
 - class CarlaHostWindow : public QMainWindow,
 -                         public PluginEditParentMeta
 - {
 -     Q_OBJECT
 - 
 - public:
 -     //-----------------------------------------------------------------------------------------------------------------
 - 
 -     CarlaHostWindow(CarlaHost& host, const bool withCanvas, QWidget* const parent = nullptr);
 -     ~CarlaHostWindow() override;
 - 
 - private:
 -     struct PrivateData;
 -     PrivateData* const self;
 - 
 - protected:
 -     //-----------------------------------------------------------------------------------------------------------------
 -     // Plugin Editor Parent
 - 
 -     void editDialogVisibilityChanged(int pluginId, bool visible) override;
 -     void editDialogPluginHintsChanged(int pluginId, int hints) override;
 -     void editDialogParameterValueChanged(int pluginId, int parameterId, float value) override;
 -     void editDialogProgramChanged(int pluginId, int index) override;
 -     void editDialogMidiProgramChanged(int pluginId, int index) override;
 -     void editDialogNotePressed(int pluginId, int note) override;
 -     void editDialogNoteReleased(int pluginId, int note) override;
 -     void editDialogMidiActivityChanged(int pluginId, bool onOff) override;
 - 
 -     //-----------------------------------------------------------------------------------------------------------------
 -     // show/hide event
 - 
 -     void showEvent(QShowEvent* event) override;
 -     void hideEvent(QHideEvent* event) override;
 - 
 -     //-----------------------------------------------------------------------------------------------------------------
 -     // resize event
 - 
 -     void resizeEvent(QResizeEvent* event) override;
 - 
 -     //-----------------------------------------------------------------------------------------------------------------
 -     // timer event
 - 
 -     void timerEvent(QTimerEvent* event) override;
 - 
 -     //-----------------------------------------------------------------------------------------------------------------
 -     // color/style change event
 - 
 -     void changeEvent(QEvent* event) override;
 - 
 -     //-----------------------------------------------------------------------------------------------------------------
 -     // close event
 - 
 -     void closeEvent(QCloseEvent* event) override;
 - 
 - private slots:
 -     //-----------------------------------------------------------------------------------------------------------------
 -     // Files (menu actions)
 - 
 -     void slot_fileNew();
 -     void slot_fileOpen();
 -     void slot_fileSave(bool saveAs = false);
 -     void slot_fileSaveAs();
 -     void slot_loadProjectNow();
 - 
 -     //-----------------------------------------------------------------------------------------------------------------
 -     // Engine (menu actions)
 - 
 -     void slot_engineStart();
 -     bool slot_engineStop(bool forced = false);
 -     void slot_engineConfig();
 -     bool slot_engineStopTryAgain();
 - 
 -     //-----------------------------------------------------------------------------------------------------------------
 -     // Engine (host callbacks)
 - 
 -     void slot_handleEngineStartedCallback(uint pluginCount, int processMode, int transportMode, uint bufferSize, float sampleRate, QString driverName);
 -     void slot_handleEngineStoppedCallback();
 -     void slot_handleTransportModeChangedCallback(int transportMode, QString transportExtra);
 -     void slot_handleBufferSizeChangedCallback(int newBufferSize);
 -     void slot_handleSampleRateChangedCallback(double newSampleRate);
 -     void slot_handleCancelableActionCallback(int pluginId, bool started, QString action);
 -     void slot_canlableActionBoxClicked();
 -     void slot_handleProjectLoadFinishedCallback();
 - 
 -     //-----------------------------------------------------------------------------------------------------------------
 -     // Plugins (menu actions)
 - 
 -     void slot_favoritePluginAdd();
 -     void slot_showPluginActionsMenu();
 -     void slot_pluginAdd();
 -     void slot_confirmRemoveAll();
 -     void slot_jackAppAdd();
 - 
 -     //-----------------------------------------------------------------------------------------------------------------
 -     // Plugins (macros)
 - 
 -     void slot_pluginsEnable();
 -     void slot_pluginsDisable();
 -     void slot_pluginsVolume100();
 -     void slot_pluginsMute();
 -     void slot_pluginsWet100();
 -     void slot_pluginsBypass();
 -     void slot_pluginsCenter();
 -     void slot_pluginsCompact();
 -     void slot_pluginsExpand();
 - 
 -     //-----------------------------------------------------------------------------------------------------------------
 -     // Plugins (host callbacks)
 - 
 -     void slot_handlePluginAddedCallback(int pluginId, QString pluginName);
 -     void slot_handlePluginRemovedCallback(int pluginId);
 - 
 -     //-----------------------------------------------------------------------------------------------------------------
 -     // Canvas (menu actions)
 - 
 -     void slot_canvasShowInternal();
 -     void slot_canvasShowExternal();
 -     void slot_canvasArrange();
 -     void slot_canvasRefresh();
 -     void slot_canvasZoomFit();
 -     void slot_canvasZoomIn();
 -     void slot_canvasZoomOut();
 -     void slot_canvasZoomReset();
 -     void slot_canvasSaveImage();
 - 
 -     //-----------------------------------------------------------------------------------------------------------------
 -     // Canvas (canvas callbacks)
 - 
 -     void slot_canvasItemMoved(int group_id, int split_mode, QPointF pos);
 -     void slot_canvasSelectionChanged();
 -     void slot_canvasScaleChanged(double scale);
 -     void slot_canvasPluginSelected(QList<void*> pluginList);
 - 
 -     //-----------------------------------------------------------------------------------------------------------------
 -     // Canvas (host callbacks)
 - 
 -     void slot_handlePatchbayClientAddedCallback(int clientId, int clientIcon, int pluginId, QString clientName);
 -     void slot_handlePatchbayClientRemovedCallback(int clientId);
 -     void slot_handlePatchbayClientRenamedCallback(int clientId, QString newClientName);
 -     void slot_handlePatchbayClientDataChangedCallback(int clientId, int clientIcon, int pluginId);
 -     void slot_handlePatchbayPortAddedCallback(int clientId, int portId, int portFlags, int portGroupId, QString portName);
 -     void slot_handlePatchbayPortRemovedCallback(int groupId, int portId);
 -     void slot_handlePatchbayPortChangedCallback(int groupId, int portId, int portFlags, int portGroupId, QString newPortName);
 -     void slot_handlePatchbayPortGroupAddedCallback(int groupId, int portId, int portGroupId, QString newPortName);
 -     void slot_handlePatchbayPortGroupRemovedCallback(int groupId, int portId);
 -     void slot_handlePatchbayPortGroupChangedCallback(int groupId, int portId, int portGroupId, QString newPortName);
 -     void slot_handlePatchbayConnectionAddedCallback(int connectionId, int groupOutId, int portOutId, int groupInId, int portInId);
 -     void slot_handlePatchbayConnectionRemovedCallback(int connectionId, int portOutId, int portInId);
 - 
 -     //-----------------------------------------------------------------------------------------------------------------
 -     // Settings (helpers)
 - 
 -     void slot_restoreCanvasScrollbarValues();
 - 
 -     //-----------------------------------------------------------------------------------------------------------------
 -     // Settings (menu actions)
 - 
 -     void slot_showSidePanel(bool yesNo);
 -     void slot_showToolbar(bool yesNo);
 -     void slot_showCanvasMeters(bool yesNo);
 -     void slot_showCanvasKeyboard(bool yesNo);
 -     void slot_configureCarla();
 - 
 -     //-----------------------------------------------------------------------------------------------------------------
 -     // About (menu actions)
 - 
 -     void slot_aboutCarla();
 -     void slot_aboutJuce();
 -     void slot_aboutQt();
 - 
 -     //-----------------------------------------------------------------------------------------------------------------
 -     // Disk (menu actions)
 - 
 -     void slot_diskFolderChanged(int index);
 -     void slot_diskFolderAdd();
 -     void slot_diskFolderRemove();
 -     void slot_fileTreeDoubleClicked(QModelIndex* modelIndex);
 - 
 -     //-----------------------------------------------------------------------------------------------------------------
 -     // Transport (menu actions)
 - 
 -     void slot_transportPlayPause(bool toggled);
 -     void slot_transportStop();
 -     void slot_transportBackwards();
 -     void slot_transportBpmChanged(qreal newValue);
 -     void slot_transportForwards();
 -     void slot_transportJackEnabled(bool clicked);
 -     void slot_transportLinkEnabled(bool clicked);
 - 
 -     //-----------------------------------------------------------------------------------------------------------------
 -     // Other
 - 
 -     void slot_xrunClear();
 - 
 -     //-----------------------------------------------------------------------------------------------------------------
 -     // Canvas scrollbars
 - 
 -     void slot_horizontalScrollBarChanged(int value);
 -     void slot_verticalScrollBarChanged(int value);
 - 
 -     //-----------------------------------------------------------------------------------------------------------------
 -     // Canvas keyboard
 - 
 -     void slot_noteOn(int note);
 -     void slot_noteOff(int note);
 - 
 -     //-----------------------------------------------------------------------------------------------------------------
 -     // Canvas keyboard (host callbacks)
 - 
 -     void slot_handleNoteOnCallback(int pluginId, int channel, int note, int velocity);
 -     void slot_handleNoteOffCallback(int pluginId, int channel, int note);
 - 
 -     //-----------------------------------------------------------------------------------------------------------------
 - 
 -     void slot_handleUpdateCallback(int pluginId);
 - 
 -     //-----------------------------------------------------------------------------------------------------------------
 -     // MiniCanvas stuff
 - 
 -     void slot_miniCanvasCheckAll();
 -     void slot_miniCanvasCheckSize();
 -     void slot_miniCanvasMoved(qreal xp, qreal yp);
 - 
 -     //-----------------------------------------------------------------------------------------------------------------
 -     // Misc
 - 
 -     void slot_tabChanged(int index);
 -     void slot_handleReloadAllCallback(int pluginId);
 - 
 -     //-----------------------------------------------------------------------------------------------------------------
 - 
 -     void slot_handleNSMCallback(int opcode, int valueInt, QString valueStr);
 - 
 -     //-----------------------------------------------------------------------------------------------------------------
 - 
 -     void slot_handleDebugCallback(int pluginId, int value1, int value2, int value3, float valuef, QString valueStr);
 -     void slot_handleInfoCallback(QString info);
 -     void slot_handleErrorCallback(QString error);
 -     void slot_handleQuitCallback();
 -     void slot_handleInlineDisplayRedrawCallback(int pluginId);
 - 
 -     //-----------------------------------------------------------------------------------------------------------------
 - 
 -     void slot_handleSIGUSR1();
 -     void slot_handleSIGTERM();
 - 
 -     //-----------------------------------------------------------------------------------------------------------------
 - 
 - private:
 -     CARLA_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR(CarlaHostWindow)
 - };
 - 
 - //---------------------------------------------------------------------------------------------------------------------
 - // Init host
 - 
 - CarlaHost& initHost(const QString initName, const bool isControl, const bool isPlugin, const bool failError);
 - 
 - //---------------------------------------------------------------------------------------------------------------------
 - // Load host settings
 - 
 - void loadHostSettings(CarlaHost& host);
 - 
 - //---------------------------------------------------------------------------------------------------------------------
 - // Set host settings
 - 
 - void setHostSettings(const CarlaHost& host);
 - 
 - //---------------------------------------------------------------------------------------------------------------------
 - // Set Engine settings according to carla preferences. Returns selected audio driver.
 - 
 - QString setEngineSettings(CarlaHost& host);
 - 
 - //---------------------------------------------------------------------------------------------------------------------
 - // Run Carla without showing UI
 - 
 - void runHostWithoutUI(CarlaHost& host);
 - 
 - //---------------------------------------------------------------------------------------------------------------------
 - 
 - #endif // CARLA_HOST_HPP_INCLUDED
 
 
  |