Cleanup
[carla.git] / source / frontend / bigmeter-ui
blobde2a3a9ede938b00f0f8a4f8a1f0da344391327c
1 #!/usr/bin/env python3
2 # SPDX-FileCopyrightText: 2011-2024 Filipe Coelho <falktx@falktx.com>
3 # SPDX-License-Identifier: GPL-2.0-or-later
5 # ------------------------------------------------------------------------------------------------------------
6 # Imports (Global)
8 from qt_compat import qt_config
10 if qt_config == 5:
11     from PyQt5.QtCore import Qt
12 elif qt_config == 6:
13     from PyQt6.QtCore import Qt
15 # -----------------------------------------------------------------------
16 # Imports (Custom)
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 # -----------------------------------------------------------------------
29 # External UI
31 class DistrhoUIBigMeter(ExternalUI, DigitalPeakMeter):
32     def __init__(self):
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
44         self.resize(50, 400)
45         self.setWindowTitle(self.fUiName)
47         self.fIdleTimer = self.startTimer(30)
49         self.ready()
51     # -------------------------------------------------------------------
52     # DSP Callbacks
54     def dspParameterChanged(self, index, value):
55         if index == 0:
56             color = int(value)
58             if color not in (DigitalPeakMeter.COLOR_GREEN,
59                              DigitalPeakMeter.COLOR_BLUE):
60                 return
62             self.setMeterColor(color)
64         elif index == 1:
65             style = int(value)
67             if style not in (DigitalPeakMeter.STYLE_DEFAULT,
68                              DigitalPeakMeter.STYLE_OPENAV,
69                              DigitalPeakMeter.STYLE_RNCBC):
70                 return
72             self.setMeterStyle(style)
74         else:
75             self.displayMeter(index-1, value)
77     # -------------------------------------------------------------------
78     # ExternalUI Callbacks
80     def uiShow(self):
81         self.show()
83     def uiFocus(self):
84         self.setWindowState((self.windowState() & ~Qt.WindowMinimized) | Qt.WindowActive)
85         self.show()
87         self.raise_()
88         self.activateWindow()
90     def uiHide(self):
91         self.hide()
93     def uiQuit(self):
94         self.closeExternalUI()
95         self.close()
96         app.quit()
98     def uiTitleChanged(self, uiTitle):
99         self.setWindowTitle(uiTitle)
101     # -------------------------------------------------------------------
102     # Qt events
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
114         app.quit()
116 #--------------- main ------------------
117 if __name__ == '__main__':
118     import resources_rc
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()
126     app.exit_exec()