# -*- coding: ISO-8859-1 -*-


import wx,time
from gauge import MyGaugeFrame
from pydispatch import dispatcher  #new version 2.0
#from dispatch import dispatcher  ### old version 1.02


class MyFrame(wx.Frame):
    def __init__(self, *args, **kwds):

        kwds["style"] = wx.DEFAULT_FRAME_STYLE
        wx.Frame.__init__(self, *args, **kwds)
        self.panel = wx.Panel(self, -1)
        b = wx.Button(self.panel, -1, "Create and Show a Gauge Frame", (50,50))
        self.Bind(wx.EVT_BUTTON, self.OnButton, b)
        self.Bind(wx.EVT_ACTIVATE,self.OnActivate)
        

    def OnActivate(self,evt):
        self.Layout()
        evt.Skip()

    def OnButton(self,evt):
        gauge=MyGaugeFrame(None, -1, "")
        gauge.Show()
        t=time.localtime()
        gauge.start.SetLabel('Start: '+ '%0.2d:%0.2d:%0.2d' % (t.tm_hour,t.tm_min,t.tm_sec))
        wx.MilliSleep(300)
        dispatcher.send(signal='create_task',name='task1')
        dispatcher.send(signal='set_gauge',range=5)
        dispatcher.send(signal='upd_field',name='task1',pos=1,data='5')
        dispatcher.send(signal='upd_field',name='task1',pos=2,data='5')
        dispatcher.send(signal='upd_field',name='task1',pos=3,data='aktiv')

        for i in range(1,6):
            dispatcher.send(signal='upd_gauge',step=1)
            dispatcher.send(signal='upd_field',name='task1',pos=2,data=str(5-i))
            wx.MilliSleep(800)
            gauge.Update()
        dispatcher.send(signal='upd_field',name='task1',pos=3,data='ok')



        dispatcher.send(signal='create_task',name='task2')
        dispatcher.send(signal='set_gauge',range=12)
        dispatcher.send(signal='upd_field',name='task2',pos=1,data='12')
        dispatcher.send(signal='upd_field',name='task2',pos=2,data='12')
        dispatcher.send(signal='upd_field',name='task2',pos=3,data='aktiv')

        for i in range(1,13):
            dispatcher.send(signal='upd_gauge',step=1)
            dispatcher.send(signal='upd_field',name='task2',pos=2,data=str(12-i))
            wx.MilliSleep(300)
        dispatcher.send(signal='upd_field',name='task2',pos=3,data='ok')
        te=time.localtime()
        gauge.end.SetLabel('End: '+ '%0.2d:%0.2d:%0.2d' % (te.tm_hour,te.tm_min,te.tm_sec))

if __name__ == "__main__":
    app = wx.PySimpleApp(0)
    wx.InitAllImageHandlers()
    frame_1 = MyFrame(None, -1, "")
    app.SetTopWindow(frame_1)
    frame_1.Show()
    app.MainLoop()