#!/usr/bin/env python3 # -*- coding: utf-8 -*- # Carla Native Plugins # Copyright (C) 2012-2014 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. # ------------------------------------------------------------------------------------------------------------ # Imports (Config) from carla_config import * # ------------------------------------------------------------------------------------------------------------ # Imports (Global) if config_UseQt5: from PyQt5.QtCore import Qt else: from PyQt4.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()