import remi.gui as gui from remi import start, App import webbrowser import PrerollUpdate from plexapi.server import PlexServer import re import requests import yaml from urllib.parse import quote_plus, urlencode from plexapi import media, utils, settings, library from plexapi.base import Playable, PlexPartialObject from plexapi.exceptions import BadRequest, NotFound from argparse import ArgumentParser import os from os.path import exists import random import pathlib from configparser import * import pathlib import datetime import json button_base64 = "data:image/png;base64,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" class Rollarr(App): if exists('data.json'): print('ready') else: with open('data.json', 'w') as outfile: json.dump({'URL': ''}, outfile) def __init__(self, *args): super(Rollarr, self).__init__(*args) def main(self): with open('data.json') as json_file: output = json.load(json_file) self.app = gui.HBox(margin='0px auto', style={'display': 'block', 'overflow': 'hidden'}) self.container = gui.VBox(margin='0px auto', style={'display': 'block', 'overflow': 'hidden'}) self.container2 = gui.VBox(margin='0px auto', style={'display': 'block', 'overflow': 'hidden'}) self.container3 = gui.VBox(margin='0px auto', style={'display': 'block', 'overflow': 'hidden'}) self.container4 = gui.VBox(margin='0px auto', style={'display': 'block', 'overflow': 'hidden'}) self.container5 = gui.VBox(margin='0px auto', style={'display': 'block', 'overflow': 'hidden'}) self.container6 = gui.VBox(margin='0px auto', style={'display': 'block', 'overflow': 'hidden'}) self.container6H = gui.HBox(margin='0px auto', style={'display': 'block', 'overflow': 'hidden'}) self.submission = gui.HBox(margin='0px auto', style={'display': 'block', 'overflow': 'hidden'}) self.app.append(self.container) if output.get('Freq') == 'Monthly': self.app.append(self.container2) self.app.remove_child(self.container3) self.app.remove_child(self.container5) self.app.remove_child(self.container4) self.app.remove_child(self.container6) if output.get('Freq') == 'Weekly': self.app.remove_child(self.container2) self.app.remove_child(self.container4) self.app.remove_child(self.container5) self.app.append(self.container3) self.app.remove_child(self.container6) if output.get('Freq') == 'Daily': self.app.remove_child(self.container2) self.app.append(self.container4) self.app.remove_child(self.container5) self.app.remove_child(self.container3) self.app.remove_child(self.container6) if output.get('Freq') == 'Holiday': self.app.remove_child(self.container2) self.app.remove_child(self.container3) self.app.remove_child(self.container5) self.app.append(self.container6) self.app.remove_child(self.container4) if output.get('Freq') == 'Custom': self.app.remove_child(self.container2) self.app.remove_child(self.container3) self.app.append(self.container5) self.app.remove_child(self.container4) self.app.remove_child(self.container6) icon = gui.Image("data:image/png;base64,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", height=80, width=80) self.container.append(icon) self.title = gui.Label('Rolarr - Automate your Plex Preroll!', size=(20, 1)) self.title.css_font_size = "20px" self.container.append(self.title) self.container.append(gui.Label(" ",height=40)) self.container.append(gui.Label('Plex Server URL')) self.url = gui.Input(default_value=output.get('URL'), key='URL') self.container.append(self.url) self.container.append(gui.Label('Plex Server Token')) self.Token = gui.Input(default_value=output.get('Token'), key='Token') self.container.append(self.Token) self.container.append(gui.Label('Schedule')) self.dropDown = gui.DropDown(('Select','Monthly', 'Weekly', 'Daily', 'Holiday', 'Custom'),width=200, key='Freq', enable_events=True) self.container.append(self.dropDown) self.dropDown.onchange.do(self.drop_down_changed) self.dropDown.select_by_value(output.get('Freq')) self.container.append(gui.Label('Default Files')) self.default = gui.Input(default_value=output.get('Default'), key='Default', size=(70, 1)) self.btFileDiag = gui.Button('Select', width=100, height=20) self.btFileDiag.onclick.do(self.open_fileselection_dialog) self.container.append(self.btFileDiag) self.container.append(self.default) self.container.append(gui.Label(" ", height=40)) self.save = gui.Button('Save', width=50, height=20) self.submit = gui.Button('Submit', width=50, height=20) self.submission.append(self.save) self.save.onclick.do(self.savefile) self.submission.append(gui.Label("", width=10)) self.submission.append(self.submit) self.container.append(self.submission) self.submit.onclick.do(self.submitfile) self.container.append(gui.Label(" ", height=10)) self.buy = gui.Image(button_base64, height=59, width=150) self.container.append(self.buy) self.buy.onclick.do(self.open_link) self.container2.append(gui.Label('Select your files', size=(20, 1), font=("Helvetica", 15))) self.container2.append(gui.Label("Jan : ", size=(5, 1))) self.defaultJan = gui.Input(default_value=output.get('Jan')) self.btFileDiag2 = gui.Button('Select', width=100, height=20) self.btFileDiag2.onclick.do(self.open_fileselection_dialogJan) self.container2H = gui.HBox(margin='0px auto', style={'display': 'block', 'overflow': 'hidden'}) self.container2H.append(self.btFileDiag2) self.container2H.append(self.defaultJan) self.container2.append(self.container2H) self.container2.append(gui.Label("Feb : ", size=(5, 1))) self.defaultFeb = gui.Input(default_value=output.get('Feb')) self.btFileDiag3 = gui.Button('Select', width=100, height=20) self.btFileDiag3.onclick.do(self.open_fileselection_dialogFeb) self.container2H2 = gui.HBox(margin='0px auto', style={'display': 'block', 'overflow': 'hidden'}) self.container2H2.append(self.btFileDiag3) self.container2H2.append(self.defaultFeb) self.container2.append(self.container2H2) self.container2.append(gui.Label("Mar : ", size=(5, 1))) self.defaultMar = gui.Input(default_value=output.get('Mar')) self.btFileDiag4 = gui.Button('Select', width=100, height=20) self.btFileDiag4.onclick.do(self.open_fileselection_dialogMar) self.container2H3 = gui.HBox(margin='0px auto', style={'display': 'block', 'overflow': 'hidden'}) self.container2H3.append(self.btFileDiag4) self.container2H3.append(self.defaultMar) self.container2.append(self.container2H3) self.container2.append(gui.Label("Apr : ", size=(5, 1))) self.defaultApr = gui.Input(default_value=output.get('Apr')) self.btFileDiag5 = gui.Button('Select', width=100, height=20) self.btFileDiag5.onclick.do(self.open_fileselection_dialogApr) self.container2H4 = gui.HBox(margin='0px auto', style={'display': 'block', 'overflow': 'hidden'}) self.container2H4.append(self.btFileDiag5) self.container2H4.append(self.defaultApr) self.container2.append(self.container2H4) self.container2.append(gui.Label("May : ", size=(5, 1))) self.defaultMay = gui.Input(default_value=output.get('May')) self.btFileDiag6 = gui.Button('Select', width=100, height=20) self.btFileDiag6.onclick.do(self.open_fileselection_dialogMay) self.container2H5 = gui.HBox(margin='0px auto', style={'display': 'block', 'overflow': 'hidden'}) self.container2H5.append(self.btFileDiag6) self.container2H5.append(self.defaultMay) self.container2.append(self.container2H5) self.container2.append(gui.Label("Jun : ", size=(5, 1))) self.defaultJun = gui.Input(default_value=output.get('Jun')) self.btFileDiag7 = gui.Button('Select', width=100, height=20) self.btFileDiag7.onclick.do(self.open_fileselection_dialogJun) self.container2H6 = gui.HBox(margin='0px auto', style={'display': 'block', 'overflow': 'hidden'}) self.container2H6.append(self.btFileDiag7) self.container2H6.append(self.defaultJun) self.container2.append(self.container2H6) self.container2.append(gui.Label("Jul : ", size=(5, 1))) self.defaultJul = gui.Input(default_value=output.get('Jul')) self.btFileDiag8 = gui.Button('Select', width=100, height=20) self.btFileDiag8.onclick.do(self.open_fileselection_dialogJul) self.container2H7 = gui.HBox(margin='0px auto', style={'display': 'block', 'overflow': 'hidden'}) self.container2H7.append(self.btFileDiag8) self.container2H7.append(self.defaultJul) self.container2.append(self.container2H7) self.container2.append(gui.Label("Aug : ", size=(5, 1))) self.defaultAug= gui.Input(default_value=output.get('Aug')) self.btFileDiag9 = gui.Button('Select', width=100, height=20) self.btFileDiag9.onclick.do(self.open_fileselection_dialogAug) self.container2H8 = gui.HBox(margin='0px auto', style={'display': 'block', 'overflow': 'hidden'}) self.container2H8.append(self.btFileDiag9) self.container2H8.append(self.defaultAug) self.container2.append(self.container2H8) self.container2.append(gui.Label("Sep : ", size=(5, 1))) self.defaultSep = gui.Input(default_value=output.get('Sep')) self.btFileDiag10 = gui.Button('Select', width=100, height=20) self.btFileDiag10.onclick.do(self.open_fileselection_dialogSep) self.container2H9 = gui.HBox(margin='0px auto', style={'display': 'block', 'overflow': 'hidden'}) self.container2H9.append(self.btFileDiag10) self.container2H9.append(self.defaultSep) self.container2.append(self.container2H9) self.container2.append(gui.Label("Oct : ", size=(5, 1))) self.defaultOct = gui.Input(default_value=output.get('Oct')) self.btFileDiag11 = gui.Button('Select', width=100, height=20) self.btFileDiag11.onclick.do(self.open_fileselection_dialogOct) self.container2H10 = gui.HBox(margin='0px auto', style={'display': 'block', 'overflow': 'hidden'}) self.container2H10.append(self.btFileDiag11) self.container2H10.append(self.defaultOct) self.container2.append(self.container2H10) self.container2.append(gui.Label("Nov : ", size=(5, 1))) self.defaultNov = gui.Input(default_value=output.get('Nov')) self.btFileDiag12 = gui.Button('Select', width=100, height=20) self.btFileDiag12.onclick.do(self.open_fileselection_dialogNov) self.container2H11 = gui.HBox(margin='0px auto', style={'display': 'block', 'overflow': 'hidden'}) self.container2H11.append(self.btFileDiag12) self.container2H11.append(self.defaultNov) self.container2.append(self.container2H11) self.container2.append(gui.Label("Dec : ", size=(5, 1))) self.defaultDec = gui.Input(default_value=output.get('Dec')) self.btFileDiag13 = gui.Button('Select', width=100, height=20) self.btFileDiag13.onclick.do(self.open_fileselection_dialogDec) self.container2H12 = gui.HBox(margin='0px auto', style={'display': 'block', 'overflow': 'hidden'}) self.container2H12.append(self.btFileDiag13) self.container2H12.append(self.defaultDec) self.container2.append(self.container2H12) self.container3.append(gui.Label('Select your files', size=(20, 1), font=("Helvetica", 15))) self.container3.append(gui.Label('Start Date', size=(10, 1))) self.weekstart = gui.Date(button_Label="Select", format='%Y-%m-%d', default_value=output.get('WeekStart')) self.container3.append(self.weekstart) self.container3.append(gui.Label('End Date', size=(10, 1))) self.weekend = gui.Date(button_Label="Select", format='%Y-%m-%d', default_value=output.get('WeekEnd')) self.container3.append(self.weekend) self.container3.append(gui.Label('Path: ', size=(10, 1))) self.WeekPath = gui.Input(default_value=output.get('WeekPath')) self.btFileDiag14 = gui.Button('Select', width=100, height=20) self.btFileDiag14.onclick.do(self.open_fileselection_dialogPath) self.container3.append(self.btFileDiag14) self.container3.append(self.WeekPath) self.container4.append(gui.Label('Select your files', size=(20, 1), font=("Helvetica", 15))) self.container4.append(gui.Label('Monday', size=(7, 1))) self.Mon = gui.Input(default_value=output.get('Mon')) self.btFileDiag15 = gui.Button('Select', width=100, height=20) self.btFileDiag15.onclick.do(self.open_fileselection_dialogMon) self.container4H = gui.HBox(margin='0px auto', style={'display': 'block', 'overflow': 'hidden'}) self.container4H.append(self.btFileDiag15) self.container4H.append(self.Mon) self.container4.append(self.container4H) self.container4.append(gui.Label('Tuesday', size=(7, 1))) self.Tue = gui.Input(default_value=output.get('Tue'), key='Tue') self.btFileDiag16 = gui.Button('Select', width=100, height=20) self.btFileDiag16.onclick.do(self.open_fileselection_dialogTue) self.container4H2 = gui.HBox(margin='0px auto', style={'display': 'block', 'overflow': 'hidden'}) self.container4H2.append(self.btFileDiag16) self.container4H2.append(self.Tue) self.container4.append(self.container4H2) self.container4.append(gui.Label('Wednesday', size=(7, 1))) self.Wed = gui.Input(default_value=output.get('Wed'), key='Wed') self.btFileDiag17 = gui.Button('Select', width=100, height=20) self.btFileDiag17.onclick.do(self.open_fileselection_dialogWed) self.container4H3 = gui.HBox(margin='0px auto', style={'display': 'block', 'overflow': 'hidden'}) self.container4H3.append(self.btFileDiag17) self.container4H3.append(self.Wed) self.container4.append(self.container4H3) self.container4.append(gui.Label('Thursday', size=(7, 1))) self.Thu = gui.Input(default_value=output.get('Thu'), key='Thu') self.btFileDiag18 = gui.Button('Select', width=100, height=20) self.btFileDiag18.onclick.do(self.open_fileselection_dialogThu) self.container4H4 = gui.HBox(margin='0px auto', style={'display': 'block', 'overflow': 'hidden'}) self.container4H4.append(self.btFileDiag18) self.container4H4.append(self.Thu) self.container4.append(self.container4H4) self.container4.append(gui.Label('Friday', size=(7, 1))) self.Fri = gui.Input(default_value=output.get('Fri'), key='Fri') self.btFileDiag19 = gui.Button('Select', width=100, height=20) self.btFileDiag19.onclick.do(self.open_fileselection_dialogFri) self.container4H5 = gui.HBox(margin='0px auto', style={'display': 'block', 'overflow': 'hidden'}) self.container4H5.append(self.btFileDiag19) self.container4H5.append(self.Fri) self.container4.append(self.container4H5) self.container4.append(gui.Label('Sat', size=(7, 1))) self.Sat = gui.Input(default_value=output.get('Sat'), key='Sat') self.btFileDiag20 = gui.Button('Select', width=100, height=20) self.btFileDiag20.onclick.do(self.open_fileselection_dialogSat) self.container4H6 = gui.HBox(margin='0px auto', style={'display': 'block', 'overflow': 'hidden'}) self.container4H6.append(self.btFileDiag20) self.container4H6.append(self.Sat) self.container4.append(self.container4H6) self.container4.append(gui.Label('Sunday', size=(7, 1))) self.Sun = gui.Input(default_value=output.get('Sun'), key='Sun') self.btFileDiag21 = gui.Button('Select', width=100, height=20) self.btFileDiag21.onclick.do(self.open_fileselection_dialogSun) self.container4H7 = gui.HBox(margin='0px auto', style={'display': 'block', 'overflow': 'hidden'}) self.container4H7.append(self.btFileDiag21) self.container4H7.append(self.Sun) self.container4.append(self.container4H7) self.container5.append(gui.Label('Select your files', size=(20, 1), font=("Helvetica", 15))) self.container5.append(gui.Label('Custom Configuration')) self.container5.append(gui.Label('Playback is determined by order then date')) self.container5.append(gui.Label('1. Path: ', size=(8, 1))) self.Path1 = gui.Input(default_value=output.get('Path1')) self.btFileDiag22 = gui.Button('Select', width=100, height=20) self.btFileDiag22.onclick.do(self.open_fileselection_dialogPath1) self.container5H = gui.HBox(margin='0px auto', style={'display': 'block', 'overflow': 'hidden'}) self.container5H.append(self.btFileDiag22) self.container5H.append(self.Path1) self.container5.append(self.container5H) self.container5.append(gui.Label('Start Date', size=(8, 1))) self.Start = gui.Date(button_Label="Select Start", format='%Y-%m-%d', default_value=output.get('Start1')) self.container5.append(self.Start) self.container5.append(gui.Label('End Date', size=(8, 1))) self.End1 = gui.Date(button_Label="Select End", format='%Y-%m-%d', default_value=output.get('End1')) self.container5.append(self.End1) self.container5.append(gui.Label('2. Path: ', size=(8, 1))) self.Path2 = gui.Input(default_value=output.get('Path2')) self.btFileDiag23 = gui.Button('Select', width=100, height=20) self.btFileDiag22.onclick.do(self.open_fileselection_dialogPath2) self.container5H2 = gui.HBox(margin='0px auto', style={'display': 'block', 'overflow': 'hidden'}) self.container5H2.append(self.btFileDiag23) self.container5H2.append(self.Path2) self.container5.append(self.container5H2) self.container5.append(gui.Label('Start Date', size=(8, 1))) self.Start2 = gui.Date(button_Label="Select Start", format='%Y-%m-%d', default_value=output.get('Start2')) self.container5.append(self.Start2) self.container5.append(gui.Label('End Date', size=(8, 1))) self.End2 = gui.Date(button_Label="Select End", format='%Y-%m-%d', default_value=output.get('End2')) self.container5.append(self.End2) self.container5.append(gui.Label('3. Path: ', size=(8, 1))) self.Path3 = gui.Input(default_value=output.get('Path3')) self.btFileDiag24 = gui.Button('Select', width=100, height=20) self.btFileDiag24.onclick.do(self.open_fileselection_dialogPath3) self.container5H3 = gui.HBox(margin='0px auto', style={'display': 'block', 'overflow': 'hidden'}) self.container5H3.append(self.btFileDiag24) self.container5H3.append(self.Path3) self.container5.append(self.container5H3) self.container5.append(gui.Label('Start Date', size=(8, 1))) self.Start3 = gui.Date(button_Label="Select Start", format='%Y-%m-%d', default_value=output.get('Start3')) self.container5.append(self.Start3) self.container5.append(gui.Label('End Date', size=(8, 1))) self.End3 = gui.Date(button_Label="Select End", format='%Y-%m-%d', default_value=output.get('End3')) self.container5.append(self.End3) self.container5.append(gui.Label('4. Path: ', size=(8, 1))) self.Path4 = gui.Input(default_value=output.get('Path1')) self.btFileDiag25 = gui.Button('Select', width=100, height=20) self.btFileDiag25.onclick.do(self.open_fileselection_dialogPath4) self.container5H4 = gui.HBox(margin='0px auto', style={'display': 'block', 'overflow': 'hidden'}) self.container5H4.append(self.btFileDiag25) self.container5H4.append(self.Path4) self.container5.append(self.container5H4) self.container5.append(gui.Label('Start Date', size=(8, 1))) self.Start4 = gui.Date(button_Label="Select Start", format='%Y-%m-%d', default_value=output.get('Start4')) self.container5.append(self.Start4) self.container5.append(gui.Label('End Date', size=(8, 1))) self.End4 = gui.Date(button_Label="Select End", format='%Y-%m-%d', default_value=output.get('End4')) self.container5.append(self.End4) self.container5.append(gui.Label('5. Path: ', size=(8, 1))) self.Path5 = gui.Input(default_value=output.get('Path1')) self.btFileDiag26 = gui.Button('Select', width=100, height=20) self.btFileDiag26.onclick.do(self.open_fileselection_dialogPath5) self.container5H5 = gui.HBox(margin='0px auto', style={'display': 'block', 'overflow': 'hidden'}) self.container5H5.append(self.btFileDiag26) self.container5H5.append(self.Path5) self.container5.append(self.container5H5) self.container5.append(gui.Label('Start Date', size=(8, 1))) self.Start5 = gui.Date(button_Label="Select Start", format='%Y-%m-%d', default_value=output.get('Start5')) self.container5.append(self.Start5) self.container5.append(gui.Label('End Date', size=(8, 1))) self.End5 = gui.Date(button_Label="Select End", format='%Y-%m-%d', default_value=output.get('End5')) self.container5.append(self.End5) self.container5.append(gui.Label('6. Path: ', size=(8, 1))) self.Path6 = gui.Input(default_value=output.get('Path1')) self.btFileDiag27 = gui.Button('Select', width=100, height=20) self.btFileDiag27.onclick.do(self.open_fileselection_dialogPath6) self.container5H6 = gui.HBox(margin='0px auto', style={'display': 'block', 'overflow': 'hidden'}) self.container5H6.append(self.btFileDiag27) self.container5H6.append(self.Path6) self.container5.append(self.container5H6) self.container5.append(gui.Label('Start Date', size=(8, 1))) self.Start6 = gui.Date(button_Label="Select Start", format='%Y-%m-%d', default_value=output.get('Start6')) self.container5.append(self.Start6) self.container5.append(gui.Label('End Date', size=(8, 1))) self.End6 = gui.Date(button_Label="Select End", format='%Y-%m-%d', default_value=output.get('End6')) self.container5.append(self.End6) self.container5.append(gui.Label('7. Path: ', size=(8, 1))) self.Path7 = gui.Input(default_value=output.get('Path1')) self.btFileDiag28 = gui.Button('Select', width=100, height=20) self.btFileDiag28.onclick.do(self.open_fileselection_dialogPath7) self.container5H7 = gui.HBox(margin='0px auto', style={'display': 'block', 'overflow': 'hidden'}) self.container5H7.append(self.btFileDiag28) self.container5H7.append(self.Path7) self.container5.append(self.container5H7) self.container5.append(gui.Label('Start Date', size=(8, 1))) self.Start7 = gui.Date(button_Label="Select Start", format='%Y-%m-%d', default_value=output.get('Start7')) self.container5.append(self.Start7) self.container5.append(gui.Label('End Date', size=(8, 1))) self.End7 = gui.Date(button_Label="Select End", format='%Y-%m-%d', default_value=output.get('End7')) self.container5.append(self.End7) self.container5.append(gui.Label('8. Path: ', size=(8, 1))) self.Path8 = gui.Input(default_value=output.get('Path8')) self.btFileDiag29 = gui.Button('Select', width=100, height=20) self.btFileDiag29.onclick.do(self.open_fileselection_dialogPath8) self.container5H8 = gui.HBox(margin='0px auto', style={'display': 'block', 'overflow': 'hidden'}) self.container5H8.append(self.btFileDiag29) self.container5H8.append(self.Path8) self.container5.append(self.container5H8) self.container5.append(gui.Label('Start Date', size=(8, 1))) self.Start8 = gui.Date(button_Label="Select Start", format='%Y-%m-%d', default_value=output.get('Start8')) self.container5.append(self.Start8) self.container5.append(gui.Label('End Date', size=(8, 1))) self.End8 = gui.Date(button_Label="Select End", format='%Y-%m-%d', default_value=output.get('End8')) self.container5.append(self.End8) self.container5.append(gui.Label('9. Path: ', size=(8, 1))) self.Path9 = gui.Input(default_value=output.get('Path9')) self.btFileDiag30 = gui.Button('Select', width=100, height=20) self.btFileDiag30.onclick.do(self.open_fileselection_dialogPath9) self.container5H9 = gui.HBox(margin='0px auto', style={'display': 'block', 'overflow': 'hidden'}) self.container5H9.append(self.btFileDiag30) self.container5H9.append(self.Path9) self.container5.append(self.container5H9) self.container5.append(gui.Label('Start Date', size=(8, 1))) self.Start9 = gui.Date(button_Label="Select Start", format='%Y-%m-%d', default_value=output.get('Start9')) self.container5.append(self.Start9) self.container5.append(gui.Label('End Date', size=(8, 1))) self.End9 = gui.Date(button_Label="Select End", format='%Y-%m-%d', default_value=output.get('End9')) self.container5.append(self.End9) self.container5.append(gui.Label('10. Path: ', size=(8, 1))) self.Path10 = gui.Input(default_value=output.get('Path10')) self.btFileDiag31 = gui.Button('Select', width=100, height=20) self.btFileDiag31.onclick.do(self.open_fileselection_dialogPath10) self.container5H10 = gui.HBox(margin='0px auto', style={'display': 'block', 'overflow': 'hidden'}) self.container5H10.append(self.btFileDiag31) self.container5H10.append(self.Path10) self.container5.append(self.container5H10) self.container5.append(gui.Label('Start Date', size=(8, 1))) self.Start10 = gui.Date(button_Label="Select Start", format='%Y-%m-%d', default_value=output.get('Start10')) self.container5.append(self.Start10) self.container5.append(gui.Label('End Date', size=(8, 1))) self.End10 = gui.Date(button_Label="Select End", format='%Y-%m-%d', default_value=output.get('End10')) self.container5.append(self.End10) self.container6.append(gui.Label('Select your files', size=(20, 1), font=("Helvetica", 15))) self.container6.append(gui.Label('Valentines Day: ', size=(11, 1))) self.Pathvday = gui.Input(default_value=output.get('Valentines Day')) self.checkboxvday = gui.CheckBox(checked=output.get('Valentines Day Enabled')) self.btFileDiag32 = gui.Button('Select', width=100, height=20) self.btFileDiag32.onclick.do(self.open_fileselection_dialogPathvday) self.container6H.append(self.btFileDiag32) self.container6H.append(self.Pathvday) self.container6H.append(self.checkboxvday) self.container6.append(self.container6H) self.container6.append(gui.Label('April Fools: ', size=(11, 1))) self.Pathaprilday = gui.Input(default_value=output.get('April Fools')) self.checkboxaprilday = gui.CheckBox(checked=output.get('April Fools Enabled')) self.btFileDiag33 = gui.Button('Select', width=100, height=20) self.btFileDiag33.onclick.do(self.open_fileselection_dialogPathaprilday) self.container6H2 = gui.HBox(margin='0px auto', style={'display': 'block', 'overflow': 'hidden'}) self.container6H2.append(self.btFileDiag33) self.container6H2.append(self.Pathaprilday) self.container6H2.append(self.checkboxaprilday) self.container6.append(self.container6H2) self.container6.append(gui.Label('July 4th: ', size=(11, 1))) self.Path4th = gui.Input(default_value=output.get('July 4th')) self.checkbox4th = gui.CheckBox(checked=output.get('July 4th Enabled')) self.btFileDiag34= gui.Button('Select', width=100, height=20) self.btFileDiag34.onclick.do(self.open_fileselection_dialogPath4th) self.container6H3 = gui.HBox(margin='0px auto', style={'display': 'block', 'overflow': 'hidden'}) self.container6H3.append(self.btFileDiag34) self.container6H3.append(self.Path4th) self.container6H3.append(self.checkbox4th) self.container6.append(self.container6H3) self.container6.append(gui.Label('Mardi Gras: ', size=(11, 1))) self.Pathmardigras = gui.Input(default_value=output.get('Mardi Gras')) self.checkboxmardigras = gui.CheckBox(checked=output.get('Mardi Gras Enabled')) self.btFileDiag35= gui.Button('Select', width=100, height=20) self.btFileDiag35.onclick.do(self.open_fileselection_dialogPathmardigras) self.container6H4 = gui.HBox(margin='0px auto', style={'display': 'block', 'overflow': 'hidden'}) self.container6H4.append(self.btFileDiag35) self.container6H4.append(self.Pathmardigras) self.container6H4.append(self.checkboxmardigras) self.container6.append(self.container6H4) self.container6.append(gui.Label('Easter: ', size=(11, 1))) self.Patheaster = gui.Input(default_value=output.get('Easter')) self.checkboxeaster = gui.CheckBox(checked=output.get('Easter Enabled')) self.btFileDiag36 = gui.Button('Select', width=100, height=20) self.btFileDiag36.onclick.do(self.open_fileselection_dialogPatheaster) self.container6H5 = gui.HBox(margin='0px auto', style={'display': 'block', 'overflow': 'hidden'}) self.container6H5.append(self.btFileDiag36) self.container6H5.append(self.Patheaster) self.container6H5.append(self.checkboxeaster) self.container6.append(self.container6H5) self.container6.append(gui.Label('Halloween: ', size=(11, 1))) self.Pathhalloween = gui.Input(default_value=output.get('Halloween')) self.checkboxhalloween = gui.CheckBox(checked=output.get('Halloween Enabled')) self.btFileDiag37 = gui.Button('Select', width=100, height=20) self.btFileDiag37.onclick.do(self.open_fileselection_dialogPathhalloween) self.container6H6 = gui.HBox(margin='0px auto', style={'display': 'block', 'overflow': 'hidden'}) self.container6H6.append(self.btFileDiag37) self.container6H6.append(self.Pathhalloween) self.container6H6.append(self.checkboxhalloween) self.container6.append(self.container6H6) self.container6.append(gui.Label('Thanksgiving: ', size=(11, 1))) self.PathThanksgiving = gui.Input(default_value=output.get('Thanksgiving')) self.checkboxThanksgiving = gui.CheckBox(checked=output.get('Thanksgiving Enabled')) self.btFileDiag38 = gui.Button('Select', width=100, height=20) self.btFileDiag38.onclick.do(self.open_fileselection_dialogPathThanksgiving) self.container6H7 = gui.HBox(margin='0px auto', style={'display': 'block', 'overflow': 'hidden'}) self.container6H7.append(self.btFileDiag38) self.container6H7.append(self.PathThanksgiving) self.container6H7.append(self.checkboxThanksgiving) self.container6.append(self.container6H7) self.container6.append(gui.Label('Christmas: ', size=(11, 1))) self.PathChristmas = gui.Input(default_value=output.get('Christmas')) self.checkboxChristmas = gui.CheckBox(checked=output.get('Christmas Enabled')) self.btFileDiag39 = gui.Button('Select', width=100, height=20) self.btFileDiag39.onclick.do(self.open_fileselection_dialogPathChristmas) self.container6H8 = gui.HBox(margin='0px auto', style={'display': 'block', 'overflow': 'hidden'}) self.container6H8.append(self.btFileDiag39) self.container6H8.append(self.PathChristmas) self.container6H8.append(self.checkboxChristmas) self.container6.append(self.container6H8) # returning the root widget return self.app def open_fileselection_dialog(self, widget): self.fileselectionDialog = gui.FileSelectionDialog('File Selection Dialog', 'Select files and folders', True, '.') self.fileselectionDialog.confirm_value.do( self.on_fileselection_dialog_confirm) # here is returned the Input Dialog widget, and it will be shown self.fileselectionDialog.show(self) def on_fileselection_dialog_confirm(self, widget, filelist): # a list() of filenames and folders is returned self.default.set_value(';'.join(filelist)) def open_fileselection_dialogJan(self, widget): self.fileselectionDialog = gui.FileSelectionDialog('File Selection Dialog', 'Select files and folders', True, '.') self.fileselectionDialog.confirm_value.do( self.on_fileselection_dialog_confirmJan) # here is returned the Input Dialog widget, and it will be shown self.fileselectionDialog.show(self) def on_fileselection_dialog_confirmJan(self, widget, filelist): # a list() of filenames and folders is returned self.defaultJan.set_value(';'.join(filelist)) def open_fileselection_dialogFeb(self, widget): self.fileselectionDialog = gui.FileSelectionDialog('File Selection Dialog', 'Select files and folders',True,'.',True,False) self.fileselectionDialog.confirm_value.do( self.on_fileselection_dialog_confirmFeb) # here is returned the Input Dialog widget, and it will be shown self.fileselectionDialog.show(self) def on_fileselection_dialog_confirmFeb(self, widget, filelist): # a list() of filenames and folders is returned self.defaultFeb.set_value(';'.join(filelist)) def open_fileselection_dialogMar(self, widget): self.fileselectionDialog = gui.FileSelectionDialog('File Selection Dialog', 'Select files and folders', True, '.', True, False) self.fileselectionDialog.confirm_value.do( self.on_fileselection_dialog_confirmMar) # here is returned the Input Dialog widget, and it will be shown self.fileselectionDialog.show(self) def on_fileselection_dialog_confirmMar(self, widget, filelist): # a list() of filenames and folders is returned self.defaultMar.set_value(';'.join(filelist)) def open_fileselection_dialogApr(self, widget): self.fileselectionDialog = gui.FileSelectionDialog('File Selection Dialog', 'Select files and folders', True, '.', True, False) self.fileselectionDialog.confirm_value.do( self.on_fileselection_dialog_confirmApr) # here is returned the Input Dialog widget, and it will be shown self.fileselectionDialog.show(self) def on_fileselection_dialog_confirmApr(self, widget, filelist): # a list() of filenames and folders is returned self.defaultApr.set_value(';'.join(filelist)) def open_fileselection_dialogMay(self, widget): self.fileselectionDialog = gui.FileSelectionDialog('File Selection Dialog', 'Select files and folders', True, '.', True, False) self.fileselectionDialog.confirm_value.do( self.on_fileselection_dialog_confirmMay) # here is returned the Input Dialog widget, and it will be shown self.fileselectionDialog.show(self) def on_fileselection_dialog_confirmMay(self, widget, filelist): # a list() of filenames and folders is returned self.defaultMay.set_value(';'.join(filelist)) def open_fileselection_dialogJun(self, widget): self.fileselectionDialog = gui.FileSelectionDialog('File Selection Dialog', 'Select files and folders', True, '.', True, False) self.fileselectionDialog.confirm_value.do( self.on_fileselection_dialog_confirmJun) # here is returned the Input Dialog widget, and it will be shown self.fileselectionDialog.show(self) def on_fileselection_dialog_confirmJun(self, widget, filelist): # a list() of filenames and folders is returned self.defaultJun.set_value(';'.join(filelist)) def open_fileselection_dialogJul(self, widget): self.fileselectionDialog = gui.FileSelectionDialog('File Selection Dialog', 'Select files and folders', True, '.', True, False) self.fileselectionDialog.confirm_value.do( self.on_fileselection_dialog_confirmJul) # here is returned the Input Dialog widget, and it will be shown self.fileselectionDialog.show(self) def on_fileselection_dialog_confirmJul(self, widget, filelist): # a list() of filenames and folders is returned self.defaultJul.set_value(';'.join(filelist)) def open_fileselection_dialogAug(self, widget): self.fileselectionDialog = gui.FileSelectionDialog('File Selection Dialog', 'Select files and folders', True, '.', True, False) self.fileselectionDialog.confirm_value.do( self.on_fileselection_dialog_confirmAug) # here is returned the Input Dialog widget, and it will be shown self.fileselectionDialog.show(self) def on_fileselection_dialog_confirmAug(self, widget, filelist): # a list() of filenames and folders is returned self.defaultAug.set_value(';'.join(filelist)) def open_fileselection_dialogSep(self, widget): self.fileselectionDialog = gui.FileSelectionDialog('File Selection Dialog', 'Select files and folders', True, '.', True, False) self.fileselectionDialog.confirm_value.do( self.on_fileselection_dialog_confirmSep) # here is returned the Input Dialog widget, and it will be shown self.fileselectionDialog.show(self) def on_fileselection_dialog_confirmSep(self, widget, filelist): # a list() of filenames and folders is returned self.defaultSep.set_value(';'.join(filelist)) def open_fileselection_dialogOct(self, widget): self.fileselectionDialog = gui.FileSelectionDialog('File Selection Dialog', 'Select files and folders', True, '.', True, False) self.fileselectionDialog.confirm_value.do( self.on_fileselection_dialog_confirmOct) # here is returned the Input Dialog widget, and it will be shown self.fileselectionDialog.show(self) def on_fileselection_dialog_confirmOct(self, widget, filelist): # a list() of filenames and folders is returned self.defaultOct.set_value(';'.join(filelist)) def open_fileselection_dialogNov(self, widget): self.fileselectionDialog = gui.FileSelectionDialog('File Selection Dialog', 'Select files and folders', True, '.', True, False) self.fileselectionDialog.confirm_value.do( self.on_fileselection_dialog_confirmNov) # here is returned the Input Dialog widget, and it will be shown self.fileselectionDialog.show(self) def on_fileselection_dialog_confirmNov(self, widget, filelist): # a list() of filenames and folders is returned self.defaultNov.set_value(';'.join(filelist)) def open_fileselection_dialogDec(self, widget): self.fileselectionDialog = gui.FileSelectionDialog('File Selection Dialog', 'Select files and folders', True, '.', True, False) self.fileselectionDialog.confirm_value.do( self.on_fileselection_dialog_confirmDec) # here is returned the Input Dialog widget, and it will be shown self.fileselectionDialog.show(self) def on_fileselection_dialog_confirmDec(self, widget, filelist): # a list() of filenames and folders is returned self.defaultDec.set_value(';'.join(filelist)) def open_fileselection_dialogPath(self, widget): self.fileselectionDialog = gui.FileSelectionDialog('File Selection Dialog', 'Select files and folders', True, '.', True, False) self.fileselectionDialog.confirm_value.do( self.on_fileselection_dialog_confirmPath) # here is returned the Input Dialog widget, and it will be shown self.fileselectionDialog.show(self) def on_fileselection_dialog_confirmPath(self, widget, filelist): # a list() of filenames and folders is returned self.WeekPath.set_value(';'.join(filelist)) def open_fileselection_dialogPath(self, widget): self.fileselectionDialog = gui.FileSelectionDialog('File Selection Dialog', 'Select files and folders', True, '.', True, False) self.fileselectionDialog.confirm_value.do( self.on_fileselection_dialog_confirmPath) # here is returned the Input Dialog widget, and it will be shown self.fileselectionDialog.show(self) def on_fileselection_dialog_confirmPath(self, widget, filelist): # a list() of filenames and folders is returned self.WeekPath.set_value(';'.join(filelist)) def open_fileselection_dialogPath1(self, widget): self.fileselectionDialog = gui.FileSelectionDialog('File Selection Dialog', 'Select files and folders', True, '.', True, False) self.fileselectionDialog.confirm_value.do( self.on_fileselection_dialog_confirmPath1) # here is returned the Input Dialog widget, and it will be shown self.fileselectionDialog.show(self) def on_fileselection_dialog_confirmPath1(self, widget, filelist): # a list() of filenames and folders is returned self.Path1.set_value(';'.join(filelist)) def open_fileselection_dialogPath2(self, widget): self.fileselectionDialog = gui.FileSelectionDialog('File Selection Dialog', 'Select files and folders', True, '.', True, False) self.fileselectionDialog.confirm_value.do( self.on_fileselection_dialog_confirmPath2) # here is returned the Input Dialog widget, and it will be shown self.fileselectionDialog.show(self) def on_fileselection_dialog_confirmPath2(self, widget, filelist): # a list() of filenames and folders is returned self.Path2.set_value(';'.join(filelist)) def open_fileselection_dialogPath3(self, widget): self.fileselectionDialog = gui.FileSelectionDialog('File Selection Dialog', 'Select files and folders', True, '.', True, False) self.fileselectionDialog.confirm_value.do( self.on_fileselection_dialog_confirmPath3) # here is returned the Input Dialog widget, and it will be shown self.fileselectionDialog.show(self) def on_fileselection_dialog_confirmPath3(self, widget, filelist): # a list() of filenames and folders is returned self.Path3.set_value(';'.join(filelist)) def open_fileselection_dialogPath4(self, widget): self.fileselectionDialog = gui.FileSelectionDialog('File Selection Dialog', 'Select files and folders', True, '.', True, False) self.fileselectionDialog.confirm_value.do( self.on_fileselection_dialog_confirmPath4) # here is returned the Input Dialog widget, and it will be shown self.fileselectionDialog.show(self) def on_fileselection_dialog_confirmPath4(self, widget, filelist): # a list() of filenames and folders is returned self.Path4.set_value(';'.join(filelist)) def open_fileselection_dialogPath5(self, widget): self.fileselectionDialog = gui.FileSelectionDialog('File Selection Dialog', 'Select files and folders', True, '.', True, False) self.fileselectionDialog.confirm_value.do( self.on_fileselection_dialog_confirmPath5) # here is returned the Input Dialog widget, and it will be shown self.fileselectionDialog.show(self) def on_fileselection_dialog_confirmPath5(self, widget, filelist): # a list() of filenames and folders is returned self.Path5.set_value(';'.join(filelist)) def open_fileselection_dialogPath6(self, widget): self.fileselectionDialog = gui.FileSelectionDialog('File Selection Dialog', 'Select files and folders', True, '.', True, False) self.fileselectionDialog.confirm_value.do( self.on_fileselection_dialog_confirmPath6) # here is returned the Input Dialog widget, and it will be shown self.fileselectionDialog.show(self) def on_fileselection_dialog_confirmPath6(self, widget, filelist): # a list() of filenames and folders is returned self.Path6.set_value(';'.join(filelist)) def open_fileselection_dialogPath7(self, widget): self.fileselectionDialog = gui.FileSelectionDialog('File Selection Dialog', 'Select files and folders', True, '.', True, False) self.fileselectionDialog.confirm_value.do( self.on_fileselection_dialog_confirmPath7) # here is returned the Input Dialog widget, and it will be shown self.fileselectionDialog.show(self) def on_fileselection_dialog_confirmPath7(self, widget, filelist): # a list() of filenames and folders is returned self.Path7.set_value(';'.join(filelist)) def open_fileselection_dialogPath8(self, widget): self.fileselectionDialog = gui.FileSelectionDialog('File Selection Dialog', 'Select files and folders', True, '.', True, False) self.fileselectionDialog.confirm_value.do( self.on_fileselection_dialog_confirmPath8) # here is returned the Input Dialog widget, and it will be shown self.fileselectionDialog.show(self) def on_fileselection_dialog_confirmPath8(self, widget, filelist): # a list() of filenames and folders is returned self.Path8.set_value(';'.join(filelist)) def open_fileselection_dialogPath9(self, widget): self.fileselectionDialog = gui.FileSelectionDialog('File Selection Dialog', 'Select files and folders', True, '.', True, False) self.fileselectionDialog.confirm_value.do( self.on_fileselection_dialog_confirmPath9) # here is returned the Input Dialog widget, and it will be shown self.fileselectionDialog.show(self) def on_fileselection_dialog_confirmPath9(self, widget, filelist): # a list() of filenames and folders is returned self.Path9.set_value(';'.join(filelist)) def open_fileselection_dialogPath10(self, widget): self.fileselectionDialog = gui.FileSelectionDialog('File Selection Dialog', 'Select files and folders', True, '.', True, False) self.fileselectionDialog.confirm_value.do( self.on_fileselection_dialog_confirmPath10) # here is returned the Input Dialog widget, and it will be shown self.fileselectionDialog.show(self) def on_fileselection_dialog_confirmPath10(self, widget, filelist): # a list() of filenames and folders is returned self.WeekPath.set_value(';'.join(filelist)) def open_fileselection_dialogMon(self, widget): self.fileselectionDialog = gui.FileSelectionDialog('File Selection Dialog', 'Select files and folders', True, '.', True, False) self.fileselectionDialog.confirm_value.do( self.on_fileselection_dialog_confirmMon) # here is returned the Input Dialog widget, and it will be shown self.fileselectionDialog.show(self) def on_fileselection_dialog_confirmMon(self, widget, filelist): # a list() of filenames and folders is returned self.Mon.set_value(';'.join(filelist)) def open_fileselection_dialogTue(self, widget): self.fileselectionDialog = gui.FileSelectionDialog('File Selection Dialog', 'Select files and folders', True, '.', True, False) self.fileselectionDialog.confirm_value.do( self.on_fileselection_dialog_confirmTue) # here is returned the Input Dialog widget, and it will be shown self.fileselectionDialog.show(self) def on_fileselection_dialog_confirmTue(self, widget, filelist): # a list() of filenames and folders is returned self.Tue.set_value(';'.join(filelist)) def open_fileselection_dialogWed(self, widget): self.fileselectionDialog = gui.FileSelectionDialog('File Selection Dialog', 'Select files and folders', True, '.', True, False) self.fileselectionDialog.confirm_value.do( self.on_fileselection_dialog_confirmWed) # here is returned the Input Dialog widget, and it will be shown self.fileselectionDialog.show(self) def on_fileselection_dialog_confirmWed(self, widget, filelist): # a list() of filenames and folders is returned self.Wed.set_value(';'.join(filelist)) def open_fileselection_dialogThu(self, widget): self.fileselectionDialog = gui.FileSelectionDialog('File Selection Dialog', 'Select files and folders', True, '.', True, False) self.fileselectionDialog.confirm_value.do( self.on_fileselection_dialog_confirmThu) # here is returned the Input Dialog widget, and it will be shown self.fileselectionDialog.show(self) def on_fileselection_dialog_confirmThu(self, widget, filelist): # a list() of filenames and folders is returned self.Thu.set_value(';'.join(filelist)) def open_fileselection_dialogFri(self, widget): self.fileselectionDialog = gui.FileSelectionDialog('File Selection Dialog', 'Select files and folders', True, '.', True, False) self.fileselectionDialog.confirm_value.do( self.on_fileselection_dialog_confirmFri) # here is returned the Input Dialog widget, and it will be shown self.fileselectionDialog.show(self) def on_fileselection_dialog_confirmFri(self, widget, filelist): # a list() of filenames and folders is returned self.Fri.set_value(';'.join(filelist)) def open_fileselection_dialogSat(self, widget): self.fileselectionDialog = gui.FileSelectionDialog('File Selection Dialog', 'Select files and folders', True, '.', True, False) self.fileselectionDialog.confirm_value.do( self.on_fileselection_dialog_confirmSat) # here is returned the Input Dialog widget, and it will be shown self.fileselectionDialog.show(self) def on_fileselection_dialog_confirmSat(self, widget, filelist): # a list() of filenames and folders is returned self.Sat.set_value(';'.join(filelist)) def open_fileselection_dialogSun(self, widget): self.fileselectionDialog = gui.FileSelectionDialog('File Selection Dialog', 'Select files and folders', True, '.', True, False) self.fileselectionDialog.confirm_value.do( self.on_fileselection_dialog_confirmSun) # here is returned the Input Dialog widget, and it will be shown self.fileselectionDialog.show(self) def on_fileselection_dialog_confirmSun(self, widget, filelist): # a list() of filenames and folders is returned self.Sun.set_value(';'.join(filelist)) def open_fileselection_dialogPathvday(self, widget): self.fileselectionDialog = gui.FileSelectionDialog('File Selection Dialog', 'Select files and folders', True, '.', True, False) self.fileselectionDialog.confirm_value.do( self.on_fileselection_dialog_confirmvday) # here is returned the Input Dialog widget, and it will be shown self.fileselectionDialog.show(self) def on_fileselection_dialog_confirmvday(self, widget, filelist): # a list() of filenames and folders is returned self.Pathvday.set_value(';'.join(filelist)) def open_fileselection_dialogPathaprilday(self, widget): self.fileselectionDialog = gui.FileSelectionDialog('File Selection Dialog', 'Select files and folders', True, '.', True, False) self.fileselectionDialog.confirm_value.do( self.on_fileselection_dialog_confirmaprilday) # here is returned the Input Dialog widget, and it will be shown self.fileselectionDialog.show(self) def on_fileselection_dialog_confirmaprilday(self, widget, filelist): # a list() of filenames and folders is returned self.Pathaprilday.set_value(';'.join(filelist)) def open_fileselection_dialogPath4th(self, widget): self.fileselectionDialog = gui.FileSelectionDialog('File Selection Dialog', 'Select files and folders', True, '.', True, False) self.fileselectionDialog.confirm_value.do( self.on_fileselection_dialog_confirmPath4th) # here is returned the Input Dialog widget, and it will be shown self.fileselectionDialog.show(self) def on_fileselection_dialog_confirmPath4th(self, widget, filelist): # a list() of filenames and folders is returned self.Path4th.set_value(';'.join(filelist)) def open_fileselection_dialogPathmardigras(self, widget): self.fileselectionDialog = gui.FileSelectionDialog('File Selection Dialog', 'Select files and folders', True, '.', True, False) self.fileselectionDialog.confirm_value.do( self.on_fileselection_dialog_confirmPathmardigras) # here is returned the Input Dialog widget, and it will be shown self.fileselectionDialog.show(self) def on_fileselection_dialog_confirmPathmardigras(self, widget, filelist): # a list() of filenames and folders is returned self.Pathmardigras.set_value(';'.join(filelist)) def open_fileselection_dialogPatheaster(self, widget): self.fileselectionDialog = gui.FileSelectionDialog('File Selection Dialog', 'Select files and folders', True, '.', True, False) self.fileselectionDialog.confirm_value.do( self.on_fileselection_dialog_confirmPatheaster) # here is returned the Input Dialog widget, and it will be shown self.fileselectionDialog.show(self) def on_fileselection_dialog_confirmPatheaster(self, widget, filelist): # a list() of filenames and folders is returned self.Patheaster.set_value(';'.join(filelist)) def open_fileselection_dialogPathhalloween(self, widget): self.fileselectionDialog = gui.FileSelectionDialog('File Selection Dialog', 'Select files and folders', True, '.', True, False) self.fileselectionDialog.confirm_value.do( self.on_fileselection_dialog_confirmPathhalloween) # here is returned the Input Dialog widget, and it will be shown self.fileselectionDialog.show(self) def on_fileselection_dialog_confirmPathhalloween(self, widget, filelist): # a list() of filenames and folders is returned self.Pathhalloween.set_value(';'.join(filelist)) def open_fileselection_dialogPathThanksgiving(self, widget): self.fileselectionDialog = gui.FileSelectionDialog('File Selection Dialog', 'Select files and folders', True, '.', True, False) self.fileselectionDialog.confirm_value.do( self.on_fileselection_dialog_confirmPathThanksgiving) # here is returned the Input Dialog widget, and it will be shown self.fileselectionDialog.show(self) def on_fileselection_dialog_confirmPathThanksgiving(self, widget, filelist): # a list() of filenames and folders is returned self.PathThanksgiving.set_value(';'.join(filelist)) def open_fileselection_dialogPathChristmas(self, widget): self.fileselectionDialog = gui.FileSelectionDialog('File Selection Dialog', 'Select files and folders', True, '.', True, False) self.fileselectionDialog.confirm_value.do( self.on_fileselection_dialog_confirmPathChristmas) # here is returned the Input Dialog widget, and it will be shown self.fileselectionDialog.show(self) def on_fileselection_dialog_confirmPathChristmas(self, widget, filelist): # a list() of filenames and folders is returned self.PathChristmas.set_value(';'.join(filelist)) #change pre-roll types def drop_down_changed(self, widget, value): print(value) if value == 'Monthly': self.app.append(self.container2) self.app.remove_child(self.container3) self.app.remove_child(self.container5) self.app.remove_child(self.container4) self.app.remove_child(self.container6) if value == 'Weekly': self.app.remove_child(self.container2) self.app.remove_child(self.container4) self.app.remove_child(self.container5) self.app.append(self.container3) self.app.remove_child(self.container6) if value == 'Daily': self.app.remove_child(self.container2) self.app.append(self.container4) self.app.remove_child(self.container5) self.app.remove_child(self.container3) self.app.remove_child(self.container6) if value == 'Holiday': self.app.remove_child(self.container2) self.app.remove_child(self.container3) self.app.remove_child(self.container5) self.app.append(self.container6) self.app.remove_child(self.container4) if value == 'Custom': self.app.remove_child(self.container2) self.app.remove_child(self.container3) self.app.append(self.container5) self.app.remove_child(self.container4) self.app.remove_child(self.container6) def open_link(self, widget): webbrowser.open_new('https://www.buymeacoffee.com/thehumanrobot') def savefile(self,widget): with open('data.json', 'w') as outfile: json.dump({'URL': self.url.get_value(), 'Token': self.Token.get_value(), 'Freq': self.dropDown.get_value(), 'Jan': self.defaultJan.get_value(), 'Feb': self.defaultFeb.get_value(), 'Mar': self.defaultMar.get_value(), 'Apr': self.defaultApr.get_value(), 'May': self.defaultMay.get_value(), 'Jun': self.defaultJun.get_value(), 'Jul': self.defaultJul.get_value(), 'Aug': self.defaultAug.get_value(), 'Sep': self.defaultSep.get_value(), 'Oct': self.defaultOct.get_value(), 'Nov': self.defaultNov.get_value(), 'Dec': self.defaultDec.get_value(), 'WeekStart': self.weekstart.get_value(), 'WeekEnd': self.weekend.get_value(), 'WeekPath': self.WeekPath.get_value(), 'Sun': self.Sun.get_value(), 'Mon': self.Mon.get_value(), 'Tue': self.Tue.get_value(), 'Wed': self.Wed.get_value(), 'Thu': self.Thu.get_value(), 'Fri': self.Fri.get_value(), 'Sat': self.Sat.get_value(), 'Valentines Day': self.Pathvday.get_value(), 'April Fools': self.Pathaprilday.get_value(), 'July 4th': self.Path4th.get_value(), 'Mardi Gras': self.Pathmardigras.get_value(), 'Easter': self.Patheaster.get_value(), 'Halloween': self.Pathhalloween.get_value(), 'Thanksgiving': self.PathThanksgiving.get_value(), 'Christmas': self.PathChristmas.get_value(), 'Valentines Day Enabled': self.checkboxvday.get_value() , 'April Fools Enabled': self.checkboxaprilday.get_value(), 'July 4th Enabled': self.checkbox4th.get_value(), 'Mardi Gras Enabled': self.checkboxmardigras.get_value(), 'Easter Enabled': self.checkboxeaster.get_value(), 'Halloween Enabled': self.checkboxhalloween.get_value(), 'Thanksgiving Enabled': self.checkboxThanksgiving.get_value(), 'Christmas Enabled': self.checkboxChristmas.get_value(), 'Default': self.default.get_value() , 'Start1': self.Start.get_value(), 'Start2': self.Start2.get_value(), 'Start3': self.Start3.get_value(), 'Start4': self.Start4.get_value(), 'Start5': self.Start5.get_value(), 'Start6': self.Start6.get_value(), 'Start7': self.Start7.get_value(), 'Start8': self.Start8.get_value(), 'Start9': self.Start9.get_value(), 'Start10': self.Start10.get_value() , 'End1': self.End1.get_value(), 'End2': self.End2.get_value(), 'End3': self.End3.get_value(), 'End4': self.End4.get_value(), 'End5': self.End5.get_value(), 'End6': self.End6.get_value(), 'End7': self.End7.get_value(), 'End8': self.End8.get_value(), 'End9': self.End9.get_value(), 'End10': self.End10.get_value() , 'Path1': self.Path1.get_value(), 'Path2': self.Path2.get_value(), 'Path3': self.Path3.get_value(), 'Path4': self.Path4.get_value(), 'Path5': self.Path5.get_value(), 'Path6': self.Path6.get_value(), 'Path7': self.Path7.get_value(), 'Path8': self.Path8.get_value(), 'Path9': self.Path9.get_value(), 'Path10': self.Path10.get_value()}, outfile) self.popup = gui.GenericDialog("Your changes are saved") self.popup.show(self) def submitfile(self,widget): with open('data.json', 'w') as outfile: json.dump({'URL': self.url.get_value(), 'Token': self.Token.get_value(), 'Freq': self.dropDown.get_value(), 'Jan': self.defaultJan.get_value(), 'Feb': self.defaultFeb.get_value(), 'Mar': self.defaultMar.get_value(), 'Apr': self.defaultApr.get_value(), 'May': self.defaultMay.get_value(), 'Jun': self.defaultJun.get_value(), 'Jul': self.defaultJul.get_value(), 'Aug': self.defaultAug.get_value(), 'Sep': self.defaultSep.get_value(), 'Oct': self.defaultOct.get_value(), 'Nov': self.defaultNov.get_value(), 'Dec': self.defaultDec.get_value(), 'WeekStart': self.weekstart.get_value(), 'WeekEnd': self.weekend.get_value(), 'WeekPath': self.WeekPath.get_value(), 'Sun': self.Sun.get_value(), 'Mon': self.Mon.get_value(), 'Tue': self.Tue.get_value(), 'Wed': self.Wed.get_value(), 'Thu': self.Thu.get_value(), 'Fri': self.Fri.get_value(), 'Sat': self.Sat.get_value(), 'Valentines Day': self.Pathvday.get_value(), 'April Fools': self.Pathaprilday.get_value(), 'July 4th': self.Path4th.get_value(), 'Mardi Gras': self.Pathmardigras.get_value(), 'Easter': self.Patheaster.get_value(), 'Halloween': self.Pathhalloween.get_value(), 'Thanksgiving': self.PathThanksgiving.get_value(), 'Christmas': self.PathChristmas.get_value(), 'Valentines Day Enabled': self.checkboxvday.get_value() , 'April Fools Enabled': self.checkboxaprilday.get_value(), 'July 4th Enabled': self.checkbox4th.get_value(), 'Mardi Gras Enabled': self.checkboxmardigras.get_value(), 'Easter Enabled': self.checkboxeaster.get_value(), 'Halloween Enabled': self.checkboxhalloween.get_value(), 'Thanksgiving Enabled': self.checkboxThanksgiving.get_value(), 'Christmas Enabled': self.checkboxChristmas.get_value(), 'Default': self.default.get_value() , 'Start1': self.Start.get_value(), 'Start2': self.Start2.get_value(), 'Start3': self.Start3.get_value(), 'Start4': self.Start4.get_value(), 'Start5': self.Start5.get_value(), 'Start6': self.Start6.get_value(), 'Start7': self.Start7.get_value(), 'Start8': self.Start8.get_value(), 'Start9': self.Start9.get_value(), 'Start10': self.Start10.get_value() , 'End1': self.End1.get_value(), 'End2': self.End2.get_value(), 'End3': self.End3.get_value(), 'End4': self.End4.get_value(), 'End5': self.End5.get_value(), 'End6': self.End6.get_value(), 'End7': self.End7.get_value(), 'End8': self.End8.get_value(), 'End9': self.End9.get_value(), 'End10': self.End10.get_value() , 'Path1': self.Path1.get_value(), 'Path2': self.Path2.get_value(), 'Path3': self.Path3.get_value(), 'Path4': self.Path4.get_value(), 'Path5': self.Path5.get_value(), 'Path6': self.Path6.get_value(), 'Path7': self.Path7.get_value(), 'Path8': self.Path8.get_value(), 'Path9': self.Path9.get_value(), 'Path10': self.Path10.get_value()}, outfile) PrerollUpdate.update() self.popup = gui.GenericDialog("Your server pre-roll is updated") self.popup.show(self) if __name__ == "__main__": # starts the web server start(Rollarr,address='0.0.0.0', port=3100, start_browser=True, multiple_instance=True)