You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
1111 lines
100 KiB
1111 lines
100 KiB
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)
|