def __init__(self,root): # gui self.root = root self.current_song = Song('') self.frame = tk.Frame(root) self.control_frame = tk.Frame(self.frame) self.progress_frame = tk.Frame(self.frame) self.progress_var = tk.StringVar() self.progress_var.set("--:--") self.progress_time = tk.Label(self.progress_frame,textvariable=self.progress_var) self.progress_time.pack() self.control_frame.pack(side=tk.LEFT,anchor=tk.W,expand=False) self.progress_frame.pack(anchor=tk.E,expand=False) self.frame.pack(fill=tk.X) # osc self.osc_server = ServeR(self,port=7008) self.osc_client = ControlR(self.current_song,port=7007) self.osc_to_send = None self.setup_buttons() self.setup_menu() self.progress_bar = ProgressBar(self,self.current_song) self.progress_bar.map_osc('/pyaud/pos/float') self.osc_start()
class MainGui: def __init__(self,root): # gui self.root = root self.current_song = Song('') self.frame = tk.Frame(root) self.control_frame = tk.Frame(self.frame) self.progress_frame = tk.Frame(self.frame) self.progress_var = tk.StringVar() self.progress_var.set("--:--") self.progress_time = tk.Label(self.progress_frame,textvariable=self.progress_var) self.progress_time.pack() self.control_frame.pack(side=tk.LEFT,anchor=tk.W,expand=False) self.progress_frame.pack(anchor=tk.E,expand=False) self.frame.pack(fill=tk.X) # osc self.osc_server = ServeR(self,port=7008) self.osc_client = ControlR(self.current_song,port=7007) self.osc_to_send = None self.setup_buttons() self.setup_menu() self.progress_bar = ProgressBar(self,self.current_song) self.progress_bar.map_osc('/pyaud/pos/float') self.osc_start() def osc_start(self): # osc mappings (inputs) def sec_to_str(_,osc_msg): try: time_sec = float(osc_msg) self.progress_var.set("%d:%02d" % (time_sec // 60.0 , time_sec % 60.0)) except: self.progress_var.set("--:--") def float_to_prog(_,osc_msg): try: float_perc = float(osc_msg) self.progress_bar.move_bar(float_perc*self.progress_bar.width) except: self.progress_bar.move_bar(0) self.osc_server.map("/pyaud/pos/sec",sec_to_str) self.osc_server.map("/pyaud/pos/float",float_to_prog) self.osc_server.map("/pyaud/status",self.buttons_enabler) self.osc_server.start() def setup_buttons(self): # osc msgs play = self.osc_client.build_msg('/pyaud/pps',1) pause = self.osc_client.build_msg('/pyaud/pps',0) stop = self.osc_client.build_msg('/pyaud/pps',-1) def gen_osc_send(msg): def sender(): self.osc_client.send(msg) return sender self.playbut = tk.Button(self.control_frame,text=">",padx=8,pady=4, command = gen_osc_send(play),state='disabled') self.pausebut = tk.Button(self.control_frame,text="||",padx=8,pady=4, command = gen_osc_send(pause),state='disabled') def stopfun(): osc_send = gen_osc_send(stop) osc_send() self.progress_var.set("--:--") self.stopbut = tk.Button(self.control_frame,text="[]",padx=8,pady=4, command = stopfun) self.playbut.pack(side=tk.LEFT) self.pausebut.pack(side=tk.LEFT) self.stopbut.pack(side=tk.LEFT) def buttons_enabler(self,_,osc_msg): if osc_msg == 'loaded' or osc_msg == 'paused': self.playbut.config(state='normal') self.pausebut.config(state='disabled') elif osc_msg == 'playing': self.playbut.config(state='disabled') self.pausebut.config(state='normal') elif osc_msg == 'stopped': self.playbut.config(state='disabled') self.pausebut.config(state='disabled') def setup_menu(self): def change_connect(): set_connect = ConnectionSelect(self) self.menubar = tk.Menu(self.root) self.filemenu = tk.Menu(self.menubar,tearoff=0) self.filemenu.add_command(label="open",command=self.open_file) self.filemenu.add_command(label="set connections",command=change_connect) self.filemenu.add_command(label="quit",command=self.osc_server.stop) self.menubar.add_cascade(label='file',menu=self.filemenu) self.root.config(menu=self.menubar) def open_file(self): filename = tkfd.askopenfilename(parent=root,title='Choose your WAV file') splitname = os.path.splitext(filename) if splitname[1] == '.wav' or splitname[1] == '.WAV': self.osc_client.build_n_send('/pyaud/open',filename) self.current_song.fname = filename else: tkmb.showerror("Bad file","please choose a proper .wav file")