|
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> |