1#!/usr/bin/python 2# -*- coding: utf-8 -*- 3 4import globdef as G 5from PyQt5 import QtGui, QtCore, QtWidgets 6 7 8# Base class for the input and output windows. 9# These contain a gain control, mute and solo 10# buttons, and a channel label. 11# This class defines common functionality. 12# The GUI layout is defined in the derived classes. 13 14 15class Gmsbase (QtWidgets.QWidget): 16 17 def __init__(self, parent, callb, index): 18 super (Gmsbase, self).__init__(parent) 19 self.callb = callb 20 self.index = index 21 22 def value_event (self, args): 23 self.redraw () 24 self.callb (self.index, G.ACT_GAIN, args.get_value (), 0) 25 26 def mute_event (self): 27 s = self.bmute.get_state () ^ 2 28 b = self.bmute.mousebutt 29 self.bmute.set_state (s) 30 self.callb (self.index, G.ACT_MUTE, s > 0, b) 31 32 def solo_event (self): 33 s = self.bsolo.get_state () ^ 1 34 b = self.bsolo.mousebutt 35 self.bsolo.set_state (s) 36 self.callb (self.index, G.ACT_SOLO, s > 0, b) 37 38 def redraw (self): 39 gaindb = self.gainctl.get_value () 40 if (gaindb > -200): 41 self.gaintxt.setText('%5.1f' % (gaindb,)) 42 self.gainctl.set_state (1) 43 else: 44 self.gaintxt.setText('Off') 45 self.gainctl.set_state (0) 46 47 def get_state (self): 48 m = bmute.get_state () > 0 49 return self.gainctl.get_value (), m 50 51 def set_state (self, gaindb, mute): 52 self.gainctl.set_value (gaindb) 53 self.bmute.set_state (2 if mute else 0) 54 self.redraw () 55 56 def get_solo (self): 57 return self.bsolo.get_state () > 0 58 59 def solo_off (self): 60 self.bsolo.set_state (0) 61 62