tests/wxHMI/HMI@wxglade_hmi/pyfile.xml
changeset 1461 954d1f42d42d
child 1462 9ee3a2dea7e8
equal deleted inserted replaced
1460:b7e610672eed 1461:954d1f42d42d
       
     1 <?xml version='1.0' encoding='utf-8'?>
       
     2 <PyFile xmlns:xhtml="http://www.w3.org/1999/xhtml">
       
     3   <variables>
       
     4     <variable name="Power_ON" type="BOOL"/>
       
     5     <variable name="Power_OFF" type="BOOL"/>
       
     6     <variable name="DrawTest" type="BOOL"/>
       
     7     <variable name="DrawLogo" type="BOOL"/>
       
     8     <variable name="DrawEscher" type="BOOL"/>
       
     9     <variable name="Detect_Circle" type="BOOL"/>
       
    10     <variable name="XaxisPos" type="INT"/>
       
    11     <variable name="YaxisPos" type="INT"/>
       
    12     <variable name="ZaxisPos" type="INT"/>
       
    13     <variable name="TaxisPos" type="INT"/>
       
    14     <variable name="XaxisMinus" type="BOOL"/>
       
    15     <variable name="YaxisMinus" type="BOOL"/>
       
    16     <variable name="ZaxisMinus" type="BOOL"/>
       
    17     <variable name="TaxisMinus" type="BOOL"/>
       
    18     <variable name="XaxisPlus" type="BOOL"/>
       
    19     <variable name="YaxisPlus" type="BOOL"/>
       
    20     <variable name="ZaxisPlus" type="BOOL"/>
       
    21     <variable name="TaxisPlus" type="BOOL"/>
       
    22   </variables>
       
    23   <globals>
       
    24     <xhtml:p><![CDATA[
       
    25 import ctypes
       
    26 import Image
       
    27 import wx, sys
       
    28 
       
    29 AxisList = ["X","Y","Z","T"]
       
    30 
       
    31 PwrButtons = ['Power_ON',
       
    32               'Power_OFF']
       
    33 
       
    34 ActionButtons = ['Detect_Circle',
       
    35                  'DrawTest',
       
    36                  'DrawLogo',
       
    37                  'DrawEscher']
       
    38 
       
    39 class ThreeDee(wx.StaticText):
       
    40     def __init__(self, *args, **kwargs):
       
    41         self.initialized = False
       
    42         kwargs["style"] = wx.ALIGN_CENTRE_HORIZONTAL
       
    43         super(ThreeDee, self).__init__(*args, **kwargs)
       
    44 
       
    45         self.SetFont(wx.Font(24, wx.SWISS, wx.NORMAL, wx.BOLD))
       
    46         
       
    47         self.positions = [0.]*4
       
    48 
       
    49         self.Message = None
       
    50         self.NegLimits = None
       
    51         self.Disk = None
       
    52 
       
    53 
       
    54     def UpdatePositions(self, positions):
       
    55         # get globals from PLC
       
    56         self.positions = positions
       
    57         self.SetLabel(
       
    58             ((self.Message  +'\n\n') if self.Message else '' )+
       
    59             " ".join(["%s %+.2f"%(axis,self.positions[i])
       
    60                           for i,axis in enumerate(AxisList)]))
       
    61 
       
    62 def MakeButtonFunc(window, sizer, btname):
       
    63     def ButtonDown(event):
       
    64         setattr(PLCGlobals,btname,1)
       
    65         event.Skip()
       
    66     def ButtonUp(event):
       
    67         setattr(PLCGlobals,btname,0)
       
    68         event.Skip()
       
    69     obj = wx.BitmapButton(window, -1, wx.Bitmap('%s.png'%btname))
       
    70     sizer.Add(obj, 2, wx.EXPAND, 0)
       
    71     obj.Bind(wx.EVT_LEFT_DOWN, ButtonDown)
       
    72     obj.Bind(wx.EVT_LEFT_UP, ButtonUp)
       
    73     return obj
       
    74 
       
    75 def UpdatePositions(self, event):
       
    76 
       
    77     # TODO : uncomment
       
    78     positions = [getattr(PLCGlobals,axname+"axisPos") for axname in AxisList]
       
    79 
       
    80     self.window_1.UpdatePositions(positions)
       
    81 
       
    82     event.Skip()
       
    83 
       
    84 Class_wxglade_hmi.UpdatePositions = UpdatePositions
       
    85 
       
    86 initorig = Class_wxglade_hmi.__init__
       
    87 def Init(self,*args,**kargs):
       
    88     initorig(self,*args,**kargs)
       
    89     sizer = self.GetSizer().GetItem(1).GetSizer().GetItem(0).GetSizer()
       
    90     self.main_buttons = map(
       
    91         lambda btname: MakeButtonFunc(self, sizer, btname), PwrButtons)
       
    92     sizer = self.GetSizer().GetItem(1).GetSizer().GetItem(1).GetSizer()
       
    93     self.main_buttons = map(
       
    94         lambda btname: MakeButtonFunc(self, sizer, btname), ActionButtons)
       
    95     self.axis_buttons = map(
       
    96         lambda axis:( MakeButtonFunc(self, sizer, axis+"axisMinus"), 
       
    97                         MakeButtonFunc(self, sizer, axis+"axisPlus")),
       
    98         AxisList)
       
    99     self.timer = wx.Timer(self, -1)
       
   100     self.Bind(wx.EVT_TIMER, self.UpdatePositions, self.timer)
       
   101     self.ShowFullScreen(True,wx.FULLSCREEN_ALL)
       
   102     wx.CallAfter(self.timer.Start,200)
       
   103     
       
   104 Class_wxglade_hmi.__init__ = Init
       
   105 
       
   106 def GUIMessage(message):
       
   107     try:
       
   108        wxglade_hmi.window_1.Message = message
       
   109     except:
       
   110        # sometime get some wxpydeadobject
       
   111        pass
       
   112 
       
   113 def SetNegLimits(*args):
       
   114     wxglade_hmi.window_1.NegLimits = args
       
   115 
       
   116 def SetDisk(*args):
       
   117     wxglade_hmi.window_1.Disk = args
       
   118     GUIMessage("DiskOK")
       
   119 
       
   120 ]]></xhtml:p>
       
   121   </globals>
       
   122   <init>
       
   123     <xhtml:p><![CDATA[
       
   124 ]]></xhtml:p>
       
   125   </init>
       
   126   <cleanup>
       
   127     <xhtml:p><![CDATA[
       
   128 ]]></xhtml:p>
       
   129   </cleanup>
       
   130   <start>
       
   131     <xhtml:p><![CDATA[
       
   132 ]]></xhtml:p>
       
   133   </start>
       
   134   <stop>
       
   135     <xhtml:p><![CDATA[
       
   136 ]]></xhtml:p>
       
   137   </stop>
       
   138 </PyFile>