import Utils import json import Credits from System.IO import File, Path, Directory, DirectoryInfo from System.Threading.Tasks import Task from collections import OrderedDict def __onStart(graphicOnAirItem, momentExecution, workFlowtype): if workFlowtype.ToString() != "PreviewToProgram": if not Globals["CreditsUserControl"]: momentExecution.Message = "Credits Form is not initialized" momentExecution.Cancel = True return selectedType = Globals["CreditsUserControl"].SelectedType if not selectedType: momentExecution.Message = "Select one Type first" momentExecution.Cancel = True return if selectedType.lower() != "pagination": momentExecution.Message = "Invalid Configuration Type '%s'" % selectedType momentExecution.Cancel = True return configurationsObj = Globals["CreditsUserControl"].Configurations providerPath = configurationsObj.ProviderPath.ToString() if not providerPath.strip(): momentExecution.Message = "Provider File not set" momentExecution.Cancel = True return if not File.Exists(providerPath): momentExecution.Message = "File '%s' not found" % providerPath momentExecution.Cancel = True return if configurationsObj.CardsFolder and not Directory.Exists(configurationsObj.ImagesDirectory): momentExecution.Message = "Images Folder doesn't exist" momentExecution.Cancel = True return if configurationsObj.SeparatorImage and not File.Exists(configurationsObj.SeparatorPath): momentExecution.Message = "Separator Image not found" momentExecution.Cancel = True return sceneTags = list(graphicOnAirItem.Scene.GetTags()) creditsObj = Credits.Credits(providerPath, selectedType.lower(), configurationsObj, sceneTags) Utils.SetExtraData(graphicOnAirItem.ExtraData, "CreditsObject", creditsObj) def __getData(graphicOnAirItem, viewBag, momentExecution): viewBag.Clear() creditsObj = graphicOnAirItem.ExtraData["CreditsObject"] viewBag.SetBool("vReset", True) viewBag.SetBool("vStart", False) #viewBag.SetFloat("vLineSpace",1) viewBag.SetFloat("vSpeed", creditsObj.CardSpeed) for i in range(1, 9): viewBag.SetString("%s%02d" % (Credits.paginationFunctionTag, i), "") viewBag.SetString("%s%02d" % (Credits.paginationNameTag, i), "") def __afterProgram(graphicOnAirItem, momentExecution): Task.Run(action = lambda : __continueGraphic(graphicOnAirItem, momentExecution)) def __continueGraphic(graphicOnAirItem, momentExecution): emessageboxresult = UserInteraction.ShowMessageBoxYesNo("PAGINATION", "Continue") if emessageboxresult != emessageboxresult.Yes: return __takeItems(graphicOnAirItem) def __takeItems(graphicOnAirItem): if not graphicOnAirItem.IsOnAir: return creditsObj = graphicOnAirItem.ExtraData["CreditsObject"] if creditsObj.Index > len(creditsObj.Messages):return viewBag = IntelliflowController.CreateViewBag() for i in range(1, 9): viewBag.SetString("%s%02d" % (Credits.paginationFunctionTag, i), "") viewBag.SetString("%s%02d" % (Credits.paginationNameTag, i), "") #print creditsObj.Messages[creditsObj.Index] #print creditsObj.Messages[creditsObj.Index] for enum, page in enumerate(creditsObj.Messages[creditsObj.Index]): function = page[0] names = [var for var in page[1] if var] viewBag.SetString("%s%02d" % (Credits.paginationFunctionTag, enum+1), function) viewBag.SetString("%s%02d" % (Credits.paginationNameTag, enum+1), "\r\n".join(names)) #print "%s%02d --> %s" % (Credits.paginationFunctionTag, enum+1, function) graphicOnAirItem.Scene.Show("Change_Out") graphicOnAirItem.Scene.Wait("Change_Out") IntelliflowController.FillData([graphicOnAirItem], viewBag) graphicOnAirItem.Scene.Show("Change_In") graphicOnAirItem.Scene.Wait("Change_In") creditsObj.Index += 1 if creditsObj.Index >= len(creditsObj.Messages): if not creditsObj.ShowCards: Scheduler.Add(Script.RefName, "__Out", Project.Name, graphicOnAirItem, creditsObj.Speed) return Scheduler.Add(Script.RefName, "__takeCards", Project.Name, graphicOnAirItem, creditsObj.Speed, "Cards") else: Scheduler.Add(Script.RefName, "__takeItems", Project.Name, graphicOnAirItem, creditsObj.Speed, "Credits") def __takeCards(graphicOnAirItem): if not graphicOnAirItem.IsOnAir: return cardsGraphic = GraphicTemplatesManager.GetGraphicByName("Cards") if not cardsGraphic: return IntelliflowController.TakeIn(cardsGraphic, OutputManager.ActiveChannelOutput, extraData=graphicOnAirItem.ExtraData) def __beforeProgramOut(graphicOnAirItem, momentExecution): #print "asd" Scheduler.ClearScheduler("Credits") Scheduler.ClearScheduler("Cards") def __Out(graphicOnAirItem): IntelliflowController.TakeOut(graphicOnAirItem) #def __afterProgram(graphicOnAirItem, momentExecution): # print "__afterProgram"