from .globals import ActivePlugin
from .stack import Stack
from . import globals
from . import audiochannel
[docs]
class Slides:
inputAudioChannel = None
overlayAudioChannels = [None] * 3
def __init__(self):
self.slidesList = []
initialStack = Stack(self, name="Classroom 1")
self.slidesList.append(initialStack)
ActivePlugin.active_slide = initialStack
self.slideNumber = len(self.slidesList)
[docs]
def initAudio(self):
self.inputAudioChannel = audiochannel.AudioChannel("input")
self.inputAudioChannel.activeStack = ActivePlugin.active_slide
self.overlayAudioChannels[0] = audiochannel.AudioChannel("output", 0)
self.overlayAudioChannels[1] = audiochannel.AudioChannel("output", 1)
self.overlayAudioChannels[2] = audiochannel.AudioChannel("output", 2)
[docs]
def addSlide(self):
self.slideNumber += 1
slide = Stack(self, name="Classroom " + str(self.slideNumber))
self.slidesList.append(slide)
#deactivate Audio for the current slide
for plugin in ActivePlugin.active_slide.stackList:
plugin.writerEvent.clear()
globals.AUDIO_THREAD.setReRoute(False)
ActivePlugin.active_slide = self.slidesList[len(self.slidesList) - 1]
slide.updateStackButtons()
[docs]
def removeSlide(self, index):
# if index == 0:
# return
self.slideNumber -= 1
if index < len(self.slidesList):
#loop through stack and unregister audio
stack = self.slidesList[index]
for plugin in stack.stackList:
plugin.stop()
plugin.audioOverlayChannel = None
plugin.writerEvent.set()
del self.slidesList[index]
else:
return False
[docs]
def shutdown(self):
for slide in self.slidesList:
slide.shutdown = True
for plugin in slide.stackList:
plugin.writerEvent.set()
plugin.audioOverlayChannel = None
plugin.stop()
for channel in self.overlayAudioChannels:
channel.shutdown = True
[docs]
def makeSelectionActive(self, index):
#loop through stack and deactivate audio
for plugin in ActivePlugin.active_slide.stackList:
plugin.writerEvent.clear()
if index < len(self.slidesList):
ActivePlugin.active_slide = self.slidesList[index]
ActivePlugin.active_slide.updateStackButtons()
self.inputAudioChannel = ActivePlugin.active_slide
globals.AUDIO_THREAD.setReRoute(False)
# loop through new stack and activate audio
for plugin in ActivePlugin.active_slide.stackList:
plugin.writerEvent.set()
if plugin.audioReRoute:
chNr = plugin.audioOverlayChannel.channelNr
globals.AUDIO_THREAD.setReRoute(True, chNr)
[docs]
def makeNewInstance(self, pluginObject):
pass
[docs]
def addPluginToActiveStack(self, pluginObject):
pass