2 # SPDX-FileCopyrightText: 2011-2024 Filipe Coelho <falktx@falktx.com>
3 # SPDX-License-Identifier: GPL-2.0-or-later
5 # ------------------------------------------------------------------------------------------------------------
8 from qt_compat import qt_config
11 from PyQt5.QtCore import Qt
13 from PyQt6.QtCore import Qt
15 # -----------------------------------------------------------------------
18 from carla_shared import *
19 from carla_utils import *
21 # -----------------------------------------------------------------------
22 # Imports (ExternalUI)
24 from carla_app import CarlaApplication
25 from externalui import ExternalUI
26 from widgets.digitalpeakmeter import DigitalPeakMeter
28 # -----------------------------------------------------------------------
31 class DistrhoUIBigMeter(ExternalUI, DigitalPeakMeter):
33 ExternalUI.__init__(self)
34 DigitalPeakMeter.__init__(self, None)
36 channels = 2 #6 if argv[0].endswith("bigmeterM-ui") else 2
38 self.setChannelCount(channels)
39 self.setMeterColor(self.COLOR_GREEN)
40 self.setMeterOrientation(self.VERTICAL)
42 #self.setSmoothRelease(0) # till 5
45 self.setWindowTitle(self.fUiName)
47 self.fIdleTimer = self.startTimer(30)
51 # -------------------------------------------------------------------
54 def dspParameterChanged(self, index, value):
58 if color not in (DigitalPeakMeter.COLOR_GREEN,
59 DigitalPeakMeter.COLOR_BLUE):
62 self.setMeterColor(color)
67 if style not in (DigitalPeakMeter.STYLE_DEFAULT,
68 DigitalPeakMeter.STYLE_OPENAV,
69 DigitalPeakMeter.STYLE_RNCBC):
72 self.setMeterStyle(style)
75 self.displayMeter(index-1, value)
77 # -------------------------------------------------------------------
78 # ExternalUI Callbacks
84 self.setWindowState((self.windowState() & ~Qt.WindowMinimized) | Qt.WindowActive)
94 self.closeExternalUI()
98 def uiTitleChanged(self, uiTitle):
99 self.setWindowTitle(uiTitle)
101 # -------------------------------------------------------------------
104 def timerEvent(self, event):
105 if event.timerId() == self.fIdleTimer:
106 self.idleExternalUI()
107 DigitalPeakMeter.timerEvent(self, event)
109 def closeEvent(self, event):
110 self.closeExternalUI()
111 DigitalPeakMeter.closeEvent(self, event)
113 # there might be other qt windows open which will block the UI from quitting
116 #--------------- main ------------------
117 if __name__ == '__main__':
120 pathBinaries, pathResources = getPaths()
121 gCarla.utils = CarlaUtils(os.path.join(pathBinaries, "libcarla_utils." + DLL_EXTENSION))
122 gCarla.utils.set_process_name("BigMeter")
124 app = CarlaApplication("BigMeter")
125 gui = DistrhoUIBigMeter()