def __init__(self, master, customers, payments, output_text, refresh): Frame.__init__(self, master) self.refresh = refresh self.master = master self.output_text = output_text self.customers = customers self.payments = payments self.pname = StringVar() self.pnames = [] self.mname = StringVar() self.mnames = [] self.date = StringVar() self.nmonths = StringVar() self.punches = StringVar() self.nmonths.set('1') self.punches.set(str(10)) self.date.set(strftime("%m/%d/%Y")) self.columnconfigure(0,weight=1) # Monthly Customers monthly_lf = LabelFrame(self, text="Monthly Customers Payment") monthly_lf.grid(padx=5,pady=5,row=0,column=0,sticky='ew') Label(monthly_lf,text="Name:").grid(row=0,column=0,sticky='e',padx=(10,0),pady=(10,2)) Label(monthly_lf,text="Date:").grid(row=0,column=3,sticky='e',padx=(10,0),pady=(10,2)) Label(monthly_lf,text="# Months:").grid(row=1,column=0,columnspan=2,sticky='e',padx=(10,0),pady=(2,10)) self.mname_cb = Combobox(monthly_lf,textvariable=self.mname,width=20,values=self.mnames, state='readonly') self.mname_cb.grid(row=0,column=1,columnspan=2,sticky='ew',pady=(10,2)) Entry(monthly_lf,textvariable=self.date,width=15).grid(row=0,column=4,sticky='ew',padx=(0,10),pady=(10,2)) Entry(monthly_lf,textvariable=self.nmonths).grid(row=1,column=2,sticky='ew',pady=(2,10)) Button(monthly_lf,text='Submit',command=self.monthly_payment).grid(row=1,column=4,sticky='ew',padx=(0,10),pady=(2,10)) for i in range(5): monthly_lf.columnconfigure(i,weight=1) # Punch Card Customers puch_lf = LabelFrame(self, text="Punch Card Customers (Purchace Card)") puch_lf.grid(padx=5,pady=5,row=1,column=0,sticky='ew') Label(puch_lf,text="Name:").grid(row=0,column=0,sticky='e',padx=(10,0),pady=(10,2)) Label(puch_lf,text="Punches:").grid(row=0,column=2,sticky='e',pady=(10,2)) self.pname_cb = Combobox(puch_lf,textvariable=self.pname,width=20,values=self.pnames,state='readonly') self.pname_cb.grid(row=0,column=1,sticky='ew',pady=(10,2)) Entry(puch_lf,textvariable=self.punches,width=15).grid(row=0,column=3,sticky='ew',padx=(0,10),pady=(10,2)) Button(puch_lf,text='Submit',command=self.new_punchcard).grid(row=3,column=3,sticky='ew',padx=(0,10),pady=(2,10)) for i in range(4): puch_lf.columnconfigure(i,weight=1) self.update_names()
def initUI(self): self.MPDInitialize() self.parent.title("RaspiPlayer") self.style = Style() self.style.theme_use("default") self.pack(fill=BOTH, expand=1) #self.columnconfigure(1, weight=1) #self.columnconfigure(3, pad=7) #self.rowconfigure(3, weight=1) #self.rowconfigure(5, pad=7) #self.CurrentSongInfo() self.poll() titleframe = LabelFrame(self, width=200, height=70) titleframe.grid(row=0, column=0, columnspan=2) titleframe.grid_propagate(0) titlelbl = Label(titleframe, text="RaspPi Player", font=('Garamond', (20), 'bold')) titlelbl.grid(row=0, column=0) PreviousButton = Button(self, text="Previous", command=self.PreviousClick) PreviousButton.grid(row=2, column=0) PlayButton = Button(self, text="Play", command=self.PlayClick) PlayButton.grid(row=2, column=1, padx=4) StopButton = Button(self, text="Stop", command=self.StopClick) StopButton.grid(row=2, column=2) PauseButton = Button(self, text="Pause", command=self.PauseClick) PauseButton.grid(row=2, column=3, padx=4) NextButton = Button(self, text="Next", command=self.NextClick) NextButton.grid(row=2, column=4) UploadButton = Button(self, text="Upload", command=self.UploadClick) UploadButton.grid(row=2, column=5, padx=4) VolumeBar = Scale(self, from_=0, to=100, orient="horizontal", label="Volume", command=self.VolumeBar) VolumeBar.grid(row=2, column=6, padx=5) VolumeBar.set(50)
def initUI(self): self.parent.title("TRAM") self.style = Style() self.style.theme_use("default") self.pack(fill=BOTH, expand=1) #Model Text self.t = Text(self, borderwidth=3, relief="sunken") self.t.config(font=("consolas", 12), undo=True, wrap='word') self.t.grid(row=0, column=0, padx=2, pady=2, sticky=(N, W, E, S)) #Search Panel searchPanel = LabelFrame(self, text="Find your model") searchPanel.grid(row=0, column=1, padx=2, pady=2, sticky=N) Label(searchPanel, text="Model name").grid(row=0, column=0, padx=2, pady=2, sticky=W) searchQueryEntry = Entry(searchPanel, textvariable=self.searchQuery) searchQueryEntry.grid(row=0, column=1, padx=2, pady=2, sticky=W) Label(searchPanel, text="Transformation").grid(row=1, column=0, padx=2, pady=2, sticky=W) preferredTransformation = StringVar() box = Combobox(searchPanel, textvariable=preferredTransformation, state='readonly') box['values'] = ('Any...', 'Object Change', 'Object Extension', 'Specialization', 'Functionality Extension', 'System Extension', 'Soft Simplification', 'Hard Simplification') box.current(0) box.grid(row=1, column=1, padx=2, pady=2, sticky=W) findButton = Button(searchPanel, text="Find", command = self.__findModels) findButton.grid(row=2, column=1, padx=2, pady=2, sticky=E) #Listbox with recommendations recommendationPanel = LabelFrame(self, text="Recommended models (transformations)") recommendationPanel.grid(row=0, column=1, padx=2, pady=2, sticky=(W,E,S)) self.l = Listbox(recommendationPanel) self.l.pack(fill=BOTH, expand=1) #Button frame transformButtonPanel = Frame(recommendationPanel) transformButtonPanel.pack(fill=BOTH, expand=1) viewButton = Button(transformButtonPanel, text="View", command = self.__loadSelectedModel) viewButton.grid(row=1, column=0, padx=2, pady=2) transformButton = Button(transformButtonPanel, text="Transform", command = self.__transformModel) transformButton.grid(row=1, column=2, padx=2, pady=2)
def __init__(self,master,customers,payments,output_text): Frame.__init__(self,master) self.customers = customers self.payments = payments self.master = master self.output_text = output_text self.year_months = find_years_months(getcwd()) # use cwd, this should be set self.year = StringVar() self.month = StringVar() self.years = sorted(self.year_months.keys()) self.months = [] lf = LabelFrame(self, text="Generate Report") lf.grid(padx=5,pady=5,row=0,column=0,sticky='ew') Label(lf,text="Year: ").grid(row=0,column=0,sticky='e',padx=(10,0),pady=(10,2)) Label(lf,text="Month: ").grid(row=1,column=0,sticky='e',padx=(10,0),pady=2) self.year_cb = Combobox(lf,textvariable=self.year,width=12,values=self.years,state='readonly') self.month_cb = Combobox(lf,textvariable=self.month,width=12,values=self.months,state='readonly') self.year_cb.grid(row=0,column=1,sticky='w',padx=(0,10),pady=(10,2)) self.month_cb.grid(row=1,column=1,sticky='w',padx=(0,10),pady=2) btn = Button(lf,text="Save Report",command=self.report,width=30) btn.grid(row=2,column=0,columnspan=2,sticky='n',pady=(2,10),padx=10) #configure the grid to expand self.columnconfigure(0,weight=1) lf.rowconfigure(0,weight=1) lf.rowconfigure(1,weight=1) lf.columnconfigure(0,weight=1) lf.columnconfigure(1,weight=1) self.year_cb.bind('<<ComboboxSelected>>',self.year_selected) self.update() #update the values
class window(object): def __init__(self): self.version = 'V 1.0.0' self.root = tk.Tk() self.root.title('Olshop Scrapper ' + self.version) self.frame1 = tk.Frame(self.root) self.frame1.grid(row=0, column=0, sticky='snew') #Label Frame self.west = LabelFrame(self.frame1, text=' Source ') self.west.grid(column=0, row=0, sticky='wn', padx=5, pady=5) self.east = LabelFrame(self.frame1, text=' Excel ') self.east.grid(column=1, row=0, sticky='wn', padx=5, pady=5) #Making Source form self.src = [] for i in range(6): self.src.append(Io.source(self.west, i, 0)) #Output form self.outputName = Io.output(self.east, 1, 0) self.outputName.button.configure(state='disabled') self.excel = Io.excelInput(self.east, 3, 0) self.excel.sheet.bind('<<ComboboxSelected>>',self.check) self.work = calc(self.frame1, 1, 0, self.compare, self.load) self.work.proccess.configure(state='disabled') self.root.mainloop() def check(self, event): self.work.update_status('Getting cell information...') self.workingSheet = self.wb.get_sheet_by_name(self.excel.sheet.get()) self.excel.sku['values'] = [self.workingSheet.cell(row=1, column=i).value \ for i in range(1, self.workingSheet.max_column, 1)\ if self.workingSheet.cell(row=1, column=i).value != None] self.excel.sku.current(0) self.excel.stock['values'] = [self.workingSheet.cell(row=1, column=i).value \ for i in range(1, self.workingSheet.max_column, 1)\ if self.workingSheet.cell(row=1, column=i).value != None] self.excel.stock.current(0) self.work.proccess.configure(state='active') self.work.status.set('Done.') def load(self): self.work.update_status('Scrapping HTML...') self.scSoup = [] #Get HTML into soup for url in self.src: if url.getFile() == '': continue scFile = open(url.getFile()) self.scSoup.append(bs4.BeautifulSoup(scFile.read(), "html.parser")) #Opening Excel from excel input self.work.update_status('Getting excel sheet...') self.wb = openpyxl.load_workbook(self.excel.getFile(), data_only=True) self.excel.sheet['values'] = self.wb.get_sheet_names() self.excel.sheet.current(0) self.check(self) def compare(self): self.columnSku = 0 self.startColumnSku = self.workingSheet.max_column #start writing from last column + 1 self.columnStock = 0 self.startColumnStock = self.workingSheet.max_column+1 #start writing from last column + 1 self.work.update_status('Getting column...') for name in self.excel.sku['values']:#getting sku ceolumn number self.columnSku += 1 if name == self.excel.sku.get(): break for name in self.excel.stock['values']:#getting stok ceolumn number self.columnStock += 1 if name == self.excel.stock.get(): break self.work.update_status('Please wait, proccessing...') self.workingSheet.cell(row=1, column=self.startColumnSku).value = 'SKU' self.workingSheet.cell(row=1, column=self.startColumnStock).value = 'Stock' for i in range(2, self.workingSheet.max_row+1, 1):#Getting each of cell in sku column y = 1 for soup in self.scSoup:#check it with every soup available sku = soup.select('tr > td') stock = soup.select(' .stockOnSales') for index in range(3, len(sku), 11): if self.workingSheet.cell(row=i, column=self.columnSku).value == sku[index].getText(): self.workingSheet.cell(row=i, column=self.startColumnSku).value = 'TRUE' if (self.workingSheet.cell(row=i, column=self.columnStock).value) != (int(stock[y].getText())): self.workingSheet.cell(row=i, column=self.startColumnStock).value = int(stock[y].getText()) else: self.workingSheet.cell(row=i, column=self.startColumnStock).value = '-' break y += 1 break self.wb.save(self.excel.getFile()) self.outputName.path.set(self.excel.getFile()) self.outputName.button.configure(state='active') self.work.status.set('Complete.') '''
def __init__(self, master, customers, output_text, refresh): Frame.__init__(self, master) self.output_text = output_text self.refresh = refresh self.root = master self.customers = customers self.name = StringVar() #edit customer self.names = [] self.ncd = NewCustomerDialog(self.root, self.customers, self.refresh, edit=True) self.fname = StringVar() self.lname = StringVar() self.mname = StringVar() self.payment = StringVar() self.date = StringVar() self.iconname="New Customer" lf = LabelFrame(self, text="New Customer") lf.grid(padx=5,pady=5,row=0,column=0,sticky='ew') ### dialog content Label(lf, text="Name: ").grid(row=0,column=0,sticky='e',padx=(10,0),pady=(10,2)) Label(lf, text="Type: ").grid(row=1,sticky='e',pady=2,padx=(10,0)) Label(lf, text="Date: ").grid(row=1,column=2,sticky='e',ipady=2,padx=(10,0)) self.fname_en = Entry(lf, width=20, textvariable=self.fname) self.mname_en = Entry(lf, width=4, textvariable=self.mname) self.lname_en = Entry(lf, width=20, textvariable=self.lname) self.payment_cb = Combobox(lf, textvariable=self.payment, width=12, values=("Drop In", "Punch Card", "Monthly", "Inactive")) self.date_en = Entry(lf, width=15, textvariable=self.date) self.fname_en.grid(row=0,column=1,sticky='ew',pady=(10,2)) self.mname_en.grid(row=0,column=2,sticky='ew',pady=(10,2)) self.lname_en.grid(row=0,column=3,sticky='ew',padx=(0,10),pady=(10,2)) self.payment_cb.grid(row=1,column=1,sticky='ew') self.date_en.grid(row=1,column=3,columnspan=2,sticky='ew',padx=(0,10)) ### buttons Button(lf, text='Reset Values', width=15, command=self.reset_values).grid(row=3,column=0,columnspan=2,sticky='ew',padx=10,pady=(2,10)) Button(lf, text='Submit', width=15, command=self.add_customer).grid(row=3,column=3,sticky='ew',padx=(0,10),pady=(2,10)) for i in range(4): lf.columnconfigure(i, weight=1) # edit customer lf = LabelFrame(self, text="Edit Customer") lf.grid(padx=5,pady=5,row=1,column=0,sticky='ew') Label(lf, text="Name: ").grid(row=0,column=0,sticky='e',pady=10,padx=(10,0)) self.name_cb = Combobox(lf, textvariable=self.name, width=30, values=self.names) self.name_cb.grid(row=0,column=1,sticky='ew',pady=10) Button(lf, text="Edit",width=15,command=self.edit).grid(row=0,column=2,sticky='ew',padx=10,pady=10) for i in range(3): lf.columnconfigure(i,weight=1) self.columnconfigure(0,weight=1) self.fname_en.focus_set() #cursor goes here when frame is created self.update_names() self.reset_values() #zero out all values in new customer
def createSettings(self,frame,d): #name frame row = 0 col = 0 lblFrame = Frame(frame) lblFrame.grid(row=row,column=col,columnspan=5,sticky=W+E,pady=0,padx=5) frame.columnconfigure(col, weight=1) frame.rowconfigure(row, weight=0) row = 0 col = 0 Label(lblFrame, text="Script Name").grid(row=row,column=col,sticky=W) lblFrame.columnconfigure(col, weight=0) lblFrame.rowconfigure(row, weight=0) row = 0 col = 1 entryMain = Entry(lblFrame) entryMain.grid(row=row,column=col,sticky=W+E,columnspan=5) self.entryName = entryMain lblFrame.columnconfigure(col, weight=1) lblFrame.rowconfigure(row, weight=0) #python plugin script file row = 1 col = 0 mainGroup = LabelFrame(frame,text="Python Script File", padding="5 5 5 5") mainGroup.grid(row=row,column=col,columnspan=5,sticky=W+E+N,pady=5,padx=5) row = 0 col = 0 mainGroup.columnconfigure(col, weight=1) mainGroup.rowconfigure(row, weight=0) entryMain = Entry(mainGroup) entryMain.grid(row=row,column=col,columnspan=4,sticky=W+E) entryMain.bind("<Return>",self.entryFileEvent) self.entryFile = entryMain row = 0 col = 4 btnMainBrowse = Button(mainGroup,text="Browse") btnMainBrowse.grid(row=row,column=col,columnspan=1,sticky=W+E,padx=5,pady=2.5) self.btnBrowse = btnMainBrowse row = 1 col = 0 Label(mainGroup, text="Plugin Class").grid(row=row,column=col,sticky=E) self.cbPluginClass = comboBox([],mainGroup,col+1,row) mainGroup.columnconfigure(col, weight=0) row = 2 col = 0 Label(mainGroup, text="GUI Class").grid(row=row,column=col,sticky=E) self.cbGuiClass = comboBox([],mainGroup,col+1,row) col = 1 mainGroup.columnconfigure(1, weight=1) mainGroup.columnconfigure(2, weight=1) mainGroup.columnconfigure(3, weight=1) row=1 col=4 button = Button(mainGroup,text="Edit Script File") button.grid(row=row,column=col,sticky=W+E,padx=5,pady=2.5) self.btnEditScript = button row = 2 col = 4 button = Button(mainGroup,text="Open Contaning Folder") button.grid(row=row,column=col,sticky=W+E,padx=5,pady=2.5) self.btnOpenFolder = button
class ScriptManager: def __init__(self,sourceData): self.sourceData = sourceData self.jsonPath = OBS.GetAppDataPath()+"/pluginData/Python/scripts.json" self.scriptDict = loadJSON(self.jsonPath) self.currentDict = [] self.selectedScript = None print(getScriptNames(self.scriptDict)) self.initUI() def initUI(self): self.width = 700 self.height = 350 self.left = 0 self.right = 0 self.parent = Tk() self.parent.attributes("-topmost", 1) self.getHWNDS() r = self.winPos(self.obshwnd) self.centerOverOBS(r) self.parent.geometry("%sx%s+%s+%s" % (self.width,self.height,int(self.left),int(self.top))) self.parent.focus() self.parent.wm_title("Python Script Manager") #title label frame row = 0 col = 0 self.parent.columnconfigure(col,weight=1) self.parent.rowconfigure(row,weight=0) titleFrame = Frame(self.parent) titleFrame.grid(row=row,column=col,sticky=W+E,pady=5,padx=10) row = 0 col = 0 labelfont = ('bold', 15) Label(titleFrame, text="Python Script Manager",font=labelfont).grid(row=row,column=col,sticky=W) titleFrame.columnconfigure(row,weight=1) titleFrame.rowconfigure(col,weight=0) #sidebyside frame row = 1 col = 0 self.parent.rowconfigure(row,weight=1) self.parent.columnconfigure(col,weight=1) sidebyside = Frame(self.parent) sidebyside.grid(row=row,column=col,sticky=W+E+N+S,pady=0,padx=5) #listbox frame row = 0 col = 0 sidebyside.rowconfigure(row,weight=1) sidebyside.columnconfigure(col,weight=1) leftFrame = Frame(sidebyside) leftFrame.grid(row=row,column=col,sticky=W+E+N+S,pady=5,padx=5) #listbox row = 0 col = 0 self.listbox = Listbox(leftFrame) self.listbox.grid(row=row,column=col,columnspan=5,sticky=W+E+N+S) listboxReload(self.listbox,getScriptNames(self.scriptDict)) self.listbox.bind('<<ListboxSelect>>',self.listboxSelectionEevent) leftFrame.columnconfigure(col,weight=1) leftFrame.rowconfigure(row,weight=1) row=1 col=0 buttonFrame = Frame(leftFrame) buttonFrame.grid(row=row,column=col,sticky=W,pady=0,padx=0) row=0 col=0 #btnAdd button = Button(buttonFrame,text="Add") button.grid(row=row,column=col,sticky=E) self.btnAdd = button self.btnAdd.config(command=self.btnAddEvent) #btnRemove button = Button(buttonFrame,text="Remove") button.grid(row=row,column=col+1,sticky=W) self.btnRemove = button self.btnRemove.config(command=self.btnRemoveEvent) #settings frame row = 0 col = 1 sidebyside.rowconfigure(row,weight=1) sidebyside.columnconfigure(col,weight=10) rightFrame = Frame(sidebyside) rightFrame.grid(row=row,column=col,sticky=W+E+N+S,pady=5,padx=5) row = 0 col = 0 rightFrame.columnconfigure(col,weight=1) rightFrame.rowconfigure(row,weight=1) self.frmSettings = LabelFrame(rightFrame,text="Settings", padding="5 5 5 5") self.frmSettings.grid(row=row,column=col,sticky=W+E+N+S,pady=0,padx=0) self.frmSettings.columnconfigure(col,weight=1) self.frmSettings.rowconfigure(row,weight=1) d = createScriptDict() createSettings(self,self.frmSettings,d) row=1 col=0 buttonFrame = Frame(rightFrame) buttonFrame.grid(row=row,column=col,sticky=W,pady=0,padx=0) row = 0 col = 0 button = Button(buttonFrame,text="Save") button.grid(row=row,column=col) self.btnSave = button self.btnSave.config(command=self.btnSaveEvent) #ok cancel buttons row = 2 col = 0 self.parent.columnconfigure(col,weight=1) self.parent.rowconfigure(row,weight=0) bottomframe = Frame(self.parent) bottomframe.grid(row=row,column=col,sticky=W+E,pady=5,padx=10) row = 0 col = 0 bottomframe.columnconfigure(col,weight=1) bottomframe.rowconfigure(row,weight=0) logFrame = Frame(bottomframe) logFrame.grid(row=row,column=col,sticky=W,pady=0,padx=0) logFrame.rowconfigure(row,weight=0) row=0 col=0 #btnOpenLogs button = Button(logFrame,text="Open Logs",command=self.btnOpenLogsEvent) button.grid(row=row,column=col,sticky=E,padx=0,pady=0) self.btnOpenLogs = button row = 0 col = 1 bottomframe.columnconfigure(col,weight=1) bottomframe.rowconfigure(row,weight=0) ccFrame = Frame(bottomframe) ccFrame.grid(row=row,column=col,sticky=E,pady=0,padx=5) ccFrame.rowconfigure(row,weight=0) row=0 col=0 button = Button(ccFrame,text="Create",command=self.btnCreateEvent) button.grid(row=row,column=col,sticky=E,padx=10,pady=0) self.btnCreate = button button = Button(ccFrame,text="Cancel",command=self.btnCancelEvent) button.grid(row=row,column=col+1,sticky=W,padx=0,pady=0) self.btnCancel = button self.clearSettings() self.parent.after(1,self.lockWindow) self.parent.mainloop() self.unlockWindow() def btnAddEvent(self): self.clearSettings() def btnSaveEvent(self): name = self.entryName.get() print (name) self.saveSettings(name) def getHWNDS(self): self.obshwnd = OBS.GetMainWindow() self.hwndTkinter = self.parent.winfo_id() def centerWindow(self): self.winPos(self.parent.winfo_id()) def winPos(self,hwnd): f = ctypes.windll.user32.GetWindowRect rect = ctypes.wintypes.RECT() DWMWA_EXTENDED_FRAME_BOUNDS = 9 f(ctypes.wintypes.HWND(hwnd), ctypes.byref(rect) ) return rect def centerOverOBS(self,r): obsWidth = r.right-r.left obsHeight = r.bottom-r.top self.left = r.left + (obsWidth/2) - (self.width/2) self.top = r.top + (obsHeight/2) - (self.height/2) def lockWindow(self): #ctypes.windll.user32.SetWindowLongA(self.hwndTkinter,-8,self.obshwnd) #ctypes.windll.user32.SetParent(self.hwndTkinter, self.obshwnd) ctypes.windll.user32.SetActiveWindow(self.hwndTkinter) ctypes.windll.user32.EnableWindow(self.obshwnd,False) def unlockWindow(self): ctypes.windll.user32.EnableWindow(self.obshwnd,True) ctypes.windll.user32.SetActiveWindow(self.obshwnd) def listboxSelectionEevent(self,evt): self.clearSettings() print("Select") w = evt.widget index = int(w.curselection()[0]) value = w.get(index) d = self.scriptDict[value] self.loadSettings(d,value) def loadSettings(self,d,name): self.clearSettings() self.entryName.insert(0,name) self.entryFile.insert(0,d['file']) file = d['file'] print ("osetuh"+ file) if file is not None: classes = getClasses(d['file']) print (classes) if not classes: self.cbPluginClass['values']= [''] self.cbGuiClass['values']= [''] self.cbPluginClass.current(0) self.cbGuiClass.current(0) else: print (classes.index(d['mainClass'])) self.cbPluginClass['values']= classes self.cbPluginClass.current(classes.index(d['mainClass'])) self.cbGuiClass['values']= classes self.cbGuiClass.current(classes.index(d['guiClass'])) else: file= OBS.GetAppDataPath()+"/pluginData/Python" print ("LoadSettings" + file) self.btnBrowse.config(command=lambda arg=os.path.dirname(file):self.btnBrowseEvent(arg)) self.btnOpenFolder.config(command=lambda arg=os.path.dirname(file): openContaningFolder(arg)) self.btnEditScript.config(command=lambda arg=file: openFileWithDefaultOSApp(arg)) def clearSettings(self): self.entryName.delete(0,END) self.entryFile.delete(0,END) self.btnBrowse.config(command=None) self.cbPluginClass['values'] = [''] self.cbGuiClass['values'] = [''] self.cbPluginClass.current(0) self.cbGuiClass.current(0) self.btnEditScript.config(command=None) self.btnOpenFolder.config(command=None) self.btnBrowse.config(command=lambda file= OBS.GetAppDataPath()+"/pluginData/Python" :self.btnBrowseEvent(file)) def saveSettings(self,name): #check if dict exists d = self.scriptDict.get(name) if d is None: d= createScriptDict() d['guiClass']= self.cbGuiClass.get() d['file'] = self.entryFile.get() d['mainClass']= self.cbPluginClass.get() if validateSettings(d['file'],name,d['guiClass'],d['mainClass']) == False: self.listbox.focus_set() return True #add to dict self.scriptDict[name] = d print (d) #reload listbox listboxReload(self.listbox,getScriptNames(self.scriptDict)) #save to json saveJSON(self.scriptDict,self.jsonPath) def updateClasses(self,file): classes = getClasses(file) if not classes: self.cbPluginClass['values']= [''] self.cbGuiClass['values']= [''] self.cbPluginClass.current(0) self.cbGuiClass.current(0) else: self.cbPluginClass['values']= classes self.cbPluginClass.current(0) self.cbGuiClass['values']= classes self.cbGuiClass.current(0) def btnRemoveEvent(self): #remove the selected item from list box. w = self.listbox try: index = int(w.curselection()[0]) value = w.get(index) del self.scriptDict[value] self.clearSettings() listboxReload(self.listbox,getScriptNames(self.scriptDict)) except: pass def entryFileEvent(self,event): path = self.entryFile.get() self.updateComboBoxes(path) def btnBrowseEvent(self,file): print ("btnbrowsefile " + file) if file is None: #path = askopenfilename(parent=self.parent,initialdir=("C:\\")) path = askopenfilename(parent=self.parent,initialdir=(OBS.GetAppDataPath()+"/pluginData/Python")) else: path = askopenfilename(parent=self.parent,initialdir=(file)) if path == '': #user cancled do nothing. return self.updateComboBoxes(path) def updateComboBoxes(self,path): #need to update comboboxes, edit and open contatining folder. self.updateClasses(path) self.entryFile.delete(0,END) self.entryFile.insert(0,path) self.btnOpenFolder.config(command=lambda arg=os.path.dirname(path): openContaningFolder(arg)) self.btnEditScript.config(command=lambda arg=path: openFileWithDefaultOSApp(arg)) def btnCancelEvent(self): self.parent.destroy() def btnCreateEvent(self): file = self.entryFile.get() pluginClass = self.cbPluginClass.get() guiClass = self.cbGuiClass.get() name = " " if validateSettings(file,name,guiClass,pluginClass) == True: self.sourceData.SetString(u"PythonFile",u(file)) self.sourceData.SetString(u"PythonPluginClass",u(pluginClass)) self.sourceData.SetString(u"PythonGUIClass",u(guiClass)) self.sourceData.SetInt(u"Debug",0) self.btnCancelEvent() def btnOpenLogsEvent(self): stdErr = OBS.GetAppDataPath()+"/pluginData/Python/stdErr.txt" stdOut = OBS.GetAppDataPath()+"/pluginData/Python/stdOut.txt" openFileWithDefaultOSApp(stdErr) openFileWithDefaultOSApp(stdOut)
def CurrentSongInfo(self): def OnPlayListClick(event): newsongtitle = PlayList.get(PlayList.curselection()) for i in range(0, int(length)): try: if (songlist[i]['title'] == newsongtitle): newsongindex = i break except KeyError: if (songlist[i]['artist'] == newsongtitle): newsongindex = i break rpi.playid(songlist[newsongindex]['id']) rpi.update() def ftime(time): time = int(time) return str(int(time / 60)) + ':' + '%.2d' % int(time % 60) self.currentsong = StringVar(self) rpi.update() cs = rpi.currentsong() ss = rpi.status() try: artist = cs['artist'] except KeyError: artist = '**' try: album = cs['album'] except KeyError: album = '**' try: title = cs['title'] except KeyError: title = '**' #track = cs['track'] try: num = str(int(ss['song']) + 1) except KeyError: num = '' length = ss['playlistlength'] try: cur_time = ftime(ss['time'].split(':')[0]) except KeyError: cur_time = "0:00" # total time try: total_time = ftime(cs['time']) except KeyError: total_time = "0:00" self.currentsong.set(artist + ' - ' + title + '\n' + album + '\n' + num + '/' + length + '\n\n' + cur_time + '/' + total_time) lblframe = LabelFrame(self, text="Now Playing", width=600, height=100) lblframe.grid(row=1, column=0, columnspan=7, pady=40) #lblframe.grid(row=0, column=1) lblframe.grid_propagate(0) lbl = Label(lblframe, textvariable=self.currentsong, font=('Tahoma', (9))) lbl.grid(row=1, column=0) lbl.grid_propagate(0) PlayList = Listbox(self, width=80) PlayList.grid(row=3, column=1, columnspan=5, padx=20) songlist = rpi.playlistid() for i in range(0, int(length)): try: PlayList.insert(i, songlist[i]['title']) except KeyError: PlayList.insert(i, songlist[i]['artist']) if (len(cs) != 0): if (cs['id'] == songlist[i]['id']): PlayList.itemconfig(i, background='blue', foreground='white') PlayList.bind('<<ListboxSelect>>', OnPlayListClick)