1 /*
2   Copyright (C) 1997-2005  Dimitrios P. Bouras
3 
4    This program is free software; you can redistribute it and/or modify
5    it under the terms of the GNU General Public License as published by
6    the Free Software Foundation; either version 2 of the License, or
7    (at your option) any later version.
8 
9    This program is distributed in the hope that it will be useful,
10    but WITHOUT ANY WARRANTY; without even the implied warranty of
11    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12    GNU General Public License for more details.
13 
14    You should have received a copy of the GNU General Public License
15    along with this program; if not, write to the Free Software
16    Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
17 
18    For author contact information, look in the README file.
19 */
20 
21 /* Callbacks */
22 
23 void doInstanceCheck(FL_OBJECT *, long);
24 
25 void doConnect(FL_OBJECT *, long);
26 void doInterrupt(FL_OBJECT *, long);
27 void doDisconnect(FL_OBJECT *, long);
28 void doQuit(FL_OBJECT *, long);
29 void doFile(FL_OBJECT *, long);
30 void doHelp(FL_OBJECT *, long);
31 void doISPDropChoice(FL_OBJECT *, long);
32 void doStartupTip(FL_OBJECT *, long);
33 
34 void doTelNoInput(FL_OBJECT *, long);
35 void doAccountInput(FL_OBJECT *, long);
36 void doPasswdInput(FL_OBJECT *, long);
37 void doUNInput(FL_OBJECT *, long);
38 void doRemoteInput(FL_OBJECT *, long);
39 void doAuthPAPButton(FL_OBJECT *, long);
40 void doAuthNoneButton(FL_OBJECT *, long);
41 void doAuthPAPSButton(FL_OBJECT *, long);
42 void doAuthCHAPSButton(FL_OBJECT *, long);
43 void doISPPick(FL_OBJECT *, long);
44 void doISPPickNEdit(FL_OBJECT *, long);
45 void doAccountInfoAdd(FL_OBJECT *, long);
46 void doAccountInfoDelete(FL_OBJECT *, long);
47 void doAccountInfoCopy(FL_OBJECT *, long);
48 void doAccountInfoPaste(FL_OBJECT *, long);
49 void doISPDefault(FL_OBJECT *, long);
50 void doISPAutoDial(FL_OBJECT *, long);
51 void doAutoRedial(FL_OBJECT *, long);
52 void doIspPttDropChoice(FL_OBJECT *, long);
53 void doIspZoneDropChoice(FL_OBJECT *, long);
54 void doAccountTip(FL_OBJECT *, long);
55 
56 void doRetryInput(FL_OBJECT *, long);
57 void doDelayInput(FL_OBJECT *, long);
58 void doCBYesButton(FL_OBJECT *, long);
59 void doCBNoButton(FL_OBJECT *, long);
60 void doCBOptions(FL_OBJECT *, long);
61 void doCNWaitInput(FL_OBJECT *, long);
62 void doLCPWaitInput(FL_OBJECT *, long);
63 void doCBInfoTip(FL_OBJECT *, long);
64 void doRBYesButton(FL_OBJECT *, long);
65 void doRBNoButton(FL_OBJECT *, long);
66 void doTTYesButton(FL_OBJECT *, long);
67 void doTTNoButton(FL_OBJECT *, long);
68 void doColumnsInput(FL_OBJECT *, long);
69 void doRowsInput(FL_OBJECT *, long);
70 void doExpectInput(FL_OBJECT *, long);
71 void doSendInput(FL_OBJECT *, long);
72 
73 void doCBInfoOK(FL_OBJECT *, long);
74 void doCBInfoCancel(FL_OBJECT *, long);
75 void doCBDelayInput(FL_OBJECT *, long);
76 void doCBExpectInput(FL_OBJECT *, long);
77 void doCBSendInput(FL_OBJECT *, long);
78 void doCBColumnsInput(FL_OBJECT *, long);
79 void doCBRowsInput(FL_OBJECT *, long);
80 void doCBTelInput(FL_OBJECT *, long);
81 void doLTScriptedButton(FL_OBJECT *, long);
82 void doLTTerminalButton(FL_OBJECT *, long);
83 void doLTRASButton(FL_OBJECT *, long);
84 
85 void doISPNameInput(FL_OBJECT *, long);
86 void doISPNameEditOK(FL_OBJECT *, long);
87 void doISPNameEditCancel(FL_OBJECT *, long);
88 
89 void doExitOK(FL_OBJECT *, long);
90 void doExitCancel(FL_OBJECT *, long);
91 
92 void doAboutOK(FL_OBJECT *, long);
93 void doHelpInfoOK(FL_OBJECT *, long);
94 void doStatsInfoOK(FL_OBJECT *, long);
95 
96 void doDeviceInput(FL_OBJECT *, long);
97 void doModemInitInput(FL_OBJECT *, long);
98 void doModemResetInput(FL_OBJECT *, long);
99 void doModemConnectInput(FL_OBJECT *, long);
100 void doToneButton(FL_OBJECT *, long);
101 void doPulseButton(FL_OBJECT *, long);
102 void doISDNButton(FL_OBJECT *, long);
103 void doModemDialInput(FL_OBJECT *, long);
104 void doSWCBSDButton(FL_OBJECT *, long);
105 void doSWCOffButton(FL_OBJECT *, long);
106 void doSWCDeflateButton(FL_OBJECT *, long);
107 void doSpeedButton(FL_OBJECT *, long);
108 void doCustomSpeedInput(FL_OBJECT *, long);
109 void doSWCInput(FL_OBJECT *, long);
110 void doAsyncmapInput(FL_OBJECT *, long);
111 void doEscapeYesButton(FL_OBJECT *, long);
112 void doEscapeNoButton(FL_OBJECT *, long);
113 void doEscapeInput(FL_OBJECT *, long);
114 void doHWButton(FL_OBJECT *, long);
115 void doSWButton(FL_OBJECT *, long);
116 void doCommInfoTip(FL_OBJECT *, long);
117 
118 void doLocalIPInput(FL_OBJECT *, long);
119 void doALYesButton(FL_OBJECT *, long);
120 void doALNoButton(FL_OBJECT *, long);
121 void doRemoteIPInput(FL_OBJECT *, long);
122 void doARYesButton(FL_OBJECT *, long);
123 void doARNoButton(FL_OBJECT *, long);
124 void doDRYesButton(FL_OBJECT *, long);
125 void doDRNoButton(FL_OBJECT *, long);
126 void doNMInput(FL_OBJECT *, long);
127 void doMTUInput(FL_OBJECT *, long);
128 void doMRUInput(FL_OBJECT *, long);
129 void doDNSNoButton(FL_OBJECT *, long);
130 void doDNSAutoButton(FL_OBJECT *, long);
131 void doDNSManualButton(FL_OBJECT *, long);
132 void doPDNSInput(FL_OBJECT *, long);
133 void doSDNSInput(FL_OBJECT *, long);
134 void doDNYesButton(FL_OBJECT *, long);
135 void doDNNoButton(FL_OBJECT *, long);
136 void doDomainInput(FL_OBJECT *, long);
137 void doTcpipInfoTip(FL_OBJECT *, long);
138 
139 void doOLTimeButton(FL_OBJECT *, long);
140 void doOLChargeButton(FL_OBJECT *, long);
141 void doLogNoButton(FL_OBJECT *, long);
142 void doLogMonthButton(FL_OBJECT *, long);
143 void doLogWeekButton(FL_OBJECT *, long);
144 void doLogBiMonthButton(FL_OBJECT *, long);
145 void doLogInfoOK(FL_OBJECT *, long);
146 void doLogInfoCancel(FL_OBJECT *, long);
147 void doPttDropChoice(FL_OBJECT *, long);
148 void doZoneDropChoice(FL_OBJECT *, long);
149 void doLogInfoPTTEdit(FL_OBJECT *, long);
150 void doLogInfoPTTAdd(FL_OBJECT *, long);
151 void doLogInfoPTTRemove(FL_OBJECT *, long);
152 
153 void doPttEditOK(FL_OBJECT *, long);
154 void doPttEditCancel(FL_OBJECT *, long);
155 void doPttEditHelp(FL_OBJECT *, long);
156 void doCUnitButton(FL_OBJECT *, long);
157 void doCMinuteButton(FL_OBJECT *, long);
158 void doCSecondsButton(FL_OBJECT *, long);
159 void doCPLButton(FL_OBJECT *, long);
160 void doCPRButton(FL_OBJECT *, long);
161 void doMLLButton(FL_OBJECT *, long);
162 void doMLNButton(FL_OBJECT *, long);
163 void doRuleCounter(FL_OBJECT *, long);
164 void doPttNameInput(FL_OBJECT *, long);
165 void doZonesInput(FL_OBJECT *, long);
166 void doCategoriesInput(FL_OBJECT *, long);
167 void doMinUnitsInput(FL_OBJECT *, long);
168 void doMinCostInput(FL_OBJECT *, long);
169 void doCSecondsInput(FL_OBJECT *, long);
170 void doUnitPriceInput(FL_OBJECT *, long);
171 void doCurrencyInput(FL_OBJECT *, long);
172 void doDecimalsInput(FL_OBJECT *, long);
173 void doBaseChargeInput(FL_OBJECT *, long);
174 void doRuleChargeInput(FL_OBJECT *, long);
175 void doRelDateInput(FL_OBJECT *, long);
176 void doRSInput(FL_OBJECT *, long);
177 void doREInput(FL_OBJECT *, long);
178 void doZEDYesButton(FL_OBJECT *, long);
179 void doZEDNoButton(FL_OBJECT *, long);
180 void doRDYesButton(FL_OBJECT *, long);
181 void doRDNoButton(FL_OBJECT *, long);
182 void doTButton(FL_OBJECT *, long);
183 void doZMLYesButton(FL_OBJECT *, long);
184 void doZMLNoButton(FL_OBJECT *, long);
185 void doMLSecondsInput(FL_OBJECT *, long);
186 void doDiscountInput(FL_OBJECT *, long);
187 void doZSInput(FL_OBJECT *, long);
188 void doZEInput(FL_OBJECT *, long);
189 void doRDInput(FL_OBJECT *, long);
190 void doRDEInput(FL_OBJECT *, long);
191 void doZonePick(FL_OBJECT *, long);
192 void doZonePickNEdit(FL_OBJECT *, long);
193 
194 void doPTTNameInput(FL_OBJECT *, long);
195 void doPTTNameEditOK(FL_OBJECT *, long);
196 void doPTTNameEditCancel(FL_OBJECT *, long);
197 
198 void doZoneNameInput(FL_OBJECT *, long);
199 void doZoneNameEditOK(FL_OBJECT *, long);
200 void doZoneNameEditCancel(FL_OBJECT *, long);
201 
202 void doPppdPathInput(FL_OBJECT *, long);
203 void doRunPathInput(FL_OBJECT *, long);
204 void doLockPathInput(FL_OBJECT *, long);
205 void doChatPathInput(FL_OBJECT *, long);
206 void doXispUtilsPathInput(FL_OBJECT *, long);
207 void doPipePathInput(FL_OBJECT *, long);
208 void doPppdDefault(FL_OBJECT *, long);
209 void doRunDefault(FL_OBJECT *, long);
210 void doLockDefault(FL_OBJECT *, long);
211 void doChatDefault(FL_OBJECT *, long);
212 void doXispUtilsDefault(FL_OBJECT *, long);
213 void doPipeDefault(FL_OBJECT *, long);
214 void doEnvInfoTip(FL_OBJECT *, long);
215 
216 void doOptsFolder(FL_OBJECT *, long);
217 void doOptsTabDone(FL_OBJECT *, long);
218 void doOptsTabCancel(FL_OBJECT *, long);
219 
220 /* Forms and Objects */
221 
222 #define FILE_OPTIONS    1
223 #define FILE_HINTS      2
224 #define FILE_EXIT       3
225 
226 #define OPTIONS_ACCOUNT 1
227 #define OPTIONS_DIALING 2
228 #define OPTIONS_COMM    3
229 #define OPTIONS_TCPIP   4
230 #define OPTIONS_PATHS   5
231 
232 #define LOGGING_OPTIONS 1
233 #define LOGGING_STATS   2
234 
235 #define HELP_ABOUT      1
236 #define HELP_GENERAL    2
237 
238 typedef struct {
239 	FL_FORM *instanceCheck;
240 	void *vdata;
241 	char *cdata;
242 	long  ldata;
243 	FL_OBJECT *msgString;
244 	FL_OBJECT *instanceCheckContinue;
245 	FL_OBJECT *instanceCheckAbort;
246 } FD_instanceCheck;
247 FD_instanceCheck * create_form_instanceCheck(void);
248 
249 typedef struct {
250 	FL_FORM *topFrame;
251 	void *vdata;
252 	char *cdata;
253 	long ldata;
254 	FL_OBJECT *conButton;
255 	FL_OBJECT *intButton;
256 	FL_OBJECT *disButton;
257 	FL_OBJECT *quitButton;
258 	FL_OBJECT *fileMenu;
259 	FL_OBJECT *logMenu;
260 	FL_OBJECT *hlpMenu;
261 	FL_OBJECT *lstBrowser;
262 	FL_OBJECT *logDescr;
263 	FL_OBJECT *logText;
264 	FL_OBJECT *speedText;
265 	FL_OBJECT *IPText;
266 	FL_OBJECT *statusText;
267 	FL_OBJECT *topIcon;
268 	FL_OBJECT *ISPDropChoice;
269 	FL_OBJECT *tipTimer;
270 } FD_topFrame;
271 FD_topFrame * create_form_topFrame(void);
272 
273 typedef struct {
274 	FL_FORM *accountInfo;
275 	void *vdata;
276 	char *cdata;
277 	long  ldata;
278 	FL_OBJECT *telInput;
279 	FL_OBJECT *accInput;
280 	FL_OBJECT *pswInput;
281 	FL_OBJECT *authType;
282 	FL_OBJECT *authPAPButton;
283 	FL_OBJECT *authNoneButton;
284 	FL_OBJECT *authPAPSButton;
285 	FL_OBJECT *authCHAPSButton;
286 	FL_OBJECT *UNInput;
287 	FL_OBJECT *remoteInput;
288 	FL_OBJECT *ispPttDropChoice;
289 	FL_OBJECT *ispZoneDropChoice;
290 	FL_OBJECT *ISPBrowser;
291 	FL_OBJECT *accountInfoAdd;
292 	FL_OBJECT *accountInfoDelete;
293 	FL_OBJECT *accountInfoCopy;
294 	FL_OBJECT *accountInfoPaste;
295 	FL_OBJECT *ISPDefault;
296 	FL_OBJECT *ISPAutoDial;
297 	FL_OBJECT *autoRedial;
298 	FL_OBJECT *tipTimer;
299 } FD_accountInfo;
300 FD_accountInfo * create_form_accountInfo(void);
301 
302 typedef struct {
303 	FL_FORM *renameISP;
304 	void *vdata;
305 	char *cdata;
306 	long ldata;
307 	FL_OBJECT *ISPNameInput;
308 	FL_OBJECT *ISPNameEditOK;
309 	FL_OBJECT *ISPNameEditCancel;
310 } FD_renameISP;
311 FD_renameISP * create_form_renameISP(void);
312 
313 typedef struct {
314 	FL_FORM *dialInfo;
315 	void *vdata;
316 	char *cdata;
317 	long ldata;
318 	FL_OBJECT *rtrInput;
319 	FL_OBJECT *dlyInput;
320 	FL_OBJECT *CNWaitInput;
321 	FL_OBJECT *LCPWaitInput;
322 	FL_OBJECT *TTGroup;
323 	FL_OBJECT *TTYesButton;
324 	FL_OBJECT *TTNoButton;
325 	FL_OBJECT *RBGroup;
326 	FL_OBJECT *RBYesButton;
327 	FL_OBJECT *RBNoButton;
328 	FL_OBJECT *CBGroup;
329 	FL_OBJECT *CBYesButton;
330 	FL_OBJECT *CBNoButton;
331 	FL_OBJECT *CBOptions;
332 	FL_OBJECT *TSGroup;
333 	FL_OBJECT *rowsInput;
334 	FL_OBJECT *columnsInput;
335 	FL_OBJECT *ALGroup;
336 	FL_OBJECT *expectInput;
337 	FL_OBJECT *sendInput;
338 	FL_OBJECT *tipTimer;
339 } FD_dialInfo;
340 FD_dialInfo * create_form_dialInfo(void);
341 
342 typedef struct {
343 	FL_FORM *CBInfo;
344 	void *vdata;
345 	char *cdata;
346 	long  ldata;
347 	FL_OBJECT *CBInfoOK;
348 	FL_OBJECT *CBInfoCancel;
349 	FL_OBJECT *CBdlyInput;
350 	FL_OBJECT *LTGroup;
351 	FL_OBJECT *LTScriptedButton;
352 	FL_OBJECT *LTTerminalButton;
353 	FL_OBJECT *LTRASButton;
354 	FL_OBJECT *ALGroup;
355 	FL_OBJECT *CBExpectInput;
356 	FL_OBJECT *CBSendInput;
357 	FL_OBJECT *TSGroup;
358 	FL_OBJECT *columnsInput;
359 	FL_OBJECT *rowsInput;
360 	FL_OBJECT *CBTelInput;
361 	FL_OBJECT *tipTimer;
362 } FD_CBInfo;
363 FD_CBInfo * create_form_CBInfo(void);
364 
365 typedef struct {
366 	void *vdata;
367 	char *cdata;
368 	long ldata;
369 	FL_FORM *aboutInfo;
370 	FL_OBJECT *verString;
371 	FL_OBJECT *aboutOK;
372 } FD_aboutInfo;
373 FD_aboutInfo * create_form_aboutInfo(void);
374 
375 typedef struct {
376 	FL_FORM *exitDialog;
377 	void *vdata;
378 	char *cdata;
379 	long ldata;
380 	FL_OBJECT *exitIcon;
381 	FL_OBJECT *exitOK;
382 	FL_OBJECT *exitCancel;
383 } FD_exitDialog;
384 FD_exitDialog * create_form_exitDialog(void);
385 
386 typedef struct {
387 	FL_FORM *helpInfo;
388 	void *vdata;
389 	char *cdata;
390 	long ldata;
391 	FL_OBJECT *helpBrowser;
392 	FL_OBJECT *helpInfoOK;
393 } FD_helpInfo;
394 FD_helpInfo * create_form_helpInfo(void);
395 
396 typedef struct {
397 	FL_FORM *alertMessage;
398 	void *vdata;
399 	char *cdata;
400 	long  ldata;
401 	FL_OBJECT *alertMessageDismiss;
402 	FL_OBJECT *alertMessageStr;
403 	FL_OBJECT *noMoreHints;
404 } FD_alertMessage;
405 FD_alertMessage * create_form_alertMessage(void);
406 
407 typedef struct {
408 	FL_FORM *commInfo;
409 	void *vdata;
410 	char *cdata;
411 	long ldata;
412 	FL_OBJECT *modemInitInput;
413 	FL_OBJECT *modemResetInput;
414 	FL_OBJECT *modemConnectInput;
415 	FL_OBJECT *modemDialType;
416 	FL_OBJECT *toneButton;
417 	FL_OBJECT *pulseButton;
418 	FL_OBJECT *ISDNButton;
419 	FL_OBJECT *modemDialInput;
420 	FL_OBJECT *SWCType;
421 	FL_OBJECT *SWCBSDButton;
422 	FL_OBJECT *SWCDeflateButton;
423 	FL_OBJECT *SWCOffButton;
424 	FL_OBJECT *deviceInput;
425 	FL_OBJECT *modemSpeedType;
426 	FL_OBJECT *speedButton[9];
427 	FL_OBJECT *customSpeedInput;
428 	FL_OBJECT *SWCInput;
429 	FL_OBJECT *asyncmapInput;
430 	FL_OBJECT *escapeType;
431 	FL_OBJECT *escapeYesButton;
432 	FL_OBJECT *escapeNoButton;
433 	FL_OBJECT *escapeInput;
434 	FL_OBJECT *flowCtrlType;
435 	FL_OBJECT *HWButton;
436 	FL_OBJECT *SWButton;
437 	FL_OBJECT *tipTimer;
438 } FD_commInfo;
439 FD_commInfo * create_form_commInfo(void);
440 
441 typedef struct {
442 	FL_FORM *tcpipInfo;
443 	void *vdata;
444 	char *cdata;
445 	long  ldata;
446 	FL_OBJECT *localIPInput;
447 	FL_OBJECT *ALTypeGroup;
448 	FL_OBJECT *ALYesButton;
449 	FL_OBJECT *ALNoButton;
450 	FL_OBJECT *remoteIPInput;
451 	FL_OBJECT *ARTypeGroup;
452 	FL_OBJECT *ARYesButton;
453 	FL_OBJECT *ARNoButton;
454 	FL_OBJECT *DRTypeGroup;
455 	FL_OBJECT *DRYesButton;
456 	FL_OBJECT *DRNoButton;
457 	FL_OBJECT *NMInput;
458 	FL_OBJECT *MTUInput;
459 	FL_OBJECT *MRUInput;
460 	FL_OBJECT *NRTypeGroup;
461 	FL_OBJECT *DNSNoButton;
462 	FL_OBJECT *DNSAutoButton;
463 	FL_OBJECT *DNSManualButton;
464 	FL_OBJECT *pDNSInput;
465 	FL_OBJECT *sDNSInput;
466 	FL_OBJECT *DNTypeGroup;
467 	FL_OBJECT *DNYesButton;
468 	FL_OBJECT *DNNoButton;
469 	FL_OBJECT *domainInput;
470 	FL_OBJECT *tipTimer;
471 } FD_tcpipInfo;
472 FD_tcpipInfo * create_form_tcpipInfo(void);
473 
474 typedef struct {
475 	FL_FORM *logInfo;
476 	void *vdata;
477 	char *cdata;
478 	long ldata;
479 	FL_OBJECT *OLGroup;
480 	FL_OBJECT *OLTimeButton;
481 	FL_OBJECT *OLChargeButton;
482 	FL_OBJECT *logGroup;
483 	FL_OBJECT *logNoButton;
484 	FL_OBJECT *logMonthButton;
485 	FL_OBJECT *logWeekButton;
486 	FL_OBJECT *logBiMonthButton;
487 	FL_OBJECT *logInfoOK;
488 	FL_OBJECT *logInfoCancel;
489 	FL_OBJECT *pttDropChoice;
490 	FL_OBJECT *zoneDropChoice;
491 	FL_OBJECT *costBrowser;
492 	FL_OBJECT *LogInfoPTTEdit;
493 	FL_OBJECT *LogInfoPTTAdd;
494 	FL_OBJECT *logInfoPTTRemove;
495 } FD_logInfo;
496 FD_logInfo * create_form_logInfo(void);
497 
498 typedef struct {
499 	FL_FORM *statInfo;
500 	void *vdata;
501 	char *cdata;
502 	long ldata;
503 	FL_OBJECT *statsBrowser;
504 	FL_OBJECT *statsChart;
505 	FL_OBJECT *pieChart;
506 	FL_OBJECT *statInfoOK;
507 } FD_statInfo;
508 FD_statInfo * create_form_statInfo(void);
509 
510 typedef struct {
511 	FL_FORM *pttEditor;
512 	void *vdata;
513 	char *cdata;
514 	long  ldata;
515 	FL_OBJECT *zonePick;
516 	FL_OBJECT *defaultTariffUnits;
517 	FL_OBJECT *pttEditOK;
518 	FL_OBJECT *pttEditCancel;
519 	FL_OBJECT *ruleTariffUnits;
520 	FL_OBJECT *pttEditHelp;
521 	FL_OBJECT *CMType;
522 	FL_OBJECT *CUnitButton;
523 	FL_OBJECT *CMinuteButton;
524 	FL_OBJECT *CSecondsButton;
525 	FL_OBJECT *CPType;
526 	FL_OBJECT *CPLButton;
527 	FL_OBJECT *CPRButton;
528 	FL_OBJECT *MCType;
529 	FL_OBJECT *MLLButton;
530 	FL_OBJECT *MLNButton;
531 	FL_OBJECT *ruleCounter;
532 	FL_OBJECT *pttNameInput;
533 	FL_OBJECT *zonesInput;
534 	FL_OBJECT *categoriesInput;
535 	FL_OBJECT *minUnitsInput;
536 	FL_OBJECT *minCostInput;
537 	FL_OBJECT *CSecondsInput;
538 	FL_OBJECT *unitPriceInput;
539 	FL_OBJECT *currencyInput;
540 	FL_OBJECT *decimalsInput;
541 	FL_OBJECT *baseChargeInput;
542 	FL_OBJECT *ruleChargeInput;
543 	FL_OBJECT *relDateInput;
544 	FL_OBJECT *RSHInput;
545 	FL_OBJECT *RSMInput;
546 	FL_OBJECT *RSSInput;
547 	FL_OBJECT *REHInput;
548 	FL_OBJECT *REMInput;
549 	FL_OBJECT *RESInput;
550 	FL_OBJECT *ZEDType;
551 	FL_OBJECT *ZEDYesButton;
552 	FL_OBJECT *ZEDNoButton;
553 	FL_OBJECT *RDStr;
554 	FL_OBJECT *REDType;
555 	FL_OBJECT *RDYesButton;
556 	FL_OBJECT *RDNoButton;
557 	FL_OBJECT *CTType;
558 	FL_OBJECT *TWDButton;
559 	FL_OBJECT *TSDButton;
560 	FL_OBJECT *THRButton;
561 	FL_OBJECT *TUDButton;
562 	FL_OBJECT *TWEButton;
563 	FL_OBJECT *THAButton;
564 	FL_OBJECT *TWDSButton;
565 	FL_OBJECT *TWESButton;
566 	FL_OBJECT *TAWButton;
567 	FL_OBJECT *ZMLStr;
568 	FL_OBJECT *ZMLType;
569 	FL_OBJECT *ZMLYesButton;
570 	FL_OBJECT *ZMLNoButton;
571 	FL_OBJECT *TimeChargeType;
572 	FL_OBJECT *MLSecondsInput;
573 	FL_OBJECT *discountInput;
574 	FL_OBJECT *DiscountType;
575 	FL_OBJECT *PCSymbol;
576 	FL_OBJECT *ZSHInput;
577 	FL_OBJECT *ZSMInput;
578 	FL_OBJECT *ZSSInput;
579 	FL_OBJECT *ZEHInput;
580 	FL_OBJECT *ZEMInput;
581 	FL_OBJECT *ZESInput;
582 	FL_OBJECT *ruleDateStr;
583 	FL_OBJECT *CalDateType;
584 	FL_OBJECT *RDMInput;
585 	FL_OBJECT *RDDInput;
586 	FL_OBJECT *EndDateType;
587 	FL_OBJECT *RDEMInput;
588 	FL_OBJECT *RDEDInput;
589 } FD_pttEditor;
590 FD_pttEditor * create_form_pttEditor(void);
591 
592 typedef struct {
593 	FL_FORM *renamePTT;
594 	void *vdata;
595 	char *cdata;
596 	long  ldata;
597 	FL_OBJECT *PTTNameInput;
598 	FL_OBJECT *PTTNameEditOK;
599 	FL_OBJECT *PTTNameEditCancel;
600 } FD_renamePTT;
601 FD_renamePTT * create_form_renamePTT(void);
602 
603 typedef struct {
604 	FL_FORM *renameZone;
605 	void *vdata;
606 	char *cdata;
607 	long  ldata;
608 	FL_OBJECT *zoneNameInput;
609 	FL_OBJECT *zoneNameEditOK;
610 	FL_OBJECT *zoneNameEditCancel;
611 } FD_renameZone;
612 FD_renameZone * create_form_renameZone(void);
613 
614 typedef struct {
615 	FL_FORM *actionVerify;
616 	void *vdata;
617 	char *cdata;
618 	long  ldata;
619 	FL_OBJECT *actionVerifyNo;
620 	FL_OBJECT *actionVerifyYes;
621 	FL_OBJECT *actionVerifyStr;
622 } FD_actionVerify;
623 FD_actionVerify * create_form_actionVerify(void);
624 
625 typedef struct {
626 	FL_FORM *envInfo;
627 	void *vdata;
628 	char *cdata;
629 	long  ldata;
630 	FL_OBJECT *pppdPathInput;
631 	FL_OBJECT *runPathInput;
632 	FL_OBJECT *lockPathInput;
633 	FL_OBJECT *chatPathInput;
634 	FL_OBJECT *xispUtilsPathInput;
635 	FL_OBJECT *pipePathInput;
636 	FL_OBJECT *pppdDefault;
637 	FL_OBJECT *runDefault;
638 	FL_OBJECT *lockDefault;
639 	FL_OBJECT *chatDefault;
640 	FL_OBJECT *xispUtilsDefault;
641 	FL_OBJECT *pipeDefault;
642 	FL_OBJECT *pppdStatus;
643 	FL_OBJECT *runStatus;
644 	FL_OBJECT *lockStatus;
645 	FL_OBJECT *chatStatus;
646 	FL_OBJECT *utilsStatus;
647 	FL_OBJECT *tipTimer;
648 } FD_envInfo;
649 FD_envInfo * create_form_envInfo(void);
650 
651 typedef struct {
652 	FL_FORM *optsTab;
653 	void *vdata;
654 	char *cdata;
655 	long  ldata;
656 	FL_OBJECT *optsFolder;
657 	FL_OBJECT *accountInfoButton;
658 	FL_OBJECT *dialInfoButton;
659 	FL_OBJECT *commInfoButton;
660 	FL_OBJECT *tcpipInfoButton;
661 	FL_OBJECT *envInfoButton;
662 	FL_OBJECT *optsTabDone;
663 	FL_OBJECT *optsTabCancel;
664 } FD_optsTab;
665 FD_optsTab * create_form_optsTab(void);
666 
667 /* Other xISP defines */
668 
669 #define BU_INTERVAL  2.0			/* check dialer output every 2 seconds */
670 #define CT_INTERVAL  5.0			/* update connection time every 5 sec */
671 #define SP_INTERVAL  MINSEC_LINK_TO	/* link status check poll inteval */
672 #define DIAL_WAIT    30.0			/* max sec for xispdial to open pipe */
673 #define UD_WAIT      16.0			/* max sec for ip-up/-down output in pipe */
674 #ifdef XPMANIMATE
675 #define XPM_INTERVAL 0.3			/* XPM animation trigger interval */
676 #endif
677 #define HINT_TRIGGER  0.2	/* one-shot trigger timeout for pop-up hints */
678 
679 #define LCP_RESTART      3	/* for the pppd cmd line argument with same name */
680 #define LCP_RESTART_STR "3"
681 
682 typedef struct {			/* the color structure */
683 	int r, g, b;
684 } color_t;
685 
686 #define BGCOL_DEFAULT  {79, 124, 156}	/* default form-background color */
687 #define BGCOL_STRING   "#4F7C9C"
688 
689 #define PIDFP  "ppp"		/* pppd's PID file prefix */
690 
691 #define DISCONNECTED 0		/* to specify xISP state */
692 #define DIALING      1
693 #define CONNECTED    2
694 
695 #define EMPTY_TIME  "00:00:00"
696 #define EMPTY_IP    "___.___.___.___"
697 #define EMPTY_SPEED "__,___"
698 
699 #define TIMER_CURSOR_WIDTH 17
700 #define TIMER_CURSOR_HEIGHT 19
701 
702 /* Extra information for input boxes (from XForms internals); this is
703    so that we can display '*' characters instead of ' ' in the secret
704    input password field; there was no other "nicer" way to do it since
705    the API does not give us definitions & control of the SPEC struct */
706 
707 typedef struct
708 {
709     char *str;			/* the input text                  */
710     FL_COLOR textcol;	/* text color                      */
711     FL_COLOR curscol;	/* cursor color                    */
712     int position;		/* cursor position (in chars)      */
713     int beginrange;		/* start of the range              */
714     int endrange;		/* end of the range                */
715     int size;			/* size of the string              */
716     int changed;		/* whether the field has changed   */
717     int how_return;		/* whether to return value always  */
718     int drawtype;		/* if to draw text with background */
719     int noscroll;		/* true if no scrollis allowd      */
720     int maxchars;		/* limit for normal_input          */
721     int attrib1;
722     int attrib2;
723     FL_INPUTVALIDATOR validate;
724 
725     /* scroll stuff. */
726     FL_OBJECT *dummy;	/* only for the size of composite */
727     FL_OBJECT *hscroll;
728     FL_OBJECT *vscroll;
729     FL_OBJECT *input;
730     int xoffset;
731     int yoffset;
732     int screenlines;
733     int topline;
734     int lines;			/* total number of lines in the field   */
735     int xpos, ypos;		/* current cursor position in char,line */
736     int cur_pixels;		/* current line length in pixels        */
737     int max_pixels;		/* max length of all lines              */
738     int max_pixels_line;
739     int charh;			/* character height                     */
740     int h, w;			/* text area                            */
741     float hsize, vsize;
742     float hval, vval;
743     float hinc1, hinc2;
744     float vinc1, vinc2;
745     int h_pref, v_pref;	/* scrollbar preference                 */
746     int vw, vw_def;
747     int hh, hh_def;
748     int h_on, v_on;
749     int dead_area, attrib;
750     int no_cursor;
751     int field_char;
752 }
753 SPEC;
754 
755 /* exit() replacement for emulating on_exit() functionality */
756 
757 #ifndef SUNOS41x
758 #define exit(x) {extern int exitStatus; exitStatus = x; exit(x);}
759 #endif
760 
761