# coding: utf-8
import requests
import tkinter as tk


class VecteurBaseFrenet(tk.Frame):
	def __init__(self, master=None):
		super().__init__(master)
		self.echelle = 23.0	
		self.vecteur = None	
		self.master = master
		self.create_widgets()

	def create_widgets(self):
		self.labelA = tk.Label(self.master, text = "Url:")
		self.labelA.place(x=10, y=12)
		
		self.urlStr   =  tk.StringVar()
		self.urlStr.set('http://')
		self.urlEntry = tk.Entry(self.master, width=45, textvariable=self.urlStr,bg="#FF0")
		self.urlEntry.place(x=40,y=12)
		
		self.connectionButton = tk.Button(self.master, text = 'Connection',
						 command=self.connection)
		self.connectionButton.place(x=420,y=10)                         
		
		self.quitButton = tk.Button(self.master, text = 'Quitter',
						 command=self.quitter)
		self.quitButton.place(x=540,y=10)                         
		
		self.dessin = tk.Canvas(self.master, width=500, height=500, bg='ivory')
		self.dessin.place(x=60, y=80)
		
		self.dessin.create_line(0,250,500,250, fill='blue')
		self.dessin.create_line(250,0,250,500, fill='blue')		
		self.dessin.create_text(252,2, anchor='nw', text='Ay\n (m/s/s)', fill='blue')
		self.dessin.create_text(482,272, anchor='ne', text='Ax\n (m/s/s)', fill='blue')
		self.dessin.create_text(250+2,250+2, anchor='nw', text='0', fill='blue')
		self.dessin.create_oval(250-2,250-2, 250+2, 250+2,fill='blue',outline='')
		for ax in [-10,-5, 5,10]:
			a = float(ax * self.echelle + 250)
			self.dessin.create_oval(a-2,250-2, a+2, 250+2,fill='blue',outline='')
			self.dessin.create_text(a+3,253, anchor='n', text=str(ax), fill='blue')
		for ay in [-10,-5, 5,10]:
			a = float(ay * self.echelle + 250)
			self.dessin.create_oval(250-2,a-2, 250+2, a+2,fill='blue',outline='')
			self.dessin.create_text(240,a, anchor='e', text=str(ay), fill='blue')
			
	def dessinerVecteur(self):
		self.r = requests.get(self.url+'/get?accX&accY')	
		self.axStr = self.r.json()['buffer']['accX']['buffer'][0]	
		self.ayStr = self.r.json()['buffer']['accY']['buffer'][0]	
		if self.axStr and self.ayStr:
			self.ax = float(self.axStr) * self.echelle
			self.ay = float(self.ayStr) * self.echelle
			if self.vecteur:
				self.dessin.delete(self.vecteur)
			self.vecteur = self.dessin.create_line(250, 250, 250+self.ax, 250-self.ay, width=3,arrow=tk.LAST)		
			
		self.master.after(25, self.dessinerVecteur)

	def connection(self):
		self.url = self.urlStr.get() 
		self.r = requests.get(self.url+'/control?cmd=clear')				
		self.r = requests.get(self.url+'/control?cmd=start')				
		self.dessinerVecteur()
		
	def quitter(self):		
		self.url = self.urlStr.get()
		try:
			self.r = requests.get(self.url+'/control?cmd=clear')	
		except:
			pass	
		self.master.destroy()
						

root = tk.Tk()
app = VecteurBaseFrenet(master=root)
app.master.title("Vecteur accélération")
app.master.geometry("640x640")
app.mainloop()
