1#!/usr/local/bin/python3.8
2# -*- coding: utf-8 -*-
3
4# Carla Backend code (Qt stuff)
5# Copyright (C) 2011-2020 Filipe Coelho <falktx@falktx.com>
6#
7# This program is free software; you can redistribute it and/or
8# modify it under the terms of the GNU General Public License as
9# published by the Free Software Foundation; either version 2 of
10# the License, or any later version.
11#
12# This program is distributed in the hope that it will be useful,
13# but WITHOUT ANY WARRANTY; without even the implied warranty of
14# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15# GNU General Public License for more details.
16#
17# For a full copy of the GNU General Public License see the doc/GPL.txt file.
18
19# ------------------------------------------------------------------------------------------------------------
20# Imports (Global)
21
22from PyQt5.QtCore import pyqtSignal, QObject
23
24# ------------------------------------------------------------------------------------------------------------
25# Imports (Custom)
26
27from carla_backend import CarlaHostNull, CarlaHostDLL, CarlaHostPlugin
28
29# ------------------------------------------------------------------------------------------------------------
30# Carla Host PyQt signals
31
32class CarlaHostSignals(QObject):
33    # signals
34    DebugCallback = pyqtSignal(int, int, int, int, float, str)
35    PluginAddedCallback = pyqtSignal(int, str)
36    PluginRemovedCallback = pyqtSignal(int)
37    PluginRenamedCallback = pyqtSignal(int, str)
38    PluginUnavailableCallback = pyqtSignal(int, str)
39    ParameterValueChangedCallback = pyqtSignal(int, int, float)
40    ParameterDefaultChangedCallback = pyqtSignal(int, int, float)
41    ParameterMappedControlIndexChangedCallback = pyqtSignal(int, int, int)
42    ParameterMappedRangeChangedCallback = pyqtSignal(int, int, float, float)
43    ParameterMidiChannelChangedCallback = pyqtSignal(int, int, int)
44    ProgramChangedCallback = pyqtSignal(int, int)
45    MidiProgramChangedCallback = pyqtSignal(int, int)
46    OptionChangedCallback = pyqtSignal(int, int, bool)
47    UiStateChangedCallback = pyqtSignal(int, int)
48    NoteOnCallback = pyqtSignal(int, int, int, int)
49    NoteOffCallback = pyqtSignal(int, int, int)
50    UpdateCallback = pyqtSignal(int)
51    ReloadInfoCallback = pyqtSignal(int)
52    ReloadParametersCallback = pyqtSignal(int)
53    ReloadProgramsCallback = pyqtSignal(int)
54    ReloadAllCallback = pyqtSignal(int)
55    PatchbayClientAddedCallback = pyqtSignal(int, int, int, str)
56    PatchbayClientRemovedCallback = pyqtSignal(int)
57    PatchbayClientRenamedCallback = pyqtSignal(int, str)
58    PatchbayClientDataChangedCallback = pyqtSignal(int, int, int)
59    PatchbayClientPositionChangedCallback = pyqtSignal(int, int, int, int, int)
60    PatchbayPortAddedCallback = pyqtSignal(int, int, int, int, str)
61    PatchbayPortRemovedCallback = pyqtSignal(int, int)
62    PatchbayPortChangedCallback = pyqtSignal(int, int, int, int, str)
63    PatchbayPortGroupAddedCallback = pyqtSignal(int, int, int, str)
64    PatchbayPortGroupRemovedCallback = pyqtSignal(int, int)
65    PatchbayPortGroupChangedCallback = pyqtSignal(int, int, int, str)
66    PatchbayConnectionAddedCallback = pyqtSignal(int, int, int, int, int)
67    PatchbayConnectionRemovedCallback = pyqtSignal(int, int, int)
68    EngineStartedCallback = pyqtSignal(int, int, int, int, float, str)
69    EngineStoppedCallback = pyqtSignal()
70    ProcessModeChangedCallback = pyqtSignal(int)
71    TransportModeChangedCallback = pyqtSignal(int, str)
72    BufferSizeChangedCallback = pyqtSignal(int)
73    SampleRateChangedCallback = pyqtSignal(float)
74    CancelableActionCallback = pyqtSignal(int, bool, str)
75    ProjectLoadFinishedCallback = pyqtSignal()
76    NSMCallback = pyqtSignal(int, int, str)
77    InfoCallback = pyqtSignal(str)
78    ErrorCallback = pyqtSignal(str)
79    QuitCallback = pyqtSignal()
80    InlineDisplayRedrawCallback = pyqtSignal(int)
81
82# ------------------------------------------------------------------------------------------------------------
83# Carla Host object (dummy/null, does nothing)
84
85class CarlaHostQtNull(CarlaHostNull, CarlaHostSignals):
86    def __init__(self):
87        CarlaHostSignals.__init__(self)
88        CarlaHostNull.__init__(self)
89
90# ------------------------------------------------------------------------------------------------------------
91# Carla Host object using a DLL
92
93class CarlaHostQtDLL(CarlaHostDLL, CarlaHostSignals):
94    def __init__(self, libName, loadGlobal):
95        CarlaHostSignals.__init__(self)
96        CarlaHostDLL.__init__(self, libName, loadGlobal)
97
98# ------------------------------------------------------------------------------------------------------------
99# Carla Host object for plugins (using pipes)
100
101# pylint: disable=abstract-method
102class CarlaHostQtPlugin(CarlaHostPlugin, CarlaHostSignals):
103    def __init__(self):
104        CarlaHostSignals.__init__(self)
105        CarlaHostPlugin.__init__(self)
106
107# pylint: enable=abstract-method
108# ------------------------------------------------------------------------------------------------------------
109