|  | #!/usr/bin/env python3
# SPDX-FileCopyrightText: 2011-2024 Filipe Coelho <falktx@falktx.com>
# SPDX-License-Identifier: GPL-2.0-or-later
# ------------------------------------------------------------------------------------------------------------
# Imports (Global)
from qt_compat import qt_config
if qt_config == 5:
    from PyQt5.QtCore import Qt
elif qt_config == 6:
    from PyQt6.QtCore import Qt
# -----------------------------------------------------------------------
# Imports (Custom)
from carla_shared import *
from carla_utils import *
# -----------------------------------------------------------------------
# Imports (ExternalUI)
from carla_app import CarlaApplication
from externalui import ExternalUI
from widgets.digitalpeakmeter import DigitalPeakMeter
# -----------------------------------------------------------------------
# External UI
class DistrhoUIBigMeter(ExternalUI, DigitalPeakMeter):
    def __init__(self):
        ExternalUI.__init__(self)
        DigitalPeakMeter.__init__(self, None)
        channels = 2 #6 if argv[0].endswith("bigmeterM-ui") else 2
        self.setChannelCount(channels)
        self.setMeterColor(self.COLOR_GREEN)
        self.setMeterOrientation(self.VERTICAL)
        #self.setSmoothRelease(0) # till 5
        self.resize(50, 400)
        self.setWindowTitle(self.fUiName)
        self.fIdleTimer = self.startTimer(30)
        self.ready()
    # -------------------------------------------------------------------
    # DSP Callbacks
    def dspParameterChanged(self, index, value):
        if index == 0:
            color = int(value)
            if color not in (DigitalPeakMeter.COLOR_GREEN,
                             DigitalPeakMeter.COLOR_BLUE):
                return
            self.setMeterColor(color)
        elif index == 1:
            style = int(value)
            if style not in (DigitalPeakMeter.STYLE_DEFAULT,
                             DigitalPeakMeter.STYLE_OPENAV,
                             DigitalPeakMeter.STYLE_RNCBC):
                return
            self.setMeterStyle(style)
        else:
            self.displayMeter(index-1, value)
    # -------------------------------------------------------------------
    # ExternalUI Callbacks
    def uiShow(self):
        self.show()
    def uiFocus(self):
        self.setWindowState((self.windowState() & ~Qt.WindowMinimized) | Qt.WindowActive)
        self.show()
        self.raise_()
        self.activateWindow()
    def uiHide(self):
        self.hide()
    def uiQuit(self):
        self.closeExternalUI()
        self.close()
        app.quit()
    def uiTitleChanged(self, uiTitle):
        self.setWindowTitle(uiTitle)
    # -------------------------------------------------------------------
    # Qt events
    def timerEvent(self, event):
        if event.timerId() == self.fIdleTimer:
            self.idleExternalUI()
        DigitalPeakMeter.timerEvent(self, event)
    def closeEvent(self, event):
        self.closeExternalUI()
        DigitalPeakMeter.closeEvent(self, event)
        # there might be other qt windows open which will block the UI from quitting
        app.quit()
#--------------- main ------------------
if __name__ == '__main__':
    import resources_rc
    pathBinaries, pathResources = getPaths()
    gCarla.utils = CarlaUtils(os.path.join(pathBinaries, "libcarla_utils." + DLL_EXTENSION))
    gCarla.utils.set_process_name("BigMeter")
    app = CarlaApplication("BigMeter")
    gui = DistrhoUIBigMeter()
    app.exit_exec()
 |