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>