6
6
7
7
try :
8
8
import libTC
9
- print ('TankController version ' , libTC .version ())
10
9
except ImportError :
11
10
print ('libTC not found!' )
12
11
exit ()
19
18
20
19
21
20
class TankController (wx .Frame ):
21
+ border = 5
22
22
23
23
def __init__ (self , parent , title ):
24
- super (TankController , self ).__init__ (
25
- parent , title = title , size = ( 850 , 600 ) )
24
+ super (TankController , self ).__init__ (parent , title = title )
25
+ self . setBorder ( )
26
26
self .InitUI ()
27
27
self .Centre ()
28
28
self .Show ()
29
29
self .startLoop ()
30
30
libTC .setTemperature (12.345 )
31
+ self .SetClientSize (self .FromDIP (wx .Size (825 , 600 )))
31
32
32
33
def InitUI (self ):
33
34
self .layoutMain ()
@@ -37,6 +38,11 @@ def loop(self, event):
37
38
libTC .loop ()
38
39
self .updateDisplay ()
39
40
41
+ def setBorder (self ):
42
+ osName = wx .PlatformInformation .Get ().GetOperatingSystemIdName ()
43
+ if (osName == 'Apple Mac OS X' ):
44
+ self .border = 0
45
+
40
46
def startLoop (self ):
41
47
self .timer = wx .Timer (self )
42
48
self .Bind (wx .EVT_TIMER , self .loop , self .timer )
@@ -45,104 +51,123 @@ def startLoop(self):
45
51
def layoutMain (self ):
46
52
self .panel = wx .Panel (self )
47
53
self .panel .Bind (wx .EVT_CHAR , self .Keyboard )
48
- mainSizer = wx .BoxSizer (wx .VERTICAL )
49
- mainSizer .Add (self .layoutTop (), flag = wx .EXPAND | wx .LEFT | wx .RIGHT , border = 5 )
50
- mainSizer .Add (self .layoutBottom (), flag = wx .EXPAND | wx .LEFT | wx .RIGHT , border = 5 )
51
- self .panel .SetSizer (mainSizer )
54
+ sizer = wx .BoxSizer (wx .VERTICAL )
55
+ sizer .Add (self .layoutTop (), flag = wx .EXPAND |
56
+ wx .LEFT | wx .RIGHT , border = self .border )
57
+ sizer .Add (self .layoutBottom (), flag = wx .EXPAND |
58
+ wx .LEFT | wx .RIGHT , border = self .border )
59
+ self .panel .SetSizer (sizer )
52
60
53
61
def layoutBottom (self ):
54
62
sizer = wx .BoxSizer (wx .HORIZONTAL )
55
- sizer .Add (self .layoutSerial (), flag = wx .EXPAND | wx .LEFT | wx .RIGHT , border = 5 )
63
+ sizer .Add (self .layoutSerial (), flag = wx .EXPAND |
64
+ wx .LEFT | wx .RIGHT , border = self .border )
56
65
return sizer
57
66
58
67
def layoutTop (self ):
59
68
sizer = wx .BoxSizer (wx .HORIZONTAL )
60
- sizer .Add (self .layoutTopLeft (), flag = wx .EXPAND | wx .LEFT | wx .RIGHT , border = 5 )
61
- sizer .Add (self .layoutEEPROM (), flag = wx .EXPAND | wx .LEFT | wx .RIGHT , border = 5 )
69
+ sizer .Add (self .layoutTopLeft (), flag = wx .EXPAND |
70
+ wx .LEFT | wx .RIGHT , border = self .border )
71
+ sizer .Add (self .layoutEEPROM (), flag = wx .EXPAND |
72
+ wx .LEFT | wx .RIGHT , border = self .border )
62
73
return sizer
63
74
64
75
def layoutTopLeft (self ):
65
- sizer = wx .StaticBoxSizer (wx .VERTICAL , self .panel )
66
- sizer .Add (self .layoutDevice (), flag = wx .EXPAND | wx .LEFT | wx .RIGHT , border = 5 )
67
- sizer .Add (self .layoutTank (), flag = wx .EXPAND | wx .LEFT | wx .RIGHT , border = 5 )
76
+ sizer = wx .BoxSizer (wx .VERTICAL )
77
+ sizer .Add (self .layoutDevice (), flag = wx .EXPAND |
78
+ wx .LEFT | wx .RIGHT , border = self .border )
79
+ sizer .Add (self .layoutTank (), flag = wx .EXPAND |
80
+ wx .LEFT | wx .RIGHT , border = self .border )
68
81
return sizer
69
82
70
83
def layoutTank (self ):
71
- sizer = wx .StaticBoxSizer (wx .HORIZONTAL , self .panel )
72
- sizer .Add (self .layoutTemp (), flag = wx .EXPAND | wx .LEFT | wx .RIGHT , border = 5 )
73
- sizer .Add (self .layoutPH (), flag = wx .EXPAND | wx .LEFT | wx .RIGHT , border = 5 )
84
+ sizer = wx .BoxSizer (wx .HORIZONTAL )
85
+ sizer .Add (self .layoutTemp (), flag = wx .EXPAND |
86
+ wx .LEFT | wx .RIGHT , border = self .border )
87
+ sizer .Add (self .layoutPH (), flag = wx .EXPAND |
88
+ wx .LEFT | wx .RIGHT , border = self .border )
74
89
return sizer
75
90
76
91
def layoutTemp (self ):
77
92
sizer = wx .StaticBoxSizer (
78
- wx .VERTICAL , self .panel , label = "Tank Temp " )
93
+ wx .VERTICAL , self .panel , label = "Temperature Probe " )
79
94
temp = wx .TextCtrl (
80
- self .panel , value = '12.345' , style = wx .TE_RIGHT )
95
+ self .panel , value = '12.345' , style = wx .TE_RIGHT ,
96
+ size = self .FromDIP (wx .Size (120 , 24 )))
81
97
temp .Bind (wx .EVT_TEXT , self .onTempChanged )
82
98
font = wx .Font (18 , wx .FONTFAMILY_TELETYPE ,
83
99
wx .FONTSTYLE_NORMAL , wx .FONTWEIGHT_NORMAL )
84
100
temp .SetFont (font )
85
- sizer .Add (temp , flag = wx .EXPAND | wx .LEFT | wx .RIGHT , border = 5 )
101
+ sizer .Add (temp , flag = wx .EXPAND | wx .LEFT |
102
+ wx .RIGHT , border = self .border )
86
103
return sizer
87
104
88
105
def layoutPH (self ):
89
106
sizer = wx .StaticBoxSizer (
90
- wx .VERTICAL , self .panel , label = "Tank pH " )
107
+ wx .VERTICAL , self .panel , label = "pH Probe " )
91
108
ph = wx .TextCtrl (
92
- self .panel , value = '8.1234' , style = wx .TE_RIGHT )
109
+ self .panel , value = '8.1234' , style = wx .TE_RIGHT ,
110
+ size = self .FromDIP (wx .Size (120 , 24 )))
93
111
ph .Bind (wx .EVT_TEXT , self .onPHChanged )
94
112
font = wx .Font (18 , wx .FONTFAMILY_TELETYPE ,
95
113
wx .FONTSTYLE_NORMAL , wx .FONTWEIGHT_NORMAL )
96
114
ph .SetFont (font )
97
- sizer .Add (ph , flag = wx .EXPAND | wx .LEFT | wx .RIGHT , border = 5 )
115
+ sizer .Add (ph , flag = wx .EXPAND | wx .LEFT | wx .RIGHT , border = self . border )
98
116
return sizer
99
117
100
118
def layoutDevice (self ):
101
119
sizer = wx .StaticBoxSizer (
102
120
wx .VERTICAL , self .panel , label = "Tank Controller v" + libTC .version ())
103
- sizer .Add (self .layoutDisplay (), flag = wx .EXPAND | wx .LEFT | wx .RIGHT , border = 5 )
104
- sizer .Add (self .layoutKeypad (), flag = wx .EXPAND | wx .LEFT | wx .RIGHT , border = 5 )
121
+ sizer .Add (self .layoutDisplay (), flag = wx .EXPAND |
122
+ wx .LEFT | wx .RIGHT , border = self .border )
123
+ sizer .Add (self .layoutKeypad (), flag = wx .EXPAND |
124
+ wx .LEFT | wx .RIGHT , border = self .border )
105
125
return sizer
106
126
107
127
def layoutDisplay (self ):
108
- sizer = wx .StaticBoxSizer (wx .HORIZONTAL , self .panel )
109
- sizer .Add (self .layoutLQD (), flag = wx .EXPAND | wx .LEFT | wx .RIGHT , border = 5 )
110
- sizer .Add (self .layoutPins (), flag = wx .EXPAND | wx .LEFT | wx .RIGHT , border = 5 )
128
+ sizer = wx .BoxSizer (wx .HORIZONTAL )
129
+ sizer .Add (self .layoutLQD (), flag = wx .EXPAND |
130
+ wx .LEFT | wx .RIGHT , border = self .border )
131
+ sizer .Add (self .layoutPins (), flag = wx .EXPAND |
132
+ wx .LEFT | wx .RIGHT , border = self .border )
111
133
return sizer
112
134
113
135
def layoutLQD (self ):
114
- sizer = wx .StaticBoxSizer (
115
- wx .VERTICAL , self .panel , label = "Liquid Crystal" )
136
+ sizer = wx .StaticBoxSizer (wx .VERTICAL , self .panel )
116
137
self .lqd = wx .StaticText (
117
138
self .panel , label = libTC .lcd (0 ) + '\n ' + libTC .lcd (1 ))
118
139
font = wx .Font (22 , wx .FONTFAMILY_TELETYPE ,
119
140
wx .FONTSTYLE_NORMAL , wx .FONTWEIGHT_NORMAL )
120
141
self .lqd .SetFont (font )
121
- sizer .Add (self .lqd , flag = wx .EXPAND | wx .LEFT | wx .RIGHT , border = 5 )
142
+ sizer .Add (self .lqd , flag = wx .EXPAND | wx .LEFT |
143
+ wx .RIGHT , border = self .border )
122
144
return sizer
123
145
124
146
def layoutPins (self ):
125
- sizer = wx .StaticBoxSizer (wx .VERTICAL , self .panel , label = "Pins" )
147
+ sizer = wx .StaticBoxSizer (wx .VERTICAL , self .panel )
126
148
self .pins = wx .StaticText (
127
149
self .panel , label = 'LED: OFF\n HEAT: OFF\n CO2: OFF' )
128
150
font = wx .Font (15 , wx .FONTFAMILY_TELETYPE ,
129
151
wx .FONTSTYLE_NORMAL , wx .FONTWEIGHT_NORMAL )
130
152
self .pins .SetFont (font )
131
- sizer .Add (self .pins , flag = wx .EXPAND | wx .LEFT | wx .RIGHT , border = 5 )
153
+ sizer .Add (self .pins , flag = wx .EXPAND | wx .LEFT |
154
+ wx .RIGHT , border = self .border )
132
155
return sizer
133
156
134
157
def layoutKeypad (self ):
135
158
labels = ['1' , '2' , '3' , 'A' ,
136
159
'4' , '5' , '6' , 'B' ,
137
160
'7' , '8' , '9' , 'C' ,
138
161
'*' , '0' , '#' , 'D' ]
139
- sizer = wx .StaticBoxSizer (wx .VERTICAL , self .panel , label = "Keypad" )
162
+ sizer = wx .StaticBoxSizer (wx .VERTICAL , self .panel )
140
163
keypadGrid = wx .FlexGridSizer (4 , 4 , 5 ) # rows, cols, gap
141
164
for each in labels :
142
- button = wx .Button (self .panel , label = each )
165
+ button = wx .Button (self .panel , label = each ,
166
+ size = self .FromDIP (wx .Size (76 , 25 )))
143
167
button .Bind (wx .EVT_LEFT_UP , self .KeypadEvent )
144
- keypadGrid .Add (button , 0 , flag = wx .EXPAND )
145
- sizer .Add (keypadGrid , flag = wx .EXPAND | wx .LEFT | wx .RIGHT , border = 5 )
168
+ keypadGrid .Add (button , 1 , flag = wx .EXPAND )
169
+ sizer .Add (keypadGrid , flag = wx .EXPAND | wx .LEFT |
170
+ wx .RIGHT , border = self .border )
146
171
return sizer
147
172
148
173
def layoutEEPROM (self ):
@@ -155,31 +180,38 @@ def layoutEEPROM(self):
155
180
'Temp Interval' , 'Temp Delay' , 'Google Sheet Mins' ]
156
181
sizer = wx .StaticBoxSizer (
157
182
wx .HORIZONTAL , self .panel , label = "EEPROM" )
158
- leftSizer = wx .StaticBoxSizer (wx .VERTICAL , self . panel )
159
- centerSizer = wx .StaticBoxSizer (wx .VERTICAL , self . panel )
160
- rightSizer = wx .StaticBoxSizer (wx .VERTICAL , self . panel )
183
+ leftSizer = wx .BoxSizer (wx .VERTICAL )
184
+ centerSizer = wx .BoxSizer (wx .VERTICAL )
185
+ rightSizer = wx .BoxSizer (wx .VERTICAL )
161
186
currentColumn = leftSizer
162
187
for i , each in enumerate (labels ):
163
188
box = wx .StaticBoxSizer (wx .HORIZONTAL , self .panel , label = each )
164
- value = wx .StaticText (self .panel , label = "nan" )
165
- box .Add (value , flag = wx .EXPAND | wx .LEFT | wx .RIGHT | wx .BOTTOM , border = 5 )
189
+ value = wx .StaticText (self .panel ,
190
+ size = self .FromDIP (wx .Size (100 , 16 )))
191
+ box .Add (value , flag = wx .EXPAND | wx .LEFT |
192
+ wx .RIGHT | wx .BOTTOM , border = self .border )
166
193
if i >= len (labels ) / 3 * 2 :
167
194
currentColumn = rightSizer
168
195
elif i >= len (labels ) / 3 :
169
196
currentColumn = centerSizer
170
- currentColumn .Add (box , flag = wx .EXPAND | wx .LEFT | wx .RIGHT , border = 10 )
197
+ currentColumn .Add (box , flag = wx .EXPAND |
198
+ wx .LEFT | wx .RIGHT , border = 10 )
171
199
self .eeprom .append (value )
172
- sizer .Add (leftSizer , flag = wx .EXPAND | wx .LEFT | wx .RIGHT , border = 5 )
173
- sizer .Add (centerSizer , flag = wx .EXPAND | wx .LEFT | wx .RIGHT , border = 5 )
174
- sizer .Add (rightSizer , flag = wx .EXPAND | wx .LEFT | wx .RIGHT , border = 5 )
200
+ sizer .Add (leftSizer , flag = wx .EXPAND | wx .LEFT |
201
+ wx .RIGHT , border = self .border )
202
+ sizer .Add (centerSizer , flag = wx .EXPAND |
203
+ wx .LEFT | wx .RIGHT , border = self .border )
204
+ sizer .Add (rightSizer , flag = wx .EXPAND | wx .LEFT |
205
+ wx .RIGHT , border = self .border )
175
206
return sizer
176
207
177
208
def layoutSerial (self ):
178
209
sizer = wx .StaticBoxSizer (
179
210
wx .VERTICAL , self .panel , label = "Serial Log" )
180
- self .console = wx .TextCtrl (self .panel , size = ( 1000 , 1000 ),
211
+ self .console = wx .TextCtrl (self .panel , size = self . FromDIP ( wx . Size ( 800 , 200 ) ),
181
212
style = wx .TE_READONLY | wx .TE_MULTILINE | wx .HSCROLL )
182
- sizer .Add (self .console , flag = wx .EXPAND | wx .LEFT | wx .RIGHT , border = 5 )
213
+ sizer .Add (self .console , flag = wx .EXPAND |
214
+ wx .LEFT | wx .RIGHT , border = self .border )
183
215
return sizer
184
216
185
217
def updateDisplay (self ):
0 commit comments