/* * Carla plugin host * Copyright (C) 2011-2023 Filipe Coelho * * 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. */ #pragma once #ifdef __clang__ # pragma clang diagnostic push # pragma clang diagnostic ignored "-Wdeprecated-copy-with-user-provided-copy" # pragma clang diagnostic ignored "-Wdeprecated-register" #elif defined(__GNUC__) && __GNUC__ >= 8 # pragma GCC diagnostic push # pragma GCC diagnostic ignored "-Wclass-memaccess" # pragma GCC diagnostic ignored "-Wdeprecated-copy" #endif #include #ifdef __clang__ # pragma clang diagnostic pop #elif defined(__GNUC__) && __GNUC__ >= 8 # pragma GCC diagnostic pop #endif #include "CarlaBackend.h" static constexpr const uint PLUGIN_QUERY_API_VERSION = 12; struct HostSettings { bool showPluginBridges; bool showWineBridges; bool useSystemIcons; }; struct PluginInfo { uint API; CARLA_BACKEND_NAMESPACE::BinaryType build; CARLA_BACKEND_NAMESPACE::PluginType type; uint hints; QString category; QString filename; QString name; QString label; QString maker; uint64_t uniqueId; uint audioIns; uint audioOuts; uint cvIns; uint cvOuts; uint midiIns; uint midiOuts; uint parametersIns; uint parametersOuts; }; // -------------------------------------------------------------------------------------------------------------------- // Plugin List Dialog class PluginListDialog : public QDialog { struct Self; Self& self; // ---------------------------------------------------------------------------------------------------------------- public: explicit PluginListDialog(QWidget* parent, const HostSettings& hostSettings); ~PluginListDialog() override; // ---------------------------------------------------------------------------------------------------------------- // public methods const PluginInfo& getSelectedPluginInfo() const; // ---------------------------------------------------------------------------------------------------------------- // protected methods protected: void showEvent(QShowEvent*) override; // ---------------------------------------------------------------------------------------------------------------- // private methods void loadSettings(); // ---------------------------------------------------------------------------------------------------------------- // private slots private Q_SLOTS: void slot_cellClicked(int row, int column); void slot_cellDoubleClicked(int row, int column); void slot_focusSearchFieldAndSelectAll(); void slot_addPlugin(); void slot_checkPlugin(int row); void slot_checkFilters(); void slot_checkFiltersCategoryAll(bool clicked); void slot_checkFiltersCategorySpecific(bool clicked); void slot_refreshPlugins(); void slot_clearFilters(); void slot_saveSettings(); }; // --------------------------------------------------------------------------------------------------------------------