andrej@2282: <?xml version='1.0' encoding='utf-8'?>
andrej@2282: <PyFile xmlns:xhtml="http://www.w3.org/1999/xhtml">
andrej@2282:   <variables>
andrej@2282:     <variable name="Power_ON" type="BOOL"/>
andrej@2282:     <variable name="Power_OFF" type="BOOL"/>
andrej@2282:     <variable name="DrawTest" type="BOOL"/>
andrej@2282:     <variable name="DrawLogo" type="BOOL"/>
andrej@2282:     <variable name="DrawEscher" type="BOOL"/>
andrej@2282:     <variable name="Detect_Circle" type="BOOL"/>
andrej@2282:     <variable name="XaxisPos" type="INT"/>
andrej@2282:     <variable name="YaxisPos" type="INT"/>
andrej@2282:     <variable name="ZaxisPos" type="INT"/>
andrej@2282:     <variable name="TaxisPos" type="INT"/>
andrej@2282:     <variable name="XaxisMinus" type="BOOL"/>
andrej@2282:     <variable name="YaxisMinus" type="BOOL"/>
andrej@2282:     <variable name="ZaxisMinus" type="BOOL"/>
andrej@2282:     <variable name="TaxisMinus" type="BOOL"/>
andrej@2282:     <variable name="XaxisPlus" type="BOOL"/>
andrej@2282:     <variable name="YaxisPlus" type="BOOL"/>
andrej@2282:     <variable name="ZaxisPlus" type="BOOL"/>
andrej@2282:     <variable name="TaxisPlus" type="BOOL"/>
andrej@2282:     <variable name="DrawTestBtn" type="BOOL"/>
andrej@2282:     <variable name="DrawTestBtn2" type="BOOL"/>
andrej@2282:   </variables>
andrej@2282:   <globals>
andrej@2282:     <xhtml:p><![CDATA[
andrej@2282: import ctypes
andrej@2282: import wx, sys
andrej@2282: 
andrej@2282: AxisList = ["X","Y","Z","T"]
andrej@2282: 
andrej@2282: PwrButtons = ['Power_ON',
andrej@2282:               'Power_OFF']
andrej@2282: 
andrej@2282: ActionButtons = ['Detect_Circle',
andrej@2282:                  'DrawTest',
andrej@2282:                  'DrawLogo',
andrej@2282:                  'DrawEscher']
andrej@2282: 
andrej@2282: class ThreeDee(wx.StaticText):
andrej@2282:     def __init__(self, *args, **kwargs):
andrej@2282:         self.initialized = False
andrej@2282:         kwargs["style"] = wx.ALIGN_CENTRE_HORIZONTAL
andrej@2282:         super(ThreeDee, self).__init__(*args, **kwargs)
andrej@2282: 
andrej@2282:         self.SetFont(wx.Font(24, wx.SWISS, wx.NORMAL, wx.BOLD))
andrej@2282:         
andrej@2282:         self.positions = [0.]*4
andrej@2282: 
andrej@2282:         self.Message = None
andrej@2282:         self.NegLimits = None
andrej@2282:         self.Disk = None
andrej@2282: 
andrej@2282: 
andrej@2282:     def UpdatePositions(self, positions):
andrej@2282:         # get globals from PLC
andrej@2282:         self.positions = positions
andrej@2282:         self.SetLabel(
andrej@2282:             ((self.Message  +'\n\n') if self.Message else '' )+
andrej@2282:             " ".join(["%s %+.2f"%(axis,self.positions[i])
andrej@2282:                           for i,axis in enumerate(AxisList)]))
andrej@2282: 
andrej@2282: def MakeButtonFunc(window, sizer, btname):
andrej@2282:     def ButtonDown(event):
andrej@2282:         setattr(PLCGlobals,btname,1)
andrej@2282:         event.Skip()
andrej@2282:     def ButtonUp(event):
andrej@2282:         setattr(PLCGlobals,btname,0)
andrej@2282:         event.Skip()
andrej@2282:     obj = wx.BitmapButton(window, -1, wx.Bitmap('%s.png'%btname))
andrej@2282:     sizer.Add(obj, 2, wx.EXPAND, 0)
andrej@2282:     obj.Bind(wx.EVT_LEFT_DOWN, ButtonDown)
andrej@2282:     obj.Bind(wx.EVT_LEFT_UP, ButtonUp)
andrej@2282:     return obj
andrej@2282: 
andrej@2282: def UpdPos(self):
andrej@2282:     positions = [getattr(PLCGlobals,axname+"axisPos") for axname in AxisList]
andrej@2282: 
andrej@2282:     self.window_1.UpdatePositions(positions)
andrej@2282: 
andrej@2282: Class_wxglade_hmi.UpdPos = UpdPos
andrej@2282: 
andrej@2282: 
andrej@2282: #def UpdatePositions(self, event):
andrej@2282: #
andrej@2282: #    positions = [getattr(PLCGlobals,axname+"axisPos") for axname in AxisList]
andrej@2282: #
andrej@2282: #    self.window_1.UpdatePositions(positions)
andrej@2282: #
andrej@2282: #    event.Skip()
andrej@2282: 
andrej@2282: #Class_wxglade_hmi.UpdatePositions = UpdatePositions
andrej@2282: 
andrej@2284: def CleanSizer(sizer):
andrej@2284:     sizer_len = sizer.GetItemCount()
andrej@2284:     if sizer_len > 0:
andrej@2284:         for i in reversed(range(sizer_len)):
andrej@2284:             sizer.Remove(i)
andrej@2284: 
andrej@2282: initorig = Class_wxglade_hmi.__init__
andrej@2282: def Init(self,*args,**kargs):
andrej@2282:     initorig(self,*args,**kargs)
andrej@2282:     sizer = self.GetSizer().GetItem(1).GetSizer().GetItem(0).GetSizer()
andrej@2284:     CleanSizer(sizer)
andrej@2282:     self.main_buttons = map(
andrej@2282:         lambda btname: MakeButtonFunc(self, sizer, btname), PwrButtons)
andrej@2282:     sizer = self.GetSizer().GetItem(1).GetSizer().GetItem(1).GetSizer()
andrej@2284:     CleanSizer(sizer)
andrej@2282:     self.main_buttons = map(
andrej@2282:         lambda btname: MakeButtonFunc(self, sizer, btname), ActionButtons)
andrej@2282:     self.axis_buttons = map(
andrej@2282:         lambda axis:( MakeButtonFunc(self, sizer, axis+"axisMinus"), 
andrej@2282:                         MakeButtonFunc(self, sizer, axis+"axisPlus")),
andrej@2282:         AxisList)
andrej@2282: 
andrej@2282:     
andrej@2282:     # self.timer = wx.Timer(self, -1)
andrej@2282:     # self.Bind(wx.EVT_TIMER, self.UpdatePositions, self.timer)
andrej@2282:     # self.ShowFullScreen(True,wx.FULLSCREEN_ALL)
andrej@2282:     # wx.CallAfter(self.timer.Start,200)
andrej@2282:     
andrej@2282: Class_wxglade_hmi.__init__ = Init
andrej@2282: 
andrej@2282: def SetPLCTestBtnGlobalVar(self, evt):
andrej@2282:     setattr(PLCGlobals, "DrawTestBtn", evt.GetEventObject().GetValue())
andrej@2282: 
andrej@2282: def SetPLCTestBtn2GlobalVar(self, evt):
andrej@2282:     setattr(PLCGlobals, "DrawTestBtn2", evt.GetEventObject().GetValue())
andrej@2282: 
andrej@2282: ]]></xhtml:p>
andrej@2282:   </globals>
andrej@2282:   <init>
andrej@2282:     <xhtml:p><![CDATA[
andrej@2282: ]]></xhtml:p>
andrej@2282:   </init>
andrej@2282:   <cleanup>
andrej@2282:     <xhtml:p><![CDATA[
andrej@2282: ]]></xhtml:p>
andrej@2282:   </cleanup>
andrej@2282:   <start>
andrej@2282:     <xhtml:p><![CDATA[
andrej@2282: ]]></xhtml:p>
andrej@2282:   </start>
andrej@2282:   <stop>
andrej@2282:     <xhtml:p><![CDATA[
andrej@2282: ]]></xhtml:p>
andrej@2282:   </stop>
andrej@2282: </PyFile>