+ def on_solo_button_pressed(self, button, event, *args):
+ if event.button == 3:
+ # right click on the solo button, act on all output channels
+ if button.get_active(): # was soloed
+ button.set_active(False)
+ if hasattr(button, 'touched_channels'):
+ touched_channels = button.touched_channels
+ for chan in touched_channels:
+ ctlgroup = self.get_control_group(chan)
+ ctlgroup.solo.set_active(False)
+ del button.touched_channels
+ else: # was not soloed
+ button.set_active(True)
+ touched_channels = []
+ for chan in self.app.output_channels:
+ ctlgroup = self.get_control_group(chan)
+ if not ctlgroup.solo.get_active():
+ ctlgroup.solo.set_active(True)
+ touched_channels.append(chan)
+ button.touched_channels = touched_channels
+ return True
+ return False
+