|
- /*
- * Carla Bridge Toolkit, Plugin version
- * Copyright (C) 2011-2013 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 GPL.txt file
- */
-
- #include "CarlaBridgeClient.hpp"
- #include "CarlaBridgeToolkit.hpp"
- #include "CarlaPlugin.hpp"
-
- CARLA_BRIDGE_START_NAMESPACE
-
- static int qargc = 0;
- static char* qargv[0] = {};
-
- // -------------------------------------------------------------------------
-
- class CarlaBridgeToolkitPlugin : public CarlaBridgeToolkit/*,
- public CarlaBackend::CarlaPluginGUI::Callback*/
- {
- public:
- CarlaBridgeToolkitPlugin(CarlaBridgeClient* const client, const char* const uiTitle)
- : CarlaBridgeToolkit(client, uiTitle)
- {
- carla_debug("CarlaBridgeToolkitPlugin::CarlaBridgeToolkitPlugin(%p, \"%s\")", client, uiTitle);
-
- app = nullptr;
- gui = nullptr;
-
- m_uiQuit = false;
-
- init();
- }
-
- ~CarlaBridgeToolkitPlugin()
- {
- carla_debug("CarlaBridgeToolkitPlugin::~CarlaBridgeToolkitPlugin()");
- CARLA_ASSERT(! app);
- CARLA_ASSERT(! gui);
- }
-
- void init()
- {
- carla_debug("CarlaBridgeToolkitPlugin::init()");
- CARLA_ASSERT(! app);
- CARLA_ASSERT(! gui);
-
- app = new QApplication(qargc, qargv);
-
- gui = new CarlaBackend::CarlaPluginGUI(nullptr, this);
- }
-
- void exec(const bool showGui)
- {
- carla_debug("CarlaBridgeToolkitPlugin::exec(%s)", bool2str(showGui));
- CARLA_ASSERT(app);
- CARLA_ASSERT(gui);
- CARLA_ASSERT(client);
-
- if (showGui)
- {
- show();
- }
- else
- {
- app->setQuitOnLastWindowClosed(false);
- client->sendOscUpdate();
- client->sendOscBridgeUpdate();
- }
-
- m_uiQuit = showGui;
-
- // Main loop
- app->exec();
- }
-
- void quit()
- {
- carla_debug("CarlaBridgeToolkitPlugin::quit()");
- CARLA_ASSERT(app);
-
- if (gui)
- {
- gui->close();
-
- delete gui;
- gui = nullptr;
- }
-
- if (app)
- {
- if (! app->closingDown())
- app->quit();
-
- delete app;
- app = nullptr;
- }
- }
-
- void show()
- {
- carla_debug("CarlaBridgeToolkitPlugin::show()");
- CARLA_ASSERT(gui);
-
- if (gui && m_uiShow)
- gui->setVisible(true);
- }
-
- void hide()
- {
- carla_debug("CarlaBridgeToolkitPlugin::hide()");
- CARLA_ASSERT(gui);
-
- if (gui && m_uiShow)
- gui->setVisible(false);
- }
-
- void resize(const int width, const int height)
- {
- carla_debug("CarlaBridgeToolkitPlugin::resize(%i, %i)", width, height);
- CARLA_ASSERT(gui);
-
- if (gui)
- gui->setNewSize(width, height);
- }
-
- private:
- QApplication* fApp;
- bool fQuit;
- //CarlaBackend::CarlaPluginGUI* gui;
-
- //void guiClosedCallback();
- };
-
- // -------------------------------------------------------------------------
-
- CarlaBridgeToolkit* CarlaBridgeToolkit::createNew(CarlaBridgeClient* const client, const char* const uiTitle)
- {
- return new CarlaBridgeToolkitPlugin(client, uiTitle);
- }
-
- CARLA_BRIDGE_END_NAMESPACE
|