require 'tk'
load 'tempo.rb'
class App
def initialize()
@misura=Tempo::Tempistica.new()
@radice=TkRoot.new()
inizializzaComponenti()
@radice.mainloop()
end
def inizializzaComponenti()
mioFont='consolas 12'
#labCrono
@labCrono=TkLabel.new(@radice)
@labCrono['font']='consolas 18'
@labCrono['bg']='#220010'
@labCrono['fg']='#10ca10'
@labCrono['text']=@misura.comunica()
@labCrono['relief']='groove'
@labCrono.place('x' => 60, 'y' => 10)
#btnAvvio
@btnAvvio=TkButton.new(@radice)
@btnAvvio['font']=mioFont
@btnAvvio['width']=7
@btnAvvio['height']=1
@btnAvvio['text']='Avvio'
@btnAvvio['command']=proc {self.avviaCrono}
@btnAvvio.place('x' => 10, 'y' => 55)
#btnArresta
@btnArresta=TkButton.new(@radice)
@btnArresta['font']=mioFont
@btnArresta['width']=9
@btnArresta['height']=1
@btnArresta['text']='Arresta'
@btnArresta['command']=proc {self.arrestaCrono}
@btnArresta.place('x' => 160, 'y' => 55)
#btnParziali
@btnParziali=TkButton.new(@radice)
@btnParziali['font']=mioFont
@btnParziali['width']=10
@btnParziali['height']=1
@btnParziali['text']='Parziale'
@btnParziali['command']=proc {self.mostraTempoParziale}
@btnParziali.place('x' => 10, 'y' => 100)
#btnRiporti
@btnRiporti=TkButton.new(@radice)
@btnRiporti['font']=mioFont
@btnRiporti['width']=12
@btnRiporti['height']=1
@btnRiporti['text']='Ripartenza'
@btnRiporti['command']=proc {self.riAvviaCrono}
@btnRiporti.place('x' => 130, 'y' => 100)
#lab1
@lab1=TkLabel.new(@radice)
@lab1['font']=mioFont
@lab1['justify']='left'
@lab1['text']='Tempi parziali'
@lab1.place('x' => 10, 'y' => 140)
#labParziali
@labParziali=TkLabel.new(@radice)
@labParziali['font']=mioFont
@labParziali['text']=''
@labParziali['justify']='left'
@labParziali.place('x' => 10, 'y' => 160)
@radice['title']='Cronometro'
@radice['width']=270
@radice['height']=390
end
def avviaCrono()
if @misura.stato()
@labParziali['text']="%s%c%s ripartenza" % [@labParziali['text'], 10.chr, @misura.comunica()]
end
@misura.avvia(false)
self.mostraTempo()
end
def riAvviaCrono()
if not @misura.stato()
@misura.avvia(true)
self.mostraTempo()
end
end
def mostraTempoParziale()
if @misura.stato()
@labParziali['text']="%s%c%s Parziale" % [@labParziali['text'], 10.chr, @misura.comunica()]
end
end
def arrestaCrono()
if @misura.stato()
@labParziali['text']='%s%c%s arresto' % [@labParziali['text'], 10.chr, @misura.comunica()]
end
@misura.arresta()
end
def mostraTempo()
if @misura.stato
@labCrono['text']=@misura.comunica()
sleep(0.1)
Thread.new{mostraTempo}
end
end
end
puts "Cronometro con funzioni di avvio, arresto, tempi parziali e ripartenza"
App.new()