OSDN Git Service

Year update
[skyscrapersim/skyscraper.git] / src / frontend / editelevator.cpp
1 /* $Id$ */
2
3 /*
4         Skyscraper 1.8 Alpha - Edit Elevator Form
5         Copyright (C)20032012 Ryan Thoryk
6         http://www.skyscrapersim.com
7         http://sourceforge.net/projects/skyscraper
8         Contact - ryan@tliquest.net
9
10         This program is free software; you can redistribute it and/or
11         modify it under the terms of the GNU General Public License
12         as published by the Free Software Foundation; either version 2
13         of the License, or (at your option) any later version.
14
15         This program is distributed in the hope that it will be useful,
16         but WITHOUT ANY WARRANTY; without even the implied warranty of
17         MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
18         GNU General Public License for more details.
19
20         You should have received a copy of the GNU General Public License
21         along with this program; if not, write to the Free Software
22         Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
23 */
24
25 //(*InternalHeaders(editelevator)
26 #include <wx/intl.h>
27 #include <wx/string.h>
28 //*)
29 #include "debugpanel.h"
30 #include "editelevator.h"
31 #include "globals.h"
32 #include "sbs.h"
33 #include "elevator.h"
34 #include "unix.h"
35
36 extern SBS *Simcore; //external pointer to the SBS engine
37 Elevator *elevator;
38 ElevatorDoor *door;
39
40 //(*IdInit(editelevator)
41 const long editelevator::ID_tElevator = wxNewId();
42 const long editelevator::ID_sNumber = wxNewId();
43 const long editelevator::ID_tFloor = wxNewId();
44 const long editelevator::ID_sFloor = wxNewId();
45 const long editelevator::ID_bACPMode = wxNewId();
46 const long editelevator::ID_bUpPeak = wxNewId();
47 const long editelevator::ID_bDownPeak = wxNewId();
48 const long editelevator::ID_bIndService = wxNewId();
49 const long editelevator::ID_bInsService = wxNewId();
50 const long editelevator::ID_Fire1Off = wxNewId();
51 const long editelevator::ID_Fire1On = wxNewId();
52 const long editelevator::ID_Fire1Bypass = wxNewId();
53 const long editelevator::ID_Fire2Off = wxNewId();
54 const long editelevator::ID_Fire2On = wxNewId();
55 const long editelevator::ID_Fire2Hold = wxNewId();
56 const long editelevator::ID_bUp = wxNewId();
57 const long editelevator::ID_bGoToggle = wxNewId();
58 const long editelevator::ID_bDown = wxNewId();
59 const long editelevator::ID_tDoor = wxNewId();
60 const long editelevator::ID_sDoor = wxNewId();
61 const long editelevator::ID_bRefresh = wxNewId();
62 const long editelevator::ID_bDumpFloors = wxNewId();
63 const long editelevator::ID_bDumpQueues = wxNewId();
64 const long editelevator::ID_CHECKBOX1 = wxNewId();
65 const long editelevator::ID_chkRun = wxNewId();
66 const long editelevator::ID_bCall = wxNewId();
67 const long editelevator::ID_bGo = wxNewId();
68 const long editelevator::ID_bOpen = wxNewId();
69 const long editelevator::ID_bOpenManual = wxNewId();
70 const long editelevator::ID_bOpenShaftDoor = wxNewId();
71 const long editelevator::ID_bStop = wxNewId();
72 const long editelevator::ID_bChime = wxNewId();
73 const long editelevator::ID_bUpIndicator = wxNewId();
74 const long editelevator::ID_bEnqueueUp = wxNewId();
75 const long editelevator::ID_bEnqueueDown = wxNewId();
76 const long editelevator::ID_bClose = wxNewId();
77 const long editelevator::ID_bCloseManual = wxNewId();
78 const long editelevator::ID_bCloseShaftDoor = wxNewId();
79 const long editelevator::ID_bAlarm = wxNewId();
80 const long editelevator::ID_bStopDoors = wxNewId();
81 const long editelevator::ID_bDownIndicator = wxNewId();
82 const long editelevator::ID_STATICTEXT3 = wxNewId();
83 const long editelevator::ID_txtNumber = wxNewId();
84 const long editelevator::ID_STATICTEXT5 = wxNewId();
85 const long editelevator::ID_txtName = wxNewId();
86 const long editelevator::ID_bSetName = wxNewId();
87 const long editelevator::ID_STATICTEXT4 = wxNewId();
88 const long editelevator::ID_txtEnabled = wxNewId();
89 const long editelevator::ID_STATICTEXT6 = wxNewId();
90 const long editelevator::ID_txtShaft = wxNewId();
91 const long editelevator::ID_STATICTEXT7 = wxNewId();
92 const long editelevator::ID_txtHeight = wxNewId();
93 const long editelevator::ID_STATICTEXT8 = wxNewId();
94 const long editelevator::ID_txtDoorWidth = wxNewId();
95 const long editelevator::ID_STATICTEXT9 = wxNewId();
96 const long editelevator::ID_txtDoorHeight = wxNewId();
97 const long editelevator::ID_STATICTEXT10 = wxNewId();
98 const long editelevator::ID_txtDoorDirection = wxNewId();
99 const long editelevator::ID_STATICTEXT11 = wxNewId();
100 const long editelevator::ID_txtDoorsOpen = wxNewId();
101 const long editelevator::ID_STATICTEXT12 = wxNewId();
102 const long editelevator::ID_txtBrakes = wxNewId();
103 const long editelevator::ID_STATICTEXT13 = wxNewId();
104 const long editelevator::ID_txtStop = wxNewId();
105 const long editelevator::ID_STATICTEXT42 = wxNewId();
106 const long editelevator::ID_txtDoorTimer = wxNewId();
107 const long editelevator::ID_bSetDoorTimer = wxNewId();
108 const long editelevator::ID_STATICTEXT61 = wxNewId();
109 const long editelevator::ID_txtQuickClose = wxNewId();
110 const long editelevator::ID_bSetQuickClose = wxNewId();
111 const long editelevator::ID_STATICTEXT32 = wxNewId();
112 const long editelevator::ID_txtUseSkipFloor = wxNewId();
113 const long editelevator::ID_STATICTEXT44 = wxNewId();
114 const long editelevator::ID_txtSkipFloorText = wxNewId();
115 const long editelevator::ID_bSetSkipFloorText = wxNewId();
116 const long editelevator::ID_STATICTEXT52 = wxNewId();
117 const long editelevator::ID_txtAlarm = wxNewId();
118 const long editelevator::ID_STATICTEXT28 = wxNewId();
119 const long editelevator::ID_txtWaitForDoors = wxNewId();
120 const long editelevator::ID_STATICTEXT67 = wxNewId();
121 const long editelevator::ID_txtNudgeMode = wxNewId();
122 const long editelevator::ID_STATICTEXT14 = wxNewId();
123 const long editelevator::ID_txtFloor = wxNewId();
124 const long editelevator::ID_STATICTEXT15 = wxNewId();
125 const long editelevator::ID_txtPosition = wxNewId();
126 const long editelevator::ID_STATICTEXT16 = wxNewId();
127 const long editelevator::ID_txtOrigin = wxNewId();
128 const long editelevator::ID_STATICTEXT17 = wxNewId();
129 const long editelevator::ID_txtOriginFloor = wxNewId();
130 const long editelevator::ID_STATICTEXT18 = wxNewId();
131 const long editelevator::ID_txtElevStart = wxNewId();
132 const long editelevator::ID_STATICTEXT19 = wxNewId();
133 const long editelevator::ID_txtDoorOrigin = wxNewId();
134 const long editelevator::ID_STATICTEXT20 = wxNewId();
135 const long editelevator::ID_txtShaftDoorOrigin = wxNewId();
136 const long editelevator::ID_STATICTEXT50 = wxNewId();
137 const long editelevator::ID_txtOnFloor = wxNewId();
138 const long editelevator::ID_STATICTEXT25 = wxNewId();
139 const long editelevator::ID_txtMotor = wxNewId();
140 const long editelevator::ID_STATICTEXT54 = wxNewId();
141 const long editelevator::ID_txtCameraOffset = wxNewId();
142 const long editelevator::ID_STATICTEXT38 = wxNewId();
143 const long editelevator::ID_txtQueueDirection = wxNewId();
144 const long editelevator::ID_STATICTEXT40 = wxNewId();
145 const long editelevator::ID_txtQueueLastUp = wxNewId();
146 const long editelevator::ID_STATICTEXT41 = wxNewId();
147 const long editelevator::ID_txtQueueLastDown = wxNewId();
148 const long editelevator::ID_STATICTEXT51 = wxNewId();
149 const long editelevator::ID_txtQueueLastDirection = wxNewId();
150 const long editelevator::ID_bResetQueues = wxNewId();
151 const long editelevator::ID_STATICTEXT21 = wxNewId();
152 const long editelevator::ID_txtSpeed = wxNewId();
153 const long editelevator::ID_bSetSpeed = wxNewId();
154 const long editelevator::ID_STATICTEXT22 = wxNewId();
155 const long editelevator::ID_txtAcceleration = wxNewId();
156 const long editelevator::ID_bSetAcceleration = wxNewId();
157 const long editelevator::ID_STATICTEXT23 = wxNewId();
158 const long editelevator::ID_txtDeceleration = wxNewId();
159 const long editelevator::ID_bSetDeceleration = wxNewId();
160 const long editelevator::ID_STATICTEXT1 = wxNewId();
161 const long editelevator::ID_txtAccelJerk = wxNewId();
162 const long editelevator::ID_bSetAccelJerk = wxNewId();
163 const long editelevator::ID_STATICTEXT29 = wxNewId();
164 const long editelevator::ID_txtDecelJerk = wxNewId();
165 const long editelevator::ID_bSetDecelJerk = wxNewId();
166 const long editelevator::ID_STATICTEXT26 = wxNewId();
167 const long editelevator::ID_txtRate = wxNewId();
168 const long editelevator::ID_STATICTEXT27 = wxNewId();
169 const long editelevator::ID_txtDirection = wxNewId();
170 const long editelevator::ID_STATICTEXT2 = wxNewId();
171 const long editelevator::ID_txtJerkRate = wxNewId();
172 const long editelevator::ID_STATICTEXT49 = wxNewId();
173 const long editelevator::ID_txtDoorStopped = wxNewId();
174 const long editelevator::ID_STATICTEXT53 = wxNewId();
175 const long editelevator::ID_txtIsIdle = wxNewId();
176 const long editelevator::ID_STATICTEXT24 = wxNewId();
177 const long editelevator::ID_txtManualGo = wxNewId();
178 const long editelevator::ID_STATICTEXT55 = wxNewId();
179 const long editelevator::ID_txtLeveling = wxNewId();
180 const long editelevator::ID_STATICTEXT56 = wxNewId();
181 const long editelevator::ID_txtLevelingSpeed = wxNewId();
182 const long editelevator::ID_bSetLevelingSpeed = wxNewId();
183 const long editelevator::ID_STATICTEXT57 = wxNewId();
184 const long editelevator::ID_txtLevelingOffset = wxNewId();
185 const long editelevator::ID_bSetLevelingOffset = wxNewId();
186 const long editelevator::ID_STATICTEXT58 = wxNewId();
187 const long editelevator::ID_txtLevelingOpen = wxNewId();
188 const long editelevator::ID_bSetLevelingOpen = wxNewId();
189 const long editelevator::ID_STATICTEXT60 = wxNewId();
190 const long editelevator::ID_txtParking = wxNewId();
191 const long editelevator::ID_STATICTEXT63 = wxNewId();
192 const long editelevator::ID_txtSlowSpeed = wxNewId();
193 const long editelevator::ID_bSetSlowSpeed = wxNewId();
194 const long editelevator::ID_STATICTEXT64 = wxNewId();
195 const long editelevator::ID_txtManualSpeed = wxNewId();
196 const long editelevator::ID_bSetManualSpeed = wxNewId();
197 const long editelevator::ID_STATICTEXT30 = wxNewId();
198 const long editelevator::ID_txtDestFloor = wxNewId();
199 const long editelevator::ID_STATICTEXT43 = wxNewId();
200 const long editelevator::ID_txtIsMoving = wxNewId();
201 const long editelevator::ID_STATICTEXT31 = wxNewId();
202 const long editelevator::ID_txtMoveElevator = wxNewId();
203 const long editelevator::ID_STATICTEXT33 = wxNewId();
204 const long editelevator::ID_txtDistance = wxNewId();
205 const long editelevator::ID_STATICTEXT34 = wxNewId();
206 const long editelevator::ID_txtDestination = wxNewId();
207 const long editelevator::ID_STATICTEXT35 = wxNewId();
208 const long editelevator::ID_txtStopDistance = wxNewId();
209 const long editelevator::ID_STATICTEXT36 = wxNewId();
210 const long editelevator::ID_txtTempDecel = wxNewId();
211 const long editelevator::ID_STATICTEXT37 = wxNewId();
212 const long editelevator::ID_txtErrorOffset = wxNewId();
213 const long editelevator::ID_STATICTEXT59 = wxNewId();
214 const long editelevator::ID_txtNotifyEarly = wxNewId();
215 const long editelevator::ID_bNotifyEarly = wxNewId();
216 const long editelevator::ID_STATICTEXT65 = wxNewId();
217 const long editelevator::ID_txtDepartureDelay = wxNewId();
218 const long editelevator::ID_bSetDepartureDelay = wxNewId();
219 const long editelevator::ID_STATICTEXT66 = wxNewId();
220 const long editelevator::ID_txtArrivalDelay = wxNewId();
221 const long editelevator::ID_bSetArrivalDelay = wxNewId();
222 const long editelevator::ID_STATICTEXT45 = wxNewId();
223 const long editelevator::ID_txtACPFloor = wxNewId();
224 const long editelevator::ID_bSetACPFloor = wxNewId();
225 const long editelevator::ID_STATICTEXT46 = wxNewId();
226 const long editelevator::ID_txtRecallFloor = wxNewId();
227 const long editelevator::ID_bSetRecallFloor = wxNewId();
228 const long editelevator::ID_STATICTEXT47 = wxNewId();
229 const long editelevator::ID_txtRecallAlternate = wxNewId();
230 const long editelevator::ID_bSetRecallAlternate = wxNewId();
231 const long editelevator::ID_STATICTEXT39 = wxNewId();
232 const long editelevator::ID_txtParkingFloor = wxNewId();
233 const long editelevator::ID_bSetParkingFloor = wxNewId();
234 const long editelevator::ID_STATICTEXT48 = wxNewId();
235 const long editelevator::ID_txtParkingDelay = wxNewId();
236 const long editelevator::ID_bSetParkingDelay = wxNewId();
237 const long editelevator::ID_STATICTEXT62 = wxNewId();
238 const long editelevator::ID_txtNudgeTimer = wxNewId();
239 const long editelevator::ID_bSetNudgeTimer = wxNewId();
240 //*)
241
242 BEGIN_EVENT_TABLE(editelevator,wxDialog)
243 //(*EventTable(editelevator)
244 //*)
245 END_EVENT_TABLE()
246
247 editelevator::editelevator(wxWindow* parent,wxWindowID id)
248 {
249         //(*Initialize(editelevator)
250         wxBoxSizer* BoxSizer4;
251         wxFlexGridSizer* FlexGridSizer4;
252         wxBoxSizer* BoxSizer5;
253         wxBoxSizer* BoxSizer7;
254         wxStaticBoxSizer* StaticBoxSizer4;
255         wxFlexGridSizer* FlexGridSizer5;
256         wxStaticBoxSizer* StaticBoxSizer9;
257         wxStaticBoxSizer* StaticBoxSizer10;
258         wxStaticBoxSizer* StaticBoxSizer6;
259         wxFlexGridSizer* FlexGridSizer8;
260         
261         Create(parent, wxID_ANY, _("Elevator Editor"), wxDefaultPosition, wxDefaultSize, wxCAPTION|wxSYSTEM_MENU|wxCLOSE_BOX|wxMINIMIZE_BOX, _T("wxID_ANY"));
262         BoxSizer1 = new wxBoxSizer(wxVERTICAL);
263         BoxSizer2 = new wxBoxSizer(wxHORIZONTAL);
264         BoxSizer6 = new wxBoxSizer(wxVERTICAL);
265         tElevator = new wxStaticText(this, ID_tElevator, _("Elevator"), wxDefaultPosition, wxDefaultSize, wxALIGN_CENTRE, _T("ID_tElevator"));
266         BoxSizer6->Add(tElevator, 0, wxALL|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 0);
267         sNumber = new wxScrollBar(this, ID_sNumber, wxDefaultPosition, wxDefaultSize, wxSB_HORIZONTAL, wxDefaultValidator, _T("ID_sNumber"));
268         sNumber->SetScrollbar(0, 0, 0, 0);
269         BoxSizer6->Add(sNumber, 0, wxALL|wxEXPAND|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 0);
270         tFloor = new wxStaticText(this, ID_tFloor, _("Floor"), wxDefaultPosition, wxDefaultSize, wxALIGN_CENTRE, _T("ID_tFloor"));
271         BoxSizer6->Add(tFloor, 0, wxTOP|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 10);
272         sFloor = new wxScrollBar(this, ID_sFloor, wxDefaultPosition, wxDefaultSize, wxSB_HORIZONTAL, wxDefaultValidator, _T("ID_sFloor"));
273         sFloor->SetScrollbar(0, 0, 0, 0);
274         BoxSizer6->Add(sFloor, 0, wxALL|wxEXPAND|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 0);
275         FlexGridSizer4 = new wxFlexGridSizer(0, 5, 0, 5);
276         BoxSizer5 = new wxBoxSizer(wxVERTICAL);
277         bACPMode = new wxToggleButton(this, ID_bACPMode, _("ACP Mode"), wxDefaultPosition, wxDefaultSize, 0, wxDefaultValidator, _T("ID_bACPMode"));
278         BoxSizer5->Add(bACPMode, 1, wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5);
279         bUpPeak = new wxToggleButton(this, ID_bUpPeak, _("Up Peak"), wxDefaultPosition, wxDefaultSize, 0, wxDefaultValidator, _T("ID_bUpPeak"));
280         BoxSizer5->Add(bUpPeak, 1, wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5);
281         bDownPeak = new wxToggleButton(this, ID_bDownPeak, _("Down Peak"), wxDefaultPosition, wxDefaultSize, 0, wxDefaultValidator, _T("ID_bDownPeak"));
282         BoxSizer5->Add(bDownPeak, 1, wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5);
283         bIndService = new wxToggleButton(this, ID_bIndService, _("Independent Service"), wxDefaultPosition, wxDefaultSize, 0, wxDefaultValidator, _T("ID_bIndService"));
284         BoxSizer5->Add(bIndService, 1, wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5);
285         bInsService = new wxToggleButton(this, ID_bInsService, _("Inspection Service"), wxDefaultPosition, wxDefaultSize, 0, wxDefaultValidator, _T("ID_bInsService"));
286         BoxSizer5->Add(bInsService, 1, wxEXPAND|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5);
287         FlexGridSizer4->Add(BoxSizer5, 1, wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5);
288         StaticBoxSizer10 = new wxStaticBoxSizer(wxVERTICAL, this, _("Fire Ph 1"));
289         Fire1Off = new wxRadioButton(this, ID_Fire1Off, _("Off"), wxDefaultPosition, wxDefaultSize, 0, wxDefaultValidator, _T("ID_Fire1Off"));
290         Fire1Off->SetValue(true);
291         StaticBoxSizer10->Add(Fire1Off, 1, wxALL|wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL, 5);
292         Fire1On = new wxRadioButton(this, ID_Fire1On, _("On"), wxDefaultPosition, wxDefaultSize, 0, wxDefaultValidator, _T("ID_Fire1On"));
293         StaticBoxSizer10->Add(Fire1On, 1, wxALL|wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL, 5);
294         Fire1Bypass = new wxRadioButton(this, ID_Fire1Bypass, _("Bypass"), wxDefaultPosition, wxDefaultSize, 0, wxDefaultValidator, _T("ID_Fire1Bypass"));
295         StaticBoxSizer10->Add(Fire1Bypass, 1, wxALL|wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL, 5);
296         FlexGridSizer4->Add(StaticBoxSizer10, 1, wxTOP|wxBOTTOM|wxLEFT|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5);
297         StaticBoxSizer9 = new wxStaticBoxSizer(wxVERTICAL, this, _("Fire Ph 2"));
298         Fire2Off = new wxRadioButton(this, ID_Fire2Off, _("Off"), wxDefaultPosition, wxDefaultSize, 0, wxDefaultValidator, _T("ID_Fire2Off"));
299         StaticBoxSizer9->Add(Fire2Off, 1, wxALL|wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL, 5);
300         Fire2On = new wxRadioButton(this, ID_Fire2On, _("On"), wxDefaultPosition, wxDefaultSize, 0, wxDefaultValidator, _T("ID_Fire2On"));
301         StaticBoxSizer9->Add(Fire2On, 1, wxALL|wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL, 5);
302         Fire2Hold = new wxRadioButton(this, ID_Fire2Hold, _("Hold"), wxDefaultPosition, wxDefaultSize, 0, wxDefaultValidator, _T("ID_Fire2Hold"));
303         StaticBoxSizer9->Add(Fire2Hold, 1, wxALL|wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL, 5);
304         FlexGridSizer4->Add(StaticBoxSizer9, 1, wxALL|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5);
305         StaticBoxSizer6 = new wxStaticBoxSizer(wxVERTICAL, this, _("Manual"));
306         bUp = new wxToggleButton(this, ID_bUp, _("Up"), wxDefaultPosition, wxSize(50,0), 0, wxDefaultValidator, _T("ID_bUp"));
307         StaticBoxSizer6->Add(bUp, 1, wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5);
308         bGoToggle = new wxToggleButton(this, ID_bGoToggle, _("Go"), wxDefaultPosition, wxSize(50,-1), 0, wxDefaultValidator, _T("ID_bGoToggle"));
309         StaticBoxSizer6->Add(bGoToggle, 1, wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5);
310         bDown = new wxToggleButton(this, ID_bDown, _("Down"), wxDefaultPosition, wxSize(50,0), 0, wxDefaultValidator, _T("ID_bDown"));
311         StaticBoxSizer6->Add(bDown, 1, wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5);
312         FlexGridSizer4->Add(StaticBoxSizer6, 1, wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5);
313         FlexGridSizer8 = new wxFlexGridSizer(0, 1, 0, 0);
314         tDoor = new wxStaticText(this, ID_tDoor, _("Door"), wxDefaultPosition, wxDefaultSize, wxALIGN_CENTRE, _T("ID_tDoor"));
315         FlexGridSizer8->Add(tDoor, 1, wxEXPAND|wxALIGN_TOP|wxALIGN_CENTER_HORIZONTAL, 5);
316         sDoor = new wxScrollBar(this, ID_sDoor, wxDefaultPosition, wxDefaultSize, wxSB_HORIZONTAL, wxDefaultValidator, _T("ID_sDoor"));
317         sDoor->SetScrollbar(0, 0, 0, 0);
318         FlexGridSizer8->Add(sDoor, 1, wxBOTTOM|wxEXPAND|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5);
319         bRefresh = new wxButton(this, ID_bRefresh, _("Refresh Values"), wxDefaultPosition, wxDefaultSize, 0, wxDefaultValidator, _T("ID_bRefresh"));
320         FlexGridSizer8->Add(bRefresh, 1, wxEXPAND|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5);
321         bDumpFloors = new wxButton(this, ID_bDumpFloors, _("Dump Floor List"), wxDefaultPosition, wxDefaultSize, 0, wxDefaultValidator, _T("ID_bDumpFloors"));
322         FlexGridSizer8->Add(bDumpFloors, 1, wxEXPAND|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5);
323         bDumpQueues = new wxButton(this, ID_bDumpQueues, _("Dump Queues"), wxDefaultPosition, wxDefaultSize, 0, wxDefaultValidator, _T("ID_bDumpQueues"));
324         FlexGridSizer8->Add(bDumpQueues, 1, wxEXPAND|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5);
325         BoxSizer4 = new wxBoxSizer(wxHORIZONTAL);
326         chkVisible = new wxCheckBox(this, ID_CHECKBOX1, _("Visible"), wxDefaultPosition, wxDefaultSize, 0, wxDefaultValidator, _T("ID_CHECKBOX1"));
327         chkVisible->SetValue(false);
328         BoxSizer4->Add(chkVisible, 1, wxALL|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5);
329         chkRun = new wxCheckBox(this, ID_chkRun, _("Run"), wxDefaultPosition, wxDefaultSize, 0, wxDefaultValidator, _T("ID_chkRun"));
330         chkRun->SetValue(false);
331         BoxSizer4->Add(chkRun, 1, wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5);
332         FlexGridSizer8->Add(BoxSizer4, 1, wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5);
333         FlexGridSizer4->Add(FlexGridSizer8, 1, wxLEFT|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5);
334         BoxSizer6->Add(FlexGridSizer4, 1, wxTOP|wxBOTTOM|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5);
335         BoxSizer2->Add(BoxSizer6, 2, wxTOP|wxLEFT|wxRIGHT|wxALIGN_LEFT|wxALIGN_TOP, 5);
336         StaticBoxSizer1 = new wxStaticBoxSizer(wxHORIZONTAL, this, _("Control"));
337         BoxSizer8 = new wxBoxSizer(wxVERTICAL);
338         bCall = new wxButton(this, ID_bCall, _("Call"), wxDefaultPosition, wxDefaultSize, 0, wxDefaultValidator, _T("ID_bCall"));
339         bCall->SetFocus();
340         BoxSizer8->Add(bCall, 0, wxEXPAND|wxALIGN_LEFT|wxALIGN_TOP, 0);
341         bGo = new wxButton(this, ID_bGo, _("Go"), wxDefaultPosition, wxDefaultSize, 0, wxDefaultValidator, _T("ID_bGo"));
342         BoxSizer8->Add(bGo, 0, wxEXPAND|wxALIGN_LEFT|wxALIGN_TOP, 0);
343         bOpen = new wxButton(this, ID_bOpen, _("Open"), wxDefaultPosition, wxDefaultSize, 0, wxDefaultValidator, _T("ID_bOpen"));
344         BoxSizer8->Add(bOpen, 0, wxEXPAND|wxALIGN_LEFT|wxALIGN_TOP, 0);
345         bOpenManual = new wxButton(this, ID_bOpenManual, _("Open Manual"), wxDefaultPosition, wxDefaultSize, 0, wxDefaultValidator, _T("ID_bOpenManual"));
346         BoxSizer8->Add(bOpenManual, 0, wxEXPAND|wxALIGN_LEFT|wxALIGN_TOP, 0);
347         bOpenShaftDoor = new wxButton(this, ID_bOpenShaftDoor, _("Open Shaft Doors"), wxDefaultPosition, wxDefaultSize, 0, wxDefaultValidator, _T("ID_bOpenShaftDoor"));
348         BoxSizer8->Add(bOpenShaftDoor, 1, wxEXPAND|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5);
349         bStop = new wxButton(this, ID_bStop, _("Emerg. Stop"), wxDefaultPosition, wxDefaultSize, 0, wxDefaultValidator, _T("ID_bStop"));
350         BoxSizer8->Add(bStop, 0, wxEXPAND|wxALIGN_LEFT|wxALIGN_TOP, 0);
351         bChime = new wxButton(this, ID_bChime, _("Chime"), wxDefaultPosition, wxDefaultSize, 0, wxDefaultValidator, _T("ID_bChime"));
352         BoxSizer8->Add(bChime, 1, wxEXPAND|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5);
353         bUpIndicator = new wxButton(this, ID_bUpIndicator, _("Set Up Indicator"), wxDefaultPosition, wxDefaultSize, 0, wxDefaultValidator, _T("ID_bUpIndicator"));
354         BoxSizer8->Add(bUpIndicator, 1, wxEXPAND|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5);
355         StaticBoxSizer1->Add(BoxSizer8, 1, wxALL|wxALIGN_LEFT|wxALIGN_TOP, 0);
356         BoxSizer9 = new wxBoxSizer(wxVERTICAL);
357         bEnqueueUp = new wxButton(this, ID_bEnqueueUp, _("Enqueue Up"), wxDefaultPosition, wxDefaultSize, 0, wxDefaultValidator, _T("ID_bEnqueueUp"));
358         BoxSizer9->Add(bEnqueueUp, 0, wxEXPAND|wxALIGN_LEFT|wxALIGN_TOP, 0);
359         bEnqueueDown = new wxButton(this, ID_bEnqueueDown, _("Enqueue Down"), wxDefaultPosition, wxDefaultSize, 0, wxDefaultValidator, _T("ID_bEnqueueDown"));
360         BoxSizer9->Add(bEnqueueDown, 0, wxEXPAND|wxALIGN_LEFT|wxALIGN_TOP, 0);
361         bClose = new wxButton(this, ID_bClose, _("Close"), wxDefaultPosition, wxDefaultSize, 0, wxDefaultValidator, _T("ID_bClose"));
362         BoxSizer9->Add(bClose, 0, wxEXPAND|wxALIGN_LEFT|wxALIGN_TOP, 0);
363         bCloseManual = new wxButton(this, ID_bCloseManual, _("Close Manual"), wxDefaultPosition, wxDefaultSize, 0, wxDefaultValidator, _T("ID_bCloseManual"));
364         BoxSizer9->Add(bCloseManual, 0, wxEXPAND|wxALIGN_LEFT|wxALIGN_TOP, 0);
365         bCloseShaftDoor = new wxButton(this, ID_bCloseShaftDoor, _("Close Shaft Doors"), wxDefaultPosition, wxDefaultSize, 0, wxDefaultValidator, _T("ID_bCloseShaftDoor"));
366         BoxSizer9->Add(bCloseShaftDoor, 1, wxEXPAND|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5);
367         bAlarm = new wxButton(this, ID_bAlarm, _("Alarm"), wxDefaultPosition, wxDefaultSize, 0, wxDefaultValidator, _T("ID_bAlarm"));
368         BoxSizer9->Add(bAlarm, 0, wxEXPAND|wxALIGN_LEFT|wxALIGN_TOP, 0);
369         bStopDoors = new wxButton(this, ID_bStopDoors, _("Stop Doors"), wxDefaultPosition, wxDefaultSize, 0, wxDefaultValidator, _T("ID_bStopDoors"));
370         BoxSizer9->Add(bStopDoors, 1, wxEXPAND|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5);
371         bDownIndicator = new wxButton(this, ID_bDownIndicator, _("Set Down Indicator"), wxDefaultPosition, wxDefaultSize, 0, wxDefaultValidator, _T("ID_bDownIndicator"));
372         BoxSizer9->Add(bDownIndicator, 1, wxEXPAND|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5);
373         StaticBoxSizer1->Add(BoxSizer9, 1, wxALL|wxALIGN_LEFT|wxALIGN_TOP, 0);
374         BoxSizer2->Add(StaticBoxSizer1, 1, wxRIGHT|wxALIGN_RIGHT|wxALIGN_TOP, 5);
375         BoxSizer1->Add(BoxSizer2, 0, wxEXPAND|wxALIGN_LEFT|wxALIGN_TOP, 0);
376         BoxSizer3 = new wxBoxSizer(wxHORIZONTAL);
377         StaticBoxSizer2 = new wxStaticBoxSizer(wxHORIZONTAL, this, _("General"));
378         FlexGridSizer1 = new wxFlexGridSizer(0, 3, 0, 0);
379         StaticText3 = new wxStaticText(this, ID_STATICTEXT3, _("Number:"), wxDefaultPosition, wxDefaultSize, 0, _T("ID_STATICTEXT3"));
380         FlexGridSizer1->Add(StaticText3, 0, wxALL|wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL, 0);
381         txtNumber = new wxTextCtrl(this, ID_txtNumber, wxEmptyString, wxDefaultPosition, wxSize(75,-1), wxTE_READONLY, wxDefaultValidator, _T("ID_txtNumber"));
382         FlexGridSizer1->Add(txtNumber, 0, wxLEFT|wxRIGHT|wxALIGN_LEFT|wxALIGN_TOP, 5);
383         FlexGridSizer1->Add(-1,-1,0, wxALL|wxALIGN_LEFT|wxALIGN_TOP, 0);
384         StaticText5 = new wxStaticText(this, ID_STATICTEXT5, _("Name:"), wxDefaultPosition, wxDefaultSize, 0, _T("ID_STATICTEXT5"));
385         FlexGridSizer1->Add(StaticText5, 0, wxALL|wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL, 0);
386         txtName = new wxTextCtrl(this, ID_txtName, wxEmptyString, wxDefaultPosition, wxSize(75,-1), 0, wxDefaultValidator, _T("ID_txtName"));
387         FlexGridSizer1->Add(txtName, 0, wxLEFT|wxRIGHT|wxALIGN_LEFT|wxALIGN_TOP, 5);
388         bSetName = new wxButton(this, ID_bSetName, _("Set"), wxDefaultPosition, wxDefaultSize, wxBU_EXACTFIT, wxDefaultValidator, _T("ID_bSetName"));
389         FlexGridSizer1->Add(bSetName, 0, wxALL|wxALIGN_RIGHT|wxALIGN_CENTER_VERTICAL, 0);
390         StaticText4 = new wxStaticText(this, ID_STATICTEXT4, _("Enabled:"), wxDefaultPosition, wxDefaultSize, 0, _T("ID_STATICTEXT4"));
391         FlexGridSizer1->Add(StaticText4, 0, wxALL|wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL, 0);
392         txtEnabled = new wxTextCtrl(this, ID_txtEnabled, wxEmptyString, wxDefaultPosition, wxSize(75,-1), wxTE_READONLY, wxDefaultValidator, _T("ID_txtEnabled"));
393         FlexGridSizer1->Add(txtEnabled, 0, wxLEFT|wxRIGHT|wxALIGN_LEFT|wxALIGN_TOP, 5);
394         FlexGridSizer1->Add(-1,-1,0, wxALL|wxALIGN_LEFT|wxALIGN_TOP, 0);
395         StaticText6 = new wxStaticText(this, ID_STATICTEXT6, _("Shaft:"), wxDefaultPosition, wxDefaultSize, 0, _T("ID_STATICTEXT6"));
396         FlexGridSizer1->Add(StaticText6, 0, wxALL|wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL, 0);
397         txtShaft = new wxTextCtrl(this, ID_txtShaft, wxEmptyString, wxDefaultPosition, wxSize(75,-1), wxTE_READONLY, wxDefaultValidator, _T("ID_txtShaft"));
398         FlexGridSizer1->Add(txtShaft, 0, wxLEFT|wxRIGHT|wxALIGN_LEFT|wxALIGN_TOP, 5);
399         FlexGridSizer1->Add(-1,-1,0, wxALL|wxALIGN_LEFT|wxALIGN_TOP, 0);
400         StaticText7 = new wxStaticText(this, ID_STATICTEXT7, _("Height:"), wxDefaultPosition, wxDefaultSize, 0, _T("ID_STATICTEXT7"));
401         FlexGridSizer1->Add(StaticText7, 0, wxALL|wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL, 0);
402         txtHeight = new wxTextCtrl(this, ID_txtHeight, wxEmptyString, wxDefaultPosition, wxSize(75,-1), wxTE_READONLY, wxDefaultValidator, _T("ID_txtHeight"));
403         FlexGridSizer1->Add(txtHeight, 0, wxLEFT|wxRIGHT|wxALIGN_LEFT|wxALIGN_TOP, 5);
404         FlexGridSizer1->Add(-1,-1,0, wxALL|wxALIGN_LEFT|wxALIGN_TOP, 0);
405         StaticText8 = new wxStaticText(this, ID_STATICTEXT8, _("DWidth:"), wxDefaultPosition, wxDefaultSize, 0, _T("ID_STATICTEXT8"));
406         FlexGridSizer1->Add(StaticText8, 0, wxALL|wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL, 0);
407         txtDoorWidth = new wxTextCtrl(this, ID_txtDoorWidth, wxEmptyString, wxDefaultPosition, wxSize(75,-1), wxTE_READONLY, wxDefaultValidator, _T("ID_txtDoorWidth"));
408         txtDoorWidth->SetToolTip(_("Door Width"));
409         FlexGridSizer1->Add(txtDoorWidth, 0, wxLEFT|wxRIGHT|wxALIGN_LEFT|wxALIGN_TOP, 5);
410         FlexGridSizer1->Add(-1,-1,0, wxALL|wxALIGN_LEFT|wxALIGN_TOP, 0);
411         StaticText9 = new wxStaticText(this, ID_STATICTEXT9, _("DHeight:"), wxDefaultPosition, wxDefaultSize, 0, _T("ID_STATICTEXT9"));
412         FlexGridSizer1->Add(StaticText9, 0, wxALL|wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL, 0);
413         txtDoorHeight = new wxTextCtrl(this, ID_txtDoorHeight, wxEmptyString, wxPoint(-1,75), wxSize(75,-1), wxTE_READONLY, wxDefaultValidator, _T("ID_txtDoorHeight"));
414         txtDoorHeight->SetToolTip(_("Door Height"));
415         FlexGridSizer1->Add(txtDoorHeight, 0, wxLEFT|wxRIGHT|wxALIGN_LEFT|wxALIGN_TOP, 5);
416         FlexGridSizer1->Add(-1,-1,0, wxALL|wxALIGN_LEFT|wxALIGN_TOP, 0);
417         StaticText10 = new wxStaticText(this, ID_STATICTEXT10, _("DDirection:"), wxDefaultPosition, wxDefaultSize, 0, _T("ID_STATICTEXT10"));
418         FlexGridSizer1->Add(StaticText10, 0, wxALL|wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL, 0);
419         txtDoorDirection = new wxTextCtrl(this, ID_txtDoorDirection, wxEmptyString, wxDefaultPosition, wxSize(75,-1), wxTE_READONLY, wxDefaultValidator, _T("ID_txtDoorDirection"));
420         txtDoorDirection->SetToolTip(_("Door Direction"));
421         FlexGridSizer1->Add(txtDoorDirection, 0, wxLEFT|wxRIGHT|wxALIGN_LEFT|wxALIGN_TOP, 5);
422         FlexGridSizer1->Add(-1,-1,0, wxALL|wxALIGN_LEFT|wxALIGN_TOP, 0);
423         StaticText11 = new wxStaticText(this, ID_STATICTEXT11, _("DoorsOpen:"), wxDefaultPosition, wxDefaultSize, 0, _T("ID_STATICTEXT11"));
424         FlexGridSizer1->Add(StaticText11, 0, wxALL|wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL, 0);
425         txtDoorsOpen = new wxTextCtrl(this, ID_txtDoorsOpen, wxEmptyString, wxDefaultPosition, wxSize(75,-1), wxTE_READONLY, wxDefaultValidator, _T("ID_txtDoorsOpen"));
426         FlexGridSizer1->Add(txtDoorsOpen, 0, wxLEFT|wxRIGHT|wxALIGN_LEFT|wxALIGN_TOP, 5);
427         FlexGridSizer1->Add(-1,-1,0, wxALL|wxALIGN_LEFT|wxALIGN_TOP, 0);
428         StaticText12 = new wxStaticText(this, ID_STATICTEXT12, _("Brakes:"), wxDefaultPosition, wxDefaultSize, 0, _T("ID_STATICTEXT12"));
429         FlexGridSizer1->Add(StaticText12, 0, wxALL|wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL, 0);
430         txtBrakes = new wxTextCtrl(this, ID_txtBrakes, wxEmptyString, wxDefaultPosition, wxSize(75,-1), wxTE_READONLY, wxDefaultValidator, _T("ID_txtBrakes"));
431         FlexGridSizer1->Add(txtBrakes, 0, wxLEFT|wxRIGHT|wxALIGN_LEFT|wxALIGN_TOP, 5);
432         FlexGridSizer1->Add(-1,-1,0, wxALL|wxALIGN_LEFT|wxALIGN_TOP, 0);
433         StaticText13 = new wxStaticText(this, ID_STATICTEXT13, _("EmergStop:"), wxDefaultPosition, wxDefaultSize, 0, _T("ID_STATICTEXT13"));
434         FlexGridSizer1->Add(StaticText13, 0, wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL, 0);
435         txtStop = new wxTextCtrl(this, ID_txtStop, wxEmptyString, wxDefaultPosition, wxSize(75,-1), wxTE_READONLY, wxDefaultValidator, _T("ID_txtStop"));
436         txtStop->SetToolTip(_("Emergency Stop"));
437         FlexGridSizer1->Add(txtStop, 0, wxLEFT|wxRIGHT|wxALIGN_LEFT|wxALIGN_TOP, 5);
438         FlexGridSizer1->Add(-1,-1,0, wxALL|wxALIGN_LEFT|wxALIGN_TOP, 0);
439         StaticText42 = new wxStaticText(this, ID_STATICTEXT42, _("DoorTimer:"), wxDefaultPosition, wxDefaultSize, 0, _T("ID_STATICTEXT42"));
440         FlexGridSizer1->Add(StaticText42, 1, wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL, 5);
441         txtDoorTimer = new wxTextCtrl(this, ID_txtDoorTimer, wxEmptyString, wxDefaultPosition, wxSize(75,-1), 0, wxDefaultValidator, _T("ID_txtDoorTimer"));
442         FlexGridSizer1->Add(txtDoorTimer, 1, wxLEFT|wxRIGHT|wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL, 5);
443         bSetDoorTimer = new wxButton(this, ID_bSetDoorTimer, _("Set"), wxDefaultPosition, wxDefaultSize, wxBU_EXACTFIT, wxDefaultValidator, _T("ID_bSetDoorTimer"));
444         FlexGridSizer1->Add(bSetDoorTimer, 1, wxALIGN_RIGHT|wxALIGN_CENTER_VERTICAL, 5);
445         StaticText61 = new wxStaticText(this, ID_STATICTEXT61, _("QuickClose:"), wxDefaultPosition, wxDefaultSize, 0, _T("ID_STATICTEXT61"));
446         FlexGridSizer1->Add(StaticText61, 1, wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL, 5);
447         txtQuickClose = new wxTextCtrl(this, ID_txtQuickClose, wxEmptyString, wxDefaultPosition, wxSize(75,-1), 0, wxDefaultValidator, _T("ID_txtQuickClose"));
448         FlexGridSizer1->Add(txtQuickClose, 1, wxLEFT|wxRIGHT|wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL, 5);
449         bSetQuickClose = new wxButton(this, ID_bSetQuickClose, _("Set"), wxDefaultPosition, wxDefaultSize, wxBU_EXACTFIT, wxDefaultValidator, _T("ID_bSetQuickClose"));
450         FlexGridSizer1->Add(bSetQuickClose, 1, wxALIGN_RIGHT|wxALIGN_CENTER_VERTICAL, 5);
451         StaticText32 = new wxStaticText(this, ID_STATICTEXT32, _("UseFlrSkip:"), wxDefaultPosition, wxDefaultSize, 0, _T("ID_STATICTEXT32"));
452         FlexGridSizer1->Add(StaticText32, 1, wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL, 5);
453         txtUseSkipFloor = new wxTextCtrl(this, ID_txtUseSkipFloor, wxEmptyString, wxDefaultPosition, wxSize(75,-1), wxTE_READONLY, wxDefaultValidator, _T("ID_txtUseSkipFloor"));
454         txtUseSkipFloor->SetToolTip(_("Use Floor Skip Text"));
455         FlexGridSizer1->Add(txtUseSkipFloor, 1, wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5);
456         FlexGridSizer1->Add(-1,-1,1, wxALIGN_LEFT|wxALIGN_TOP, 5);
457         StaticText44 = new wxStaticText(this, ID_STATICTEXT44, _("FlrSkipTxt:"), wxDefaultPosition, wxDefaultSize, 0, _T("ID_STATICTEXT44"));
458         FlexGridSizer1->Add(StaticText44, 1, wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL, 5);
459         txtSkipFloorText = new wxTextCtrl(this, ID_txtSkipFloorText, wxEmptyString, wxDefaultPosition, wxSize(75,-1), 0, wxDefaultValidator, _T("ID_txtSkipFloorText"));
460         txtSkipFloorText->SetToolTip(_("Floor Skip Text"));
461         FlexGridSizer1->Add(txtSkipFloorText, 1, wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5);
462         bSetSkipFloorText = new wxButton(this, ID_bSetSkipFloorText, _("Set"), wxDefaultPosition, wxDefaultSize, wxBU_EXACTFIT, wxDefaultValidator, _T("ID_bSetSkipFloorText"));
463         FlexGridSizer1->Add(bSetSkipFloorText, 1, wxALIGN_RIGHT|wxALIGN_CENTER_VERTICAL, 5);
464         StaticText52 = new wxStaticText(this, ID_STATICTEXT52, _("Alarm On:"), wxDefaultPosition, wxDefaultSize, 0, _T("ID_STATICTEXT52"));
465         FlexGridSizer1->Add(StaticText52, 1, wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL, 5);
466         txtAlarm = new wxTextCtrl(this, ID_txtAlarm, wxEmptyString, wxDefaultPosition, wxSize(75,-1), 0, wxDefaultValidator, _T("ID_txtAlarm"));
467         FlexGridSizer1->Add(txtAlarm, 1, wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5);
468         FlexGridSizer1->Add(-1,-1,1, wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL, 5);
469         StaticText28 = new wxStaticText(this, ID_STATICTEXT28, _("WaitDoors:"), wxDefaultPosition, wxDefaultSize, 0, _T("ID_STATICTEXT28"));
470         FlexGridSizer1->Add(StaticText28, 1, wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL, 5);
471         txtWaitForDoors = new wxTextCtrl(this, ID_txtWaitForDoors, wxEmptyString, wxDefaultPosition, wxSize(75,-1), 0, wxDefaultValidator, _T("ID_txtWaitForDoors"));
472         txtWaitForDoors->SetToolTip(_("Wait for Doors"));
473         FlexGridSizer1->Add(txtWaitForDoors, 1, wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5);
474         FlexGridSizer1->Add(-1,-1,1, wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL, 5);
475         StaticText67 = new wxStaticText(this, ID_STATICTEXT67, _("Nudge:"), wxDefaultPosition, wxDefaultSize, 0, _T("ID_STATICTEXT67"));
476         FlexGridSizer1->Add(StaticText67, 1, wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL, 5);
477         txtNudgeMode = new wxTextCtrl(this, ID_txtNudgeMode, wxEmptyString, wxDefaultPosition, wxSize(75,-1), 0, wxDefaultValidator, _T("ID_txtNudgeMode"));
478         txtNudgeMode->SetToolTip(_("Nudge Mode"));
479         FlexGridSizer1->Add(txtNudgeMode, 1, wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5);
480         FlexGridSizer1->Add(-1,-1,1, wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL, 5);
481         StaticBoxSizer2->Add(FlexGridSizer1, 0, wxALL|wxALIGN_LEFT|wxALIGN_TOP, 0);
482         BoxSizer3->Add(StaticBoxSizer2, 0, wxBOTTOM|wxLEFT|wxRIGHT|wxALIGN_TOP|wxALIGN_CENTER_HORIZONTAL, 5);
483         BoxSizer10 = new wxBoxSizer(wxVERTICAL);
484         StaticBoxSizer5 = new wxStaticBoxSizer(wxHORIZONTAL, this, _("Position"));
485         FlexGridSizer2 = new wxFlexGridSizer(0, 2, 0, 0);
486         StaticText14 = new wxStaticText(this, ID_STATICTEXT14, _("Floor:"), wxDefaultPosition, wxDefaultSize, 0, _T("ID_STATICTEXT14"));
487         FlexGridSizer2->Add(StaticText14, 0, wxALL|wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL, 0);
488         txtFloor = new wxTextCtrl(this, ID_txtFloor, wxEmptyString, wxDefaultPosition, wxSize(75,-1), wxTE_READONLY, wxDefaultValidator, _T("ID_txtFloor"));
489         FlexGridSizer2->Add(txtFloor, 0, wxLEFT|wxRIGHT|wxALIGN_LEFT|wxALIGN_TOP, 5);
490         StaticText15 = new wxStaticText(this, ID_STATICTEXT15, _("Pos:"), wxDefaultPosition, wxDefaultSize, 0, _T("ID_STATICTEXT15"));
491         FlexGridSizer2->Add(StaticText15, 0, wxALL|wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL, 0);
492         txtPosition = new wxTextCtrl(this, ID_txtPosition, wxEmptyString, wxDefaultPosition, wxSize(75,-1), wxTE_READONLY, wxDefaultValidator, _T("ID_txtPosition"));
493         txtPosition->SetToolTip(_("Position"));
494         FlexGridSizer2->Add(txtPosition, 0, wxLEFT|wxRIGHT|wxALIGN_LEFT|wxALIGN_TOP, 5);
495         StaticText16 = new wxStaticText(this, ID_STATICTEXT16, _("Origin:"), wxDefaultPosition, wxDefaultSize, 0, _T("ID_STATICTEXT16"));
496         FlexGridSizer2->Add(StaticText16, 0, wxALL|wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL, 0);
497         txtOrigin = new wxTextCtrl(this, ID_txtOrigin, wxEmptyString, wxDefaultPosition, wxSize(75,-1), wxTE_READONLY, wxDefaultValidator, _T("ID_txtOrigin"));
498         FlexGridSizer2->Add(txtOrigin, 0, wxLEFT|wxRIGHT|wxALIGN_LEFT|wxALIGN_TOP, 5);
499         StaticText17 = new wxStaticText(this, ID_STATICTEXT17, _("OriginFlr:"), wxDefaultPosition, wxDefaultSize, 0, _T("ID_STATICTEXT17"));
500         FlexGridSizer2->Add(StaticText17, 0, wxALL|wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL, 0);
501         txtOriginFloor = new wxTextCtrl(this, ID_txtOriginFloor, wxEmptyString, wxDefaultPosition, wxSize(75,-1), wxTE_READONLY, wxDefaultValidator, _T("ID_txtOriginFloor"));
502         txtOriginFloor->SetToolTip(_("Origin Floor"));
503         FlexGridSizer2->Add(txtOriginFloor, 0, wxLEFT|wxRIGHT|wxALIGN_LEFT|wxALIGN_TOP, 5);
504         StaticText18 = new wxStaticText(this, ID_STATICTEXT18, _("EStart:"), wxDefaultPosition, wxDefaultSize, 0, _T("ID_STATICTEXT18"));
505         FlexGridSizer2->Add(StaticText18, 0, wxALL|wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL, 0);
506         txtElevStart = new wxTextCtrl(this, ID_txtElevStart, wxEmptyString, wxDefaultPosition, wxSize(75,-1), wxTE_READONLY, wxDefaultValidator, _T("ID_txtElevStart"));
507         txtElevStart->SetToolTip(_("Elevator Start"));
508         FlexGridSizer2->Add(txtElevStart, 0, wxLEFT|wxRIGHT|wxALIGN_LEFT|wxALIGN_TOP, 5);
509         StaticText19 = new wxStaticText(this, ID_STATICTEXT19, _("DOrigin:"), wxDefaultPosition, wxDefaultSize, 0, _T("ID_STATICTEXT19"));
510         FlexGridSizer2->Add(StaticText19, 0, wxALL|wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL, 0);
511         txtDoorOrigin = new wxTextCtrl(this, ID_txtDoorOrigin, wxEmptyString, wxDefaultPosition, wxSize(75,-1), wxTE_READONLY, wxDefaultValidator, _T("ID_txtDoorOrigin"));
512         txtDoorOrigin->SetToolTip(_("Door Origin"));
513         FlexGridSizer2->Add(txtDoorOrigin, 0, wxLEFT|wxRIGHT|wxALIGN_LEFT|wxALIGN_TOP, 5);
514         StaticText20 = new wxStaticText(this, ID_STATICTEXT20, _("SDOrigin:"), wxDefaultPosition, wxDefaultSize, 0, _T("ID_STATICTEXT20"));
515         FlexGridSizer2->Add(StaticText20, 0, wxALL|wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL, 0);
516         txtShaftDoorOrigin = new wxTextCtrl(this, ID_txtShaftDoorOrigin, wxEmptyString, wxDefaultPosition, wxSize(75,-1), wxTE_READONLY, wxDefaultValidator, _T("ID_txtShaftDoorOrigin"));
517         txtShaftDoorOrigin->SetToolTip(_("Shaft Door Origin"));
518         FlexGridSizer2->Add(txtShaftDoorOrigin, 0, wxLEFT|wxRIGHT|wxALIGN_LEFT|wxALIGN_TOP, 5);
519         StaticText50 = new wxStaticText(this, ID_STATICTEXT50, _("OnFloor:"), wxDefaultPosition, wxDefaultSize, 0, _T("ID_STATICTEXT50"));
520         FlexGridSizer2->Add(StaticText50, 1, wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL, 5);
521         txtOnFloor = new wxTextCtrl(this, ID_txtOnFloor, wxEmptyString, wxDefaultPosition, wxSize(75,-1), wxTE_READONLY, wxDefaultValidator, _T("ID_txtOnFloor"));
522         FlexGridSizer2->Add(txtOnFloor, 1, wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5);
523         StaticText25 = new wxStaticText(this, ID_STATICTEXT25, _("Motor:"), wxDefaultPosition, wxDefaultSize, 0, _T("ID_STATICTEXT25"));
524         FlexGridSizer2->Add(StaticText25, 1, wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL, 5);
525         txtMotor = new wxTextCtrl(this, ID_txtMotor, wxEmptyString, wxDefaultPosition, wxSize(75,-1), wxTE_READONLY, wxDefaultValidator, _T("ID_txtMotor"));
526         FlexGridSizer2->Add(txtMotor, 1, wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5);
527         StaticText54 = new wxStaticText(this, ID_STATICTEXT54, _("Camera:"), wxDefaultPosition, wxDefaultSize, 0, _T("ID_STATICTEXT54"));
528         FlexGridSizer2->Add(StaticText54, 1, wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL, 5);
529         txtCameraOffset = new wxTextCtrl(this, ID_txtCameraOffset, wxEmptyString, wxDefaultPosition, wxSize(75,-1), wxTE_READONLY, wxDefaultValidator, _T("ID_txtCameraOffset"));
530         FlexGridSizer2->Add(txtCameraOffset, 1, wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5);
531         StaticBoxSizer5->Add(FlexGridSizer2, 0, wxALL|wxALIGN_LEFT|wxALIGN_TOP, 0);
532         BoxSizer10->Add(StaticBoxSizer5, 0, wxALL|wxALIGN_LEFT|wxALIGN_TOP, 0);
533         StaticBoxSizer3 = new wxStaticBoxSizer(wxHORIZONTAL, this, _("Queues"));
534         FlexGridSizer3 = new wxFlexGridSizer(0, 2, 0, 0);
535         StaticText38 = new wxStaticText(this, ID_STATICTEXT38, _("Direction:"), wxDefaultPosition, wxDefaultSize, 0, _T("ID_STATICTEXT38"));
536         FlexGridSizer3->Add(StaticText38, 0, wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL, 0);
537         txtQueueDirection = new wxTextCtrl(this, ID_txtQueueDirection, wxEmptyString, wxDefaultPosition, wxSize(75,-1), wxTE_READONLY, wxDefaultValidator, _T("ID_txtQueueDirection"));
538         txtQueueDirection->SetToolTip(_("Queue Direction"));
539         FlexGridSizer3->Add(txtQueueDirection, 0, wxLEFT|wxRIGHT|wxALIGN_LEFT|wxALIGN_TOP, 5);
540         StaticText40 = new wxStaticText(this, ID_STATICTEXT40, _("LastUp:"), wxDefaultPosition, wxDefaultSize, 0, _T("ID_STATICTEXT40"));
541         FlexGridSizer3->Add(StaticText40, 0, wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL, 0);
542         txtQueueLastUp = new wxTextCtrl(this, ID_txtQueueLastUp, wxEmptyString, wxDefaultPosition, wxSize(75,-1), wxTE_READONLY, wxDefaultValidator, _T("ID_txtQueueLastUp"));
543         txtQueueLastUp->SetToolTip(_("Queue Last Up"));
544         FlexGridSizer3->Add(txtQueueLastUp, 0, wxLEFT|wxRIGHT|wxALIGN_LEFT|wxALIGN_TOP, 5);
545         StaticText41 = new wxStaticText(this, ID_STATICTEXT41, _("LastDwn:"), wxDefaultPosition, wxDefaultSize, 0, _T("ID_STATICTEXT41"));
546         FlexGridSizer3->Add(StaticText41, 0, wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL, 0);
547         txtQueueLastDown = new wxTextCtrl(this, ID_txtQueueLastDown, wxEmptyString, wxDefaultPosition, wxSize(75,-1), wxTE_READONLY, wxDefaultValidator, _T("ID_txtQueueLastDown"));
548         txtQueueLastDown->SetToolTip(_("Queue Last Down"));
549         FlexGridSizer3->Add(txtQueueLastDown, 0, wxLEFT|wxRIGHT|wxALIGN_LEFT|wxALIGN_TOP, 5);
550         StaticText51 = new wxStaticText(this, ID_STATICTEXT51, _("Last:"), wxDefaultPosition, wxDefaultSize, 0, _T("ID_STATICTEXT51"));
551         FlexGridSizer3->Add(StaticText51, 1, wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL, 5);
552         txtQueueLastDirection = new wxTextCtrl(this, ID_txtQueueLastDirection, wxEmptyString, wxDefaultPosition, wxSize(75,-1), wxTE_READONLY, wxDefaultValidator, _T("ID_txtQueueLastDirection"));
553         txtQueueLastDirection->SetToolTip(_("Queue Last Direction"));
554         FlexGridSizer3->Add(txtQueueLastDirection, 1, wxLEFT|wxRIGHT|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5);
555         FlexGridSizer3->Add(-1,-1,1, wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5);
556         bResetQueues = new wxButton(this, ID_bResetQueues, _("Reset"), wxDefaultPosition, wxDefaultSize, 0, wxDefaultValidator, _T("ID_bResetQueues"));
557         FlexGridSizer3->Add(bResetQueues, 1, wxTOP|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5);
558         StaticBoxSizer3->Add(FlexGridSizer3, 0, wxALL|wxALIGN_LEFT|wxALIGN_TOP, 0);
559         BoxSizer10->Add(StaticBoxSizer3, 0, wxALL|wxALIGN_LEFT|wxALIGN_TOP, 0);
560         BoxSizer3->Add(BoxSizer10, 0, wxBOTTOM|wxRIGHT|wxALIGN_LEFT|wxALIGN_TOP, 5);
561         StaticBoxSizer7 = new wxStaticBoxSizer(wxHORIZONTAL, this, _("Motion"));
562         FlexGridSizer6 = new wxFlexGridSizer(0, 3, 0, 0);
563         StaticText21 = new wxStaticText(this, ID_STATICTEXT21, _("Speed:"), wxDefaultPosition, wxDefaultSize, 0, _T("ID_STATICTEXT21"));
564         FlexGridSizer6->Add(StaticText21, 0, wxALL|wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL, 0);
565         txtSpeed = new wxTextCtrl(this, ID_txtSpeed, wxEmptyString, wxDefaultPosition, wxSize(75,-1), 0, wxDefaultValidator, _T("ID_txtSpeed"));
566         FlexGridSizer6->Add(txtSpeed, 0, wxLEFT|wxRIGHT|wxALIGN_LEFT|wxALIGN_TOP, 5);
567         bSetSpeed = new wxButton(this, ID_bSetSpeed, _("Set"), wxDefaultPosition, wxDefaultSize, wxBU_EXACTFIT, wxDefaultValidator, _T("ID_bSetSpeed"));
568         FlexGridSizer6->Add(bSetSpeed, 0, wxALL|wxALIGN_RIGHT|wxALIGN_TOP, 0);
569         StaticText22 = new wxStaticText(this, ID_STATICTEXT22, _("Accel:"), wxDefaultPosition, wxDefaultSize, 0, _T("ID_STATICTEXT22"));
570         FlexGridSizer6->Add(StaticText22, 0, wxALL|wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL, 0);
571         txtAcceleration = new wxTextCtrl(this, ID_txtAcceleration, wxEmptyString, wxDefaultPosition, wxSize(75,-1), 0, wxDefaultValidator, _T("ID_txtAcceleration"));
572         txtAcceleration->SetToolTip(_("Acceleration"));
573         FlexGridSizer6->Add(txtAcceleration, 0, wxLEFT|wxRIGHT|wxALIGN_LEFT|wxALIGN_TOP, 5);
574         bSetAcceleration = new wxButton(this, ID_bSetAcceleration, _("Set"), wxDefaultPosition, wxDefaultSize, wxBU_EXACTFIT, wxDefaultValidator, _T("ID_bSetAcceleration"));
575         FlexGridSizer6->Add(bSetAcceleration, 0, wxALL|wxALIGN_RIGHT|wxALIGN_TOP, 0);
576         StaticText23 = new wxStaticText(this, ID_STATICTEXT23, _("Decel:"), wxDefaultPosition, wxDefaultSize, 0, _T("ID_STATICTEXT23"));
577         FlexGridSizer6->Add(StaticText23, 0, wxALL|wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL, 0);
578         txtDeceleration = new wxTextCtrl(this, ID_txtDeceleration, wxEmptyString, wxDefaultPosition, wxSize(75,-1), 0, wxDefaultValidator, _T("ID_txtDeceleration"));
579         txtDeceleration->SetToolTip(_("Deceleration"));
580         FlexGridSizer6->Add(txtDeceleration, 0, wxLEFT|wxRIGHT|wxALIGN_LEFT|wxALIGN_TOP, 5);
581         bSetDeceleration = new wxButton(this, ID_bSetDeceleration, _("Set"), wxDefaultPosition, wxDefaultSize, wxBU_EXACTFIT, wxDefaultValidator, _T("ID_bSetDeceleration"));
582         FlexGridSizer6->Add(bSetDeceleration, 0, wxALL|wxALIGN_RIGHT|wxALIGN_TOP, 0);
583         StaticText1 = new wxStaticText(this, ID_STATICTEXT1, _("AccelJerk:"), wxDefaultPosition, wxDefaultSize, 0, _T("ID_STATICTEXT1"));
584         FlexGridSizer6->Add(StaticText1, 1, wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL, 5);
585         txtAccelJerk = new wxTextCtrl(this, ID_txtAccelJerk, wxEmptyString, wxDefaultPosition, wxSize(75,-1), 0, wxDefaultValidator, _T("ID_txtAccelJerk"));
586         txtAccelJerk->SetToolTip(_("Acceleration Jerk Rate"));
587         FlexGridSizer6->Add(txtAccelJerk, 1, wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5);
588         bSetAccelJerk = new wxButton(this, ID_bSetAccelJerk, _("Set"), wxDefaultPosition, wxDefaultSize, wxBU_EXACTFIT, wxDefaultValidator, _T("ID_bSetAccelJerk"));
589         FlexGridSizer6->Add(bSetAccelJerk, 1, wxALIGN_RIGHT|wxALIGN_CENTER_VERTICAL, 5);
590         StaticText29 = new wxStaticText(this, ID_STATICTEXT29, _("DecelJerk:"), wxDefaultPosition, wxDefaultSize, 0, _T("ID_STATICTEXT29"));
591         FlexGridSizer6->Add(StaticText29, 1, wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL, 5);
592         txtDecelJerk = new wxTextCtrl(this, ID_txtDecelJerk, wxEmptyString, wxDefaultPosition, wxSize(75,-1), 0, wxDefaultValidator, _T("ID_txtDecelJerk"));
593         txtDecelJerk->SetToolTip(_("Deceleration Jerk Rate"));
594         FlexGridSizer6->Add(txtDecelJerk, 1, wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5);
595         bSetDecelJerk = new wxButton(this, ID_bSetDecelJerk, _("Set"), wxDefaultPosition, wxDefaultSize, wxBU_EXACTFIT, wxDefaultValidator, _T("ID_bSetDecelJerk"));
596         FlexGridSizer6->Add(bSetDecelJerk, 1, wxALIGN_RIGHT|wxALIGN_CENTER_VERTICAL, 5);
597         StaticText26 = new wxStaticText(this, ID_STATICTEXT26, _("Rate:"), wxDefaultPosition, wxDefaultSize, 0, _T("ID_STATICTEXT26"));
598         FlexGridSizer6->Add(StaticText26, 0, wxALL|wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL, 0);
599         txtRate = new wxTextCtrl(this, ID_txtRate, wxEmptyString, wxDefaultPosition, wxSize(75,-1), wxTE_READONLY, wxDefaultValidator, _T("ID_txtRate"));
600         FlexGridSizer6->Add(txtRate, 0, wxLEFT|wxRIGHT|wxALIGN_LEFT|wxALIGN_TOP, 5);
601         FlexGridSizer6->Add(-1,-1,0, wxALL|wxALIGN_LEFT|wxALIGN_TOP, 0);
602         StaticText27 = new wxStaticText(this, ID_STATICTEXT27, _("Direction:"), wxDefaultPosition, wxDefaultSize, 0, _T("ID_STATICTEXT27"));
603         FlexGridSizer6->Add(StaticText27, 0, wxALL|wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL, 0);
604         txtDirection = new wxTextCtrl(this, ID_txtDirection, wxEmptyString, wxDefaultPosition, wxSize(75,-1), wxTE_READONLY, wxDefaultValidator, _T("ID_txtDirection"));
605         FlexGridSizer6->Add(txtDirection, 0, wxLEFT|wxRIGHT|wxALIGN_LEFT|wxALIGN_TOP, 5);
606         FlexGridSizer6->Add(-1,-1,0, wxALL|wxALIGN_LEFT|wxALIGN_TOP, 0);
607         StaticText2 = new wxStaticText(this, ID_STATICTEXT2, _("JerkRate:"), wxDefaultPosition, wxDefaultSize, 0, _T("ID_STATICTEXT2"));
608         FlexGridSizer6->Add(StaticText2, 1, wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL, 5);
609         txtJerkRate = new wxTextCtrl(this, ID_txtJerkRate, wxEmptyString, wxDefaultPosition, wxSize(75,-1), wxTE_READONLY, wxDefaultValidator, _T("ID_txtJerkRate"));
610         FlexGridSizer6->Add(txtJerkRate, 1, wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5);
611         FlexGridSizer6->Add(-1,-1,1, wxALIGN_LEFT|wxALIGN_TOP, 5);
612         StaticText49 = new wxStaticText(this, ID_STATICTEXT49, _("DStopped:"), wxDefaultPosition, wxDefaultSize, 0, _T("ID_STATICTEXT49"));
613         FlexGridSizer6->Add(StaticText49, 1, wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL, 5);
614         txtDoorStopped = new wxTextCtrl(this, ID_txtDoorStopped, wxEmptyString, wxDefaultPosition, wxSize(75,-1), wxTE_READONLY, wxDefaultValidator, _T("ID_txtDoorStopped"));
615         txtDoorStopped->SetToolTip(_("Door Stopped"));
616         FlexGridSizer6->Add(txtDoorStopped, 1, wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5);
617         FlexGridSizer6->Add(-1,-1,1, wxALIGN_LEFT|wxALIGN_TOP, 5);
618         StaticText53 = new wxStaticText(this, ID_STATICTEXT53, _("IsIdle:"), wxDefaultPosition, wxDefaultSize, 0, _T("ID_STATICTEXT53"));
619         FlexGridSizer6->Add(StaticText53, 1, wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL, 5);
620         txtIsIdle = new wxTextCtrl(this, ID_txtIsIdle, wxEmptyString, wxDefaultPosition, wxSize(75,-1), wxTE_READONLY, wxDefaultValidator, _T("ID_txtIsIdle"));
621         FlexGridSizer6->Add(txtIsIdle, 1, wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5);
622         FlexGridSizer6->Add(-1,-1,1, wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL, 5);
623         StaticText24 = new wxStaticText(this, ID_STATICTEXT24, _("Manual:"), wxDefaultPosition, wxDefaultSize, 0, _T("ID_STATICTEXT24"));
624         FlexGridSizer6->Add(StaticText24, 1, wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL, 5);
625         txtManualGo = new wxTextCtrl(this, ID_txtManualGo, wxEmptyString, wxDefaultPosition, wxSize(75,-1), wxTE_READONLY, wxDefaultValidator, _T("ID_txtManualGo"));
626         FlexGridSizer6->Add(txtManualGo, 1, wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5);
627         FlexGridSizer6->Add(-1,-1,1, wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL, 5);
628         StaticText55 = new wxStaticText(this, ID_STATICTEXT55, _("Leveling:"), wxDefaultPosition, wxDefaultSize, 0, _T("ID_STATICTEXT55"));
629         FlexGridSizer6->Add(StaticText55, 1, wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL, 5);
630         txtLeveling = new wxTextCtrl(this, ID_txtLeveling, wxEmptyString, wxDefaultPosition, wxSize(75,-1), wxTE_READONLY, wxDefaultValidator, _T("ID_txtLeveling"));
631         FlexGridSizer6->Add(txtLeveling, 1, wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5);
632         FlexGridSizer6->Add(-1,-1,1, wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL, 5);
633         StaticText56 = new wxStaticText(this, ID_STATICTEXT56, _("LevSpeed:"), wxDefaultPosition, wxDefaultSize, 0, _T("ID_STATICTEXT56"));
634         FlexGridSizer6->Add(StaticText56, 1, wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL, 5);
635         txtLevelingSpeed = new wxTextCtrl(this, ID_txtLevelingSpeed, wxEmptyString, wxDefaultPosition, wxSize(75,-1), 0, wxDefaultValidator, _T("ID_txtLevelingSpeed"));
636         txtLevelingSpeed->SetToolTip(_("Leveling Speed"));
637         FlexGridSizer6->Add(txtLevelingSpeed, 1, wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5);
638         bSetLevelingSpeed = new wxButton(this, ID_bSetLevelingSpeed, _("Set"), wxDefaultPosition, wxDefaultSize, wxBU_EXACTFIT, wxDefaultValidator, _T("ID_bSetLevelingSpeed"));
639         FlexGridSizer6->Add(bSetLevelingSpeed, 1, wxALIGN_RIGHT|wxALIGN_CENTER_VERTICAL, 5);
640         StaticText57 = new wxStaticText(this, ID_STATICTEXT57, _("LvOffset:"), wxDefaultPosition, wxDefaultSize, 0, _T("ID_STATICTEXT57"));
641         FlexGridSizer6->Add(StaticText57, 1, wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL, 5);
642         txtLevelingOffset = new wxTextCtrl(this, ID_txtLevelingOffset, wxEmptyString, wxDefaultPosition, wxSize(75,-1), 0, wxDefaultValidator, _T("ID_txtLevelingOffset"));
643         txtLevelingOffset->SetToolTip(_("Leveling Offset"));
644         FlexGridSizer6->Add(txtLevelingOffset, 1, wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5);
645         bSetLevelingOffset = new wxButton(this, ID_bSetLevelingOffset, _("Set"), wxDefaultPosition, wxDefaultSize, wxBU_EXACTFIT, wxDefaultValidator, _T("ID_bSetLevelingOffset"));
646         FlexGridSizer6->Add(bSetLevelingOffset, 1, wxALIGN_RIGHT|wxALIGN_CENTER_VERTICAL, 5);
647         StaticText58 = new wxStaticText(this, ID_STATICTEXT58, _("LevOpen:"), wxDefaultPosition, wxDefaultSize, 0, _T("ID_STATICTEXT58"));
648         FlexGridSizer6->Add(StaticText58, 1, wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL, 5);
649         txtLevelingOpen = new wxTextCtrl(this, ID_txtLevelingOpen, wxEmptyString, wxDefaultPosition, wxSize(75,-1), 0, wxDefaultValidator, _T("ID_txtLevelingOpen"));
650         txtLevelingOpen->SetToolTip(_("Leveling Open"));
651         FlexGridSizer6->Add(txtLevelingOpen, 1, wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5);
652         bSetLevelingOpen = new wxButton(this, ID_bSetLevelingOpen, _("Set"), wxDefaultPosition, wxDefaultSize, wxBU_EXACTFIT, wxDefaultValidator, _T("ID_bSetLevelingOpen"));
653         FlexGridSizer6->Add(bSetLevelingOpen, 1, wxALIGN_RIGHT|wxALIGN_CENTER_VERTICAL, 5);
654         StaticText60 = new wxStaticText(this, ID_STATICTEXT60, _("Parking:"), wxDefaultPosition, wxDefaultSize, 0, _T("ID_STATICTEXT60"));
655         FlexGridSizer6->Add(StaticText60, 1, wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL, 5);
656         txtParking = new wxTextCtrl(this, ID_txtParking, wxEmptyString, wxDefaultPosition, wxSize(75,-1), wxTE_READONLY, wxDefaultValidator, _T("ID_txtParking"));
657         FlexGridSizer6->Add(txtParking, 1, wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5);
658         FlexGridSizer6->Add(-1,-1,1, wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL, 5);
659         StaticText63 = new wxStaticText(this, ID_STATICTEXT63, _("SlowSpd:"), wxDefaultPosition, wxDefaultSize, 0, _T("ID_STATICTEXT63"));
660         FlexGridSizer6->Add(StaticText63, 1, wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL, 5);
661         txtSlowSpeed = new wxTextCtrl(this, ID_txtSlowSpeed, wxEmptyString, wxDefaultPosition, wxSize(75,-1), 0, wxDefaultValidator, _T("ID_txtSlowSpeed"));
662         txtSlowSpeed->SetToolTip(_("Slow Speed Door Multiplier"));
663         FlexGridSizer6->Add(txtSlowSpeed, 1, wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5);
664         bSetSlowSpeed = new wxButton(this, ID_bSetSlowSpeed, _("Set"), wxDefaultPosition, wxDefaultSize, wxBU_EXACTFIT, wxDefaultValidator, _T("ID_bSetSlowSpeed"));
665         FlexGridSizer6->Add(bSetSlowSpeed, 1, wxALIGN_RIGHT|wxALIGN_CENTER_VERTICAL, 5);
666         StaticText64 = new wxStaticText(this, ID_STATICTEXT64, _("ManualSpd:"), wxDefaultPosition, wxDefaultSize, 0, _T("ID_STATICTEXT64"));
667         FlexGridSizer6->Add(StaticText64, 1, wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL, 5);
668         txtManualSpeed = new wxTextCtrl(this, ID_txtManualSpeed, wxEmptyString, wxDefaultPosition, wxSize(75,-1), 0, wxDefaultValidator, _T("ID_txtManualSpeed"));
669         txtManualSpeed->SetToolTip(_("Manual Door Speed Multiplier"));
670         FlexGridSizer6->Add(txtManualSpeed, 1, wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5);
671         bSetManualSpeed = new wxButton(this, ID_bSetManualSpeed, _("Set"), wxDefaultPosition, wxDefaultSize, wxBU_EXACTFIT, wxDefaultValidator, _T("ID_bSetManualSpeed"));
672         FlexGridSizer6->Add(bSetManualSpeed, 1, wxALIGN_RIGHT|wxALIGN_CENTER_VERTICAL, 5);
673         StaticBoxSizer7->Add(FlexGridSizer6, 0, wxALL|wxALIGN_LEFT|wxALIGN_TOP, 0);
674         BoxSizer3->Add(StaticBoxSizer7, 0, wxBOTTOM|wxRIGHT|wxALIGN_LEFT|wxALIGN_TOP, 5);
675         BoxSizer7 = new wxBoxSizer(wxVERTICAL);
676         StaticBoxSizer8 = new wxStaticBoxSizer(wxHORIZONTAL, this, _("Destination"));
677         FlexGridSizer7 = new wxFlexGridSizer(0, 3, 0, 0);
678         StaticText30 = new wxStaticText(this, ID_STATICTEXT30, _("Floor:"), wxDefaultPosition, wxDefaultSize, 0, _T("ID_STATICTEXT30"));
679         FlexGridSizer7->Add(StaticText30, 0, wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL, 0);
680         txtDestFloor = new wxTextCtrl(this, ID_txtDestFloor, wxEmptyString, wxDefaultPosition, wxSize(75,-1), wxTE_READONLY, wxDefaultValidator, _T("ID_txtDestFloor"));
681         FlexGridSizer7->Add(txtDestFloor, 0, wxLEFT|wxRIGHT|wxALIGN_LEFT|wxALIGN_TOP, 5);
682         FlexGridSizer7->Add(-1,-1,1, wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL, 5);
683         StaticText43 = new wxStaticText(this, ID_STATICTEXT43, _("IsMoving:"), wxDefaultPosition, wxDefaultSize, 0, _T("ID_STATICTEXT43"));
684         FlexGridSizer7->Add(StaticText43, 1, wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL, 5);
685         txtIsMoving = new wxTextCtrl(this, ID_txtIsMoving, wxEmptyString, wxDefaultPosition, wxSize(75,-1), wxTE_READONLY, wxDefaultValidator, _T("ID_txtIsMoving"));
686         FlexGridSizer7->Add(txtIsMoving, 1, wxLEFT|wxRIGHT|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5);
687         FlexGridSizer7->Add(-1,-1,1, wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL, 5);
688         StaticText31 = new wxStaticText(this, ID_STATICTEXT31, _("Move:"), wxDefaultPosition, wxDefaultSize, 0, _T("ID_STATICTEXT31"));
689         FlexGridSizer7->Add(StaticText31, 0, wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL, 0);
690         txtMoveElevator = new wxTextCtrl(this, ID_txtMoveElevator, wxEmptyString, wxDefaultPosition, wxSize(75,-1), wxTE_READONLY, wxDefaultValidator, _T("ID_txtMoveElevator"));
691         FlexGridSizer7->Add(txtMoveElevator, 0, wxLEFT|wxRIGHT|wxALIGN_LEFT|wxALIGN_TOP, 5);
692         FlexGridSizer7->Add(-1,-1,1, wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL, 5);
693         StaticText33 = new wxStaticText(this, ID_STATICTEXT33, _("Distance:"), wxDefaultPosition, wxDefaultSize, 0, _T("ID_STATICTEXT33"));
694         FlexGridSizer7->Add(StaticText33, 0, wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL, 0);
695         txtDistance = new wxTextCtrl(this, ID_txtDistance, wxEmptyString, wxDefaultPosition, wxSize(75,-1), wxTE_READONLY, wxDefaultValidator, _T("ID_txtDistance"));
696         txtDistance->SetToolTip(_("Distance to Destination"));
697         FlexGridSizer7->Add(txtDistance, 0, wxLEFT|wxRIGHT|wxALIGN_LEFT|wxALIGN_TOP, 5);
698         FlexGridSizer7->Add(-1,-1,1, wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL, 5);
699         StaticText34 = new wxStaticText(this, ID_STATICTEXT34, _("Dest:"), wxDefaultPosition, wxDefaultSize, 0, _T("ID_STATICTEXT34"));
700         FlexGridSizer7->Add(StaticText34, 0, wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL, 0);
701         txtDestination = new wxTextCtrl(this, ID_txtDestination, wxEmptyString, wxDefaultPosition, wxSize(75,-1), wxTE_READONLY, wxDefaultValidator, _T("ID_txtDestination"));
702         txtDestination->SetToolTip(_("Destination"));
703         FlexGridSizer7->Add(txtDestination, 0, wxLEFT|wxRIGHT|wxALIGN_LEFT|wxALIGN_TOP, 5);
704         FlexGridSizer7->Add(-1,-1,1, wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL, 5);
705         StaticText35 = new wxStaticText(this, ID_STATICTEXT35, _("StopDist:"), wxDefaultPosition, wxDefaultSize, 0, _T("ID_STATICTEXT35"));
706         FlexGridSizer7->Add(StaticText35, 0, wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL, 0);
707         txtStopDistance = new wxTextCtrl(this, ID_txtStopDistance, wxEmptyString, wxDefaultPosition, wxSize(75,-1), wxTE_READONLY, wxDefaultValidator, _T("ID_txtStopDistance"));
708         txtStopDistance->SetToolTip(_("Stopping Distance"));
709         FlexGridSizer7->Add(txtStopDistance, 0, wxLEFT|wxRIGHT|wxALIGN_LEFT|wxALIGN_TOP, 5);
710         FlexGridSizer7->Add(-1,-1,1, wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL, 5);
711         StaticText36 = new wxStaticText(this, ID_STATICTEXT36, _("TmpDecel:"), wxDefaultPosition, wxDefaultSize, 0, _T("ID_STATICTEXT36"));
712         FlexGridSizer7->Add(StaticText36, 0, wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL, 0);
713         txtTempDecel = new wxTextCtrl(this, ID_txtTempDecel, wxEmptyString, wxDefaultPosition, wxSize(75,-1), wxTE_READONLY, wxDefaultValidator, _T("ID_txtTempDecel"));
714         txtTempDecel->SetToolTip(_("Temp Deceleration"));
715         FlexGridSizer7->Add(txtTempDecel, 0, wxLEFT|wxRIGHT|wxALIGN_LEFT|wxALIGN_TOP, 5);
716         FlexGridSizer7->Add(-1,-1,1, wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL, 5);
717         StaticText37 = new wxStaticText(this, ID_STATICTEXT37, _("Error:"), wxDefaultPosition, wxDefaultSize, 0, _T("ID_STATICTEXT37"));
718         FlexGridSizer7->Add(StaticText37, 0, wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL, 0);
719         txtErrorOffset = new wxTextCtrl(this, ID_txtErrorOffset, wxEmptyString, wxDefaultPosition, wxSize(75,-1), wxTE_READONLY, wxDefaultValidator, _T("ID_txtErrorOffset"));
720         txtErrorOffset->SetToolTip(_("Error Offset"));
721         FlexGridSizer7->Add(txtErrorOffset, 0, wxLEFT|wxRIGHT|wxALIGN_LEFT|wxALIGN_TOP, 5);
722         FlexGridSizer7->Add(-1,-1,1, wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL, 5);
723         StaticText59 = new wxStaticText(this, ID_STATICTEXT59, _("Notify:"), wxDefaultPosition, wxDefaultSize, 0, _T("ID_STATICTEXT59"));
724         FlexGridSizer7->Add(StaticText59, 1, wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL, 5);
725         txtNotifyEarly = new wxTextCtrl(this, ID_txtNotifyEarly, wxEmptyString, wxDefaultPosition, wxSize(75,-1), 0, wxDefaultValidator, _T("ID_txtNotifyEarly"));
726         txtNotifyEarly->SetToolTip(_("Notify Early"));
727         FlexGridSizer7->Add(txtNotifyEarly, 1, wxLEFT|wxRIGHT|wxALIGN_LEFT|wxALIGN_TOP, 5);
728         bNotifyEarly = new wxButton(this, ID_bNotifyEarly, _("Set"), wxDefaultPosition, wxDefaultSize, wxBU_EXACTFIT, wxDefaultValidator, _T("ID_bNotifyEarly"));
729         FlexGridSizer7->Add(bNotifyEarly, 1, wxALIGN_RIGHT|wxALIGN_CENTER_VERTICAL, 5);
730         StaticText65 = new wxStaticText(this, ID_STATICTEXT65, _("DDelay:"), wxDefaultPosition, wxDefaultSize, 0, _T("ID_STATICTEXT65"));
731         FlexGridSizer7->Add(StaticText65, 1, wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL, 5);
732         txtDepartureDelay = new wxTextCtrl(this, ID_txtDepartureDelay, wxEmptyString, wxDefaultPosition, wxSize(75,-1), 0, wxDefaultValidator, _T("ID_txtDepartureDelay"));
733         txtDepartureDelay->SetToolTip(_("Departure Delay"));
734         FlexGridSizer7->Add(txtDepartureDelay, 1, wxLEFT|wxRIGHT|wxALIGN_LEFT|wxALIGN_TOP, 5);
735         bSetDepartureDelay = new wxButton(this, ID_bSetDepartureDelay, _("Set"), wxDefaultPosition, wxDefaultSize, wxBU_EXACTFIT, wxDefaultValidator, _T("ID_bSetDepartureDelay"));
736         FlexGridSizer7->Add(bSetDepartureDelay, 1, wxALIGN_RIGHT|wxALIGN_CENTER_VERTICAL, 5);
737         StaticText66 = new wxStaticText(this, ID_STATICTEXT66, _("ADelay:"), wxDefaultPosition, wxDefaultSize, 0, _T("ID_STATICTEXT66"));
738         FlexGridSizer7->Add(StaticText66, 1, wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL, 5);
739         txtArrivalDelay = new wxTextCtrl(this, ID_txtArrivalDelay, wxEmptyString, wxDefaultPosition, wxSize(75,-1), 0, wxDefaultValidator, _T("ID_txtArrivalDelay"));
740         txtArrivalDelay->SetToolTip(_("Arrival Delay"));
741         FlexGridSizer7->Add(txtArrivalDelay, 1, wxLEFT|wxRIGHT|wxALIGN_LEFT|wxALIGN_TOP, 5);
742         bSetArrivalDelay = new wxButton(this, ID_bSetArrivalDelay, _("Set"), wxDefaultPosition, wxDefaultSize, wxBU_EXACTFIT, wxDefaultValidator, _T("ID_bSetArrivalDelay"));
743         FlexGridSizer7->Add(bSetArrivalDelay, 1, wxALIGN_RIGHT|wxALIGN_CENTER_VERTICAL, 5);
744         StaticBoxSizer8->Add(FlexGridSizer7, 0, wxALIGN_LEFT|wxALIGN_TOP, 5);
745         BoxSizer7->Add(StaticBoxSizer8, 0, wxEXPAND|wxALIGN_LEFT|wxALIGN_TOP, 5);
746         StaticBoxSizer4 = new wxStaticBoxSizer(wxHORIZONTAL, this, _("Modes"));
747         FlexGridSizer5 = new wxFlexGridSizer(0, 3, 0, 0);
748         StaticText45 = new wxStaticText(this, ID_STATICTEXT45, _("ACP Floor:"), wxDefaultPosition, wxDefaultSize, 0, _T("ID_STATICTEXT45"));
749         FlexGridSizer5->Add(StaticText45, 1, wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL, 5);
750         txtACPFloor = new wxTextCtrl(this, ID_txtACPFloor, wxEmptyString, wxDefaultPosition, wxSize(75,-1), 0, wxDefaultValidator, _T("ID_txtACPFloor"));
751         txtACPFloor->SetToolTip(_("Anti-Crime Prevention Floor"));
752         FlexGridSizer5->Add(txtACPFloor, 1, wxLEFT|wxRIGHT|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5);
753         bSetACPFloor = new wxButton(this, ID_bSetACPFloor, _("Set"), wxDefaultPosition, wxDefaultSize, wxBU_EXACTFIT, wxDefaultValidator, _T("ID_bSetACPFloor"));
754         FlexGridSizer5->Add(bSetACPFloor, 1, wxALIGN_RIGHT|wxALIGN_CENTER_VERTICAL, 5);
755         StaticText46 = new wxStaticText(this, ID_STATICTEXT46, _("Recall Flr:"), wxDefaultPosition, wxDefaultSize, 0, _T("ID_STATICTEXT46"));
756         FlexGridSizer5->Add(StaticText46, 1, wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL, 5);
757         txtRecallFloor = new wxTextCtrl(this, ID_txtRecallFloor, wxEmptyString, wxDefaultPosition, wxSize(75,-1), 0, wxDefaultValidator, _T("ID_txtRecallFloor"));
758         txtRecallFloor->SetToolTip(_("Primary Recall Floor"));
759         FlexGridSizer5->Add(txtRecallFloor, 1, wxLEFT|wxRIGHT|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5);
760         bSetRecallFloor = new wxButton(this, ID_bSetRecallFloor, _("Set"), wxDefaultPosition, wxDefaultSize, wxBU_EXACTFIT, wxDefaultValidator, _T("ID_bSetRecallFloor"));
761         FlexGridSizer5->Add(bSetRecallFloor, 1, wxALIGN_RIGHT|wxALIGN_CENTER_VERTICAL, 5);
762         StaticText47 = new wxStaticText(this, ID_STATICTEXT47, _("Rcl Flr Alt:"), wxDefaultPosition, wxDefaultSize, 0, _T("ID_STATICTEXT47"));
763         FlexGridSizer5->Add(StaticText47, 1, wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL, 5);
764         txtRecallAlternate = new wxTextCtrl(this, ID_txtRecallAlternate, wxEmptyString, wxDefaultPosition, wxSize(75,-1), 0, wxDefaultValidator, _T("ID_txtRecallAlternate"));
765         txtRecallAlternate->SetToolTip(_("Alternate Recall Floor"));
766         FlexGridSizer5->Add(txtRecallAlternate, 1, wxLEFT|wxRIGHT|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5);
767         bSetRecallAlternate = new wxButton(this, ID_bSetRecallAlternate, _("Set"), wxDefaultPosition, wxDefaultSize, wxBU_EXACTFIT, wxDefaultValidator, _T("ID_bSetRecallAlternate"));
768         FlexGridSizer5->Add(bSetRecallAlternate, 1, wxALIGN_RIGHT|wxALIGN_CENTER_VERTICAL, 5);
769         StaticText39 = new wxStaticText(this, ID_STATICTEXT39, _("Park Flr:"), wxDefaultPosition, wxDefaultSize, 0, _T("ID_STATICTEXT39"));
770         FlexGridSizer5->Add(StaticText39, 1, wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL, 5);
771         txtParkingFloor = new wxTextCtrl(this, ID_txtParkingFloor, wxEmptyString, wxDefaultPosition, wxSize(75,-1), 0, wxDefaultValidator, _T("ID_txtParkingFloor"));
772         txtParkingFloor->SetToolTip(_("Parking Floor"));
773         FlexGridSizer5->Add(txtParkingFloor, 1, wxLEFT|wxRIGHT|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5);
774         bSetParkingFloor = new wxButton(this, ID_bSetParkingFloor, _("Set"), wxDefaultPosition, wxDefaultSize, wxBU_EXACTFIT, wxDefaultValidator, _T("ID_bSetParkingFloor"));
775         FlexGridSizer5->Add(bSetParkingFloor, 1, wxALIGN_RIGHT|wxALIGN_CENTER_VERTICAL, 5);
776         StaticText48 = new wxStaticText(this, ID_STATICTEXT48, _("Park Dly:"), wxDefaultPosition, wxDefaultSize, 0, _T("ID_STATICTEXT48"));
777         FlexGridSizer5->Add(StaticText48, 1, wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL, 5);
778         txtParkingDelay = new wxTextCtrl(this, ID_txtParkingDelay, wxEmptyString, wxDefaultPosition, wxSize(75,-1), 0, wxDefaultValidator, _T("ID_txtParkingDelay"));
779         txtParkingDelay->SetToolTip(_("Parking Delay"));
780         FlexGridSizer5->Add(txtParkingDelay, 1, wxLEFT|wxRIGHT|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5);
781         bSetParkingDelay = new wxButton(this, ID_bSetParkingDelay, _("Set"), wxDefaultPosition, wxDefaultSize, wxBU_EXACTFIT, wxDefaultValidator, _T("ID_bSetParkingDelay"));
782         FlexGridSizer5->Add(bSetParkingDelay, 1, wxALIGN_RIGHT|wxALIGN_CENTER_VERTICAL, 5);
783         StaticText62 = new wxStaticText(this, ID_STATICTEXT62, _("NudgeTimer:"), wxDefaultPosition, wxDefaultSize, 0, _T("ID_STATICTEXT62"));
784         FlexGridSizer5->Add(StaticText62, 1, wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL, 5);
785         txtNudgeTimer = new wxTextCtrl(this, ID_txtNudgeTimer, wxEmptyString, wxDefaultPosition, wxSize(75,-1), 0, wxDefaultValidator, _T("ID_txtNudgeTimer"));
786         FlexGridSizer5->Add(txtNudgeTimer, 1, wxLEFT|wxRIGHT|wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL, 5);
787         bSetNudgeTimer = new wxButton(this, ID_bSetNudgeTimer, _("Set"), wxDefaultPosition, wxDefaultSize, wxBU_EXACTFIT, wxDefaultValidator, _T("ID_bSetNudgeTimer"));
788         FlexGridSizer5->Add(bSetNudgeTimer, 1, wxALIGN_RIGHT|wxALIGN_CENTER_VERTICAL, 5);
789         StaticBoxSizer4->Add(FlexGridSizer5, 1, wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5);
790         BoxSizer7->Add(StaticBoxSizer4, 1, wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL, 5);
791         BoxSizer3->Add(BoxSizer7, 1, wxBOTTOM|wxRIGHT|wxALIGN_TOP|wxALIGN_CENTER_HORIZONTAL, 5);
792         BoxSizer1->Add(BoxSizer3, 0, wxALL|wxEXPAND|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 0);
793         SetSizer(BoxSizer1);
794         BoxSizer1->Fit(this);
795         BoxSizer1->SetSizeHints(this);
796         Center();
797         
798         Connect(ID_bACPMode,wxEVT_COMMAND_TOGGLEBUTTON_CLICKED,(wxObjectEventFunction)&editelevator::On_bACPMode_Toggle);
799         Connect(ID_bUpPeak,wxEVT_COMMAND_TOGGLEBUTTON_CLICKED,(wxObjectEventFunction)&editelevator::On_bUpPeak_Toggle);
800         Connect(ID_bDownPeak,wxEVT_COMMAND_TOGGLEBUTTON_CLICKED,(wxObjectEventFunction)&editelevator::On_bDownPeak_Toggle);
801         Connect(ID_bIndService,wxEVT_COMMAND_TOGGLEBUTTON_CLICKED,(wxObjectEventFunction)&editelevator::On_bIndService_Toggle);
802         Connect(ID_bInsService,wxEVT_COMMAND_TOGGLEBUTTON_CLICKED,(wxObjectEventFunction)&editelevator::On_bInsService_Toggle);
803         Connect(ID_Fire1Off,wxEVT_COMMAND_RADIOBUTTON_SELECTED,(wxObjectEventFunction)&editelevator::On_Fire1Off_Select);
804         Connect(ID_Fire1On,wxEVT_COMMAND_RADIOBUTTON_SELECTED,(wxObjectEventFunction)&editelevator::On_Fire1On_Select);
805         Connect(ID_Fire1Bypass,wxEVT_COMMAND_RADIOBUTTON_SELECTED,(wxObjectEventFunction)&editelevator::On_Fire1Bypass_Select);
806         Connect(ID_Fire2Off,wxEVT_COMMAND_RADIOBUTTON_SELECTED,(wxObjectEventFunction)&editelevator::On_Fire2Off_Select);
807         Connect(ID_Fire2On,wxEVT_COMMAND_RADIOBUTTON_SELECTED,(wxObjectEventFunction)&editelevator::On_Fire2On_Select);
808         Connect(ID_Fire2Hold,wxEVT_COMMAND_RADIOBUTTON_SELECTED,(wxObjectEventFunction)&editelevator::On_Fire2Hold_Select);
809         Connect(ID_bUp,wxEVT_COMMAND_TOGGLEBUTTON_CLICKED,(wxObjectEventFunction)&editelevator::On_bUp_Toggle);
810         Connect(ID_bGoToggle,wxEVT_COMMAND_TOGGLEBUTTON_CLICKED,(wxObjectEventFunction)&editelevator::On_bGoToggle_Toggle);
811         Connect(ID_bDown,wxEVT_COMMAND_TOGGLEBUTTON_CLICKED,(wxObjectEventFunction)&editelevator::On_bDown_Toggle);
812         Connect(ID_bRefresh,wxEVT_COMMAND_BUTTON_CLICKED,(wxObjectEventFunction)&editelevator::On_bRefresh_Click);
813         Connect(ID_bDumpFloors,wxEVT_COMMAND_BUTTON_CLICKED,(wxObjectEventFunction)&editelevator::On_bDumpFloors_Click);
814         Connect(ID_bDumpQueues,wxEVT_COMMAND_BUTTON_CLICKED,(wxObjectEventFunction)&editelevator::On_bDumpQueues_Click);
815         Connect(ID_CHECKBOX1,wxEVT_COMMAND_CHECKBOX_CLICKED,(wxObjectEventFunction)&editelevator::On_chkVisible_Click);
816         Connect(ID_chkRun,wxEVT_COMMAND_CHECKBOX_CLICKED,(wxObjectEventFunction)&editelevator::On_chkRun_Click);
817         Connect(ID_bCall,wxEVT_COMMAND_BUTTON_CLICKED,(wxObjectEventFunction)&editelevator::On_bCall_Click);
818         Connect(ID_bGo,wxEVT_COMMAND_BUTTON_CLICKED,(wxObjectEventFunction)&editelevator::On_bGo_Click);
819         Connect(ID_bOpen,wxEVT_COMMAND_BUTTON_CLICKED,(wxObjectEventFunction)&editelevator::On_bOpen_Click);
820         Connect(ID_bOpenManual,wxEVT_COMMAND_BUTTON_CLICKED,(wxObjectEventFunction)&editelevator::On_bOpenManual_Click);
821         Connect(ID_bOpenShaftDoor,wxEVT_COMMAND_BUTTON_CLICKED,(wxObjectEventFunction)&editelevator::On_bOpenShaftDoor_Click);
822         Connect(ID_bStop,wxEVT_COMMAND_BUTTON_CLICKED,(wxObjectEventFunction)&editelevator::On_bStop_Click);
823         Connect(ID_bChime,wxEVT_COMMAND_BUTTON_CLICKED,(wxObjectEventFunction)&editelevator::On_bChime_Click);
824         Connect(ID_bUpIndicator,wxEVT_COMMAND_BUTTON_CLICKED,(wxObjectEventFunction)&editelevator::On_bUpIndicator_Click);
825         Connect(ID_bEnqueueUp,wxEVT_COMMAND_BUTTON_CLICKED,(wxObjectEventFunction)&editelevator::On_bEnqueueUp_Click);
826         Connect(ID_bEnqueueDown,wxEVT_COMMAND_BUTTON_CLICKED,(wxObjectEventFunction)&editelevator::On_bEnqueueDown_Click);
827         Connect(ID_bClose,wxEVT_COMMAND_BUTTON_CLICKED,(wxObjectEventFunction)&editelevator::On_bClose_Click);
828         Connect(ID_bCloseManual,wxEVT_COMMAND_BUTTON_CLICKED,(wxObjectEventFunction)&editelevator::On_bCloseManual_Click);
829         Connect(ID_bCloseShaftDoor,wxEVT_COMMAND_BUTTON_CLICKED,(wxObjectEventFunction)&editelevator::On_bCloseShaftDoor_Click);
830         Connect(ID_bAlarm,wxEVT_COMMAND_BUTTON_CLICKED,(wxObjectEventFunction)&editelevator::On_bAlarm_Click);
831         Connect(ID_bStopDoors,wxEVT_COMMAND_BUTTON_CLICKED,(wxObjectEventFunction)&editelevator::On_bStopDoors_Click);
832         Connect(ID_bDownIndicator,wxEVT_COMMAND_BUTTON_CLICKED,(wxObjectEventFunction)&editelevator::On_bDownIndicator_Click);
833         Connect(ID_bSetName,wxEVT_COMMAND_BUTTON_CLICKED,(wxObjectEventFunction)&editelevator::On_bSetName_Click);
834         Connect(ID_bSetDoorTimer,wxEVT_COMMAND_BUTTON_CLICKED,(wxObjectEventFunction)&editelevator::On_bSetDoorTimer_Click);
835         Connect(ID_bSetQuickClose,wxEVT_COMMAND_BUTTON_CLICKED,(wxObjectEventFunction)&editelevator::On_bSetQuickClose_Click);
836         Connect(ID_bSetSkipFloorText,wxEVT_COMMAND_BUTTON_CLICKED,(wxObjectEventFunction)&editelevator::On_bSetSkipFloorText_Click);
837         Connect(ID_bResetQueues,wxEVT_COMMAND_BUTTON_CLICKED,(wxObjectEventFunction)&editelevator::On_bResetQueues_Click);
838         Connect(ID_bSetSpeed,wxEVT_COMMAND_BUTTON_CLICKED,(wxObjectEventFunction)&editelevator::On_bSetSpeed_Click);
839         Connect(ID_bSetAcceleration,wxEVT_COMMAND_BUTTON_CLICKED,(wxObjectEventFunction)&editelevator::On_bSetAcceleration_Click);
840         Connect(ID_bSetDeceleration,wxEVT_COMMAND_BUTTON_CLICKED,(wxObjectEventFunction)&editelevator::On_bSetDeceleration_Click);
841         Connect(ID_bSetAccelJerk,wxEVT_COMMAND_BUTTON_CLICKED,(wxObjectEventFunction)&editelevator::On_bSetAccelJerk_Click);
842         Connect(ID_bSetDecelJerk,wxEVT_COMMAND_BUTTON_CLICKED,(wxObjectEventFunction)&editelevator::On_bSetDecelJerk_Click);
843         Connect(ID_bSetLevelingSpeed,wxEVT_COMMAND_BUTTON_CLICKED,(wxObjectEventFunction)&editelevator::On_bSetLevelingSpeed_Click);
844         Connect(ID_bSetLevelingOffset,wxEVT_COMMAND_BUTTON_CLICKED,(wxObjectEventFunction)&editelevator::On_bSetLevelingOffset_Click);
845         Connect(ID_bSetLevelingOpen,wxEVT_COMMAND_BUTTON_CLICKED,(wxObjectEventFunction)&editelevator::On_bSetLevelingOpen_Click);
846         Connect(ID_bSetSlowSpeed,wxEVT_COMMAND_BUTTON_CLICKED,(wxObjectEventFunction)&editelevator::On_bSetSlowSpeed_Click);
847         Connect(ID_bSetManualSpeed,wxEVT_COMMAND_BUTTON_CLICKED,(wxObjectEventFunction)&editelevator::On_bSetManualSpeed_Click);
848         Connect(ID_bNotifyEarly,wxEVT_COMMAND_BUTTON_CLICKED,(wxObjectEventFunction)&editelevator::On_bNotifyEarly_Click);
849         Connect(ID_bSetDepartureDelay,wxEVT_COMMAND_BUTTON_CLICKED,(wxObjectEventFunction)&editelevator::On_bSetDepartureDelay_Click);
850         Connect(ID_bSetArrivalDelay,wxEVT_COMMAND_BUTTON_CLICKED,(wxObjectEventFunction)&editelevator::On_bSetArrivalDelay_Click);
851         Connect(ID_bSetACPFloor,wxEVT_COMMAND_BUTTON_CLICKED,(wxObjectEventFunction)&editelevator::On_bSetACPFloor_Click);
852         Connect(ID_bSetRecallFloor,wxEVT_COMMAND_BUTTON_CLICKED,(wxObjectEventFunction)&editelevator::On_bSetRecallFloor_Click);
853         Connect(ID_bSetRecallAlternate,wxEVT_COMMAND_BUTTON_CLICKED,(wxObjectEventFunction)&editelevator::On_bSetRecallAlternate_Click);
854         Connect(ID_bSetParkingFloor,wxEVT_COMMAND_BUTTON_CLICKED,(wxObjectEventFunction)&editelevator::On_bSetParkingFloor_Click);
855         Connect(ID_bSetParkingDelay,wxEVT_COMMAND_BUTTON_CLICKED,(wxObjectEventFunction)&editelevator::On_bSetParkingDelay_Click);
856         Connect(ID_bSetNudgeTimer,wxEVT_COMMAND_BUTTON_CLICKED,(wxObjectEventFunction)&editelevator::On_bSetNudgeTimer_Click);
857         //*)
858         OnInit();
859 }
860
861 editelevator::~editelevator()
862 {
863 }
864
865
866 void editelevator::On_bCall_Click(wxCommandEvent& event)
867 {
868         //calls elevator to the current camera floor
869         if (Simcore->GetElevator(sNumber->GetThumbPosition() + 1)->GetFloor() > Simcore->camera->CurrentFloor)
870                 Simcore->GetElevator(sNumber->GetThumbPosition() + 1)->AddRoute(Simcore->camera->CurrentFloor, -1, false);
871         if (Simcore->GetElevator(sNumber->GetThumbPosition() + 1)->GetFloor() < Simcore->camera->CurrentFloor)
872                 Simcore->GetElevator(sNumber->GetThumbPosition() + 1)->AddRoute(Simcore->camera->CurrentFloor, 1, false);
873 }
874
875 void editelevator::On_bEnqueueUp_Click(wxCommandEvent& event)
876 {
877         Simcore->GetElevator(sNumber->GetThumbPosition() + 1)->AddRoute(sFloor->GetThumbPosition() - Simcore->Basements, 1, true);
878 }
879
880 void editelevator::On_bGo_Click(wxCommandEvent& event)
881 {
882         Simcore->GetElevator(sNumber->GetThumbPosition() + 1)->Go(sFloor->GetThumbPosition() - Simcore->Basements);
883 }
884
885 void editelevator::On_bEnqueueDown_Click(wxCommandEvent& event)
886 {
887         Simcore->GetElevator(sNumber->GetThumbPosition() + 1)->AddRoute(sFloor->GetThumbPosition() - Simcore->Basements, -1, true);
888 }
889
890 void editelevator::On_bOpen_Click(wxCommandEvent& event)
891 {
892         Simcore->GetElevator(sNumber->GetThumbPosition() + 1)->OpenDoors(sDoor->GetThumbPosition());
893 }
894
895 void editelevator::On_bClose_Click(wxCommandEvent& event)
896 {
897         Simcore->GetElevator(sNumber->GetThumbPosition() + 1)->CloseDoors(sDoor->GetThumbPosition());
898 }
899
900 void editelevator::On_bOpenManual_Click(wxCommandEvent& event)
901 {
902         Simcore->GetElevator(sNumber->GetThumbPosition() + 1)->OpenDoorsEmergency(sDoor->GetThumbPosition());
903 }
904
905 void editelevator::On_bCloseManual_Click(wxCommandEvent& event)
906 {
907         Simcore->GetElevator(sNumber->GetThumbPosition() + 1)->CloseDoorsEmergency(sDoor->GetThumbPosition());
908 }
909
910 void editelevator::On_bStop_Click(wxCommandEvent& event)
911 {
912         Simcore->GetElevator(sNumber->GetThumbPosition() + 1)->Stop(true);
913 }
914
915 void editelevator::On_bAlarm_Click(wxCommandEvent& event)
916 {
917         Simcore->GetElevator(sNumber->GetThumbPosition() + 1)->Alarm();
918 }
919
920 void editelevator::On_bSetName_Click(wxCommandEvent& event)
921 {
922         if (elevator)
923                 elevator->Name = txtName->GetValue().ToAscii();
924 }
925
926 void editelevator::On_bSetSpeed_Click(wxCommandEvent& event)
927 {
928         if (elevator)
929                  elevator->ElevatorSpeed = atof(txtSpeed->GetValue().ToAscii());
930 }
931
932 void editelevator::On_bSetAcceleration_Click(wxCommandEvent& event)
933 {
934         if (elevator)
935                 elevator->Acceleration = atof(txtAcceleration->GetValue().ToAscii());
936 }
937
938 void editelevator::On_bSetDeceleration_Click(wxCommandEvent& event)
939 {
940         if (elevator)
941                 elevator->Deceleration = atof(txtDeceleration->GetValue().ToAscii());
942 }
943
944 void editelevator::On_bDumpFloors_Click(wxCommandEvent& event)
945 {
946         Simcore->GetElevator(sNumber->GetThumbPosition() + 1)->DumpServicedFloors();
947 }
948
949 void editelevator::On_bDumpQueues_Click(wxCommandEvent& event)
950 {
951         Simcore->GetElevator(sNumber->GetThumbPosition() + 1)->DumpQueues();
952 }
953
954 void editelevator::OnInit()
955 {
956         last_elevator = 0;
957
958         if (Simcore->Elevators() > 0)
959         {
960                 //set elevator range slider
961                 sNumber->SetScrollbar(0, 1, Simcore->Elevators(), 1);
962
963                 //set floor range slider
964                 sFloor->SetScrollbar(Simcore->Basements, 1, Simcore->TotalFloors(), 1);
965
966                 //set door range slider
967                 sDoor->SetScrollbar(1, 1, Simcore->GetElevator(sNumber->GetThumbPosition() + 1)->NumDoors + 1, 1);
968         }
969         else
970                 sNumber->Enable(false);
971 }
972
973 void editelevator::Loop()
974 {
975         static int last_door;
976         static int last_elevator_count;
977         static int last_floor_count;
978         int elev_num;
979         int door_num;
980         int elevator_count;
981         int floor_count;
982         elev_num = sNumber->GetThumbPosition() + 1;
983         door_num = sDoor->GetThumbPosition();
984         elevator_count = Simcore->Elevators();
985         floor_count = Simcore->TotalFloors();
986         elevator = Simcore->GetElevator(elev_num);
987         door = elevator->GetDoor(door_num);
988
989         if (elev_num != last_elevator)
990         {
991                 //number changed; update values
992                 last_elevator = elev_num;
993                 SetMainValues();
994         }
995         if (door_num != last_door)
996         {
997                 //number changed; update values
998                 last_door = door_num;
999                 SetMainValues();
1000         }
1001         if (elevator_count != last_elevator_count && elevator_count > 0)
1002         {
1003                 //elevator count changed; update slider
1004                 last_elevator_count = elevator_count;
1005
1006                 //set elevator range slider
1007                 sNumber->SetScrollbar(0, 1, Simcore->Elevators(), 1);
1008         }
1009         if (floor_count != last_floor_count)
1010         {
1011                 //floor count changed; update slider
1012                 last_floor_count = floor_count;
1013
1014                 //set floor range slider
1015                 sFloor->SetScrollbar(Simcore->Basements, 1, Simcore->TotalFloors(), 1);
1016         }
1017
1018         tElevator->SetLabel(wxT("Number " + wxVariant((long)sNumber->GetThumbPosition() + 1).GetString()));
1019         int floor_temp = sFloor->GetThumbPosition() - Simcore->Basements;
1020         wxString floor_name;
1021         if (Simcore->GetFloor(floor_temp))
1022                 floor_name = wxString::FromAscii(Simcore->GetFloor(floor_temp)->ID.c_str());
1023         tFloor->SetLabel(wxT("Floor ") + wxVariant((long)floor_temp).GetString() + wxT(" (" + floor_name) + wxT(")"));
1024         tDoor->SetLabel(wxT("Door " + wxVariant((long)sDoor->GetThumbPosition()).GetString() + wxT(" (0 = all)")));
1025         txtBrakes->SetValue(wxString::FromAscii(BoolToString(elevator->GetBrakeStatus())));
1026         txtDestFloor->SetValue(wxVariant((long)elevator->GotoFloor).GetString());
1027         txtDestination->SetValue(TruncateNumber(elevator->GetDestination(), 2));
1028         txtDirection->SetValue(wxVariant((long)elevator->Direction).GetString());
1029         txtDistance->SetValue(TruncateNumber(elevator->DistanceToTravel, 2));
1030         if (door)
1031         {
1032                 txtDoorDirection->SetValue(wxString::FromAscii(BoolToString(door->DoorDirection)));
1033                 txtDoorHeight->SetValue(TruncateNumber(door->GetDoorWrapper()->Height, 2));
1034                 txtDoorOrigin->SetValue(TruncateNumber(door->GetDoorWrapper()->Origin.x, 2) + wxT(", ") + TruncateNumber(door->GetDoorWrapper()->Origin.y, 2) + wxT(", ") + TruncateNumber(door->GetDoorWrapper()->Origin.z, 2));
1035                 txtDoorsOpen->SetValue(wxString::FromAscii(BoolToString(door->AreDoorsOpen())));
1036                 txtDoorWidth->SetValue(TruncateNumber(door->GetDoorWrapper()->Width, 2));
1037                 txtShaftDoorOrigin->SetValue(TruncateNumber(door->ShaftDoorOrigin.x, 2) + wxT(", ") + TruncateNumber(door->ShaftDoorOrigin.y, 2) + wxT(", ") + TruncateNumber(door->ShaftDoorOrigin.z, 2));
1038                 txtDoorStopped->SetValue(wxString::FromAscii(BoolToString(door->DoorsStopped())));
1039                 txtNudgeMode->SetValue(wxString::FromAscii(BoolToString(door->GetNudgeStatus())));
1040         }
1041         txtElevStart->SetValue(TruncateNumber(elevator->GetElevatorStart(), 2));
1042         txtEnabled->SetValue(wxString::FromAscii(BoolToString(elevator->IsEnabled)));
1043         txtErrorOffset->SetValue(TruncateNumber(elevator->ErrorOffset, 2));
1044         txtFloor->SetValue(wxVariant((long)elevator->GetFloor()).GetString());
1045         txtHeight->SetValue(TruncateNumber(elevator->Height, 2));
1046         txtMoveElevator->SetValue(wxString::FromAscii(BoolToString(elevator->MoveElevator)));
1047         txtNumber->SetValue(wxVariant((long)elevator->Number).GetString());
1048         txtOrigin->SetValue(TruncateNumber(elevator->Origin.x, 2) + wxT(", ") + TruncateNumber(elevator->Origin.y, 2) + wxT(", ") + TruncateNumber(elevator->Origin.z, 2));
1049         txtOriginFloor->SetValue(wxVariant((long)elevator->OriginFloor).GetString());
1050         txtPosition->SetValue(TruncateNumber(elevator->GetPosition().x, 2) + wxT(", ") + TruncateNumber(elevator->GetPosition().y, 2) + wxT(", ") + TruncateNumber(elevator->GetPosition().z, 2));
1051         txtQueueDirection->SetValue(wxVariant((long)elevator->QueuePositionDirection).GetString());
1052         txtQueueLastDown->SetValue(wxVariant((long)elevator->LastQueueFloor[0]).GetString());
1053         txtQueueLastUp->SetValue(wxVariant((long)elevator->LastQueueFloor[1]).GetString());
1054         txtRate->SetValue(TruncateNumber(elevator->ElevatorRate, 2));
1055         txtShaft->SetValue(wxVariant((long)elevator->AssignedShaft).GetString());
1056         txtStop->SetValue(wxString::FromAscii(BoolToString(elevator->GetEmergencyStopStatus())));
1057         txtStopDistance->SetValue(TruncateNumber(elevator->GetStoppingDistance(), 2));
1058         txtTempDecel->SetValue(TruncateNumber(elevator->TempDeceleration, 2));
1059         txtJerkRate->SetValue(TruncateNumber(elevator->GetJerkRate(), 4));
1060         txtIsMoving->SetValue(wxString::FromAscii(BoolToString(elevator->IsMoving)));
1061         txtUseSkipFloor->SetValue(wxString::FromAscii(BoolToString(elevator->UseFloorSkipText)));
1062         txtOnFloor->SetValue(wxString::FromAscii(BoolToString(elevator->OnFloor)));
1063         txtAlarm->SetValue(wxString::FromAscii(BoolToString(elevator->AlarmActive)));
1064         txtQueueLastDirection->SetValue(wxVariant((long)elevator->LastQueueDirection).GetString());
1065         txtIsIdle->SetValue(wxString::FromAscii(BoolToString(elevator->IsIdle())));
1066         txtWaitForDoors->SetValue(wxString::FromAscii(BoolToString(elevator->WaitForDoors)));
1067         txtMotor->SetValue(TruncateNumber(elevator->MotorPosition.x, 2) + wxT(", ") + TruncateNumber(elevator->MotorPosition.y, 2) + wxT(", ") + TruncateNumber(elevator->MotorPosition.z, 2));
1068         txtCameraOffset->SetValue(TruncateNumber(elevator->CameraOffset, 2));
1069         txtManualGo->SetValue(wxString::FromAscii(BoolToString(elevator->ManualGo)));
1070         txtLeveling->SetValue(wxString::FromAscii(BoolToString(elevator->Leveling)));
1071         txtParking->SetValue(wxString::FromAscii(BoolToString(elevator->Parking)));
1072 }
1073
1074 void editelevator::SetMainValues()
1075 {
1076         //set changeable values
1077         txtName->SetValue(wxString::FromAscii(elevator->Name.c_str()));
1078         if (door)
1079         {
1080                 txtDoorTimer->SetValue(wxVariant((int)door->DoorTimer).GetString());
1081                 txtQuickClose->SetValue(wxVariant((int)door->QuickClose).GetString());
1082                 txtNudgeTimer->SetValue(TruncateNumber(door->NudgeTimer, 4));
1083                 txtSlowSpeed->SetValue(TruncateNumber(door->SlowSpeed, 4));
1084                 txtManualSpeed->SetValue(TruncateNumber(door->ManualSpeed, 4));
1085         }
1086         txtSpeed->SetValue(TruncateNumber(elevator->ElevatorSpeed, 4));
1087         txtAcceleration->SetValue(TruncateNumber(elevator->Acceleration, 4));
1088         txtDeceleration->SetValue(TruncateNumber(elevator->Deceleration, 4));
1089         txtAccelJerk->SetValue(TruncateNumber(elevator->AccelJerk, 4));
1090         txtDecelJerk->SetValue(TruncateNumber(elevator->DecelJerk, 4));
1091         chkVisible->SetValue(elevator->IsEnabled);
1092         chkRun->SetValue(elevator->IsRunning());
1093         bACPMode->SetValue(elevator->ACP);
1094         bUpPeak->SetValue(elevator->UpPeak);
1095         bDownPeak->SetValue(elevator->DownPeak);
1096         bIndService->SetValue(elevator->IndependentService);
1097         bInsService->SetValue(elevator->InspectionService);
1098         txtSkipFloorText->SetValue(wxString::FromAscii(elevator->GetFloorSkipText()));
1099         txtACPFloor->SetValue(wxVariant((int)elevator->ACPFloor).GetString());
1100         txtRecallFloor->SetValue(wxVariant((int)elevator->RecallFloor).GetString());
1101         txtRecallAlternate->SetValue(wxVariant((int)elevator->RecallFloorAlternate).GetString());
1102         txtParkingFloor->SetValue(wxVariant((int)elevator->ParkingFloor).GetString());
1103         txtParkingDelay->SetValue(TruncateNumber(elevator->ParkingDelay, 4));
1104         txtLevelingSpeed->SetValue(TruncateNumber(elevator->LevelingSpeed, 4));
1105         txtLevelingOffset->SetValue(TruncateNumber(elevator->LevelingOffset, 4));
1106         txtLevelingOpen->SetValue(TruncateNumber(elevator->LevelingOpen, 4));
1107         txtNotifyEarly->SetValue(wxVariant((int)elevator->NotifyEarly).GetString());
1108         txtDepartureDelay->SetValue(TruncateNumber(elevator->DepartureDelay, 4));
1109         txtArrivalDelay->SetValue(TruncateNumber(elevator->ArrivalDelay, 4));
1110         if (elevator->FireServicePhase2 == 0)
1111                 Fire2Off->SetValue(true);
1112         if (elevator->FireServicePhase2 == 1)
1113                 Fire2On->SetValue(true);
1114         if (elevator->FireServicePhase2 == 2)
1115                 Fire2Hold->SetValue(true);
1116         if (elevator->FireServicePhase1 == 0)
1117                 Fire1Off->SetValue(true);
1118         if (elevator->FireServicePhase1 == 1)
1119                 Fire1On->SetValue(true);
1120         if (elevator->FireServicePhase1 == 2)
1121                 Fire1Bypass->SetValue(true);
1122 }
1123
1124 void editelevator::On_chkVisible_Click(wxCommandEvent& event)
1125 {
1126         if (elevator)
1127                 elevator->Enabled(chkVisible->GetValue());
1128 }
1129
1130 void editelevator::On_bSetAccelJerk_Click(wxCommandEvent& event)
1131 {
1132         if (elevator)
1133                 elevator->AccelJerk = atof(txtAccelJerk->GetValue().ToAscii());
1134 }
1135
1136 void editelevator::On_bSetDecelJerk_Click(wxCommandEvent& event)
1137 {
1138         if (elevator)
1139                 elevator->DecelJerk = atof(txtDecelJerk->GetValue().ToAscii());
1140 }
1141
1142 void editelevator::On_bOpenShaftDoor_Click(wxCommandEvent& event)
1143 {
1144         if (elevator)
1145                 elevator->OpenDoors(sDoor->GetThumbPosition(), 3, sFloor->GetThumbPosition() - Simcore->Basements);
1146 }
1147
1148 void editelevator::On_bCloseShaftDoor_Click(wxCommandEvent& event)
1149 {
1150         if (elevator)
1151                 elevator->CloseDoors(sDoor->GetThumbPosition(), 3, sFloor->GetThumbPosition() - Simcore->Basements);
1152 }
1153
1154 void editelevator::On_bSetDoorTimer_Click(wxCommandEvent& event)
1155 {
1156         if (door)
1157                 door->DoorTimer = atoi(txtDoorTimer->GetValue().ToAscii());
1158 }
1159
1160 void editelevator::On_bChime_Click(wxCommandEvent& event)
1161 {
1162         if (door)
1163                 door->Chime(sFloor->GetThumbPosition() - Simcore->Basements, true);
1164 }
1165
1166 void editelevator::On_bACPMode_Toggle(wxCommandEvent& event)
1167 {
1168         if (elevator)
1169         {
1170                 elevator->EnableACP(bACPMode->GetValue());
1171                 SetMainValues();
1172         }
1173 }
1174
1175 void editelevator::On_bUpPeak_Toggle(wxCommandEvent& event)
1176 {
1177         if (elevator)
1178         {
1179                 elevator->EnableUpPeak(bUpPeak->GetValue());
1180                 SetMainValues();
1181         }
1182 }
1183
1184 void editelevator::On_bDownPeak_Toggle(wxCommandEvent& event)
1185 {
1186         if (elevator)
1187         {
1188                 elevator->EnableDownPeak(bDownPeak->GetValue());
1189                 SetMainValues();
1190         }
1191 }
1192
1193 void editelevator::On_bIndService_Toggle(wxCommandEvent& event)
1194 {
1195         if (elevator)
1196         {
1197                 elevator->EnableIndependentService(bIndService->GetValue());
1198                 SetMainValues();
1199         }
1200 }
1201
1202 void editelevator::On_bInsService_Toggle(wxCommandEvent& event)
1203 {
1204         if (elevator)
1205         {
1206                 elevator->EnableInspectionService(bInsService->GetValue());
1207
1208                 if (bInsService->GetValue() == false)
1209                 {
1210                         elevator->SetGoButton(false);
1211                         bGoToggle->SetValue(false);
1212                         bUp->SetValue(false);
1213                         bDown->SetValue(false);
1214                 }
1215                 SetMainValues();
1216         }
1217 }
1218
1219 void editelevator::On_bRefresh_Click(wxCommandEvent& event)
1220 {
1221         SetMainValues();
1222 }
1223
1224 void editelevator::On_bSetSkipFloorText_Click(wxCommandEvent& event)
1225 {
1226         if (elevator)
1227                 elevator->SetFloorSkipText(txtSkipFloorText->GetValue().ToAscii());
1228 }
1229
1230 void editelevator::On_bSetACPFloor_Click(wxCommandEvent& event)
1231 {
1232         if (elevator)
1233                 elevator->SetACPFloor(atoi(txtACPFloor->GetValue().ToAscii()));
1234 }
1235
1236 void editelevator::On_bSetRecallFloor_Click(wxCommandEvent& event)
1237 {
1238         if (elevator)
1239                 elevator->SetRecallFloor(atoi(txtRecallFloor->GetValue().ToAscii()));
1240 }
1241
1242 void editelevator::On_bSetRecallAlternate_Click(wxCommandEvent& event)
1243 {
1244         if (elevator)
1245                 elevator->SetAlternateRecallFloor(atoi(txtRecallAlternate->GetValue().ToAscii()));
1246 }
1247
1248 void editelevator::On_Fire1Off_Select(wxCommandEvent& event)
1249 {
1250         if (elevator)
1251                 elevator->EnableFireService1(0);
1252 }
1253
1254 void editelevator::On_Fire1On_Select(wxCommandEvent& event)
1255 {
1256         if (elevator)
1257                 elevator->EnableFireService1(1);
1258 }
1259
1260 void editelevator::On_Fire1Bypass_Select(wxCommandEvent& event)
1261 {
1262         if (elevator)
1263                 elevator->EnableFireService1(2);
1264 }
1265
1266 void editelevator::On_Fire2Off_Select(wxCommandEvent& event)
1267 {
1268         if (elevator)
1269                 elevator->EnableFireService2(0);
1270 }
1271
1272 void editelevator::On_Fire2On_Select(wxCommandEvent& event)
1273 {
1274         if (elevator)
1275                 elevator->EnableFireService2(1);
1276 }
1277
1278 void editelevator::On_Fire2Hold_Select(wxCommandEvent& event)
1279 {
1280         if (elevator)
1281                 elevator->EnableFireService2(2);
1282 }
1283
1284 void editelevator::On_bStopDoors_Click(wxCommandEvent& event)
1285 {
1286         if (elevator)
1287                 elevator->StopDoors(sDoor->GetThumbPosition());
1288 }
1289
1290 void editelevator::On_bUp_Toggle(wxCommandEvent& event)
1291 {
1292         if (elevator)
1293         {
1294                 if (elevator->InspectionService == false)
1295                         return;
1296
1297                 if (bUp->GetValue() == true)
1298                         elevator->MoveUp();
1299                 else
1300                         elevator->Stop(false);
1301         }
1302 }
1303
1304 void editelevator::On_bGoToggle_Toggle(wxCommandEvent& event)
1305 {
1306         if (elevator)
1307         {
1308                 if (elevator->InspectionService == false)
1309                         return;
1310
1311                 elevator->SetGoButton(bGoToggle->GetValue());
1312
1313                 if (bUp->GetValue() == true)
1314                         elevator->MoveUp();
1315                 else if (bDown->GetValue() == true)
1316                         elevator->MoveDown();
1317                 else
1318                         elevator->Stop(false);
1319         }
1320 }
1321
1322 void editelevator::On_bDown_Toggle(wxCommandEvent& event)
1323 {
1324         if (elevator)
1325         {
1326                 if (elevator->InspectionService == false)
1327                         return;
1328
1329                 if (bDown->GetValue() == true)
1330                         elevator->MoveDown();
1331                 else
1332                         elevator->Stop(false);
1333         }
1334 }
1335
1336 void editelevator::On_bUpIndicator_Click(wxCommandEvent& event)
1337 {
1338         Floor *floor = Simcore->GetFloor(sFloor->GetThumbPosition() - Simcore->Basements);
1339         if (floor && elevator)
1340                 floor->SetDirectionalIndicators(elevator->Number, true, false);
1341 }
1342
1343 void editelevator::On_bDownIndicator_Click(wxCommandEvent& event)
1344 {
1345         Floor *floor = Simcore->GetFloor(sFloor->GetThumbPosition() - Simcore->Basements);
1346         if (floor && elevator)
1347                 floor->SetDirectionalIndicators(elevator->Number, false, true);
1348 }
1349
1350 void editelevator::On_bResetQueues_Click(wxCommandEvent& event)
1351 {
1352         if (elevator)
1353                 elevator->ResetQueue(true, true);
1354 }
1355
1356 void editelevator::On_bSetParkingFloor_Click(wxCommandEvent& event)
1357 {
1358         if (elevator)
1359                 elevator->ParkingFloor = atoi(txtParkingFloor->GetValue().ToAscii());
1360 }
1361
1362 void editelevator::On_bSetParkingDelay_Click(wxCommandEvent& event)
1363 {
1364         if (elevator)
1365                 elevator->ParkingDelay = atof(txtParkingDelay->GetValue().ToAscii());
1366 }
1367
1368 void editelevator::On_bSetLevelingSpeed_Click(wxCommandEvent& event)
1369 {
1370         if (elevator)
1371                 elevator->LevelingSpeed = atof(txtLevelingSpeed->GetValue().ToAscii());
1372 }
1373
1374 void editelevator::On_bSetLevelingOffset_Click(wxCommandEvent& event)
1375 {
1376         if (elevator)
1377                 elevator->LevelingOffset = atof(txtLevelingOffset->GetValue().ToAscii());
1378 }
1379
1380 void editelevator::On_bSetLevelingOpen_Click(wxCommandEvent& event)
1381 {
1382         if (elevator)
1383                 elevator->LevelingOpen = atof(txtLevelingOpen->GetValue().ToAscii());
1384 }
1385
1386 void editelevator::On_bNotifyEarly_Click(wxCommandEvent& event)
1387 {
1388         if (elevator)
1389                 elevator->NotifyEarly = atoi(txtNotifyEarly->GetValue().ToAscii());
1390 }
1391
1392 void editelevator::On_chkRun_Click(wxCommandEvent& event)
1393 {
1394         if (elevator)
1395                 elevator->SetRunState(chkRun->GetValue());
1396 }
1397
1398 void editelevator::On_bSetQuickClose_Click(wxCommandEvent& event)
1399 {
1400         if (door)
1401                 door->QuickClose = atoi(txtQuickClose->GetValue().ToAscii());
1402 }
1403
1404 void editelevator::On_bSetNudgeTimer_Click(wxCommandEvent& event)
1405 {
1406         if (door)
1407                 door->NudgeTimer = atof(txtNudgeTimer->GetValue().ToAscii());
1408 }
1409
1410 void editelevator::On_bSetSlowSpeed_Click(wxCommandEvent& event)
1411 {
1412         if (door)
1413                 door->SlowSpeed = atof(txtSlowSpeed->GetValue().ToAscii());
1414 }
1415
1416 void editelevator::On_bSetManualSpeed_Click(wxCommandEvent& event)
1417 {
1418         if (door)
1419                 door->ManualSpeed = atof(txtManualSpeed->GetValue().ToAscii());
1420 }
1421
1422 void editelevator::On_bSetDepartureDelay_Click(wxCommandEvent& event)
1423 {
1424         if (elevator)
1425                 elevator->DepartureDelay = atof(txtDepartureDelay->GetValue().ToAscii());
1426 }
1427
1428 void editelevator::On_bSetArrivalDelay_Click(wxCommandEvent& event)
1429 {
1430         if (elevator)
1431                 elevator->ArrivalDelay = atof(txtArrivalDelay->GetValue().ToAscii());
1432 }