1 /*
2 *
3 * XASTIR, Amateur Station Tracking and Information Reporting
4 * Copyright (C) 1999,2000 Frank Giannandrea
5 * Copyright (C) 2000-2019 The Xastir Group
6 *
7 * This program is free software; you can redistribute it and/or
8 * modify it under the terms of the GNU General Public License
9 * as published by the Free Software Foundation; either version 2
10 * of the License, or (at your option) any later version.
11 *
12 * This program is distributed in the hope that it will be useful,
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 * GNU General Public License for more details.
16 *
17 * You should have received a copy of the GNU General Public License
18 * along with this program; if not, write to the Free Software
19 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
20 *
21 * Look at the README for more information on the program.
22 */
23
24 #ifdef HAVE_CONFIG_H
25 #include "config.h"
26 #endif // HAVE_CONFIG_H
27
28 #include "snprintf.h"
29
30 #include <stdio.h>
31 #include <stdlib.h>
32 #include <unistd.h>
33 #include <termios.h>
34 #include <Xm/XmAll.h>
35
36 #include "xastir.h"
37 #include "main.h"
38 #include "xa_config.h"
39 #include "interface.h"
40 #include "wx.h"
41 #include "draw_symbols.h"
42 #include "util.h"
43 #include "db_gis.h"
44
45 // Must be last include file
46 #include "leak_detection.h"
47
48 extern XmFontList fontlist1; // Menu/System fontlist
49
50 // lesstif (at least as of version 0.94 in 2008), doesn't
51 // have full implementation of combo boxes.
52 #ifndef USE_COMBO_BOX
53 #if (XmVERSION >= 2 && !defined(LESSTIF_VERSION))
54 #define USE_COMBO_BOX 1
55 #endif
56 #endif // USE_COMBO_BOX
57
58 Widget configure_interface_dialog = NULL;
59 Widget choose_interface_dialog = NULL;
60 Widget interface_type_list = NULL;
61 Widget control_interface_dialog = NULL;
62 Widget control_iface_list = NULL;
63
64
65 static xastir_mutex control_interface_dialog_lock;
66
67 ioparam devices[MAX_IFACE_DEVICES];
68 xastir_mutex devices_lock;
69
70 void Choose_interface_destroy_shell(Widget widget, XtPointer clientData, XtPointer callData);
71 void modify_device_list(int option, int port);
72
73
74
75
76
interface_gui_init(void)77 void interface_gui_init(void)
78 {
79 init_critical_section( &control_interface_dialog_lock );
80 init_critical_section( &devices_lock );
81 }
82
83
84
85
86
87 /*****************************************************/
88 /* Universal Serial GUI */
89 /*****************************************************/
90 int device_speed;
91 int device_style;
92 int device_igate_options;
93 int device_data_type;
94
95
96
97
98
speed_toggle(Widget UNUSED (widget),XtPointer clientData,XtPointer callData)99 void speed_toggle( Widget UNUSED(widget), XtPointer clientData, XtPointer callData)
100 {
101 char *which = (char *)clientData;
102
103 XmToggleButtonCallbackStruct *state = (XmToggleButtonCallbackStruct *)callData;
104 if (state->set)
105 {
106 device_speed = atoi(which);
107 }
108 else
109 {
110 device_speed = 0;
111 }
112 }
113
114
115
116
117
style_toggle(Widget UNUSED (widget),XtPointer clientData,XtPointer callData)118 void style_toggle( Widget UNUSED(widget), XtPointer clientData, XtPointer callData)
119 {
120 char *which = (char *)clientData;
121
122 XmToggleButtonCallbackStruct *state = (XmToggleButtonCallbackStruct *)callData;
123
124 if (state->set)
125 {
126 device_style = atoi(which);
127 }
128 else
129 {
130 device_style = 0;
131 }
132 }
133
134
135
136
137
data_toggle(Widget UNUSED (widget),XtPointer clientData,XtPointer callData)138 void data_toggle( Widget UNUSED(widget), XtPointer clientData, XtPointer callData)
139 {
140 char *which = (char *)clientData;
141
142 XmToggleButtonCallbackStruct *state = (XmToggleButtonCallbackStruct *)callData;
143
144 if (state->set)
145 {
146 device_data_type = atoi(which);
147 }
148 else
149 {
150 device_data_type = 0;
151 }
152 }
153
154
155
156
157
rain_gauge_toggle(Widget UNUSED (widget),XtPointer clientData,XtPointer callData)158 void rain_gauge_toggle( Widget UNUSED(widget), XtPointer clientData, XtPointer callData)
159 {
160 char *which = (char *)clientData;
161
162 XmToggleButtonCallbackStruct *state = (XmToggleButtonCallbackStruct *)callData;
163
164 if (state->set)
165 {
166 WX_rain_gauge_type = atoi(which);
167 }
168 else
169 {
170 WX_rain_gauge_type = 0;
171 }
172 }
173
174
175
176
177
igate_toggle(Widget UNUSED (widget),XtPointer clientData,XtPointer callData)178 void igate_toggle( Widget UNUSED(widget), XtPointer clientData, XtPointer callData)
179 {
180 char *which = (char *)clientData;
181
182 XmToggleButtonCallbackStruct *state = (XmToggleButtonCallbackStruct *)callData;
183
184 if (state->set)
185 {
186 device_igate_options = atoi(which);
187 }
188 else
189 {
190 device_igate_options = 0;
191 }
192 }
193
194
195
196
197
set_port_speed(int port)198 void set_port_speed(int port)
199 {
200
201 switch (device_speed)
202 {
203 case(1):
204 devices[port].sp=B300;
205 break;
206
207 case(2):
208 devices[port].sp=B1200;
209 break;
210
211 case(3):
212 devices[port].sp=B2400;
213 break;
214
215 case(4):
216 devices[port].sp=B4800;
217 break;
218
219 case(5):
220 devices[port].sp=B9600;
221 break;
222
223 case(6):
224 devices[port].sp=B19200;
225 break;
226
227 case(7):
228 devices[port].sp=B38400;
229 break;
230
231 #ifndef __LSB__
232 case(8):
233 devices[port].sp=B57600;
234 break;
235
236 case(9):
237 devices[port].sp=B115200;
238 break;
239
240 case(10):
241 #ifndef B230400
242 devices[port].sp=B115200;
243 #else // B230400
244 devices[port].sp=B230400;
245 #endif // B230400
246 break;
247 #endif // __LSB__
248
249 default:
250 break;
251 }
252 }
253
254
255
256
257
258
259
260 /*****************************************************/
261 /* Configure Serial TNC GUI */
262 /*****************************************************/
263
264 /**** TNC CONFIGURE ******/
265 int TNC_port;
266 int TNC_device;
267 Widget config_TNC_dialog = (Widget)NULL;
268 Widget TNC_active_on_startup;
269 Widget TNC_transmit_data;
270 Widget TNC_device_name_data;
271 Widget TNC_radio_port_data; // Used only for Multi-Port TNC's
272 Widget TNC_converse_string;
273 Widget TNC_comment;
274 Widget TNC_unproto1_data;
275 Widget TNC_unproto2_data;
276 Widget TNC_unproto3_data;
277 Widget TNC_igate_data;
278 Widget TNC_up_file_data;
279 Widget TNC_down_file_data;
280 Widget TNC_txdelay;
281 Widget TNC_persistence;
282 Widget TNC_slottime;
283 Widget TNC_txtail;
284 Widget TNC_init_kiss; // Used to initialize KISS-Mode
285 Widget TNC_fullduplex;
286 Widget TNC_extra_delay;
287 Widget TNC_GPS_set_time;
288 Widget TNC_AUX_GPS_Retrieve_Needed;
289 Widget TNC_relay_digipeat;
290
291
292
293
294
Config_TNC_destroy_shell(Widget UNUSED (widget),XtPointer clientData,XtPointer UNUSED (callData))295 void Config_TNC_destroy_shell( Widget UNUSED(widget), XtPointer clientData, XtPointer UNUSED(callData) )
296 {
297 Widget shell = (Widget) clientData;
298 XtPopdown(shell);
299 XtDestroyWidget(shell);
300 config_TNC_dialog = (Widget)NULL;
301 if (choose_interface_dialog != NULL)
302 {
303 Choose_interface_destroy_shell(choose_interface_dialog,choose_interface_dialog,NULL);
304 }
305 choose_interface_dialog = (Widget)NULL;
306 }
307
308
309
310
311
Config_TNC_change_data(Widget widget,XtPointer clientData,XtPointer callData)312 void Config_TNC_change_data(Widget widget, XtPointer clientData, XtPointer callData)
313 {
314 int type;
315 int was_up;
316 char *temp_ptr;
317
318
319 busy_cursor(appshell);
320
321 was_up=0;
322 if (get_device_status(TNC_port) == DEVICE_IN_USE)
323 {
324 /* if active shutdown before changes are made */
325 /*fprintf(stderr,"Device is up, shutting down\n");*/
326
327 //WE7U: Modify for MKISS?
328 (void)del_device(TNC_port);
329
330 was_up=1;
331 usleep(1000000); // Wait for one second
332 }
333
334 /* device type */
335 type=DEVICE_SERIAL_TNC; // Default in case not defined next
336 if (TNC_device)
337 {
338 type=TNC_device; // Modified to support more than two types
339 }
340
341 begin_critical_section(&devices_lock, "interface_gui.c:Config_TNC_change_data" );
342
343 temp_ptr = XmTextFieldGetString(TNC_device_name_data);
344 xastir_snprintf(devices[TNC_port].device_name,
345 sizeof(devices[TNC_port].device_name),
346 "%s",
347 temp_ptr);
348 XtFree(temp_ptr);
349
350 (void)remove_trailing_spaces(devices[TNC_port].device_name);
351
352 temp_ptr = XmTextFieldGetString(TNC_converse_string);
353 xastir_snprintf(devices[TNC_port].device_converse_string,
354 sizeof(devices[TNC_port].device_converse_string),
355 "%s",
356 temp_ptr);
357 XtFree(temp_ptr);
358
359 (void)remove_trailing_spaces(devices[TNC_port].device_converse_string);
360
361 temp_ptr = XmTextFieldGetString(TNC_comment);
362 xastir_snprintf(devices[TNC_port].comment,
363 sizeof(devices[TNC_port].comment),
364 "%s",
365 temp_ptr);
366 XtFree(temp_ptr);
367
368 (void)remove_trailing_spaces(devices[TNC_port].comment);
369
370 if (devices[TNC_port].device_type == DEVICE_SERIAL_MKISS_TNC)
371 {
372
373 // If MKISS, fetch "radio_port". If empty, store a zero.
374 temp_ptr = XmTextFieldGetString(TNC_radio_port_data);
375 xastir_snprintf(devices[TNC_port].radio_port,
376 sizeof(devices[TNC_port].radio_port),
377 "%s",
378 temp_ptr);
379 XtFree(temp_ptr);
380
381 (void)remove_trailing_spaces(devices[TNC_port].radio_port);
382
383 if (strcmp(devices[TNC_port].radio_port,"") == 0)
384 {
385 xastir_snprintf(devices[TNC_port].radio_port,
386 sizeof(devices[TNC_port].radio_port),
387 "0");
388 }
389 //fprintf(stderr,"Radio Port: %s\n",devices[TNC_port].radio_port);
390 }
391
392 if (XmToggleButtonGetState(TNC_active_on_startup))
393 {
394 devices[TNC_port].connect_on_startup=1;
395 }
396 else
397 {
398 devices[TNC_port].connect_on_startup=0;
399 }
400
401 if(XmToggleButtonGetState(TNC_transmit_data))
402 {
403 devices[TNC_port].transmit_data=1;
404 if ( (devices[TNC_port].device_type == DEVICE_SERIAL_KISS_TNC)
405 || (devices[TNC_port].device_type == DEVICE_SERIAL_MKISS_TNC) )
406 {
407
408 #ifdef SERIAL_KISS_RELAY_DIGI
409 XtSetSensitive(TNC_relay_digipeat, TRUE);
410 #else
411 XtSetSensitive(TNC_relay_digipeat, FALSE);
412 #endif // SERIAL_KISS_RELAY_DIGI
413
414 }
415
416 }
417 else
418 {
419 devices[TNC_port].transmit_data=0;
420 if ( (devices[TNC_port].device_type == DEVICE_SERIAL_KISS_TNC)
421 || (devices[TNC_port].device_type == DEVICE_SERIAL_MKISS_TNC) )
422 {
423 XtSetSensitive(TNC_relay_digipeat, FALSE);
424 }
425 }
426
427 if ( (type == DEVICE_SERIAL_KISS_TNC)
428 || (type == DEVICE_SERIAL_MKISS_TNC) )
429 {
430
431 if (XmToggleButtonGetState(TNC_relay_digipeat))
432 {
433 devices[TNC_port].relay_digipeat=1;
434 }
435 else
436 {
437 devices[TNC_port].relay_digipeat=0;
438 }
439 }
440
441 switch(type)
442 {
443
444 case DEVICE_SERIAL_TNC:
445 case DEVICE_SERIAL_TNC_HSP_GPS:
446 case DEVICE_SERIAL_TNC_AUX_GPS:
447 if (XmToggleButtonGetState(TNC_extra_delay))
448 {
449 devices[TNC_port].tnc_extra_delay=1000000; // 1,000,000 us
450 }
451 else
452 {
453 devices[TNC_port].tnc_extra_delay=0;
454 }
455 break;
456 default:
457 break;
458 }
459
460 switch(type)
461 {
462
463 case DEVICE_SERIAL_TNC_HSP_GPS:
464 case DEVICE_SERIAL_TNC_AUX_GPS:
465 if (XmToggleButtonGetState(TNC_GPS_set_time))
466 {
467 devices[TNC_port].set_time=1;
468 }
469 else
470 {
471 devices[TNC_port].set_time=0;
472 }
473
474 if (type == DEVICE_SERIAL_TNC_AUX_GPS)
475 {
476 if (XmToggleButtonGetState(TNC_AUX_GPS_Retrieve_Needed))
477 {
478 devices[TNC_port].gps_retrieve=DEFAULT_GPS_RETR;
479 }
480 else
481 {
482 devices[TNC_port].gps_retrieve=0;
483 }
484 }
485
486 break;
487
488 case DEVICE_SERIAL_TNC:
489 case DEVICE_SERIAL_KISS_TNC:
490 case DEVICE_SERIAL_MKISS_TNC:
491 default:
492 break;
493 }
494
495 set_port_speed(TNC_port);
496
497 devices[TNC_port].style=device_style;
498 devices[TNC_port].igate_options=device_igate_options;
499
500 temp_ptr = XmTextFieldGetString(TNC_unproto1_data);
501 xastir_snprintf(devices[TNC_port].unproto1,
502 sizeof(devices[TNC_port].unproto1),
503 "%s",
504 temp_ptr);
505 XtFree(temp_ptr);
506
507 (void)remove_trailing_spaces(devices[TNC_port].unproto1);
508
509 if(check_unproto_path(devices[TNC_port].unproto1))
510 {
511 popup_message_always(langcode("WPUPCFT042"),
512 langcode("WPUPCFT043"));
513 }
514
515 temp_ptr = XmTextFieldGetString(TNC_unproto2_data);
516 xastir_snprintf(devices[TNC_port].unproto2,
517 sizeof(devices[TNC_port].unproto2),
518 "%s",
519 temp_ptr);
520 XtFree(temp_ptr);
521
522 (void)remove_trailing_spaces(devices[TNC_port].unproto2);
523
524 if(check_unproto_path(devices[TNC_port].unproto2))
525 {
526 popup_message_always(langcode("WPUPCFT042"),
527 langcode("WPUPCFT043"));
528 }
529
530 temp_ptr = XmTextFieldGetString(TNC_unproto3_data);
531 xastir_snprintf(devices[TNC_port].unproto3,
532 sizeof(devices[TNC_port].unproto3),
533 "%s",
534 temp_ptr);
535 XtFree(temp_ptr);
536
537 (void)remove_trailing_spaces(devices[TNC_port].unproto3);
538
539 if(check_unproto_path(devices[TNC_port].unproto3))
540 {
541 popup_message_always(langcode("WPUPCFT042"),
542 langcode("WPUPCFT043"));
543 }
544
545 temp_ptr = XmTextFieldGetString(TNC_igate_data);
546 xastir_snprintf(devices[TNC_port].unproto_igate,
547 sizeof(devices[TNC_port].unproto_igate),
548 "%s",
549 temp_ptr);
550 XtFree(temp_ptr);
551
552 (void)remove_trailing_spaces(devices[TNC_port].unproto_igate);
553
554 if(check_unproto_path(devices[TNC_port].unproto_igate))
555 {
556 popup_message_always(langcode("WPUPCFT044"),
557 langcode("WPUPCFT043"));
558 }
559
560
561 if ( (type == DEVICE_SERIAL_KISS_TNC)
562 || (type == DEVICE_SERIAL_MKISS_TNC) )
563 {
564
565 // KISS TNC, no up/down files for this one!
566 devices[TNC_port].tnc_up_file[0] = '\0';
567 devices[TNC_port].tnc_down_file[0] = '\0';
568
569 // Instead we have KISS parameters to set
570
571 // We really should do some validation of these strings
572
573 //WE7U: Modify for MKISS: Must send to the proper Radio Port.
574 temp_ptr = XmTextFieldGetString(TNC_txdelay);
575 xastir_snprintf(devices[TNC_port].txdelay,
576 sizeof(devices[TNC_port].txdelay),
577 "%s",
578 temp_ptr);
579 XtFree(temp_ptr);
580
581 send_kiss_config(TNC_port,0,0x01,atoi(devices[TNC_port].txdelay));
582
583 temp_ptr = XmTextFieldGetString(TNC_persistence);
584 xastir_snprintf(devices[TNC_port].persistence,
585 sizeof(devices[TNC_port].persistence),
586 "%s",
587 temp_ptr);
588 XtFree(temp_ptr);
589
590 send_kiss_config(TNC_port,0,0x02,atoi(devices[TNC_port].persistence));
591
592 temp_ptr = XmTextFieldGetString(TNC_slottime);
593 xastir_snprintf(devices[TNC_port].slottime,
594 sizeof(devices[TNC_port].slottime),
595 "%s",
596 temp_ptr);
597 XtFree(temp_ptr);
598
599 send_kiss_config(TNC_port,0,0x03,atoi(devices[TNC_port].slottime));
600
601 temp_ptr = XmTextFieldGetString(TNC_txtail);
602 xastir_snprintf(devices[TNC_port].txtail,
603 sizeof(devices[TNC_port].txtail),
604 "%s",
605 temp_ptr);
606 XtFree(temp_ptr);
607
608 send_kiss_config(TNC_port,0,0x04,atoi(devices[TNC_port].txtail));
609
610 if (XmToggleButtonGetState(TNC_fullduplex))
611 {
612 devices[TNC_port].fullduplex=1;
613 }
614 else
615 {
616 devices[TNC_port].fullduplex=0;
617 }
618 send_kiss_config(TNC_port,0,0x05,devices[TNC_port].fullduplex);
619
620 // For KISS-mode
621 if (XmToggleButtonGetState(TNC_init_kiss))
622 {
623 devices[TNC_port].init_kiss=1;
624 }
625 else
626 {
627 devices[TNC_port].init_kiss=0;
628 }
629 }
630 else
631 {
632 temp_ptr = XmTextFieldGetString(TNC_up_file_data);
633 xastir_snprintf(devices[TNC_port].tnc_up_file,
634 sizeof(devices[TNC_port].tnc_up_file),
635 "%s",
636 temp_ptr);
637 XtFree(temp_ptr);
638
639 (void)remove_trailing_spaces(devices[TNC_port].tnc_up_file);
640
641 temp_ptr = XmTextFieldGetString(TNC_down_file_data);
642 xastir_snprintf(devices[TNC_port].tnc_down_file,
643 sizeof(devices[TNC_port].tnc_down_file),
644 "%s",
645 temp_ptr);
646 XtFree(temp_ptr);
647
648 (void)remove_trailing_spaces(devices[TNC_port].tnc_down_file);
649 }
650
651 //WE7U: Modify for MKISS?
652 /* reopen port*/
653 if (was_up)
654 {
655 (void)add_device(TNC_port,
656 type,
657 devices[TNC_port].device_name,
658 "",
659 -1,
660 devices[TNC_port].sp,
661 devices[TNC_port].style,
662 0,
663 "");
664 }
665
666 /* delete list */
667 // modify_device_list(4,0);
668
669
670 /* add device type */
671 devices[TNC_port].device_type=type;
672
673 /* rebuild list */
674 // modify_device_list(3,0);
675
676 end_critical_section(&devices_lock, "interface_gui.c:Config_TNC_change_data" );
677
678 // Rebuild the interface control list
679 update_interface_list();
680
681 Config_TNC_destroy_shell(widget,clientData,callData);
682 }
683
684
685
686
687
Config_TNC(Widget UNUSED (w),int device_type,int config_type,int port)688 void Config_TNC( Widget UNUSED(w), int device_type, int config_type, int port)
689 {
690 static Widget pane, scrollwindow, form, form2, button_ok, button_cancel,
691 frame, frame2, frame3, frame4,
692 setup1, setup3, setup4,
693 device, converse, comment, speed_box,
694 speed_300, speed_1200, speed_2400, speed_4800, speed_9600,
695 speed_19200, speed_38400;
696 // static Widget setup, setup2, speed;
697 #ifndef __LSB__
698 static Widget speed_57600, speed_115200, speed_230400;
699 #endif // __LSB__
700 static Widget style_box,
701 style_8n1, style_7e1, style_7o1,
702 igate_box,
703 igate_o_0, igate_o_1, igate_o_2,
704 igate_label,
705 proto, proto1, proto2, proto3,
706 radio_port_label;
707 // static Widget style, igate;
708 char temp[50];
709 Atom delw;
710 Arg al[50]; /* Arg List */
711 register unsigned int ac = 0; /* Arg Count */
712 register char *tmp;
713
714 tmp=(char *)NULL;
715 char tmp_string[100];
716
717 if(!config_TNC_dialog)
718 {
719 TNC_port=port;
720 TNC_device=device_type;
721 /* config_TNC_dialog = XtVaCreatePopupShell(device_type ? langcode("WPUPCFT023"):langcode("WPUPCFT001"),
722 -- replaced by KB6MER with the lines below for adding AUX GPS type TNC
723 */
724 switch(device_type)
725 {
726 case DEVICE_SERIAL_TNC:
727 tmp=langcode("WPUPCFT001");
728 break;
729
730 case DEVICE_SERIAL_KISS_TNC:
731 tmp=langcode("WPUPCFT030");
732 break;
733
734 case DEVICE_SERIAL_MKISS_TNC:
735 tmp=langcode("WPUPCFT040");
736 break;
737
738 case DEVICE_SERIAL_TNC_HSP_GPS:
739 tmp=langcode("WPUPCFT023");
740 break;
741
742 case DEVICE_SERIAL_TNC_AUX_GPS:
743 tmp=langcode("WPUPCFT028");
744 break;
745
746 default:
747 // "Configure TNC w/INVALID ENUM"
748 sprintf(tmp_string, langcode("WPUPCFT029"), (int)device_type);
749 tmp = tmp_string;
750 break;
751 }
752
753 config_TNC_dialog = XtVaCreatePopupShell(
754 tmp,
755 xmDialogShellWidgetClass, appshell,
756 XmNdeleteResponse,XmDESTROY,
757 XmNdefaultPosition, FALSE,
758 XmNfontList, fontlist1,
759 NULL);
760
761 pane = XtVaCreateWidget("Config_TNC pane",xmPanedWindowWidgetClass, config_TNC_dialog,
762 XmNbackground, colors[0xff],
763 NULL);
764
765 scrollwindow = XtVaCreateManagedWidget("scrollwindow",
766 xmScrolledWindowWidgetClass,
767 pane,
768 XmNscrollingPolicy, XmAUTOMATIC,
769 NULL);
770
771 form = XtVaCreateWidget("Config_TNC form",
772 xmFormWidgetClass,
773 scrollwindow,
774 XmNfractionBase, 5,
775 XmNbackground, colors[0xff],
776 XmNautoUnmanage, FALSE,
777 XmNshadowThickness, 1,
778 NULL);
779
780 TNC_active_on_startup = XtVaCreateManagedWidget(langcode("UNIOP00011"),xmToggleButtonWidgetClass,form,
781 XmNnavigationType, XmTAB_GROUP,
782 XmNtraversalOn, TRUE,
783 XmNtopAttachment, XmATTACH_FORM,
784 XmNtopOffset, 5,
785 XmNbottomAttachment, XmATTACH_NONE,
786 XmNleftAttachment, XmATTACH_FORM,
787 XmNleftOffset,10,
788 XmNrightAttachment, XmATTACH_NONE,
789 XmNbackground, colors[0xff],
790 XmNfontList, fontlist1,
791 NULL);
792
793 TNC_transmit_data = XtVaCreateManagedWidget(langcode("UNIOP00010"),xmToggleButtonWidgetClass,form,
794 XmNnavigationType, XmTAB_GROUP,
795 XmNtraversalOn, TRUE,
796 XmNtopAttachment, XmATTACH_FORM,
797 XmNtopOffset, 5,
798 XmNbottomAttachment, XmATTACH_NONE,
799 XmNleftAttachment, XmATTACH_WIDGET,
800 XmNleftWidget, TNC_active_on_startup,
801 XmNleftOffset,35,
802 XmNrightAttachment, XmATTACH_NONE,
803 XmNbackground, colors[0xff],
804 XmNfontList, fontlist1,
805 NULL);
806
807 switch(device_type)
808 {
809 case DEVICE_SERIAL_TNC:
810 case DEVICE_SERIAL_TNC_HSP_GPS:
811 case DEVICE_SERIAL_TNC_AUX_GPS:
812 TNC_extra_delay = XtVaCreateManagedWidget(langcode("UNIOP00038"), xmToggleButtonWidgetClass, form,
813 XmNnavigationType, XmTAB_GROUP,
814 XmNtraversalOn, TRUE,
815 XmNtopAttachment, XmATTACH_FORM,
816 XmNtopOffset, 5,
817 XmNbottomAttachment, XmATTACH_NONE,
818 XmNleftAttachment, XmATTACH_WIDGET,
819 XmNleftWidget, TNC_transmit_data,
820 XmNleftOffset,35,
821 XmNrightAttachment, XmATTACH_NONE,
822 XmNbackground, colors[0xff],
823 XmNfontList, fontlist1,
824 NULL);
825 }
826
827 switch(device_type)
828 {
829 case DEVICE_SERIAL_TNC_HSP_GPS:
830 case DEVICE_SERIAL_TNC_AUX_GPS:
831 TNC_GPS_set_time = XtVaCreateManagedWidget(langcode("UNIOP00029"), xmToggleButtonWidgetClass, form,
832 XmNnavigationType, XmTAB_GROUP,
833 XmNtraversalOn, TRUE,
834 XmNtopAttachment, XmATTACH_FORM,
835 XmNtopOffset, 5,
836 XmNbottomAttachment, XmATTACH_NONE,
837 XmNleftAttachment, XmATTACH_WIDGET,
838 XmNleftWidget, TNC_extra_delay,
839 XmNleftOffset,35,
840 XmNrightAttachment, XmATTACH_NONE,
841 XmNbackground, colors[0xff],
842 XmNfontList, fontlist1,
843 NULL);
844
845 // We can only set the time properly on Linux systems
846 #ifndef HAVE_SETTIMEOFDAY
847 XtSetSensitive(TNC_GPS_set_time,FALSE);
848 #endif // HAVE_SETTIMEOFDAY
849 #ifdef __CYGWIN__
850 XtSetSensitive(TNC_GPS_set_time,FALSE);
851 #endif // __CYGWIN__
852
853 // Let the user turn off the Control-E thing
854 // that only SOME "tnc-with-gps" devices actually
855 // require, and that confuse the heck out of others.
856 // D700 is among the confused, by the way. TVR -- 14 Aug 2012
857 if (device_type == DEVICE_SERIAL_TNC_AUX_GPS)
858 {
859 TNC_AUX_GPS_Retrieve_Needed = XtVaCreateManagedWidget(langcode("UNIOP00037"), xmToggleButtonWidgetClass, form,
860 XmNnavigationType, XmTAB_GROUP,
861 XmNtraversalOn, TRUE,
862 XmNtopAttachment, XmATTACH_FORM,
863 XmNtopOffset, 5,
864 XmNbottomAttachment, XmATTACH_NONE,
865 XmNleftAttachment, XmATTACH_WIDGET,
866 XmNleftWidget, TNC_GPS_set_time,
867 XmNleftOffset,35,
868 XmNrightAttachment, XmATTACH_NONE,
869 XmNbackground, colors[0xff],
870 XmNfontList, fontlist1,
871 NULL);
872 }
873
874 break;
875 case DEVICE_SERIAL_KISS_TNC:
876 case DEVICE_SERIAL_MKISS_TNC:
877 // Add a "RELAY Digipeat?" button for KISS/MKISS TNC's
878 TNC_relay_digipeat = XtVaCreateManagedWidget(langcode("UNIOP00030"),xmToggleButtonWidgetClass,form,
879 XmNnavigationType, XmTAB_GROUP,
880 XmNtraversalOn, TRUE,
881 XmNtopAttachment, XmATTACH_FORM,
882 XmNtopOffset, 5,
883 XmNbottomAttachment, XmATTACH_NONE,
884 XmNleftAttachment, XmATTACH_WIDGET,
885 XmNleftWidget, TNC_transmit_data,
886 XmNleftOffset,35,
887 XmNrightAttachment, XmATTACH_NONE,
888 XmNbackground, colors[0xff],
889 XmNfontList, fontlist1,
890 NULL);
891
892 #ifdef SERIAL_KISS_RELAY_DIGI
893 XtSetSensitive(TNC_relay_digipeat, TRUE);
894 #else
895 XtSetSensitive(TNC_relay_digipeat, FALSE);
896 #endif // SERIAL_KISS_RELAY_DIGIPEAT
897
898 break;
899
900 case DEVICE_SERIAL_TNC:
901 default:
902 break;
903 }
904
905 device = XtVaCreateManagedWidget(langcode("WPUPCFT003"),xmLabelWidgetClass, form,
906 XmNtopAttachment, XmATTACH_WIDGET,
907 XmNtopWidget, TNC_active_on_startup,
908 XmNtopOffset, 5,
909 XmNbottomAttachment, XmATTACH_NONE,
910 XmNleftAttachment, XmATTACH_FORM,
911 XmNleftOffset, 10,
912 XmNrightAttachment, XmATTACH_NONE,
913 XmNbackground, colors[0xff],
914 XmNfontList, fontlist1,
915 NULL);
916
917 TNC_device_name_data = XtVaCreateManagedWidget("Config_TNC device_data", xmTextFieldWidgetClass, form,
918 XmNnavigationType, XmTAB_GROUP,
919 XmNtraversalOn, TRUE,
920 XmNeditable, TRUE,
921 XmNcursorPositionVisible, TRUE,
922 XmNsensitive, TRUE,
923 XmNshadowThickness, 1,
924 XmNcolumns, 15,
925 XmNwidth, ((15*7)+2),
926 XmNmaxLength, MAX_DEVICE_NAME,
927 XmNbackground, colors[0x0f],
928 XmNtopAttachment,XmATTACH_WIDGET,
929 XmNtopWidget, TNC_active_on_startup,
930 XmNtopOffset, 2,
931 XmNbottomAttachment,XmATTACH_NONE,
932 XmNleftAttachment, XmATTACH_WIDGET,
933 XmNleftWidget, device,
934 XmNleftOffset, 12,
935 XmNrightAttachment,XmATTACH_NONE,
936 XmNfontList, fontlist1,
937 NULL);
938
939 // converse = XtVaCreateManagedWidget(langcode("WPUPCFS017"),xmLabelWidgetClass, form,
940 converse = XtVaCreateManagedWidget("Converse CMD:",xmLabelWidgetClass, form,
941 XmNtopAttachment, XmATTACH_WIDGET,
942 XmNtopWidget, TNC_active_on_startup,
943 XmNtopOffset, 5,
944 XmNbottomAttachment, XmATTACH_NONE,
945 XmNleftAttachment, XmATTACH_WIDGET,
946 XmNleftWidget, TNC_device_name_data,
947 XmNleftOffset, 10,
948 XmNrightAttachment, XmATTACH_NONE,
949 XmNbackground, colors[0xff],
950 XmNfontList, fontlist1,
951 NULL);
952
953 TNC_converse_string = XtVaCreateManagedWidget("Config_TNC comment", xmTextFieldWidgetClass, form,
954 XmNnavigationType, XmTAB_GROUP,
955 XmNtraversalOn, TRUE,
956 XmNeditable, TRUE,
957 XmNcursorPositionVisible, TRUE,
958 XmNsensitive, TRUE,
959 XmNshadowThickness, 1,
960 XmNcolumns, 15,
961 XmNwidth, ((15*7)+2),
962 XmNmaxLength, 49,
963 XmNbackground, colors[0x0f],
964 XmNtopAttachment,XmATTACH_WIDGET,
965 XmNtopWidget, TNC_active_on_startup,
966 XmNtopOffset, 2,
967 XmNbottomAttachment,XmATTACH_NONE,
968 XmNleftAttachment, XmATTACH_WIDGET,
969 XmNleftWidget, converse,
970 XmNleftOffset, 12,
971 XmNrightAttachment,XmATTACH_NONE,
972 XmNfontList, fontlist1,
973 NULL);
974
975 comment = XtVaCreateManagedWidget(langcode("WPUPCFS017"),xmLabelWidgetClass, form,
976 XmNtopAttachment, XmATTACH_WIDGET,
977 XmNtopWidget, TNC_active_on_startup,
978 XmNtopOffset, 5,
979 XmNbottomAttachment, XmATTACH_NONE,
980 XmNleftAttachment, XmATTACH_WIDGET,
981 XmNleftWidget, TNC_converse_string,
982 XmNleftOffset, 10,
983 XmNrightAttachment, XmATTACH_NONE,
984 XmNbackground, colors[0xff],
985 XmNfontList, fontlist1,
986 NULL);
987
988 TNC_comment = XtVaCreateManagedWidget("Config_TNC comment", xmTextFieldWidgetClass, form,
989 XmNnavigationType, XmTAB_GROUP,
990 XmNtraversalOn, TRUE,
991 XmNeditable, TRUE,
992 XmNcursorPositionVisible, TRUE,
993 XmNsensitive, TRUE,
994 XmNshadowThickness, 1,
995 XmNcolumns, 15,
996 XmNwidth, ((15*7)+2),
997 XmNmaxLength, 49,
998 XmNbackground, colors[0x0f],
999 XmNtopAttachment,XmATTACH_WIDGET,
1000 XmNtopWidget, TNC_active_on_startup,
1001 XmNtopOffset, 2,
1002 XmNbottomAttachment,XmATTACH_NONE,
1003 XmNleftAttachment, XmATTACH_WIDGET,
1004 XmNleftWidget, comment,
1005 XmNleftOffset, 12,
1006 XmNrightAttachment,XmATTACH_NONE,
1007 XmNfontList, fontlist1,
1008 NULL);
1009
1010 if (device_type == DEVICE_SERIAL_MKISS_TNC)
1011 {
1012 // "Radio Port" field for Multi-Port KISS TNC's.
1013
1014 radio_port_label = XtVaCreateManagedWidget(langcode("WPUPCFT041"),
1015 xmLabelWidgetClass, form,
1016 XmNtopAttachment, XmATTACH_WIDGET,
1017 XmNtopWidget, TNC_active_on_startup,
1018 XmNtopOffset, 5,
1019 XmNbottomAttachment, XmATTACH_NONE,
1020 XmNleftAttachment, XmATTACH_WIDGET,
1021 XmNleftWidget, TNC_comment,
1022 XmNleftOffset, 10,
1023 XmNrightAttachment, XmATTACH_NONE,
1024 XmNbackground, colors[0xff],
1025 XmNfontList, fontlist1,
1026 NULL);
1027
1028 TNC_radio_port_data = XtVaCreateManagedWidget("Config_TNC device_data",
1029 xmTextFieldWidgetClass, form,
1030 XmNnavigationType, XmTAB_GROUP,
1031 XmNtraversalOn, TRUE,
1032 XmNeditable, TRUE,
1033 XmNcursorPositionVisible, TRUE,
1034 XmNsensitive, TRUE,
1035 XmNshadowThickness, 1,
1036 XmNcolumns, 5,
1037 XmNwidth, ((5*7)+2),
1038 XmNmaxLength, 2,
1039 XmNbackground, colors[0x0f],
1040 XmNtopAttachment,XmATTACH_WIDGET,
1041 XmNtopWidget, TNC_active_on_startup,
1042 XmNtopOffset, 2,
1043 XmNbottomAttachment,XmATTACH_NONE,
1044 XmNleftAttachment, XmATTACH_WIDGET,
1045 XmNleftWidget, radio_port_label,
1046 XmNleftOffset, 12,
1047 XmNrightAttachment,XmATTACH_NONE,
1048 XmNfontList, fontlist1,
1049 NULL);
1050 }
1051
1052 frame = XtVaCreateManagedWidget("Config_TNC frame", xmFrameWidgetClass, form,
1053 XmNtopAttachment,XmATTACH_WIDGET,
1054 XmNtopOffset, 10,
1055 XmNtopWidget, device,
1056 XmNbottomAttachment,XmATTACH_NONE,
1057 XmNleftAttachment, XmATTACH_FORM,
1058 XmNleftOffset, 10,
1059 XmNrightAttachment,XmATTACH_FORM,
1060 XmNrightOffset, 10,
1061 XmNbackground, colors[0xff],
1062 NULL);
1063
1064 // speed
1065 XtVaCreateManagedWidget(langcode("WPUPCFT004"),xmLabelWidgetClass, frame,
1066 XmNchildType, XmFRAME_TITLE_CHILD,
1067 XmNbackground, colors[0xff],
1068 XmNfontList, fontlist1,
1069 NULL);
1070
1071 /*set args for color */
1072 ac=0;
1073 XtSetArg(al[ac], XmNbackground, colors[0xff]);
1074 ac++;
1075
1076 speed_box = XmCreateRadioBox(frame,"Config_TNC Speed_box",al,ac);
1077 XtVaSetValues(speed_box,XmNnumColumns,5,NULL);
1078
1079 speed_300 = XtVaCreateManagedWidget(langcode("WPUPCFT005"),xmToggleButtonGadgetClass,
1080 speed_box,
1081 XmNbackground, colors[0xff],
1082 XmNfontList, fontlist1,
1083 NULL);
1084
1085 XtAddCallback(speed_300,XmNvalueChangedCallback,speed_toggle,"1");
1086
1087 speed_1200 = XtVaCreateManagedWidget(langcode("WPUPCFT006"),xmToggleButtonGadgetClass,
1088 speed_box,
1089 XmNbackground, colors[0xff],
1090 XmNfontList, fontlist1,
1091 NULL);
1092 XtAddCallback(speed_1200,XmNvalueChangedCallback,speed_toggle,"2");
1093
1094
1095 speed_2400 = XtVaCreateManagedWidget(langcode("WPUPCFT007"),xmToggleButtonGadgetClass,
1096 speed_box,
1097 XmNbackground, colors[0xff],
1098 XmNfontList, fontlist1,
1099 NULL);
1100 XtAddCallback(speed_2400,XmNvalueChangedCallback,speed_toggle,"3");
1101
1102
1103 speed_4800 = XtVaCreateManagedWidget(langcode("WPUPCFT008"),xmToggleButtonGadgetClass,
1104 speed_box,
1105 XmNbackground, colors[0xff],
1106 XmNfontList, fontlist1,
1107 NULL);
1108 XtAddCallback(speed_4800,XmNvalueChangedCallback,speed_toggle,"4");
1109
1110 speed_9600 = XtVaCreateManagedWidget(langcode("WPUPCFT009"),xmToggleButtonGadgetClass,
1111 speed_box,
1112 XmNbackground, colors[0xff],
1113 XmNfontList, fontlist1,
1114 NULL);
1115 XtAddCallback(speed_9600,XmNvalueChangedCallback,speed_toggle,"5");
1116
1117 speed_19200 = XtVaCreateManagedWidget(langcode("WPUPCFT010"),xmToggleButtonGadgetClass,
1118 speed_box,
1119 XmNbackground, colors[0xff],
1120 XmNfontList, fontlist1,
1121 NULL);
1122 XtAddCallback(speed_19200,XmNvalueChangedCallback,speed_toggle,"6");
1123
1124 speed_38400 = XtVaCreateManagedWidget(langcode("WPUPCFT019"),xmToggleButtonGadgetClass,
1125 speed_box,
1126 XmNbackground, colors[0xff],
1127 XmNfontList, fontlist1,
1128 NULL);
1129 XtAddCallback(speed_38400,XmNvalueChangedCallback,speed_toggle,"7");
1130
1131 #ifndef __LSB__
1132 speed_57600 = XtVaCreateManagedWidget(langcode("WPUPCFT020"),xmToggleButtonGadgetClass,
1133 speed_box,
1134 XmNbackground, colors[0xff],
1135 XmNfontList, fontlist1,
1136 NULL);
1137 XtAddCallback(speed_57600,XmNvalueChangedCallback,speed_toggle,"8");
1138
1139 speed_115200 = XtVaCreateManagedWidget(langcode("WPUPCFT021"),xmToggleButtonGadgetClass,
1140 speed_box,
1141 XmNbackground, colors[0xff],
1142 XmNfontList, fontlist1,
1143 NULL);
1144 XtAddCallback(speed_115200,XmNvalueChangedCallback,speed_toggle,"9");
1145
1146 speed_230400 = XtVaCreateManagedWidget(langcode("WPUPCFT022"),xmToggleButtonGadgetClass,
1147 speed_box,
1148 XmNbackground, colors[0xff],
1149 XmNfontList, fontlist1,
1150 NULL);
1151 XtAddCallback(speed_230400,XmNvalueChangedCallback,speed_toggle,"10");
1152 #endif // __LSB__
1153
1154 switch(device_type)
1155 {
1156 case DEVICE_SERIAL_KISS_TNC:
1157 case DEVICE_SERIAL_MKISS_TNC:
1158 break;
1159 default:
1160 frame2 = XtVaCreateManagedWidget("Config_TNC frame2", xmFrameWidgetClass, form,
1161 XmNtopAttachment, XmATTACH_WIDGET,
1162 XmNtopWidget, frame,
1163 XmNtopOffset, 10,
1164 XmNbottomAttachment, XmATTACH_NONE,
1165 XmNleftAttachment, XmATTACH_FORM,
1166 XmNleftOffset, 10,
1167 XmNrightAttachment, XmATTACH_FORM,
1168 XmNrightOffset, 10,
1169 XmNbackground, colors[0xff],
1170 NULL);
1171
1172 //style
1173 XtVaCreateManagedWidget(langcode("WPUPCFT015"),xmLabelWidgetClass, frame2,
1174 XmNchildType, XmFRAME_TITLE_CHILD,
1175 XmNbackground, colors[0xff],
1176 XmNfontList, fontlist1,
1177 NULL);
1178
1179
1180 style_box = XmCreateRadioBox(frame2,"Config_TNC Style box",al,ac);
1181
1182 XtVaSetValues(style_box,XmNorientation, XmHORIZONTAL,NULL);
1183
1184 style_8n1 = XtVaCreateManagedWidget(langcode("WPUPCFT016"),xmToggleButtonGadgetClass,
1185 style_box,
1186 XmNbackground, colors[0xff],
1187 XmNfontList, fontlist1,
1188 NULL);
1189 XtAddCallback(style_8n1,XmNvalueChangedCallback,style_toggle,"0");
1190
1191 style_7e1 = XtVaCreateManagedWidget(langcode("WPUPCFT017"),xmToggleButtonGadgetClass,
1192 style_box,
1193 XmNbackground, colors[0xff],
1194 XmNfontList, fontlist1,
1195 NULL);
1196 XtAddCallback(style_7e1,XmNvalueChangedCallback,style_toggle,"1");
1197
1198 style_7o1 = XtVaCreateManagedWidget(langcode("WPUPCFT018"),xmToggleButtonGadgetClass,
1199 style_box,
1200 XmNbackground, colors[0xff],
1201 XmNfontList, fontlist1,
1202 NULL);
1203 XtAddCallback(style_7o1,XmNvalueChangedCallback,style_toggle,"2");
1204 break;
1205 }
1206
1207 frame4 = XtVaCreateManagedWidget("Config_TNC frame4", xmFrameWidgetClass, form,
1208 XmNtopAttachment, XmATTACH_WIDGET,
1209 XmNtopWidget, (device_type == DEVICE_SERIAL_KISS_TNC || device_type == DEVICE_SERIAL_MKISS_TNC) ? frame : frame2,
1210 XmNtopOffset, 10,
1211 XmNbottomAttachment, XmATTACH_NONE,
1212 XmNleftAttachment, XmATTACH_FORM,
1213 XmNleftOffset, 10,
1214 XmNrightAttachment, XmATTACH_FORM,
1215 XmNrightOffset, 10,
1216 XmNbackground, colors[0xff],
1217 XmNfontList, fontlist1,
1218 NULL);
1219
1220 //igate
1221 XtVaCreateManagedWidget(langcode("IGPUPCF000"),xmLabelWidgetClass, frame4,
1222 XmNchildType, XmFRAME_TITLE_CHILD,
1223 XmNbackground, colors[0xff],
1224 XmNfontList, fontlist1,
1225 NULL);
1226
1227 igate_box = XmCreateRadioBox(frame4,"Config_TNC IGate box",al,ac);
1228
1229 XtVaSetValues(igate_box,XmNorientation, XmVERTICAL,XmNnumColumns,2,NULL);
1230
1231 igate_o_0 = XtVaCreateManagedWidget(langcode("IGPUPCF001"),xmToggleButtonGadgetClass,
1232 igate_box,
1233 XmNbackground, colors[0xff],
1234 XmNfontList, fontlist1,
1235 NULL);
1236 XtAddCallback(igate_o_0,XmNvalueChangedCallback,igate_toggle,"0");
1237
1238 igate_o_1 = XtVaCreateManagedWidget(langcode("IGPUPCF002"),xmToggleButtonGadgetClass,
1239 igate_box,
1240 XmNbackground, colors[0xff],
1241 XmNfontList, fontlist1,
1242 NULL);
1243 XtAddCallback(igate_o_1,XmNvalueChangedCallback,igate_toggle,"1");
1244
1245 igate_o_2 = XtVaCreateManagedWidget(langcode("IGPUPCF003"),xmToggleButtonGadgetClass,
1246 igate_box,
1247 XmNbackground, colors[0xff],
1248 XmNfontList, fontlist1,
1249 NULL);
1250 XtAddCallback(igate_o_2,XmNvalueChangedCallback,igate_toggle,"2");
1251
1252 proto = XtVaCreateManagedWidget(langcode("WPUPCFT011"), xmLabelWidgetClass, form,
1253 XmNorientation, XmHORIZONTAL,
1254 XmNtopAttachment,XmATTACH_WIDGET,
1255 XmNtopWidget, frame4,
1256 XmNtopOffset, 10,
1257 XmNbottomAttachment,XmATTACH_NONE,
1258 XmNleftAttachment, XmATTACH_FORM,
1259 XmNleftOffset, 5,
1260 XmNrightAttachment,XmATTACH_FORM,
1261 XmNrightOffset, 5,
1262 XmNbackground, colors[0xff],
1263 XmNfontList, fontlist1,
1264 NULL);
1265
1266 xastir_snprintf(temp, sizeof(temp), langcode("WPUPCFT012"), VERSIONFRM);
1267
1268 proto1 = XtVaCreateManagedWidget(temp, xmLabelWidgetClass, form,
1269 XmNorientation, XmHORIZONTAL,
1270 XmNtopAttachment,XmATTACH_WIDGET,
1271 XmNtopWidget, proto,
1272 XmNtopOffset, 12,
1273 XmNbottomAttachment,XmATTACH_NONE,
1274 XmNleftAttachment, XmATTACH_FORM,
1275 XmNleftOffset, 15,
1276 XmNrightAttachment,XmATTACH_NONE,
1277 XmNbackground, colors[0xff],
1278 XmNfontList, fontlist1,
1279 NULL);
1280
1281 TNC_unproto1_data = XtVaCreateManagedWidget("Config_TNC protopath1", xmTextFieldWidgetClass, form,
1282 XmNnavigationType, XmTAB_GROUP,
1283 XmNtraversalOn, TRUE,
1284 XmNeditable, TRUE,
1285 XmNcursorPositionVisible, TRUE,
1286 XmNsensitive, TRUE,
1287 XmNshadowThickness, 1,
1288 XmNcolumns, 25,
1289 XmNwidth, ((25*7)+2),
1290 XmNmaxLength, 40,
1291 XmNbackground, colors[0x0f],
1292 XmNtopAttachment,XmATTACH_WIDGET,
1293 XmNtopWidget, proto,
1294 XmNtopOffset, 5,
1295 XmNbottomAttachment,XmATTACH_NONE,
1296 XmNleftAttachment,XmATTACH_WIDGET,
1297 XmNleftWidget, proto1,
1298 XmNleftOffset, 5,
1299 XmNrightAttachment,XmATTACH_NONE,
1300 XmNfontList, fontlist1,
1301 NULL);
1302
1303 xastir_snprintf(temp, sizeof(temp), langcode("WPUPCFT013"), VERSIONFRM);
1304
1305 proto2 = XtVaCreateManagedWidget(temp, xmLabelWidgetClass, form,
1306 XmNorientation, XmHORIZONTAL,
1307 XmNtopAttachment,XmATTACH_WIDGET,
1308 XmNtopWidget, proto,
1309 XmNtopOffset, 12,
1310 XmNbottomAttachment,XmATTACH_NONE,
1311 XmNleftAttachment, XmATTACH_WIDGET,
1312 XmNleftWidget, TNC_unproto1_data,
1313 XmNleftOffset, 15,
1314 XmNrightAttachment,XmATTACH_NONE,
1315 XmNbackground, colors[0xff],
1316 XmNfontList, fontlist1,
1317 NULL);
1318
1319 TNC_unproto2_data = XtVaCreateManagedWidget("Config_TNC protopath2", xmTextFieldWidgetClass, form,
1320 XmNnavigationType, XmTAB_GROUP,
1321 XmNtraversalOn, TRUE,
1322 XmNeditable, TRUE,
1323 XmNcursorPositionVisible, TRUE,
1324 XmNsensitive, TRUE,
1325 XmNshadowThickness, 1,
1326 XmNcolumns, 25,
1327 XmNwidth, ((25*7)+2),
1328 XmNmaxLength, 40,
1329 XmNbackground, colors[0x0f],
1330 XmNtopAttachment,XmATTACH_WIDGET,
1331 XmNtopWidget, proto,
1332 XmNtopOffset, 5,
1333 XmNbottomAttachment,XmATTACH_NONE,
1334 XmNleftAttachment, XmATTACH_WIDGET,
1335 XmNleftWidget, proto2,
1336 XmNleftOffset, 5,
1337 XmNrightAttachment,XmATTACH_FORM,
1338 XmNrightOffset, 15,
1339 XmNfontList, fontlist1,
1340 NULL);
1341
1342 xastir_snprintf(temp, sizeof(temp), langcode("WPUPCFT014"), VERSIONFRM);
1343
1344 proto3 = XtVaCreateManagedWidget(temp, xmLabelWidgetClass, form,
1345 XmNorientation, XmHORIZONTAL,
1346 XmNtopAttachment,XmATTACH_WIDGET,
1347 XmNtopWidget, proto1,
1348 XmNtopOffset, 15,
1349 XmNbottomAttachment,XmATTACH_NONE,
1350 XmNleftAttachment, XmATTACH_FORM,
1351 XmNleftOffset, 15,
1352 XmNrightAttachment,XmATTACH_NONE,
1353 XmNbackground, colors[0xff],
1354 XmNfontList, fontlist1,
1355 NULL);
1356
1357 TNC_unproto3_data = XtVaCreateManagedWidget("Config_TNC protopath3", xmTextFieldWidgetClass, form,
1358 XmNnavigationType, XmTAB_GROUP,
1359 XmNtraversalOn, TRUE,
1360 XmNeditable, TRUE,
1361 XmNcursorPositionVisible, TRUE,
1362 XmNsensitive, TRUE,
1363 XmNshadowThickness, 1,
1364 XmNcolumns, 25,
1365 XmNwidth, ((25*7)+2),
1366 XmNmaxLength, 40,
1367 XmNbackground, colors[0x0f],
1368 XmNtopAttachment,XmATTACH_WIDGET,
1369 XmNtopWidget, TNC_unproto1_data,
1370 XmNtopOffset, 5,
1371 XmNbottomAttachment,XmATTACH_NONE,
1372 XmNleftAttachment,XmATTACH_WIDGET,
1373 XmNleftWidget, proto3,
1374 XmNleftOffset, 5,
1375 XmNrightAttachment,XmATTACH_NONE,
1376 XmNfontList, fontlist1,
1377 NULL);
1378
1379 xastir_snprintf(temp, sizeof(temp), "%s", langcode("IGPUPCF004"));
1380 igate_label = XtVaCreateManagedWidget(temp, xmLabelWidgetClass, form,
1381 XmNorientation, XmHORIZONTAL,
1382 XmNtopAttachment,XmATTACH_WIDGET,
1383 XmNtopWidget, proto2,
1384 XmNtopOffset, 15,
1385 XmNbottomAttachment,XmATTACH_NONE,
1386 XmNleftAttachment,XmATTACH_WIDGET,
1387 XmNleftWidget, TNC_unproto3_data,
1388 XmNleftOffset, 15,
1389 XmNrightAttachment,XmATTACH_NONE,
1390 XmNbackground, colors[0xff],
1391 XmNfontList, fontlist1,
1392 NULL);
1393
1394 TNC_igate_data = XtVaCreateManagedWidget("Config_TNC igate_data", xmTextFieldWidgetClass, form,
1395 XmNnavigationType, XmTAB_GROUP,
1396 XmNtraversalOn, TRUE,
1397 XmNeditable, TRUE,
1398 XmNcursorPositionVisible, TRUE,
1399 XmNsensitive, TRUE,
1400 XmNshadowThickness, 1,
1401 XmNcolumns, 25,
1402 XmNwidth, ((25*7)+2),
1403 XmNmaxLength, 40,
1404 XmNbackground, colors[0x0f],
1405 XmNtopAttachment,XmATTACH_WIDGET,
1406 XmNtopWidget, TNC_unproto2_data,
1407 XmNtopOffset, 5,
1408 XmNbottomAttachment,XmATTACH_NONE,
1409 XmNleftAttachment,XmATTACH_WIDGET,
1410 XmNleftWidget, igate_label,
1411 XmNleftOffset, 5,
1412 XmNrightAttachment,XmATTACH_NONE,
1413 XmNfontList, fontlist1,
1414 NULL);
1415
1416 // Draw a different frame3 for Serial KISS/MKISS TNC interfaces
1417 switch(device_type)
1418 {
1419 case DEVICE_SERIAL_KISS_TNC:
1420 case DEVICE_SERIAL_MKISS_TNC:
1421 frame3 = XtVaCreateManagedWidget("Config_TNC frame3", xmFrameWidgetClass, form,
1422 XmNtopAttachment,XmATTACH_WIDGET,
1423 XmNtopOffset,10,
1424 XmNtopWidget, TNC_igate_data,
1425 XmNbottomAttachment,XmATTACH_NONE,
1426 XmNleftAttachment, XmATTACH_FORM,
1427 XmNleftOffset, 10,
1428 XmNrightAttachment,XmATTACH_FORM,
1429 XmNrightOffset, 10,
1430 XmNbackground, colors[0xff],
1431 NULL);
1432
1433 // KISS Parameters
1434 //setup
1435 XtVaCreateManagedWidget(langcode("WPUPCFT034"),xmLabelWidgetClass, frame3,
1436 XmNchildType, XmFRAME_TITLE_CHILD,
1437 XmNbackground, colors[0xff],
1438 XmNfontList, fontlist1,
1439 NULL);
1440
1441 form2 = XtVaCreateWidget("Config_TNC form2",xmFormWidgetClass, frame3,
1442 XmNfractionBase, 6,
1443 XmNbackground, colors[0xff],
1444 NULL);
1445
1446 // TXDelay (10 ms units)
1447 setup1 = XtVaCreateManagedWidget(langcode("WPUPCFT035"), xmLabelWidgetClass, form2,
1448 XmNtopAttachment,XmATTACH_FORM,
1449 XmNtopOffset, 10,
1450 XmNbottomAttachment,XmATTACH_NONE,
1451 XmNleftAttachment, XmATTACH_FORM,
1452 XmNleftOffset, 10,
1453 XmNrightAttachment,XmATTACH_NONE,
1454 XmNbackground, colors[0xff],
1455 XmNfontList, fontlist1,
1456 NULL);
1457
1458 TNC_txdelay = XtVaCreateManagedWidget("Config_TNC TNC_txdelay", xmTextFieldWidgetClass, form2,
1459 XmNnavigationType, XmTAB_GROUP,
1460 XmNtraversalOn, TRUE,
1461 XmNeditable, TRUE,
1462 XmNcursorPositionVisible, TRUE,
1463 XmNsensitive, TRUE,
1464 XmNshadowThickness, 1,
1465 XmNcolumns, 3,
1466 XmNwidth, ((6*7)+2),
1467 XmNmaxLength, 3,
1468 XmNbackground, colors[0x0f],
1469 XmNtopAttachment,XmATTACH_FORM,
1470 XmNtopOffset, 5,
1471 XmNbottomAttachment,XmATTACH_NONE,
1472 XmNleftAttachment,XmATTACH_POSITION,
1473 XmNleftPosition, 2,
1474 XmNrightAttachment,XmATTACH_NONE,
1475 XmNfontList, fontlist1,
1476 NULL);
1477
1478 // Persistence (0 to 255)
1479 //setup2
1480 XtVaCreateManagedWidget(langcode("WPUPCFT036"), xmLabelWidgetClass, form2,
1481 XmNtopAttachment,XmATTACH_WIDGET,
1482 XmNtopWidget, setup1,
1483 XmNtopOffset, 10,
1484 XmNbottomAttachment,XmATTACH_NONE,
1485 XmNleftAttachment, XmATTACH_FORM,
1486 XmNleftOffset, 10,
1487 XmNrightAttachment,XmATTACH_NONE,
1488 XmNbackground, colors[0xff],
1489 XmNfontList, fontlist1,
1490 NULL);
1491
1492 TNC_persistence = XtVaCreateManagedWidget("Config_TNC persistence", xmTextFieldWidgetClass, form2,
1493 XmNnavigationType, XmTAB_GROUP,
1494 XmNtraversalOn, TRUE,
1495 XmNeditable, TRUE,
1496 XmNcursorPositionVisible, TRUE,
1497 XmNsensitive, TRUE,
1498 XmNshadowThickness, 1,
1499 XmNcolumns, 3,
1500 XmNwidth, ((6*7)+2),
1501 XmNmaxLength, 3,
1502 XmNbackground, colors[0x0f],
1503 XmNtopAttachment,XmATTACH_WIDGET,
1504 XmNtopWidget, setup1,
1505 XmNtopOffset, 5,
1506 XmNbottomAttachment,XmATTACH_NONE,
1507 XmNleftAttachment,XmATTACH_POSITION,
1508 XmNleftPosition, 2,
1509 XmNrightAttachment,XmATTACH_NONE,
1510 XmNfontList, fontlist1,
1511 NULL);
1512
1513 // SlotTime (10 ms units)
1514 setup3 = XtVaCreateManagedWidget(langcode("WPUPCFT037"), xmLabelWidgetClass, form2,
1515 XmNtopAttachment,XmATTACH_FORM,
1516 XmNtopOffset, 10,
1517 XmNbottomAttachment,XmATTACH_NONE,
1518 XmNleftAttachment, XmATTACH_POSITION,
1519 XmNleftPosition, 3,
1520 XmNrightAttachment,XmATTACH_NONE,
1521 XmNbackground, colors[0xff],
1522 XmNfontList, fontlist1,
1523 NULL);
1524
1525 TNC_slottime = XtVaCreateManagedWidget("Config_TNC slottime", xmTextFieldWidgetClass, form2,
1526 XmNnavigationType, XmTAB_GROUP,
1527 XmNtraversalOn, TRUE,
1528 XmNeditable, TRUE,
1529 XmNcursorPositionVisible, TRUE,
1530 XmNsensitive, TRUE,
1531 XmNshadowThickness, 1,
1532 XmNcolumns, 3,
1533 XmNwidth, ((6*7)+2),
1534 XmNmaxLength, 3,
1535 XmNbackground, colors[0x0f],
1536 XmNtopAttachment,XmATTACH_FORM,
1537 XmNtopOffset, 5,
1538 XmNbottomAttachment,XmATTACH_NONE,
1539 XmNleftAttachment,XmATTACH_POSITION,
1540 XmNleftPosition, 5,
1541 XmNrightAttachment,XmATTACH_NONE,
1542 XmNfontList, fontlist1,
1543 NULL);
1544
1545 // TxTail (10 ms units)
1546 setup4 = XtVaCreateManagedWidget(langcode("WPUPCFT038"), xmLabelWidgetClass, form2,
1547 XmNtopAttachment,XmATTACH_WIDGET,
1548 XmNtopWidget, setup3,
1549 XmNtopOffset, 10,
1550 XmNbottomAttachment,XmATTACH_NONE,
1551 XmNleftAttachment, XmATTACH_POSITION,
1552 XmNleftPosition, 3,
1553 XmNrightAttachment,XmATTACH_NONE,
1554 XmNbackground, colors[0xff],
1555 XmNfontList, fontlist1,
1556 NULL);
1557
1558 TNC_txtail = XtVaCreateManagedWidget("Config_TNC TxTail", xmTextFieldWidgetClass, form2,
1559 XmNnavigationType, XmTAB_GROUP,
1560 XmNtraversalOn, TRUE,
1561 XmNeditable, TRUE,
1562 XmNcursorPositionVisible, TRUE,
1563 XmNsensitive, TRUE,
1564 XmNshadowThickness, 1,
1565 XmNcolumns, 3,
1566 XmNwidth, ((6*7)+2),
1567 XmNmaxLength, 3,
1568 XmNbackground, colors[0x0f],
1569 XmNtopAttachment,XmATTACH_WIDGET,
1570 XmNtopWidget, setup3,
1571 XmNtopOffset, 5,
1572 XmNbottomAttachment,XmATTACH_NONE,
1573 XmNleftAttachment,XmATTACH_POSITION,
1574 XmNleftPosition, 5,
1575 XmNrightAttachment,XmATTACH_NONE,
1576 XmNfontList, fontlist1,
1577 NULL);
1578
1579 // Full Duplex
1580 TNC_fullduplex = XtVaCreateManagedWidget(langcode("WPUPCFT039"),xmToggleButtonWidgetClass,form2,
1581 XmNnavigationType, XmTAB_GROUP,
1582 XmNtraversalOn, TRUE,
1583 XmNtopAttachment, XmATTACH_WIDGET,
1584 XmNtopWidget, setup4,
1585 XmNtopOffset, 5,
1586 XmNbottomAttachment, XmATTACH_FORM,
1587 XmNbottomOffset, 5,
1588 XmNleftAttachment, XmATTACH_FORM,
1589 XmNleftOffset, 10,
1590 XmNrightAttachment, XmATTACH_NONE,
1591 XmNbackground, colors[0xff],
1592 XmNfontList, fontlist1,
1593 NULL);
1594
1595 // Button to enable KISS-mode at startup
1596 TNC_init_kiss = XtVaCreateManagedWidget(langcode("WPUPCFT047"),xmToggleButtonWidgetClass,form2,
1597 XmNnavigationType, XmTAB_GROUP,
1598 XmNtraversalOn, TRUE,
1599 XmNtopAttachment, XmATTACH_WIDGET,
1600 XmNtopWidget, setup4,
1601 XmNtopOffset, 5,
1602 XmNbottomAttachment, XmATTACH_FORM,
1603 XmNbottomOffset, 5,
1604 XmNleftAttachment, XmATTACH_FORM,
1605 XmNleftOffset, 135,
1606 XmNrightAttachment, XmATTACH_NONE,
1607 XmNbackground, colors[0xff],
1608 XmNfontList, fontlist1,
1609 NULL);
1610 break;
1611 default:
1612 frame3 = XtVaCreateManagedWidget("Config_TNC frame3", xmFrameWidgetClass, form,
1613 XmNtopAttachment,XmATTACH_WIDGET,
1614 XmNtopOffset,10,
1615 XmNtopWidget, TNC_igate_data,
1616 XmNbottomAttachment,XmATTACH_NONE,
1617 XmNleftAttachment, XmATTACH_FORM,
1618 XmNleftOffset, 10,
1619 XmNrightAttachment,XmATTACH_FORM,
1620 XmNrightOffset, 10,
1621 XmNbackground, colors[0xff],
1622 NULL);
1623
1624 //setup
1625 XtVaCreateManagedWidget(langcode("WPUPCFT031"),xmLabelWidgetClass, frame3,
1626 XmNchildType, XmFRAME_TITLE_CHILD,
1627 XmNbackground, colors[0xff],
1628 XmNfontList, fontlist1,
1629 NULL);
1630
1631 form2 = XtVaCreateWidget("Config_TNC form2",xmFormWidgetClass, frame3,
1632 XmNfractionBase, 5,
1633 XmNbackground, colors[0xff],
1634 NULL);
1635
1636 setup1 = XtVaCreateManagedWidget(langcode("WPUPCFT032"), xmLabelWidgetClass, form2,
1637 XmNtopAttachment,XmATTACH_FORM,
1638 XmNtopOffset, 10,
1639 XmNbottomAttachment,XmATTACH_NONE,
1640 XmNleftAttachment, XmATTACH_FORM,
1641 XmNrightAttachment,XmATTACH_NONE,
1642 XmNbackground, colors[0xff],
1643 XmNfontList, fontlist1,
1644 NULL);
1645
1646 TNC_up_file_data = XtVaCreateManagedWidget("Config_TNC up_file", xmTextFieldWidgetClass, form2,
1647 XmNnavigationType, XmTAB_GROUP,
1648 XmNtraversalOn, TRUE,
1649 XmNeditable, TRUE,
1650 XmNcursorPositionVisible, TRUE,
1651 XmNsensitive, TRUE,
1652 XmNshadowThickness, 1,
1653 XmNcolumns, 25,
1654 XmNwidth, ((25*7)+2),
1655 XmNmaxLength, 80,
1656 XmNbackground, colors[0x0f],
1657 XmNtopAttachment,XmATTACH_FORM,
1658 XmNtopOffset, 5,
1659 XmNbottomAttachment,XmATTACH_NONE,
1660 XmNleftAttachment,XmATTACH_POSITION,
1661 XmNleftPosition, 2,
1662 XmNrightAttachment,XmATTACH_NONE,
1663 XmNfontList, fontlist1,
1664 NULL);
1665
1666 //setup2
1667 XtVaCreateManagedWidget(langcode("WPUPCFT033"), xmLabelWidgetClass, form2,
1668 XmNtopAttachment,XmATTACH_WIDGET,
1669 XmNtopWidget, setup1,
1670 XmNtopOffset, 10,
1671 XmNbottomAttachment,XmATTACH_NONE,
1672 XmNleftAttachment, XmATTACH_FORM,
1673 XmNrightAttachment,XmATTACH_NONE,
1674 XmNbackground, colors[0xff],
1675 XmNfontList, fontlist1,
1676 NULL);
1677
1678 TNC_down_file_data = XtVaCreateManagedWidget("Config_TNC down_file", xmTextFieldWidgetClass, form2,
1679 XmNnavigationType, XmTAB_GROUP,
1680 XmNtraversalOn, TRUE,
1681 XmNeditable, TRUE,
1682 XmNcursorPositionVisible, TRUE,
1683 XmNsensitive, TRUE,
1684 XmNshadowThickness, 1,
1685 XmNcolumns, 25,
1686 XmNwidth, ((25*7)+2),
1687 XmNmaxLength, 80,
1688 XmNbackground, colors[0x0f],
1689 XmNtopAttachment,XmATTACH_WIDGET,
1690 XmNtopWidget, setup1,
1691 XmNtopOffset, 5,
1692 XmNbottomAttachment,XmATTACH_NONE,
1693 XmNleftAttachment,XmATTACH_POSITION,
1694 XmNleftPosition, 2,
1695 XmNrightAttachment,XmATTACH_NONE,
1696 XmNfontList, fontlist1,
1697 NULL);
1698
1699 break;
1700 }
1701
1702
1703 //------------------------------------------------------------
1704
1705 button_ok = XtVaCreateManagedWidget(langcode("UNIOP00001"),xmPushButtonGadgetClass, form,
1706 XmNnavigationType, XmTAB_GROUP,
1707 XmNtraversalOn, TRUE,
1708 XmNtopAttachment, XmATTACH_WIDGET,
1709 XmNtopWidget, frame3,
1710 XmNtopOffset, 10,
1711 XmNbottomAttachment, XmATTACH_FORM,
1712 XmNbottomOffset, 5,
1713 XmNleftAttachment, XmATTACH_POSITION,
1714 XmNleftPosition, 1,
1715 XmNrightAttachment, XmATTACH_POSITION,
1716 XmNrightPosition, 2,
1717 XmNbackground, colors[0xff],
1718 XmNfontList, fontlist1,
1719 NULL);
1720
1721 button_cancel = XtVaCreateManagedWidget(langcode("UNIOP00002"),xmPushButtonGadgetClass, form,
1722 XmNnavigationType, XmTAB_GROUP,
1723 XmNtraversalOn, TRUE,
1724 XmNtopAttachment, XmATTACH_WIDGET,
1725 XmNtopWidget, frame3,
1726 XmNtopOffset, 10,
1727 XmNbottomAttachment, XmATTACH_FORM,
1728 XmNbottomOffset, 5,
1729 XmNleftAttachment, XmATTACH_POSITION,
1730 XmNleftPosition, 3,
1731 XmNrightAttachment, XmATTACH_POSITION,
1732 XmNrightPosition, 4,
1733 XmNbackground, colors[0xff],
1734 XmNfontList, fontlist1,
1735 NULL);
1736
1737 XtAddCallback(button_ok, XmNactivateCallback, Config_TNC_change_data, config_TNC_dialog);
1738 XtAddCallback(button_cancel, XmNactivateCallback, Config_TNC_destroy_shell, config_TNC_dialog);
1739
1740 pos_dialog(config_TNC_dialog);
1741
1742 delw = XmInternAtom(XtDisplay(config_TNC_dialog),"WM_DELETE_WINDOW", FALSE);
1743 XmAddWMProtocolCallback(config_TNC_dialog, delw, Config_TNC_destroy_shell, (XtPointer)config_TNC_dialog);
1744
1745 if (config_type==0)
1746 {
1747 /* first time port */
1748 devices[TNC_port].gps_retrieve=DEFAULT_GPS_RETR;
1749 if (debug_level & 128)
1750 {
1751 fprintf(stderr,"Storing %d to gps_retrieve for %d\n",
1752 DEFAULT_GPS_RETR, port);
1753 }
1754
1755 XmTextFieldSetString(TNC_device_name_data,TNC_PORT);
1756
1757 XmTextFieldSetString(TNC_converse_string,"k");
1758
1759 XmTextFieldSetString(TNC_comment,"");
1760
1761 if (device_type == DEVICE_SERIAL_MKISS_TNC)
1762 {
1763 XmTextFieldSetString(TNC_radio_port_data,"0");
1764 //fprintf(stderr,"Assigning default '0' to radio port\n");
1765 }
1766
1767 XmToggleButtonSetState(TNC_active_on_startup,TRUE,FALSE);
1768 XmToggleButtonSetState(TNC_transmit_data,TRUE,FALSE);
1769
1770 switch(device_type)
1771 {
1772 case DEVICE_SERIAL_TNC:
1773 case DEVICE_SERIAL_TNC_HSP_GPS:
1774 case DEVICE_SERIAL_TNC_AUX_GPS:
1775 XmToggleButtonSetState(TNC_extra_delay, FALSE, FALSE);
1776 break;
1777 default:
1778 break;
1779 }
1780
1781 switch(device_type)
1782 {
1783 case DEVICE_SERIAL_TNC_HSP_GPS:
1784 case DEVICE_SERIAL_TNC_AUX_GPS:
1785 XmToggleButtonSetState(TNC_GPS_set_time, FALSE, FALSE);
1786 if (device_type == DEVICE_SERIAL_TNC_AUX_GPS)
1787 XmToggleButtonSetState(TNC_AUX_GPS_Retrieve_Needed,
1788 TRUE, FALSE);
1789 break;
1790 case DEVICE_SERIAL_KISS_TNC:
1791 case DEVICE_SERIAL_MKISS_TNC:
1792 XmToggleButtonSetState(TNC_relay_digipeat, FALSE, FALSE);
1793 XmToggleButtonSetState(TNC_fullduplex, FALSE, FALSE);
1794 XmToggleButtonSetState(TNC_init_kiss, FALSE, FALSE); // For KISS-Mode
1795 break;
1796 case DEVICE_SERIAL_TNC:
1797 default:
1798 break;
1799 }
1800
1801 XmToggleButtonSetState(speed_4800,TRUE,FALSE);
1802 device_speed=4;
1803
1804 if ( (device_type != DEVICE_SERIAL_KISS_TNC)
1805 && (device_type != DEVICE_SERIAL_MKISS_TNC) )
1806 {
1807 XmToggleButtonSetState(style_8n1,TRUE,FALSE);
1808 }
1809
1810 device_style=0;
1811
1812 device_igate_options=0;
1813 XmToggleButtonSetState(igate_o_0,TRUE,FALSE);
1814 XmTextFieldSetString(TNC_unproto1_data,"WIDE2-2");
1815 XmTextFieldSetString(TNC_unproto2_data,"");
1816 XmTextFieldSetString(TNC_unproto3_data,"");
1817 XmTextFieldSetString(TNC_igate_data,"");
1818
1819 //WE7U
1820 if ( (device_type == DEVICE_SERIAL_KISS_TNC)
1821 || (device_type == DEVICE_SERIAL_MKISS_TNC) )
1822 {
1823 // We don't allow changing the selection for KISS
1824 // TNC's, as they require 8N1
1825 device_style = 0;
1826 XmTextFieldSetString(TNC_txdelay,"40");
1827 XmTextFieldSetString(TNC_persistence,"63");
1828 XmTextFieldSetString(TNC_slottime,"20");
1829 XmTextFieldSetString(TNC_txtail,"30");
1830 }
1831 else
1832 {
1833 XmTextFieldSetString(TNC_up_file_data,"tnc-startup.sys");
1834 XmTextFieldSetString(TNC_down_file_data,"tnc-stop.sys");
1835 }
1836
1837 }
1838 else
1839 {
1840 /* reconfig */
1841
1842 if (debug_level & 128)
1843 {
1844 fprintf(stderr,"Reconfiguring interface\n");
1845 }
1846
1847 begin_critical_section(&devices_lock, "interface_gui.c:Config_TNC" );
1848
1849 XmTextFieldSetString(TNC_device_name_data,devices[TNC_port].device_name);
1850
1851 XmTextFieldSetString(TNC_converse_string,devices[TNC_port].device_converse_string);
1852
1853 XmTextFieldSetString(TNC_comment,devices[TNC_port].comment);
1854
1855 if (device_type == DEVICE_SERIAL_MKISS_TNC)
1856 {
1857 XmTextFieldSetString(TNC_radio_port_data, devices[TNC_port].radio_port);
1858 //fprintf(stderr,"Reconfig: %s\n", devices[TNC_port].radio_port);
1859 }
1860
1861 if (devices[TNC_port].connect_on_startup)
1862 {
1863 XmToggleButtonSetState(TNC_active_on_startup,TRUE,FALSE);
1864 }
1865 else
1866 {
1867 XmToggleButtonSetState(TNC_active_on_startup,FALSE,FALSE);
1868 }
1869
1870 if (devices[TNC_port].transmit_data)
1871 {
1872 XmToggleButtonSetState(TNC_transmit_data,TRUE,FALSE);
1873 }
1874 else
1875 {
1876 XmToggleButtonSetState(TNC_transmit_data,FALSE,FALSE);
1877 }
1878
1879 switch(device_type)
1880 {
1881 case DEVICE_SERIAL_TNC:
1882 case DEVICE_SERIAL_TNC_HSP_GPS:
1883 case DEVICE_SERIAL_TNC_AUX_GPS:
1884 if (devices[TNC_port].tnc_extra_delay)
1885 {
1886 XmToggleButtonSetState(TNC_extra_delay, TRUE, FALSE);
1887 }
1888 else
1889 {
1890 XmToggleButtonSetState(TNC_extra_delay, FALSE, FALSE);
1891 }
1892 break;
1893 default:
1894 break;
1895 }
1896
1897 switch(device_type)
1898 {
1899
1900 case DEVICE_SERIAL_TNC_HSP_GPS:
1901 case DEVICE_SERIAL_TNC_AUX_GPS:
1902 if (devices[TNC_port].set_time)
1903 {
1904 XmToggleButtonSetState(TNC_GPS_set_time, TRUE, FALSE);
1905 }
1906 else
1907 {
1908 XmToggleButtonSetState(TNC_GPS_set_time, FALSE, FALSE);
1909 }
1910
1911 if (device_type == DEVICE_SERIAL_TNC_AUX_GPS)
1912 {
1913 if (devices[TNC_port].gps_retrieve != 0)
1914 XmToggleButtonSetState(TNC_AUX_GPS_Retrieve_Needed,
1915 TRUE, FALSE);
1916 else
1917 XmToggleButtonSetState(TNC_AUX_GPS_Retrieve_Needed,
1918 FALSE, FALSE);
1919 }
1920
1921 break;
1922
1923 case DEVICE_SERIAL_KISS_TNC:
1924 case DEVICE_SERIAL_MKISS_TNC:
1925
1926 if (devices[TNC_port].relay_digipeat)
1927 {
1928 XmToggleButtonSetState(TNC_relay_digipeat, TRUE, FALSE);
1929 }
1930 else
1931 {
1932 XmToggleButtonSetState(TNC_relay_digipeat, FALSE, FALSE);
1933 }
1934
1935 if (devices[TNC_port].fullduplex)
1936 {
1937 XmToggleButtonSetState(TNC_fullduplex, TRUE, FALSE);
1938 }
1939 else
1940 {
1941 XmToggleButtonSetState(TNC_fullduplex, FALSE, FALSE);
1942 }
1943
1944 // For KISS-Mode
1945 if (devices[TNC_port].init_kiss)
1946 {
1947 XmToggleButtonSetState(TNC_init_kiss, TRUE, FALSE);
1948 }
1949 else
1950 {
1951 XmToggleButtonSetState(TNC_init_kiss, FALSE, FALSE);
1952 }
1953
1954 if (devices[TNC_port].transmit_data)
1955 {
1956
1957 #ifdef SERIAL_KISS_RELAY_DIGI
1958 XtSetSensitive(TNC_relay_digipeat, TRUE);
1959 #else
1960 XtSetSensitive(TNC_relay_digipeat, FALSE);
1961 #endif // SERIAL_KISS_RELAY_DIGI
1962
1963 }
1964 else
1965 {
1966 XtSetSensitive(TNC_relay_digipeat, FALSE);
1967 }
1968 break;
1969
1970 case DEVICE_SERIAL_TNC:
1971 default:
1972 break;
1973 }
1974
1975 switch (devices[TNC_port].sp)
1976 {
1977 case(B300):
1978 XmToggleButtonSetState(speed_300,TRUE,FALSE);
1979 device_speed=1;
1980 break;
1981
1982 case(B1200):
1983 XmToggleButtonSetState(speed_1200,TRUE,FALSE);
1984 device_speed=2;
1985 break;
1986
1987 case(B2400):
1988 XmToggleButtonSetState(speed_2400,TRUE,FALSE);
1989 device_speed=3;
1990 break;
1991
1992 case(B4800):
1993 XmToggleButtonSetState(speed_4800,TRUE,FALSE);
1994 device_speed=4;
1995 break;
1996
1997 case(B9600):
1998 XmToggleButtonSetState(speed_9600,TRUE,FALSE);
1999 device_speed=5;
2000 break;
2001
2002 case(B19200):
2003 XmToggleButtonSetState(speed_19200,TRUE,FALSE);
2004 device_speed=6;
2005 break;
2006
2007 case(B38400):
2008 XmToggleButtonSetState(speed_38400,TRUE,FALSE);
2009 device_speed=7;
2010 break;
2011
2012 #ifndef __LSB__
2013 case(B57600):
2014 XmToggleButtonSetState(speed_57600,TRUE,FALSE);
2015 device_speed=8;
2016 break;
2017
2018 case(B115200):
2019 XmToggleButtonSetState(speed_115200,TRUE,FALSE);
2020 device_speed=9;
2021 break;
2022
2023 #ifdef B230400
2024 case(B230400):
2025 XmToggleButtonSetState(speed_230400,TRUE,FALSE);
2026 device_speed=10;
2027 break;
2028 #endif // B230400
2029 #endif // __LSB__
2030
2031 default:
2032 XmToggleButtonSetState(speed_4800,TRUE,FALSE);
2033 device_speed=4;
2034 break;
2035 }
2036
2037 if ( (device_type == DEVICE_SERIAL_KISS_TNC)
2038 || (device_type == DEVICE_SERIAL_MKISS_TNC) )
2039 {
2040 // We don't allow changing the selection for KISS
2041 // TNC's, as they require 8N1
2042 device_style = 0;
2043 }
2044 else
2045 {
2046 switch (devices[TNC_port].style)
2047 {
2048 case(0):
2049 XmToggleButtonSetState(style_8n1,TRUE,FALSE);
2050 device_style=0;
2051 break;
2052
2053 case(1):
2054 XmToggleButtonSetState(style_7e1,TRUE,FALSE);
2055 device_style=1;
2056 break;
2057
2058 case(2):
2059 XmToggleButtonSetState(style_7o1,TRUE,FALSE);
2060 device_style=2;
2061 break;
2062
2063 default:
2064 XmToggleButtonSetState(style_8n1,TRUE,FALSE);
2065 device_style=0;
2066 break;
2067 }
2068 }
2069
2070 switch (devices[TNC_port].igate_options)
2071 {
2072 case(0):
2073 XmToggleButtonSetState(igate_o_0,TRUE,FALSE);
2074 device_igate_options=0;
2075 break;
2076
2077 case(1):
2078 XmToggleButtonSetState(igate_o_1,TRUE,FALSE);
2079 device_igate_options=1;
2080 break;
2081
2082 case(2):
2083 XmToggleButtonSetState(igate_o_2,TRUE,FALSE);
2084 device_igate_options=2;
2085 break;
2086
2087 default:
2088 XmToggleButtonSetState(igate_o_0,TRUE,FALSE);
2089 device_igate_options=0;
2090 break;
2091 }
2092 XmTextFieldSetString(TNC_unproto1_data,devices[TNC_port].unproto1);
2093 XmTextFieldSetString(TNC_unproto2_data,devices[TNC_port].unproto2);
2094 XmTextFieldSetString(TNC_unproto3_data,devices[TNC_port].unproto3);
2095 XmTextFieldSetString(TNC_igate_data,devices[TNC_port].unproto_igate);
2096
2097 if ( (device_type == DEVICE_SERIAL_KISS_TNC)
2098 || (device_type == DEVICE_SERIAL_MKISS_TNC) )
2099 {
2100 XmTextFieldSetString(TNC_txdelay,devices[TNC_port].txdelay);
2101 XmTextFieldSetString(TNC_persistence,devices[TNC_port].persistence);
2102 XmTextFieldSetString(TNC_slottime,devices[TNC_port].slottime);
2103 XmTextFieldSetString(TNC_txtail,devices[TNC_port].txtail);
2104 }
2105 else
2106 {
2107 XmTextFieldSetString(TNC_up_file_data,devices[TNC_port].tnc_up_file);
2108 XmTextFieldSetString(TNC_down_file_data,devices[TNC_port].tnc_down_file);
2109 }
2110
2111 end_critical_section(&devices_lock, "interface_gui.c:Config_TNC" );
2112
2113 }
2114
2115 XtManageChild(form);
2116
2117 XtManageChild(form2);
2118
2119 XtManageChild(speed_box);
2120
2121 if ( (device_type != DEVICE_SERIAL_KISS_TNC)
2122 && (device_type != DEVICE_SERIAL_MKISS_TNC) )
2123 {
2124 XtManageChild(style_box);
2125 }
2126
2127 XtManageChild(igate_box);
2128 XtManageChild(pane);
2129
2130 resize_dialog(form, config_TNC_dialog);
2131
2132 XtPopup(config_TNC_dialog,XtGrabNone);
2133 }
2134 else
2135 {
2136 (void)XRaiseWindow(XtDisplay(config_TNC_dialog), XtWindow(config_TNC_dialog));
2137 }
2138 }
2139
2140
2141
2142
2143
2144 /*****************************************************/
2145 /* Configure Serial GPS GUI */
2146 /*****************************************************/
2147
2148 /**** GPS CONFIGURE ******/
2149 int GPS_port;
2150 Widget config_GPS_dialog = (Widget)NULL;
2151 Widget GPS_device_name_data;
2152 Widget GPS_comment;
2153 Widget GPS_active_on_startup;
2154 Widget GPS_set_time;
2155
2156
2157
2158
2159
Config_GPS_destroy_shell(Widget UNUSED (widget),XtPointer clientData,XtPointer UNUSED (callData))2160 void Config_GPS_destroy_shell( Widget UNUSED(widget), XtPointer clientData, XtPointer UNUSED(callData) )
2161 {
2162 Widget shell = (Widget) clientData;
2163 XtPopdown(shell);
2164 XtDestroyWidget(shell);
2165 config_GPS_dialog = (Widget)NULL;
2166 if (choose_interface_dialog != NULL)
2167 {
2168 Choose_interface_destroy_shell(choose_interface_dialog,choose_interface_dialog,NULL);
2169 }
2170 choose_interface_dialog = (Widget)NULL;
2171 }
2172
2173
2174
2175
2176
Config_GPS_change_data(Widget widget,XtPointer clientData,XtPointer callData)2177 void Config_GPS_change_data(Widget widget, XtPointer clientData, XtPointer callData)
2178 {
2179 int was_up;
2180 char *temp_ptr;
2181
2182
2183 busy_cursor(appshell);
2184 was_up=0;
2185 if (get_device_status(GPS_port) == DEVICE_IN_USE)
2186 {
2187 /* if active shutdown before changes are made */
2188 /*fprintf(stderr,"Device is up, shutting down\n");*/
2189 (void)del_device(GPS_port);
2190 was_up=1;
2191 usleep(1000000); // Wait for one second
2192 }
2193
2194 begin_critical_section(&devices_lock, "interface_gui.c:Config_GPS_change_data" );
2195
2196 temp_ptr = XmTextFieldGetString(GPS_device_name_data);
2197 xastir_snprintf(devices[GPS_port].device_name,
2198 sizeof(devices[GPS_port].device_name),
2199 "%s",
2200 temp_ptr);
2201 XtFree(temp_ptr);
2202
2203 (void)remove_trailing_spaces(devices[GPS_port].device_name);
2204
2205 temp_ptr = XmTextFieldGetString(GPS_comment);
2206 xastir_snprintf(devices[GPS_port].comment,
2207 sizeof(devices[GPS_port].comment),
2208 "%s",
2209 temp_ptr);
2210 XtFree(temp_ptr);
2211
2212 (void)remove_trailing_spaces(devices[GPS_port].comment);
2213
2214 if(XmToggleButtonGetState(GPS_active_on_startup))
2215 {
2216 devices[GPS_port].connect_on_startup=1;
2217 }
2218 else
2219 {
2220 devices[GPS_port].connect_on_startup=0;
2221 }
2222
2223 if (XmToggleButtonGetState(GPS_set_time))
2224 {
2225 devices[GPS_port].set_time=1;
2226 }
2227 else
2228 {
2229 devices[GPS_port].set_time=0;
2230 }
2231
2232 set_port_speed(GPS_port);
2233 devices[GPS_port].style=device_style;
2234 /* reopen */
2235 if ( was_up )
2236 {
2237 (void)add_device(GPS_port,
2238 DEVICE_SERIAL_GPS,
2239 devices[GPS_port].device_name,
2240 "",
2241 -1,
2242 devices[GPS_port].sp,
2243 devices[GPS_port].style,
2244 0,
2245 "");
2246 }
2247
2248 /* delete list */
2249 // modify_device_list(4,0);
2250
2251
2252 /* add device type */
2253 devices[GPS_port].device_type=DEVICE_SERIAL_GPS;
2254
2255 /* rebuild list */
2256 // modify_device_list(3,0);
2257
2258
2259 end_critical_section(&devices_lock, "interface_gui.c:Config_GPS_change_data" );
2260
2261 // Rebuild the interface control list
2262 update_interface_list();
2263
2264 Config_GPS_destroy_shell(widget,clientData,callData);
2265 }
2266
2267
2268
2269
2270
Config_GPS(Widget UNUSED (w),int config_type,int port)2271 void Config_GPS( Widget UNUSED(w), int config_type, int port)
2272 {
2273 static Widget pane, scrollwindow, form, button_ok, button_cancel,
2274 frame, frame2,
2275 device, comment, speed_box,
2276 speed_300, speed_1200, speed_2400, speed_4800, speed_9600,
2277 speed_19200, speed_38400;
2278 // static Widget speed;
2279 #ifndef __LSB__
2280 static Widget speed_57600, speed_115200, speed_230400;
2281 #endif // __LSB__
2282 static Widget style_box,
2283 style_8n1, style_7e1, style_7o1,
2284 sep;
2285 // static Widget style;
2286 Atom delw;
2287 Arg al[50]; /* Arg List */
2288 register unsigned int ac = 0; /* Arg Count */
2289
2290 if(!config_GPS_dialog)
2291 {
2292 GPS_port=port;
2293 config_GPS_dialog = XtVaCreatePopupShell(langcode("WPUPCFG001"),
2294 xmDialogShellWidgetClass, appshell,
2295 XmNdeleteResponse,XmDESTROY,
2296 XmNdefaultPosition, FALSE,
2297 XmNfontList, fontlist1,
2298 NULL);
2299
2300 pane = XtVaCreateWidget("Config_GPS pane",xmPanedWindowWidgetClass, config_GPS_dialog,
2301 XmNbackground, colors[0xff],
2302 NULL);
2303
2304 scrollwindow = XtVaCreateManagedWidget("scrollwindow",
2305 xmScrolledWindowWidgetClass,
2306 pane,
2307 XmNscrollingPolicy, XmAUTOMATIC,
2308 NULL);
2309
2310 form = XtVaCreateWidget("Config_GPS form",
2311 xmFormWidgetClass,
2312 scrollwindow,
2313 XmNfractionBase, 5,
2314 XmNbackground, colors[0xff],
2315 XmNautoUnmanage, FALSE,
2316 XmNshadowThickness, 1,
2317 NULL);
2318
2319 device = XtVaCreateManagedWidget(langcode("WPUPCFG003"),xmLabelWidgetClass, form,
2320 XmNtopAttachment, XmATTACH_FORM,
2321 XmNtopOffset, 10,
2322 XmNbottomAttachment, XmATTACH_NONE,
2323 XmNleftAttachment, XmATTACH_FORM,
2324 XmNleftOffset, 10,
2325 XmNrightAttachment, XmATTACH_NONE,
2326 XmNbackground, colors[0xff],
2327 XmNfontList, fontlist1,
2328 NULL);
2329
2330 GPS_device_name_data = XtVaCreateManagedWidget("Config_GPS device_data", xmTextFieldWidgetClass, form,
2331 XmNnavigationType, XmTAB_GROUP,
2332 XmNtraversalOn, TRUE,
2333 XmNeditable, TRUE,
2334 XmNcursorPositionVisible, TRUE,
2335 XmNsensitive, TRUE,
2336 XmNshadowThickness, 1,
2337 XmNcolumns, 25,
2338 XmNwidth, ((25*7)+2),
2339 XmNmaxLength, MAX_DEVICE_NAME,
2340 XmNbackground, colors[0x0f],
2341 XmNtopAttachment,XmATTACH_FORM,
2342 XmNtopOffset, 5,
2343 XmNbottomAttachment,XmATTACH_NONE,
2344 XmNleftAttachment, XmATTACH_WIDGET,
2345 XmNleftWidget, device,
2346 XmNleftOffset, 10,
2347 XmNrightAttachment,XmATTACH_FORM,
2348 XmNrightOffset, 5,
2349 XmNfontList, fontlist1,
2350 NULL);
2351
2352 comment = XtVaCreateManagedWidget(langcode("WPUPCFS017"),xmLabelWidgetClass, form,
2353 XmNtopAttachment, XmATTACH_WIDGET,
2354 XmNtopWidget, device,
2355 XmNtopOffset, 10,
2356 XmNbottomAttachment, XmATTACH_NONE,
2357 XmNleftAttachment, XmATTACH_FORM,
2358 XmNleftOffset, 15,
2359 XmNrightAttachment, XmATTACH_NONE,
2360 XmNbackground, colors[0xff],
2361 XmNfontList, fontlist1,
2362 NULL);
2363
2364 GPS_comment = XtVaCreateManagedWidget("Config_GPS comment", xmTextFieldWidgetClass, form,
2365 XmNnavigationType, XmTAB_GROUP,
2366 XmNtraversalOn, TRUE,
2367 XmNeditable, TRUE,
2368 XmNcursorPositionVisible, TRUE,
2369 XmNsensitive, TRUE,
2370 XmNshadowThickness, 1,
2371 XmNcolumns, 25,
2372 XmNwidth, ((25*7)+2),
2373 XmNmaxLength, 49,
2374 XmNbackground, colors[0x0f],
2375 XmNtopAttachment,XmATTACH_WIDGET,
2376 XmNtopWidget, device,
2377 XmNtopOffset, 10,
2378 XmNbottomAttachment,XmATTACH_NONE,
2379 XmNleftAttachment, XmATTACH_WIDGET,
2380 XmNleftWidget, comment,
2381 XmNleftOffset, 10,
2382 XmNrightAttachment,XmATTACH_FORM,
2383 XmNrightOffset, 5,
2384 XmNfontList, fontlist1,
2385 NULL);
2386
2387 GPS_active_on_startup = XtVaCreateManagedWidget(langcode("UNIOP00011"),xmToggleButtonWidgetClass,form,
2388 XmNnavigationType, XmTAB_GROUP,
2389 XmNtraversalOn, TRUE,
2390 XmNtopAttachment, XmATTACH_WIDGET,
2391 XmNtopWidget, comment,
2392 XmNtopOffset, 10,
2393 XmNbottomAttachment, XmATTACH_NONE,
2394 XmNleftAttachment, XmATTACH_FORM,
2395 XmNleftOffset,10,
2396 XmNrightAttachment, XmATTACH_NONE,
2397 XmNbackground, colors[0xff],
2398 XmNfontList, fontlist1,
2399 NULL);
2400
2401 GPS_set_time = XtVaCreateManagedWidget(langcode("UNIOP00029"), xmToggleButtonWidgetClass, form,
2402 XmNnavigationType, XmTAB_GROUP,
2403 XmNtraversalOn, TRUE,
2404 XmNtopAttachment, XmATTACH_WIDGET,
2405 XmNtopWidget, GPS_active_on_startup,
2406 XmNtopOffset, 7,
2407 XmNbottomAttachment, XmATTACH_NONE,
2408 XmNleftAttachment, XmATTACH_FORM,
2409 XmNleftOffset,10,
2410 XmNrightAttachment, XmATTACH_NONE,
2411 XmNbackground, colors[0xff],
2412 XmNfontList, fontlist1,
2413 NULL);
2414
2415 // We can only set the time properly on Linux systems
2416 #ifndef HAVE_SETTIMEOFDAY
2417 XtSetSensitive(GPS_set_time,FALSE);
2418 #endif // HAVE_SETTIMEOFDAY
2419 #ifdef __CYGWIN__
2420 XtSetSensitive(GPS_set_time,FALSE);
2421 #endif // __CYGWIN__
2422
2423
2424
2425 frame = XtVaCreateManagedWidget("Config_GPS frame", xmFrameWidgetClass, form,
2426 XmNtopAttachment,XmATTACH_WIDGET,
2427 XmNtopOffset,10,
2428 XmNtopWidget, GPS_set_time,
2429 XmNbottomAttachment,XmATTACH_NONE,
2430 XmNleftAttachment, XmATTACH_FORM,
2431 XmNleftOffset, 10,
2432 XmNrightAttachment,XmATTACH_FORM,
2433 XmNrightOffset, 10,
2434 XmNbackground, colors[0xff],
2435 NULL);
2436
2437 //speed
2438 XtVaCreateManagedWidget(langcode("WPUPCFT004"),xmLabelWidgetClass, frame,
2439 XmNchildType, XmFRAME_TITLE_CHILD,
2440 XmNbackground, colors[0xff],
2441 XmNfontList, fontlist1,
2442 NULL);
2443
2444 /*set args for color */
2445 ac=0;
2446 XtSetArg(al[ac], XmNbackground, colors[0xff]);
2447 ac++;
2448
2449
2450 speed_box = XmCreateRadioBox(frame,"Config_GPS Speed_box",al,ac);
2451
2452 XtVaSetValues(speed_box,XmNnumColumns,3,NULL);
2453
2454 speed_300 = XtVaCreateManagedWidget(langcode("WPUPCFT005"),xmToggleButtonGadgetClass,
2455 speed_box,
2456 XmNbackground, colors[0xff],
2457 XmNfontList, fontlist1,
2458 NULL);
2459 XtAddCallback(speed_300,XmNvalueChangedCallback,speed_toggle,"1");
2460
2461 speed_1200 = XtVaCreateManagedWidget(langcode("WPUPCFT006"),xmToggleButtonGadgetClass,
2462 speed_box,
2463 XmNbackground, colors[0xff],
2464 XmNfontList, fontlist1,
2465 NULL);
2466 XtAddCallback(speed_1200,XmNvalueChangedCallback,speed_toggle,"2");
2467
2468 speed_2400 = XtVaCreateManagedWidget(langcode("WPUPCFT007"),xmToggleButtonGadgetClass,
2469 speed_box,
2470 XmNbackground, colors[0xff],
2471 XmNfontList, fontlist1,
2472 NULL);
2473 XtAddCallback(speed_2400,XmNvalueChangedCallback,speed_toggle,"3");
2474
2475 speed_4800 = XtVaCreateManagedWidget(langcode("WPUPCFT008"),xmToggleButtonGadgetClass,
2476 speed_box,
2477 XmNbackground, colors[0xff],
2478 XmNfontList, fontlist1,
2479 NULL);
2480 XtAddCallback(speed_4800,XmNvalueChangedCallback,speed_toggle,"4");
2481
2482 speed_9600 = XtVaCreateManagedWidget(langcode("WPUPCFT009"),xmToggleButtonGadgetClass,
2483 speed_box,
2484 XmNbackground, colors[0xff],
2485 XmNfontList, fontlist1,
2486 NULL);
2487 XtAddCallback(speed_9600,XmNvalueChangedCallback,speed_toggle,"5");
2488
2489 speed_19200 = XtVaCreateManagedWidget(langcode("WPUPCFT010"),xmToggleButtonGadgetClass,
2490 speed_box,
2491 XmNbackground, colors[0xff],
2492 XmNfontList, fontlist1,
2493 NULL);
2494 XtAddCallback(speed_19200,XmNvalueChangedCallback,speed_toggle,"6");
2495
2496 speed_38400 = XtVaCreateManagedWidget(langcode("WPUPCFT019"),xmToggleButtonGadgetClass,
2497 speed_box,
2498 XmNbackground, colors[0xff],
2499 XmNfontList, fontlist1,
2500 NULL);
2501 XtAddCallback(speed_38400,XmNvalueChangedCallback,speed_toggle,"7");
2502
2503 #ifndef __LSB__
2504 speed_57600 = XtVaCreateManagedWidget(langcode("WPUPCFT020"),xmToggleButtonGadgetClass,
2505 speed_box,
2506 XmNbackground, colors[0xff],
2507 XmNfontList, fontlist1,
2508 NULL);
2509 XtAddCallback(speed_57600,XmNvalueChangedCallback,speed_toggle,"8");
2510
2511 speed_115200 = XtVaCreateManagedWidget(langcode("WPUPCFT021"),xmToggleButtonGadgetClass,
2512 speed_box,
2513 XmNbackground, colors[0xff],
2514 XmNfontList, fontlist1,
2515 NULL);
2516 XtAddCallback(speed_115200,XmNvalueChangedCallback,speed_toggle,"9");
2517
2518 speed_230400 = XtVaCreateManagedWidget(langcode("WPUPCFT022"),xmToggleButtonGadgetClass,
2519 speed_box,
2520 XmNbackground, colors[0xff],
2521 XmNfontList, fontlist1,
2522 NULL);
2523 XtAddCallback(speed_230400,XmNvalueChangedCallback,speed_toggle,"10");
2524 #endif // __LSB__
2525
2526 frame2 = XtVaCreateManagedWidget("Config_GPS frame2", xmFrameWidgetClass, form,
2527 XmNtopAttachment, XmATTACH_WIDGET,
2528 XmNtopWidget, frame,
2529 XmNtopOffset, 10,
2530 XmNbottomAttachment, XmATTACH_NONE,
2531 XmNleftAttachment, XmATTACH_FORM,
2532 XmNleftOffset, 10,
2533 XmNrightAttachment, XmATTACH_FORM,
2534 XmNrightOffset, 10,
2535 XmNbackground, colors[0xff],
2536 NULL);
2537
2538 //style
2539 XtVaCreateManagedWidget(langcode("WPUPCFT015"),xmLabelWidgetClass, frame2,
2540 XmNchildType, XmFRAME_TITLE_CHILD,
2541 XmNbackground, colors[0xff],
2542 XmNfontList, fontlist1,
2543 NULL);
2544
2545 style_box = XmCreateRadioBox(frame2,"Config_GPS Style box",al,ac);
2546
2547 XtVaSetValues(style_box,
2548 XmNorientation, XmHORIZONTAL,
2549 NULL);
2550
2551 style_8n1 = XtVaCreateManagedWidget(langcode("WPUPCFT016"),xmToggleButtonGadgetClass,
2552 style_box,
2553 XmNbackground, colors[0xff],
2554 XmNfontList, fontlist1,
2555 NULL);
2556 XtAddCallback(style_8n1,XmNvalueChangedCallback,style_toggle,"0");
2557
2558 style_7e1 = XtVaCreateManagedWidget(langcode("WPUPCFT017"),xmToggleButtonGadgetClass,
2559 style_box,
2560 XmNbackground, colors[0xff],
2561 XmNfontList, fontlist1,
2562 NULL);
2563 XtAddCallback(style_7e1,XmNvalueChangedCallback,style_toggle,"1");
2564
2565 style_7o1 = XtVaCreateManagedWidget(langcode("WPUPCFT018"),xmToggleButtonGadgetClass,
2566 style_box,
2567 XmNbackground, colors[0xff],
2568 XmNfontList, fontlist1,
2569 NULL);
2570 XtAddCallback(style_7o1,XmNvalueChangedCallback,style_toggle,"2");
2571
2572 sep = XtVaCreateManagedWidget("Config_GPS sep", xmSeparatorGadgetClass,form,
2573 XmNorientation, XmHORIZONTAL,
2574 XmNtopAttachment,XmATTACH_WIDGET,
2575 XmNtopWidget, frame2,
2576 XmNtopOffset, 20,
2577 XmNbottomAttachment,XmATTACH_NONE,
2578 XmNleftAttachment, XmATTACH_FORM,
2579 XmNrightAttachment,XmATTACH_FORM,
2580 XmNbackground, colors[0xff],
2581 XmNfontList, fontlist1,
2582 NULL);
2583
2584 button_ok = XtVaCreateManagedWidget(langcode("UNIOP00001"),xmPushButtonGadgetClass, form,
2585 XmNnavigationType, XmTAB_GROUP,
2586 XmNtraversalOn, TRUE,
2587 XmNtopAttachment, XmATTACH_WIDGET,
2588 XmNtopWidget, sep,
2589 XmNtopOffset, 10,
2590 XmNbottomAttachment, XmATTACH_FORM,
2591 XmNbottomOffset, 5,
2592 XmNleftAttachment, XmATTACH_POSITION,
2593 XmNleftPosition, 1,
2594 XmNrightAttachment, XmATTACH_POSITION,
2595 XmNrightPosition, 2,
2596 XmNbackground, colors[0xff],
2597 XmNfontList, fontlist1,
2598 NULL);
2599
2600 button_cancel = XtVaCreateManagedWidget(langcode("UNIOP00002"),xmPushButtonGadgetClass, form,
2601 XmNnavigationType, XmTAB_GROUP,
2602 XmNtraversalOn, TRUE,
2603 XmNtopAttachment, XmATTACH_WIDGET,
2604 XmNtopWidget, sep,
2605 XmNtopOffset, 10,
2606 XmNbottomAttachment, XmATTACH_FORM,
2607 XmNbottomOffset, 5,
2608 XmNleftAttachment, XmATTACH_POSITION,
2609 XmNleftPosition, 3,
2610 XmNrightAttachment, XmATTACH_POSITION,
2611 XmNrightPosition, 4,
2612 XmNbackground, colors[0xff],
2613 XmNfontList, fontlist1,
2614 NULL);
2615
2616 XtAddCallback(button_ok, XmNactivateCallback, Config_GPS_change_data, config_GPS_dialog);
2617 XtAddCallback(button_cancel, XmNactivateCallback, Config_GPS_destroy_shell, config_GPS_dialog);
2618
2619 pos_dialog(config_GPS_dialog);
2620
2621 delw = XmInternAtom(XtDisplay(config_GPS_dialog),"WM_DELETE_WINDOW", FALSE);
2622 XmAddWMProtocolCallback(config_GPS_dialog, delw, Config_GPS_destroy_shell, (XtPointer)config_GPS_dialog);
2623
2624 if (config_type==0)
2625 {
2626 /* first time port */
2627 XmTextFieldSetString(GPS_device_name_data,GPS_PORT);
2628 XmTextFieldSetString(GPS_comment,"");
2629 XmToggleButtonSetState(GPS_active_on_startup,TRUE,FALSE);
2630 XmToggleButtonSetState(GPS_set_time, FALSE, FALSE);
2631 XmToggleButtonSetState(speed_4800,TRUE,FALSE);
2632 device_speed=4;
2633 XmToggleButtonSetState(style_8n1,TRUE,FALSE);
2634 device_style=0;
2635 }
2636 else
2637 {
2638 /* reconfig */
2639
2640 begin_critical_section(&devices_lock, "interface_gui.c:Config_GPS" );
2641
2642 XmTextFieldSetString(GPS_device_name_data,devices[GPS_port].device_name);
2643 XmTextFieldSetString(GPS_comment,devices[GPS_port].comment);
2644
2645 if (devices[GPS_port].connect_on_startup)
2646 {
2647 XmToggleButtonSetState(GPS_active_on_startup,TRUE,FALSE);
2648 }
2649 else
2650 {
2651 XmToggleButtonSetState(GPS_active_on_startup,FALSE,FALSE);
2652 }
2653
2654 if (devices[GPS_port].set_time)
2655 {
2656 XmToggleButtonSetState(GPS_set_time,TRUE,FALSE);
2657 }
2658 else
2659 {
2660 XmToggleButtonSetState(GPS_set_time,FALSE,FALSE);
2661 }
2662
2663 switch (devices[GPS_port].sp)
2664 {
2665 case(B300):
2666 XmToggleButtonSetState(speed_300,TRUE,FALSE);
2667 device_speed=1;
2668 break;
2669
2670 case(B1200):
2671 XmToggleButtonSetState(speed_1200,TRUE,FALSE);
2672 device_speed=2;
2673 break;
2674
2675 case(B2400):
2676 XmToggleButtonSetState(speed_2400,TRUE,FALSE);
2677 device_speed=3;
2678 break;
2679
2680 case(B4800):
2681 XmToggleButtonSetState(speed_4800,TRUE,FALSE);
2682 device_speed=4;
2683 break;
2684
2685 case(B9600):
2686 XmToggleButtonSetState(speed_9600,TRUE,FALSE);
2687 device_speed=5;
2688 break;
2689
2690 case(B19200):
2691 XmToggleButtonSetState(speed_19200,TRUE,FALSE);
2692 device_speed=6;
2693 break;
2694
2695 case(B38400):
2696 XmToggleButtonSetState(speed_38400,TRUE,FALSE);
2697 device_speed=7;
2698 break;
2699
2700 #ifndef __LSB__
2701 case(B57600):
2702 XmToggleButtonSetState(speed_57600,TRUE,FALSE);
2703 device_speed=8;
2704 break;
2705
2706 case(B115200):
2707 XmToggleButtonSetState(speed_115200,TRUE,FALSE);
2708 device_speed=9;
2709 break;
2710
2711 #ifdef B230400
2712 case(B230400):
2713 XmToggleButtonSetState(speed_230400,TRUE,FALSE);
2714 device_speed=10;
2715 break;
2716 #endif // B230400
2717 #endif // __LSB__
2718
2719 default:
2720 XmToggleButtonSetState(speed_4800,TRUE,FALSE);
2721 device_speed=4;
2722 break;
2723 }
2724 switch (devices[GPS_port].style)
2725 {
2726 case(0):
2727 XmToggleButtonSetState(style_8n1,TRUE,FALSE);
2728 device_style=0;
2729 break;
2730
2731 case(1):
2732 XmToggleButtonSetState(style_7e1,TRUE,FALSE);
2733 device_style=1;
2734 break;
2735
2736 case(2):
2737 XmToggleButtonSetState(style_7o1,TRUE,FALSE);
2738 device_style=2;
2739 break;
2740
2741 default:
2742 XmToggleButtonSetState(style_8n1,TRUE,FALSE);
2743 device_style=0;
2744 break;
2745 }
2746
2747 end_critical_section(&devices_lock, "interface_gui.c:Config_GPS" );
2748
2749 }
2750 XtManageChild(form);
2751 XtManageChild(speed_box);
2752 XtManageChild(style_box);
2753 XtManageChild(pane);
2754
2755 resize_dialog(form, config_GPS_dialog);
2756
2757 XtPopup(config_GPS_dialog,XtGrabNone);
2758 }
2759 else
2760 {
2761 (void)XRaiseWindow(XtDisplay(config_GPS_dialog), XtWindow(config_GPS_dialog));
2762 }
2763 }
2764
2765
2766
2767
2768
2769 /*****************************************************/
2770 /* Configure Serial WX GUI */
2771 /*****************************************************/
2772
2773 /**** WX CONFIGURE ******/
2774 int WX_port;
2775 int WX_rain_gauge_type;
2776 Widget config_WX_dialog = (Widget)NULL;
2777 Widget WX_transmit_data;
2778 Widget WX_device_name_data;
2779 Widget WX_comment;
2780 Widget WX_active_on_startup;
2781 Widget WX_tenths, WX_hundredths, WX_millimeters;
2782
2783
2784
2785
2786
Config_WX_destroy_shell(Widget UNUSED (widget),XtPointer clientData,XtPointer UNUSED (callData))2787 void Config_WX_destroy_shell( Widget UNUSED(widget), XtPointer clientData, XtPointer UNUSED(callData) )
2788 {
2789 Widget shell = (Widget) clientData;
2790 XtPopdown(shell);
2791 XtDestroyWidget(shell);
2792 config_WX_dialog = (Widget)NULL;
2793 if (choose_interface_dialog != NULL)
2794 {
2795 Choose_interface_destroy_shell(choose_interface_dialog,choose_interface_dialog,NULL);
2796 }
2797
2798 choose_interface_dialog = (Widget)NULL;
2799 }
2800
2801
2802
2803
2804
Config_WX_change_data(Widget widget,XtPointer clientData,XtPointer callData)2805 void Config_WX_change_data(Widget widget, XtPointer clientData, XtPointer callData)
2806 {
2807 int was_up;
2808 char *temp_ptr;
2809
2810
2811 busy_cursor(appshell);
2812 was_up=0;
2813 if (get_device_status(WX_port) == DEVICE_IN_USE)
2814 {
2815 /* if active shutdown before changes are made */
2816 /*fprintf(stderr,"Device is up, shutting down\n");*/
2817 (void)del_device(WX_port);
2818 was_up=1;
2819 usleep(1000000); // Wait for one second
2820 }
2821
2822 begin_critical_section(&devices_lock, "interface_gui.c:Config_WX_change_data" );
2823
2824 temp_ptr = XmTextFieldGetString(WX_device_name_data);
2825 xastir_snprintf(devices[WX_port].device_name,
2826 sizeof(devices[WX_port].device_name),
2827 "%s",
2828 temp_ptr);
2829 XtFree(temp_ptr);
2830
2831 (void)remove_trailing_spaces(devices[WX_port].device_name);
2832
2833 temp_ptr = XmTextFieldGetString(WX_comment);
2834 xastir_snprintf(devices[WX_port].comment,
2835 sizeof(devices[WX_port].comment),
2836 "%s",
2837 temp_ptr);
2838 XtFree(temp_ptr);
2839
2840 (void)remove_trailing_spaces(devices[WX_port].comment);
2841
2842 if(XmToggleButtonGetState(WX_active_on_startup))
2843 {
2844 devices[WX_port].connect_on_startup=1;
2845 }
2846 else
2847 {
2848 devices[WX_port].connect_on_startup=0;
2849 }
2850
2851 set_port_speed(WX_port);
2852 devices[WX_port].style=device_style;
2853
2854 xastir_snprintf(devices[WX_port].device_host_pswd,
2855 sizeof( devices[WX_port].device_host_pswd), "%d", device_data_type);
2856
2857 /* reopen */
2858 if ( was_up)
2859 {
2860 (void)add_device(WX_port,
2861 DEVICE_SERIAL_WX,
2862 devices[WX_port].device_name,
2863 devices[WX_port].device_host_pswd,
2864 -1,
2865 devices[WX_port].sp,
2866 devices[WX_port].style,
2867 0,
2868 "");
2869 }
2870
2871 /* delete list */
2872 // modify_device_list(4,0);
2873
2874
2875 /* add device type */
2876 devices[WX_port].device_type=DEVICE_SERIAL_WX;
2877
2878 /* rebuild list */
2879 // modify_device_list(3,0);
2880
2881
2882 end_critical_section(&devices_lock, "interface_gui.c:Config_WX_change_data" );
2883
2884 // Rebuild the interface control list
2885 update_interface_list();
2886
2887 Config_WX_destroy_shell(widget,clientData,callData);
2888 }
2889
2890
2891
2892
2893
Config_WX(Widget UNUSED (w),int config_type,int port)2894 void Config_WX( Widget UNUSED(w), int config_type, int port)
2895 {
2896 static Widget pane, scrollwindow, form, button_ok, button_cancel,
2897 frame, frame2, frame3, frame4, WX_none,
2898 device, comment, speed_box,
2899 speed_300, speed_1200, speed_2400, speed_4800, speed_9600,
2900 speed_19200, speed_38400;
2901 // static Widget speed;
2902 #ifndef __LSB__
2903 static Widget speed_57600, speed_115200, speed_230400;
2904 #endif // __LSB__
2905 static Widget style_box,
2906 style_8n1, style_7e1, style_7o1,
2907 data_box,
2908 data_auto, data_bin, data_ascii,
2909 gauge_box,
2910 sep;
2911 // static Widget data_type, gauge_type;
2912 // static Widget style;
2913 Atom delw;
2914 Arg al[50]; /* Arg List */
2915 register unsigned int ac = 0; /* Arg Count */
2916
2917 if(!config_WX_dialog)
2918 {
2919 WX_port=port;
2920 config_WX_dialog = XtVaCreatePopupShell(langcode("WPUPCFWX01"),
2921 xmDialogShellWidgetClass, appshell,
2922 XmNdeleteResponse, XmDESTROY,
2923 XmNdefaultPosition, FALSE,
2924 XmNfontList, fontlist1,
2925 NULL);
2926
2927 pane = XtVaCreateWidget("Config_WX pane",xmPanedWindowWidgetClass, config_WX_dialog,
2928 XmNbackground, colors[0xff],
2929 NULL);
2930
2931 scrollwindow = XtVaCreateManagedWidget("scrollwindow",
2932 xmScrolledWindowWidgetClass,
2933 pane,
2934 XmNscrollingPolicy, XmAUTOMATIC,
2935 NULL);
2936
2937 form = XtVaCreateWidget("Config_WX form",
2938 xmFormWidgetClass,
2939 scrollwindow,
2940 XmNfractionBase, 5,
2941 XmNbackground, colors[0xff],
2942 XmNautoUnmanage, FALSE,
2943 XmNshadowThickness, 1,
2944 NULL);
2945
2946 device = XtVaCreateManagedWidget(langcode("WPUPCFWX02"),xmLabelWidgetClass, form,
2947 XmNtopAttachment, XmATTACH_FORM,
2948 XmNtopOffset, 10,
2949 XmNbottomAttachment, XmATTACH_NONE,
2950 XmNleftAttachment, XmATTACH_FORM,
2951 XmNleftOffset, 10,
2952 XmNrightAttachment, XmATTACH_NONE,
2953 XmNbackground, colors[0xff],
2954 XmNfontList, fontlist1,
2955 NULL);
2956
2957 WX_device_name_data = XtVaCreateManagedWidget("Config_WX device_data", xmTextFieldWidgetClass, form,
2958 XmNnavigationType, XmTAB_GROUP,
2959 XmNtraversalOn, TRUE,
2960 XmNeditable, TRUE,
2961 XmNcursorPositionVisible, TRUE,
2962 XmNsensitive, TRUE,
2963 XmNshadowThickness, 1,
2964 XmNcolumns, 15,
2965 XmNwidth, ((15*7)+2),
2966 XmNmaxLength, MAX_DEVICE_NAME,
2967 XmNbackground, colors[0x0f],
2968 XmNtopAttachment,XmATTACH_FORM,
2969 XmNtopOffset, 5,
2970 XmNbottomAttachment,XmATTACH_NONE,
2971 XmNleftAttachment, XmATTACH_WIDGET,
2972 XmNleftWidget, device,
2973 XmNleftOffset, 10,
2974 XmNrightAttachment,XmATTACH_FORM,
2975 XmNrightOffset, 5,
2976 XmNfontList, fontlist1,
2977 NULL);
2978
2979 comment = XtVaCreateManagedWidget(langcode("WPUPCFS017"),xmLabelWidgetClass, form,
2980 XmNtopAttachment, XmATTACH_WIDGET,
2981 XmNtopWidget, device,
2982 XmNtopOffset, 15,
2983 XmNbottomAttachment, XmATTACH_NONE,
2984 XmNleftAttachment, XmATTACH_FORM,
2985 XmNleftOffset, 10,
2986 XmNrightAttachment, XmATTACH_NONE,
2987 XmNbackground, colors[0xff],
2988 XmNfontList, fontlist1,
2989 NULL);
2990
2991 WX_comment = XtVaCreateManagedWidget("Config_WX comment", xmTextFieldWidgetClass, form,
2992 XmNnavigationType, XmTAB_GROUP,
2993 XmNtraversalOn, TRUE,
2994 XmNeditable, TRUE,
2995 XmNcursorPositionVisible, TRUE,
2996 XmNsensitive, TRUE,
2997 XmNshadowThickness, 1,
2998 XmNcolumns, 15,
2999 XmNwidth, ((15*7)+2),
3000 XmNmaxLength, 49,
3001 XmNbackground, colors[0x0f],
3002 XmNtopAttachment,XmATTACH_WIDGET,
3003 XmNtopWidget, device,
3004 XmNtopOffset, 10,
3005 XmNbottomAttachment,XmATTACH_NONE,
3006 XmNleftAttachment, XmATTACH_WIDGET,
3007 XmNleftWidget, comment,
3008 XmNleftOffset, 10,
3009 XmNrightAttachment,XmATTACH_FORM,
3010 XmNrightOffset, 5,
3011 XmNfontList, fontlist1,
3012 NULL);
3013
3014 WX_active_on_startup = XtVaCreateManagedWidget(langcode("UNIOP00011"),xmToggleButtonWidgetClass,form,
3015 XmNnavigationType, XmTAB_GROUP,
3016 XmNtraversalOn, TRUE,
3017 XmNtopAttachment, XmATTACH_WIDGET,
3018 XmNtopWidget, comment,
3019 XmNtopOffset, 10,
3020 XmNbottomAttachment, XmATTACH_NONE,
3021 XmNleftAttachment, XmATTACH_FORM,
3022 XmNleftOffset,10,
3023 XmNrightAttachment, XmATTACH_NONE,
3024 XmNbackground, colors[0xff],
3025 XmNfontList, fontlist1,
3026 NULL);
3027
3028 frame = XtVaCreateManagedWidget("Config_WX frame", xmFrameWidgetClass, form,
3029 XmNtopAttachment,XmATTACH_WIDGET,
3030 XmNtopOffset,10,
3031 XmNtopWidget, WX_active_on_startup,
3032 XmNbottomAttachment,XmATTACH_NONE,
3033 XmNleftAttachment, XmATTACH_FORM,
3034 XmNleftOffset, 10,
3035 XmNrightAttachment,XmATTACH_FORM,
3036 XmNrightOffset, 10,
3037 XmNbackground, colors[0xff],
3038 XmNfontList, fontlist1,
3039 NULL);
3040
3041 // speed
3042 XtVaCreateManagedWidget(langcode("WPUPCFT004"),xmLabelWidgetClass, frame,
3043 XmNchildType, XmFRAME_TITLE_CHILD,
3044 XmNbackground, colors[0xff],
3045 XmNfontList, fontlist1,
3046 NULL);
3047
3048 /*set args for color */
3049 ac=0;
3050 XtSetArg(al[ac], XmNbackground, colors[0xff]);
3051 ac++;
3052
3053
3054 speed_box = XmCreateRadioBox(frame,"Config_WX Speed_box",al,ac);
3055
3056 XtVaSetValues(speed_box,
3057 XmNnumColumns,3,
3058 NULL);
3059
3060 speed_300 = XtVaCreateManagedWidget(langcode("WPUPCFT005"),xmToggleButtonGadgetClass,
3061 speed_box,
3062 XmNbackground, colors[0xff],
3063 XmNfontList, fontlist1,
3064 NULL);
3065 XtAddCallback(speed_300,XmNvalueChangedCallback,speed_toggle,"1");
3066
3067 speed_1200 = XtVaCreateManagedWidget(langcode("WPUPCFT006"),xmToggleButtonGadgetClass,
3068 speed_box,
3069 XmNbackground, colors[0xff],
3070 XmNfontList, fontlist1,
3071 NULL);
3072 XtAddCallback(speed_1200,XmNvalueChangedCallback,speed_toggle,"2");
3073
3074 speed_2400 = XtVaCreateManagedWidget(langcode("WPUPCFT007"),xmToggleButtonGadgetClass,
3075 speed_box,
3076 XmNbackground, colors[0xff],
3077 XmNfontList, fontlist1,
3078 NULL);
3079 XtAddCallback(speed_2400,XmNvalueChangedCallback,speed_toggle,"3");
3080
3081 speed_4800 = XtVaCreateManagedWidget(langcode("WPUPCFT008"),xmToggleButtonGadgetClass,
3082 speed_box,
3083 XmNbackground, colors[0xff],
3084 XmNfontList, fontlist1,
3085 NULL);
3086 XtAddCallback(speed_4800,XmNvalueChangedCallback,speed_toggle,"4");
3087
3088 speed_9600 = XtVaCreateManagedWidget(langcode("WPUPCFT009"),xmToggleButtonGadgetClass,
3089 speed_box,
3090 XmNbackground, colors[0xff],
3091 XmNfontList, fontlist1,
3092 NULL);
3093 XtAddCallback(speed_9600,XmNvalueChangedCallback,speed_toggle,"5");
3094
3095 speed_19200 = XtVaCreateManagedWidget(langcode("WPUPCFT010"),xmToggleButtonGadgetClass,
3096 speed_box,
3097 XmNbackground, colors[0xff],
3098 XmNfontList, fontlist1,
3099 NULL);
3100 XtAddCallback(speed_19200,XmNvalueChangedCallback,speed_toggle,"6");
3101
3102 speed_38400 = XtVaCreateManagedWidget(langcode("WPUPCFT019"),xmToggleButtonGadgetClass,
3103 speed_box,
3104 XmNbackground, colors[0xff],
3105 XmNfontList, fontlist1,
3106 NULL);
3107 XtAddCallback(speed_38400,XmNvalueChangedCallback,speed_toggle,"7");
3108
3109 #ifndef __LSB__
3110 speed_57600 = XtVaCreateManagedWidget(langcode("WPUPCFT020"),xmToggleButtonGadgetClass,
3111 speed_box,
3112 XmNbackground, colors[0xff],
3113 XmNfontList, fontlist1,
3114 NULL);
3115 XtAddCallback(speed_57600,XmNvalueChangedCallback,speed_toggle,"8");
3116
3117 speed_115200 = XtVaCreateManagedWidget(langcode("WPUPCFT021"),xmToggleButtonGadgetClass,
3118 speed_box,
3119 XmNbackground, colors[0xff],
3120 XmNfontList, fontlist1,
3121 NULL);
3122 XtAddCallback(speed_115200,XmNvalueChangedCallback,speed_toggle,"9");
3123
3124 speed_230400 = XtVaCreateManagedWidget(langcode("WPUPCFT022"),xmToggleButtonGadgetClass,
3125 speed_box,
3126 XmNbackground, colors[0xff],
3127 XmNfontList, fontlist1,
3128 NULL);
3129 XtAddCallback(speed_230400,XmNvalueChangedCallback,speed_toggle,"10");
3130 #endif // __LSB__
3131
3132 frame2 = XtVaCreateManagedWidget("Config_WX frame2", xmFrameWidgetClass, form,
3133 XmNtopAttachment, XmATTACH_WIDGET,
3134 XmNtopWidget, frame,
3135 XmNtopOffset, 10,
3136 XmNbottomAttachment, XmATTACH_NONE,
3137 XmNleftAttachment, XmATTACH_FORM,
3138 XmNleftOffset, 10,
3139 XmNrightAttachment, XmATTACH_FORM,
3140 XmNrightOffset, 10,
3141 XmNbackground, colors[0xff],
3142 NULL);
3143
3144 // style
3145 XtVaCreateManagedWidget(langcode("WPUPCFT015"),xmLabelWidgetClass, frame2,
3146 XmNchildType, XmFRAME_TITLE_CHILD,
3147 XmNbackground, colors[0xff],
3148 XmNfontList, fontlist1,
3149 NULL);
3150
3151 style_box = XmCreateRadioBox(frame2,"Config_WX Style box",al,ac);
3152
3153 XtVaSetValues(style_box,
3154 XmNorientation, XmHORIZONTAL,
3155 NULL);
3156
3157 style_8n1 = XtVaCreateManagedWidget(langcode("WPUPCFT016"),xmToggleButtonGadgetClass,
3158 style_box,
3159 XmNbackground, colors[0xff],
3160 XmNfontList, fontlist1,
3161 NULL);
3162 XtAddCallback(style_8n1,XmNvalueChangedCallback,style_toggle,"0");
3163
3164 style_7e1 = XtVaCreateManagedWidget(langcode("WPUPCFT017"),xmToggleButtonGadgetClass,
3165 style_box,
3166 XmNbackground, colors[0xff],
3167 XmNfontList, fontlist1,
3168 NULL);
3169 XtAddCallback(style_7e1,XmNvalueChangedCallback,style_toggle,"1");
3170
3171 style_7o1 = XtVaCreateManagedWidget(langcode("WPUPCFT018"),xmToggleButtonGadgetClass,
3172 style_box,
3173 XmNbackground, colors[0xff],
3174 XmNfontList, fontlist1,
3175 NULL);
3176 XtAddCallback(style_7o1,XmNvalueChangedCallback,style_toggle,"2");
3177
3178 frame3 = XtVaCreateManagedWidget("Config_WX frame3", xmFrameWidgetClass, form,
3179 XmNtopAttachment, XmATTACH_WIDGET,
3180 XmNtopWidget, frame2,
3181 XmNtopOffset, 10,
3182 XmNbottomAttachment, XmATTACH_NONE,
3183 XmNleftAttachment, XmATTACH_FORM,
3184 XmNleftOffset, 10,
3185 XmNrightAttachment, XmATTACH_FORM,
3186 XmNrightOffset, 10,
3187 XmNbackground, colors[0xff],
3188 NULL);
3189
3190 // data_type
3191 XtVaCreateManagedWidget(langcode("WPUPCFT024"),xmLabelWidgetClass, frame3,
3192 XmNchildType, XmFRAME_TITLE_CHILD,
3193 XmNbackground, colors[0xff],
3194 XmNfontList, fontlist1,
3195 NULL);
3196
3197 data_box = XmCreateRadioBox(frame3,"Config_WX data box",al,ac);
3198
3199 XtVaSetValues(data_box,
3200 XmNorientation, XmHORIZONTAL,
3201 NULL);
3202
3203 data_auto = XtVaCreateManagedWidget(langcode("WPUPCFT025"),xmToggleButtonGadgetClass,
3204 data_box,
3205 XmNbackground, colors[0xff],
3206 XmNfontList, fontlist1,
3207 NULL);
3208 XtAddCallback(data_auto,XmNvalueChangedCallback,data_toggle,"0");
3209
3210 data_bin = XtVaCreateManagedWidget(langcode("WPUPCFT026"),xmToggleButtonGadgetClass,
3211 data_box,
3212 XmNbackground, colors[0xff],
3213 XmNfontList, fontlist1,
3214 NULL);
3215 XtAddCallback(data_bin,XmNvalueChangedCallback,data_toggle,"1");
3216
3217 data_ascii = XtVaCreateManagedWidget(langcode("WPUPCFT027"),xmToggleButtonGadgetClass,
3218 data_box,
3219 XmNbackground, colors[0xff],
3220 XmNfontList, fontlist1,
3221 NULL);
3222 XtAddCallback(data_ascii,XmNvalueChangedCallback,data_toggle,"2");
3223
3224 frame4 = XtVaCreateManagedWidget("Config_WX frame4", xmFrameWidgetClass, form,
3225 XmNtopAttachment, XmATTACH_WIDGET,
3226 XmNtopWidget, frame3,
3227 XmNtopOffset, 10,
3228 XmNbottomAttachment, XmATTACH_NONE,
3229 XmNleftAttachment, XmATTACH_FORM,
3230 XmNleftOffset, 10,
3231 XmNrightAttachment, XmATTACH_FORM,
3232 XmNrightOffset, 10,
3233 XmNbackground, colors[0xff],
3234 NULL);
3235
3236 // Rain Gauge Type
3237 // gauge_type
3238 XtVaCreateManagedWidget(langcode("WPUPCFWX03"),xmLabelWidgetClass, frame4,
3239 XmNchildType, XmFRAME_TITLE_CHILD,
3240 XmNbackground, colors[0xff],
3241 XmNfontList, fontlist1,
3242 NULL);
3243
3244 gauge_box = XmCreateRadioBox(frame4,"Config_WX gauge box",al,ac);
3245
3246 XtVaSetValues(gauge_box,
3247 XmNorientation, XmHORIZONTAL,
3248 NULL);
3249
3250 WX_none = XtVaCreateManagedWidget(langcode("WPUPCFWX07"),xmToggleButtonGadgetClass,
3251 gauge_box,
3252 XmNbackground, colors[0xff],
3253 XmNfontList, fontlist1,
3254 NULL);
3255 WX_tenths = XtVaCreateManagedWidget(langcode("WPUPCFWX04"),xmToggleButtonGadgetClass,
3256 gauge_box,
3257 XmNbackground, colors[0xff],
3258 XmNfontList, fontlist1,
3259 NULL);
3260 WX_hundredths = XtVaCreateManagedWidget(langcode("WPUPCFWX05"),xmToggleButtonGadgetClass,
3261 gauge_box,
3262 XmNbackground, colors[0xff],
3263 XmNfontList, fontlist1,
3264 NULL);
3265 WX_millimeters = XtVaCreateManagedWidget(langcode("WPUPCFWX06"),xmToggleButtonGadgetClass,
3266 gauge_box,
3267 XmNbackground, colors[0xff],
3268 XmNfontList, fontlist1,
3269 NULL);
3270
3271 XtAddCallback(WX_none,XmNvalueChangedCallback,rain_gauge_toggle,"0");
3272 XtAddCallback(WX_tenths,XmNvalueChangedCallback,rain_gauge_toggle,"1");
3273 XtAddCallback(WX_hundredths,XmNvalueChangedCallback,rain_gauge_toggle,"2");
3274 XtAddCallback(WX_millimeters,XmNvalueChangedCallback,rain_gauge_toggle,"3");
3275
3276 sep = XtVaCreateManagedWidget("Config_WX sep", xmSeparatorGadgetClass,form,
3277 XmNorientation, XmHORIZONTAL,
3278 XmNtopAttachment,XmATTACH_WIDGET,
3279 XmNtopWidget, frame4,
3280 XmNtopOffset, 20,
3281 XmNbottomAttachment,XmATTACH_NONE,
3282 XmNleftAttachment, XmATTACH_FORM,
3283 XmNrightAttachment,XmATTACH_FORM,
3284 XmNbackground, colors[0xff],
3285 XmNfontList, fontlist1,
3286 NULL);
3287
3288 button_ok = XtVaCreateManagedWidget(langcode("UNIOP00001"),xmPushButtonGadgetClass, form,
3289 XmNnavigationType, XmTAB_GROUP,
3290 XmNtraversalOn, TRUE,
3291 XmNtopAttachment, XmATTACH_WIDGET,
3292 XmNtopWidget, sep,
3293 XmNtopOffset, 10,
3294 XmNbottomAttachment, XmATTACH_FORM,
3295 XmNbottomOffset, 5,
3296 XmNleftAttachment, XmATTACH_POSITION,
3297 XmNleftPosition, 1,
3298 XmNrightAttachment, XmATTACH_POSITION,
3299 XmNrightPosition, 2,
3300 XmNbackground, colors[0xff],
3301 XmNfontList, fontlist1,
3302 NULL);
3303
3304 button_cancel = XtVaCreateManagedWidget(langcode("UNIOP00002"),xmPushButtonGadgetClass, form,
3305 XmNnavigationType, XmTAB_GROUP,
3306 XmNtraversalOn, TRUE,
3307 XmNtopAttachment, XmATTACH_WIDGET,
3308 XmNtopWidget, sep,
3309 XmNtopOffset, 10,
3310 XmNbottomAttachment, XmATTACH_FORM,
3311 XmNbottomOffset, 5,
3312 XmNleftAttachment, XmATTACH_POSITION,
3313 XmNleftPosition, 3,
3314 XmNrightAttachment, XmATTACH_POSITION,
3315 XmNrightPosition, 4,
3316 XmNbackground, colors[0xff],
3317 XmNfontList, fontlist1,
3318 NULL);
3319
3320 XtAddCallback(button_ok, XmNactivateCallback, Config_WX_change_data, config_WX_dialog);
3321 XtAddCallback(button_cancel, XmNactivateCallback, Config_WX_destroy_shell, config_WX_dialog);
3322
3323 pos_dialog(config_WX_dialog);
3324
3325 delw = XmInternAtom(XtDisplay(config_WX_dialog),"WM_DELETE_WINDOW", FALSE);
3326 XmAddWMProtocolCallback(config_WX_dialog, delw, Config_WX_destroy_shell, (XtPointer)config_WX_dialog);
3327
3328 begin_critical_section(&devices_lock, "interface_gui.c:Config_WX" );
3329
3330 if (config_type==0)
3331 {
3332 /* first time port */
3333 XmTextFieldSetString(WX_device_name_data,GPS_PORT);
3334 XmTextFieldSetString(WX_comment,"");
3335 XmToggleButtonSetState(WX_active_on_startup,TRUE,FALSE);
3336 XmToggleButtonSetState(speed_2400,TRUE,FALSE);
3337 device_speed=3;
3338 XmToggleButtonSetState(style_8n1,TRUE,FALSE);
3339 device_style=0;
3340 device_data_type=0;
3341 XmToggleButtonSetState(data_auto,TRUE,FALSE);
3342 }
3343 else
3344 {
3345 /* reconfig */
3346 XmTextFieldSetString(WX_device_name_data,devices[WX_port].device_name);
3347 XmTextFieldSetString(WX_comment,devices[WX_port].comment);
3348
3349 if (devices[WX_port].connect_on_startup)
3350 {
3351 XmToggleButtonSetState(WX_active_on_startup,TRUE,FALSE);
3352 }
3353 else
3354 {
3355 XmToggleButtonSetState(WX_active_on_startup,FALSE,FALSE);
3356 }
3357
3358 switch (devices[WX_port].sp)
3359 {
3360 case(B300):
3361 XmToggleButtonSetState(speed_300,TRUE,FALSE);
3362 device_speed=1;
3363 break;
3364
3365 case(B1200):
3366 XmToggleButtonSetState(speed_1200,TRUE,FALSE);
3367 device_speed=2;
3368 break;
3369
3370 case(B2400):
3371 XmToggleButtonSetState(speed_2400,TRUE,FALSE);
3372 device_speed=3;
3373 break;
3374
3375 case(B4800):
3376 XmToggleButtonSetState(speed_4800,TRUE,FALSE);
3377 device_speed=4;
3378 break;
3379
3380 case(B9600):
3381 XmToggleButtonSetState(speed_9600,TRUE,FALSE);
3382 device_speed=5;
3383 break;
3384
3385 case(B19200):
3386 XmToggleButtonSetState(speed_19200,TRUE,FALSE);
3387 device_speed=6;
3388 break;
3389
3390 case(B38400):
3391 XmToggleButtonSetState(speed_38400,TRUE,FALSE);
3392 device_speed=7;
3393 break;
3394
3395 #ifndef __LSB__
3396 case(B57600):
3397 XmToggleButtonSetState(speed_57600,TRUE,FALSE);
3398 device_speed=8;
3399 break;
3400
3401 case(B115200):
3402 XmToggleButtonSetState(speed_115200,TRUE,FALSE);
3403 device_speed=9;
3404 break;
3405
3406 #ifdef B230400
3407 case(B230400):
3408 XmToggleButtonSetState(speed_230400,TRUE,FALSE);
3409 device_speed=10;
3410 break;
3411 #endif // B230400
3412 #endif // __LSB__
3413
3414 default:
3415 XmToggleButtonSetState(speed_4800,TRUE,FALSE);
3416 device_speed=4;
3417 break;
3418 }
3419 switch (devices[WX_port].style)
3420 {
3421 case(0):
3422 XmToggleButtonSetState(style_8n1,TRUE,FALSE);
3423 device_style=0;
3424 break;
3425
3426 case(1):
3427 XmToggleButtonSetState(style_7e1,TRUE,FALSE);
3428 device_style=1;
3429 break;
3430
3431 case(2):
3432 XmToggleButtonSetState(style_7o1,TRUE,FALSE);
3433 device_style=2;
3434 break;
3435
3436 default:
3437 XmToggleButtonSetState(style_8n1,TRUE,FALSE);
3438 device_style=0;
3439 break;
3440 }
3441 switch (atoi(devices[WX_port].device_host_pswd))
3442 {
3443 case(0):
3444 XmToggleButtonSetState(data_auto,TRUE,FALSE);
3445 device_data_type=0;
3446 break;
3447
3448 case(1):
3449 XmToggleButtonSetState(data_bin,TRUE,FALSE);
3450 device_data_type=1;
3451 break;
3452
3453 case(2):
3454 XmToggleButtonSetState(data_ascii,TRUE,FALSE);
3455 device_data_type=2;
3456 break;
3457
3458 default:
3459 device_data_type=0;
3460 break;
3461 }
3462 }
3463
3464 end_critical_section(&devices_lock, "interface_gui.c:Config_WX" );
3465
3466 XmToggleButtonSetState(WX_none,FALSE,FALSE);
3467 XmToggleButtonSetState(WX_tenths,FALSE,FALSE);
3468 XmToggleButtonSetState(WX_hundredths,FALSE,FALSE);
3469 XmToggleButtonSetState(WX_millimeters,FALSE,FALSE);
3470 switch (WX_rain_gauge_type)
3471 {
3472 case(1):
3473 XmToggleButtonSetState(WX_tenths,TRUE,FALSE);
3474 break;
3475 case(2):
3476 XmToggleButtonSetState(WX_hundredths,TRUE,FALSE);
3477 break;
3478 case(3):
3479 XmToggleButtonSetState(WX_millimeters,TRUE,FALSE);
3480 break;
3481 default:
3482 XmToggleButtonSetState(WX_none,TRUE,FALSE);
3483 break;
3484 }
3485
3486 XtManageChild(form);
3487 XtManageChild(speed_box);
3488 XtManageChild(style_box);
3489 XtManageChild(data_box);
3490 XtManageChild(gauge_box);
3491 XtManageChild(pane);
3492
3493 resize_dialog(form, config_WX_dialog);
3494
3495 XtPopup(config_WX_dialog,XtGrabNone);
3496 }
3497 else
3498 {
3499 (void)XRaiseWindow(XtDisplay(config_WX_dialog), XtWindow(config_WX_dialog));
3500 }
3501
3502 }
3503
3504
3505
3506
3507
3508 /**** net WX CONFIGURE ******/
3509 int NWX_port;
3510 Widget config_NWX_dialog = (Widget)NULL;
3511 Widget NWX_host_name_data;
3512 Widget NWX_host_port_data;
3513 Widget NWX_comment;
3514 Widget NWX_active_on_startup;
3515 Widget NWX_host_reconnect_data;
3516
3517
3518
3519
3520
Config_NWX_destroy_shell(Widget UNUSED (widget),XtPointer clientData,XtPointer UNUSED (callData))3521 void Config_NWX_destroy_shell( Widget UNUSED(widget), XtPointer clientData, XtPointer UNUSED(callData) )
3522 {
3523 Widget shell = (Widget) clientData;
3524 XtPopdown(shell);
3525 XtDestroyWidget(shell);
3526 config_NWX_dialog = (Widget)NULL;
3527
3528 if (choose_interface_dialog != NULL)
3529 {
3530 Choose_interface_destroy_shell(choose_interface_dialog,choose_interface_dialog,NULL);
3531 }
3532
3533 choose_interface_dialog = (Widget)NULL;
3534 }
3535
3536
3537
3538
3539
Config_NWX_change_data(Widget widget,XtPointer clientData,XtPointer callData)3540 void Config_NWX_change_data(Widget widget, XtPointer clientData, XtPointer callData)
3541 {
3542 int was_up;
3543 char *temp_ptr;
3544
3545
3546 busy_cursor(appshell);
3547
3548 was_up=0;
3549 if (get_device_status(NWX_port) == DEVICE_IN_USE)
3550 {
3551 /* if active shutdown before changes are made */
3552 /*fprintf(stderr,"Device is up, shutting down\n");*/
3553 (void)del_device(NWX_port);
3554 was_up=1;
3555 usleep(1000000); // Wait for one second
3556 }
3557
3558 begin_critical_section(&devices_lock, "interface_gui.c:Config_NWX_change_data" );
3559
3560 temp_ptr = XmTextFieldGetString(NWX_host_name_data);
3561 xastir_snprintf(devices[NWX_port].device_host_name,
3562 sizeof(devices[NWX_port].device_host_name),
3563 "%s",
3564 temp_ptr);
3565 XtFree(temp_ptr);
3566
3567 (void)remove_trailing_spaces(devices[NWX_port].device_host_name);
3568
3569 temp_ptr = XmTextFieldGetString(NWX_host_port_data);
3570 devices[NWX_port].sp=atoi(temp_ptr);
3571 XtFree(temp_ptr);
3572
3573 temp_ptr = XmTextFieldGetString(NWX_comment);
3574 xastir_snprintf(devices[NWX_port].comment,
3575 sizeof(devices[NWX_port].comment),
3576 "%s",
3577 temp_ptr);
3578 XtFree(temp_ptr);
3579
3580 (void)remove_trailing_spaces(devices[NWX_port].comment);
3581
3582 if (XmToggleButtonGetState(NWX_active_on_startup))
3583 {
3584 devices[NWX_port].connect_on_startup=1;
3585 }
3586 else
3587 {
3588 devices[NWX_port].connect_on_startup=0;
3589 }
3590
3591 if(XmToggleButtonGetState(NWX_host_reconnect_data))
3592 {
3593 devices[NWX_port].reconnect=1;
3594 }
3595 else
3596 {
3597 devices[NWX_port].reconnect=0;
3598 }
3599
3600 xastir_snprintf(devices[NWX_port].device_host_pswd,
3601 sizeof(devices[NWX_port].device_host_pswd), "%d", device_data_type);
3602
3603 /* reopen if was up*/
3604 if ( was_up)
3605 {
3606 (void)add_device(NWX_port,
3607 DEVICE_NET_WX,
3608 devices[NWX_port].device_host_name,
3609 devices[NWX_port].device_host_pswd,
3610 devices[NWX_port].sp,
3611 0,
3612 0,
3613 devices[NWX_port].reconnect,
3614 "");
3615 }
3616
3617
3618 /* delete list */
3619 // modify_device_list(4,0);
3620
3621
3622 /* add device type */
3623 devices[NWX_port].device_type=DEVICE_NET_WX;
3624
3625 /* rebuild list */
3626 // modify_device_list(3,0);
3627
3628
3629 end_critical_section(&devices_lock, "interface_gui.c:Config_NWX_change_data" );
3630
3631 // Rebuild the interface control list
3632 update_interface_list();
3633
3634 Config_NWX_destroy_shell(widget,clientData,callData);
3635 }
3636
3637
3638
3639
3640
Config_NWX(Widget UNUSED (w),int config_type,int port)3641 void Config_NWX( Widget UNUSED(w), int config_type, int port)
3642 {
3643 static Widget pane, scrollwindow, form, frame3, frame4, WX_none,
3644 button_ok, button_cancel,
3645 hostn, portn, comment,
3646 data_box,
3647 data_auto, data_bin, data_ascii,
3648 gauge_box,
3649 sep;
3650 // static Widget data_type, gauge_type;
3651 char temp[20];
3652 Arg al[50]; /* Arg List */
3653 register unsigned int ac = 0; /* Arg Count */
3654 Atom delw;
3655
3656 if(!config_NWX_dialog)
3657 {
3658 NWX_port=port;
3659 config_NWX_dialog = XtVaCreatePopupShell(langcode("WPUPCFG021"),
3660 xmDialogShellWidgetClass, appshell,
3661 XmNdeleteResponse, XmDESTROY,
3662 XmNdefaultPosition, FALSE,
3663 XmNfontList, fontlist1,
3664 NULL);
3665
3666 pane = XtVaCreateWidget("Config_NWX pane",xmPanedWindowWidgetClass, config_NWX_dialog,
3667 XmNbackground, colors[0xff],
3668 NULL);
3669
3670 scrollwindow = XtVaCreateManagedWidget("scrollwindow",
3671 xmScrolledWindowWidgetClass,
3672 pane,
3673 XmNscrollingPolicy, XmAUTOMATIC,
3674 NULL);
3675
3676 form = XtVaCreateWidget("Config_NWX form",
3677 xmFormWidgetClass,
3678 scrollwindow,
3679 XmNfractionBase, 5,
3680 XmNbackground, colors[0xff],
3681 XmNautoUnmanage, FALSE,
3682 XmNshadowThickness, 1,
3683 NULL);
3684
3685 hostn = XtVaCreateManagedWidget(langcode("WPUPCFG022"),xmLabelWidgetClass, form,
3686 XmNtopAttachment, XmATTACH_FORM,
3687 XmNtopOffset, 10,
3688 XmNbottomAttachment, XmATTACH_NONE,
3689 XmNleftAttachment, XmATTACH_FORM,
3690 XmNleftOffset, 10,
3691 XmNrightAttachment, XmATTACH_NONE,
3692 XmNbackground, colors[0xff],
3693 XmNfontList, fontlist1,
3694 NULL);
3695
3696 NWX_host_name_data = XtVaCreateManagedWidget("Config_NWX host_data", xmTextFieldWidgetClass, form,
3697 XmNnavigationType, XmTAB_GROUP,
3698 XmNtraversalOn, TRUE,
3699 XmNeditable, TRUE,
3700 XmNcursorPositionVisible, TRUE,
3701 XmNsensitive, TRUE,
3702 XmNshadowThickness, 1,
3703 XmNcolumns, 25,
3704 XmNwidth, ((25*7)+2),
3705 XmNmaxLength, MAX_DEVICE_NAME,
3706 XmNbackground, colors[0x0f],
3707 XmNtopAttachment,XmATTACH_FORM,
3708 XmNtopOffset, 5,
3709 XmNbottomAttachment,XmATTACH_NONE,
3710 XmNleftAttachment, XmATTACH_WIDGET,
3711 XmNleftWidget, hostn,
3712 XmNleftOffset, 10,
3713 XmNrightAttachment,XmATTACH_FORM,
3714 XmNrightOffset, 5,
3715 XmNfontList, fontlist1,
3716 NULL);
3717
3718 portn = XtVaCreateManagedWidget(langcode("WPUPCFG023"),xmLabelWidgetClass, form,
3719 XmNtopAttachment, XmATTACH_WIDGET,
3720 XmNtopWidget, hostn,
3721 XmNtopOffset, 12,
3722 XmNbottomAttachment, XmATTACH_NONE,
3723 XmNleftAttachment, XmATTACH_FORM,
3724 XmNleftOffset, 10,
3725 XmNrightAttachment, XmATTACH_NONE,
3726 XmNbackground, colors[0xff],
3727 XmNfontList, fontlist1,
3728 NULL);
3729
3730 NWX_host_port_data = XtVaCreateManagedWidget("Config_NWX port_data", xmTextFieldWidgetClass, form,
3731 XmNnavigationType, XmTAB_GROUP,
3732 XmNtraversalOn, TRUE,
3733 XmNeditable, TRUE,
3734 XmNcursorPositionVisible, TRUE,
3735 XmNsensitive, TRUE,
3736 XmNshadowThickness, 1,
3737 XmNcolumns, 25,
3738 XmNwidth, ((25*7)+2),
3739 XmNmaxLength, 40,
3740 XmNbackground, colors[0x0f],
3741 XmNtopAttachment,XmATTACH_WIDGET,
3742 XmNtopWidget, hostn,
3743 XmNtopOffset, 8,
3744 XmNbottomAttachment,XmATTACH_NONE,
3745 XmNleftAttachment, XmATTACH_WIDGET,
3746 XmNleftWidget, portn,
3747 XmNleftOffset, 10,
3748 XmNrightAttachment,XmATTACH_FORM,
3749 XmNrightOffset, 5,
3750 XmNfontList, fontlist1,
3751 NULL);
3752
3753 comment = XtVaCreateManagedWidget(langcode("WPUPCFS017"),xmLabelWidgetClass, form,
3754 XmNtopAttachment, XmATTACH_WIDGET,
3755 XmNtopWidget, portn,
3756 XmNtopOffset, 12,
3757 XmNbottomAttachment, XmATTACH_NONE,
3758 XmNleftAttachment, XmATTACH_FORM,
3759 XmNleftOffset, 10,
3760 XmNrightAttachment, XmATTACH_NONE,
3761 XmNbackground, colors[0xff],
3762 XmNfontList, fontlist1,
3763 NULL);
3764
3765 NWX_comment = XtVaCreateManagedWidget("Config_NWX comment", xmTextFieldWidgetClass, form,
3766 XmNnavigationType, XmTAB_GROUP,
3767 XmNtraversalOn, TRUE,
3768 XmNeditable, TRUE,
3769 XmNcursorPositionVisible, TRUE,
3770 XmNsensitive, TRUE,
3771 XmNshadowThickness, 1,
3772 XmNcolumns, 25,
3773 XmNwidth, ((25*7)+2),
3774 XmNmaxLength, 49,
3775 XmNbackground, colors[0x0f],
3776 XmNtopAttachment,XmATTACH_WIDGET,
3777 XmNtopWidget, portn,
3778 XmNtopOffset, 8,
3779 XmNbottomAttachment,XmATTACH_NONE,
3780 XmNleftAttachment, XmATTACH_WIDGET,
3781 XmNleftWidget, comment,
3782 XmNleftOffset, 10,
3783 XmNrightAttachment,XmATTACH_FORM,
3784 XmNrightOffset, 5,
3785 XmNfontList, fontlist1,
3786 NULL);
3787
3788 NWX_active_on_startup = XtVaCreateManagedWidget(langcode("UNIOP00011"),xmToggleButtonWidgetClass,form,
3789 XmNnavigationType, XmTAB_GROUP,
3790 XmNtraversalOn, TRUE,
3791 XmNtopAttachment, XmATTACH_WIDGET,
3792 XmNtopWidget, comment,
3793 XmNtopOffset, 15,
3794 XmNbottomAttachment, XmATTACH_NONE,
3795 XmNleftAttachment, XmATTACH_FORM,
3796 XmNleftOffset,10,
3797 XmNrightAttachment, XmATTACH_NONE,
3798 XmNbackground, colors[0xff],
3799 XmNfontList, fontlist1,
3800 NULL);
3801
3802 NWX_host_reconnect_data = XtVaCreateManagedWidget(langcode("WPUPCFG020"),xmToggleButtonWidgetClass,form,
3803 XmNnavigationType, XmTAB_GROUP,
3804 XmNtraversalOn, TRUE,
3805 XmNtopAttachment, XmATTACH_WIDGET,
3806 XmNtopWidget, NWX_active_on_startup,
3807 XmNtopOffset, 5,
3808 XmNbottomAttachment, XmATTACH_NONE,
3809 XmNleftAttachment, XmATTACH_FORM,
3810 XmNleftOffset,10,
3811 XmNrightAttachment, XmATTACH_NONE,
3812 XmNbackground, colors[0xff],
3813 XmNfontList, fontlist1,
3814 NULL);
3815
3816 /*set args for color */
3817 ac=0;
3818 XtSetArg(al[ac], XmNbackground, colors[0xff]);
3819 ac++;
3820
3821
3822 frame3 = XtVaCreateManagedWidget("Config_NWX frame3", xmFrameWidgetClass, form,
3823 XmNtopAttachment, XmATTACH_WIDGET,
3824 XmNtopWidget, NWX_host_reconnect_data,
3825 XmNtopOffset, 10,
3826 XmNbottomAttachment, XmATTACH_NONE,
3827 XmNleftAttachment, XmATTACH_FORM,
3828 XmNleftOffset, 10,
3829 XmNrightAttachment, XmATTACH_FORM,
3830 XmNrightOffset, 10,
3831 XmNbackground, colors[0xff],
3832 NULL);
3833
3834 // data_type
3835 XtVaCreateManagedWidget(langcode("WPUPCFT024"),xmLabelWidgetClass, frame3,
3836 XmNchildType, XmFRAME_TITLE_CHILD,
3837 XmNbackground, colors[0xff],
3838 XmNfontList, fontlist1,
3839 NULL);
3840
3841 data_box = XmCreateRadioBox(frame3,"Config_NWX data box",al,ac);
3842
3843 XtVaSetValues(data_box,
3844 XmNorientation, XmHORIZONTAL,
3845 NULL);
3846
3847 data_auto = XtVaCreateManagedWidget(langcode("WPUPCFT025"),xmToggleButtonGadgetClass,
3848 data_box,
3849 XmNbackground, colors[0xff],
3850 XmNfontList, fontlist1,
3851 NULL);
3852 XtAddCallback(data_auto,XmNvalueChangedCallback,data_toggle,"0");
3853
3854 data_bin = XtVaCreateManagedWidget(langcode("WPUPCFT026"),xmToggleButtonGadgetClass,
3855 data_box,
3856 XmNbackground, colors[0xff],
3857 XmNfontList, fontlist1,
3858 NULL);
3859 XtAddCallback(data_bin,XmNvalueChangedCallback,data_toggle,"1");
3860
3861 data_ascii = XtVaCreateManagedWidget(langcode("WPUPCFT027"),xmToggleButtonGadgetClass,
3862 data_box,
3863 XmNbackground, colors[0xff],
3864 XmNfontList, fontlist1,
3865 NULL);
3866 XtAddCallback(data_ascii,XmNvalueChangedCallback,data_toggle,"2");
3867
3868 frame4 = XtVaCreateManagedWidget("Config_WX frame4", xmFrameWidgetClass, form,
3869 XmNtopAttachment, XmATTACH_WIDGET,
3870 XmNtopWidget, frame3,
3871 XmNtopOffset, 10,
3872 XmNbottomAttachment, XmATTACH_NONE,
3873 XmNleftAttachment, XmATTACH_FORM,
3874 XmNleftOffset, 10,
3875 XmNrightAttachment, XmATTACH_FORM,
3876 XmNrightOffset, 10,
3877 XmNbackground, colors[0xff],
3878 NULL);
3879
3880 // Rain Gauge Type
3881 // gauge_type
3882 XtVaCreateManagedWidget(langcode("WPUPCFWX03"),xmLabelWidgetClass, frame4,
3883 XmNchildType, XmFRAME_TITLE_CHILD,
3884 XmNbackground, colors[0xff],
3885 XmNfontList, fontlist1,
3886 NULL);
3887
3888 gauge_box = XmCreateRadioBox(frame4,"Config_WX gauge box",al,ac);
3889
3890 XtVaSetValues(gauge_box,
3891 XmNorientation, XmHORIZONTAL,
3892 NULL);
3893
3894 WX_none = XtVaCreateManagedWidget(langcode("WPUPCFWX07"),xmToggleButtonGadgetClass,
3895 gauge_box,
3896 XmNbackground, colors[0xff],
3897 XmNfontList, fontlist1,
3898 NULL);
3899 WX_tenths = XtVaCreateManagedWidget(langcode("WPUPCFWX04"),xmToggleButtonGadgetClass,
3900 gauge_box,
3901 XmNbackground, colors[0xff],
3902 XmNfontList, fontlist1,
3903 NULL);
3904 WX_hundredths = XtVaCreateManagedWidget(langcode("WPUPCFWX05"),xmToggleButtonGadgetClass,
3905 gauge_box,
3906 XmNbackground, colors[0xff],
3907 XmNfontList, fontlist1,
3908 NULL);
3909 WX_millimeters = XtVaCreateManagedWidget(langcode("WPUPCFWX06"),xmToggleButtonGadgetClass,
3910 gauge_box,
3911 XmNbackground, colors[0xff],
3912 XmNfontList, fontlist1,
3913 NULL);
3914
3915 XtAddCallback(WX_none,XmNvalueChangedCallback,rain_gauge_toggle,"0");
3916 XtAddCallback(WX_tenths,XmNvalueChangedCallback,rain_gauge_toggle,"1");
3917 XtAddCallback(WX_hundredths,XmNvalueChangedCallback,rain_gauge_toggle,"2");
3918 XtAddCallback(WX_millimeters,XmNvalueChangedCallback,rain_gauge_toggle,"3");
3919
3920
3921 sep = XtVaCreateManagedWidget("Config_NWX sep", xmSeparatorGadgetClass,form,
3922 XmNorientation, XmHORIZONTAL,
3923 XmNtopAttachment,XmATTACH_WIDGET,
3924 XmNtopWidget, frame4,
3925 XmNtopOffset, 20,
3926 XmNbottomAttachment,XmATTACH_NONE,
3927 XmNleftAttachment, XmATTACH_FORM,
3928 XmNrightAttachment,XmATTACH_FORM,
3929 XmNbackground, colors[0xff],
3930 XmNfontList, fontlist1,
3931 NULL);
3932
3933 button_ok = XtVaCreateManagedWidget(langcode("UNIOP00001"),xmPushButtonGadgetClass, form,
3934 XmNnavigationType, XmTAB_GROUP,
3935 XmNtraversalOn, TRUE,
3936 XmNtopAttachment, XmATTACH_WIDGET,
3937 XmNtopWidget, sep,
3938 XmNtopOffset, 10,
3939 XmNbottomAttachment, XmATTACH_FORM,
3940 XmNbottomOffset, 5,
3941 XmNleftAttachment, XmATTACH_POSITION,
3942 XmNleftPosition, 1,
3943 XmNrightAttachment, XmATTACH_POSITION,
3944 XmNrightPosition, 2,
3945 XmNbackground, colors[0xff],
3946 XmNfontList, fontlist1,
3947 NULL);
3948
3949 button_cancel = XtVaCreateManagedWidget(langcode("UNIOP00002"),xmPushButtonGadgetClass, form,
3950 XmNnavigationType, XmTAB_GROUP,
3951 XmNtraversalOn, TRUE,
3952 XmNtopAttachment, XmATTACH_WIDGET,
3953 XmNtopWidget, sep,
3954 XmNtopOffset, 10,
3955 XmNbottomAttachment, XmATTACH_FORM,
3956 XmNbottomOffset, 5,
3957 XmNleftAttachment, XmATTACH_POSITION,
3958 XmNleftPosition, 3,
3959 XmNrightAttachment, XmATTACH_POSITION,
3960 XmNrightPosition, 4,
3961 XmNbackground, colors[0xff],
3962 XmNfontList, fontlist1,
3963 NULL);
3964
3965 XtAddCallback(button_ok, XmNactivateCallback, Config_NWX_change_data, config_NWX_dialog);
3966 XtAddCallback(button_cancel, XmNactivateCallback, Config_NWX_destroy_shell, config_NWX_dialog);
3967
3968 pos_dialog(config_NWX_dialog);
3969
3970 delw = XmInternAtom(XtDisplay(config_NWX_dialog),"WM_DELETE_WINDOW", FALSE);
3971 XmAddWMProtocolCallback(config_NWX_dialog, delw, Config_NWX_destroy_shell, (XtPointer)config_NWX_dialog);
3972
3973 begin_critical_section(&devices_lock, "interface_gui.c:Config_NWX" );
3974
3975 if (config_type==0)
3976 {
3977 /* first time port */
3978 XmTextFieldSetString(NWX_host_name_data,"localhost");
3979 XmTextFieldSetString(NWX_host_port_data,"1234");
3980 XmTextFieldSetString(NWX_comment,"");
3981 XmToggleButtonSetState(NWX_active_on_startup,TRUE,FALSE);
3982 XmToggleButtonSetState(NWX_host_reconnect_data,TRUE,FALSE);
3983 device_data_type=0;
3984 XmToggleButtonSetState(data_auto,TRUE,FALSE);
3985 }
3986 else
3987 {
3988 /* reconfig */
3989
3990 XmTextFieldSetString(NWX_host_name_data,devices[NWX_port].device_host_name);
3991 xastir_snprintf(temp, sizeof(temp), "%d", devices[NWX_port].sp); /* port number */
3992 XmTextFieldSetString(NWX_host_port_data,temp);
3993
3994 XmTextFieldSetString(NWX_comment,devices[NWX_port].comment);
3995
3996 if (devices[NWX_port].connect_on_startup)
3997 {
3998 XmToggleButtonSetState(NWX_active_on_startup,TRUE,FALSE);
3999 }
4000 else
4001 {
4002 XmToggleButtonSetState(NWX_active_on_startup,FALSE,FALSE);
4003 }
4004
4005 if (devices[NWX_port].reconnect)
4006 {
4007 XmToggleButtonSetState(NWX_host_reconnect_data,TRUE,FALSE);
4008 }
4009 else
4010 {
4011 XmToggleButtonSetState(NWX_host_reconnect_data,FALSE,FALSE);
4012 }
4013
4014 switch (atoi(devices[NWX_port].device_host_pswd))
4015 {
4016 case(0):
4017 XmToggleButtonSetState(data_auto,TRUE,FALSE);
4018 device_data_type=0;
4019 break;
4020
4021 case(1):
4022 XmToggleButtonSetState(data_bin,TRUE,FALSE);
4023 device_data_type=1;
4024 break;
4025
4026 case(2):
4027 XmToggleButtonSetState(data_ascii,TRUE,FALSE);
4028 device_data_type=2;
4029 break;
4030
4031 default:
4032 device_data_type=0;
4033 break;
4034 }
4035 }
4036
4037 XmToggleButtonSetState(WX_none,FALSE,FALSE);
4038 XmToggleButtonSetState(WX_tenths,FALSE,FALSE);
4039 XmToggleButtonSetState(WX_hundredths,FALSE,FALSE);
4040 XmToggleButtonSetState(WX_millimeters,FALSE,FALSE);
4041 switch (WX_rain_gauge_type)
4042 {
4043 case(1):
4044 XmToggleButtonSetState(WX_tenths,TRUE,FALSE);
4045 break;
4046 case(2):
4047 XmToggleButtonSetState(WX_hundredths,TRUE,FALSE);
4048 break;
4049 case(3):
4050 XmToggleButtonSetState(WX_millimeters,TRUE,FALSE);
4051 break;
4052 default:
4053 XmToggleButtonSetState(WX_none,TRUE,FALSE);
4054 break;
4055 }
4056
4057 end_critical_section(&devices_lock, "interface_gui.c:Config_NWX" );
4058
4059 XtManageChild(form);
4060 XtManageChild(data_box);
4061 XtManageChild(frame3);
4062 XtManageChild(gauge_box);
4063 XtManageChild(pane);
4064
4065 resize_dialog(form, config_NWX_dialog);
4066
4067 XtPopup(config_NWX_dialog,XtGrabNone);
4068 }
4069 else
4070 {
4071 (void)XRaiseWindow(XtDisplay(config_NWX_dialog), XtWindow(config_NWX_dialog));
4072 }
4073 }
4074
4075
4076
4077
4078
4079 /*****************************************************/
4080 /* Configure net GPS GUI */
4081 /*****************************************************/
4082
4083 /**** net GPS CONFIGURE ******/
4084 int NGPS_port;
4085 Widget config_NGPS_dialog = (Widget)NULL;
4086 Widget NGPS_host_name_data;
4087 Widget NGPS_host_port_data;
4088 Widget NGPS_comment;
4089 Widget NGPS_active_on_startup;
4090 Widget NGPS_host_reconnect_data;
4091 Widget NGPS_set_time;
4092
4093
4094
4095
4096
4097
Config_NGPS_destroy_shell(Widget UNUSED (widget),XtPointer clientData,XtPointer UNUSED (callData))4098 void Config_NGPS_destroy_shell( Widget UNUSED(widget), XtPointer clientData, XtPointer UNUSED(callData) )
4099 {
4100 Widget shell = (Widget) clientData;
4101 XtPopdown(shell);
4102 XtDestroyWidget(shell);
4103 config_NGPS_dialog = (Widget)NULL;
4104 if (choose_interface_dialog != NULL)
4105 {
4106 Choose_interface_destroy_shell(choose_interface_dialog,choose_interface_dialog,NULL);
4107 }
4108
4109 choose_interface_dialog = (Widget)NULL;
4110 }
4111
4112
4113
4114
4115
Config_NGPS_change_data(Widget widget,XtPointer clientData,XtPointer callData)4116 void Config_NGPS_change_data(Widget widget, XtPointer clientData, XtPointer callData)
4117 {
4118 int was_up;
4119 char *temp_ptr;
4120
4121
4122 busy_cursor(appshell);
4123 was_up=0;
4124 if (get_device_status(NGPS_port) == DEVICE_IN_USE)
4125 {
4126 /* if active shutdown before changes are made */
4127 /*fprintf(stderr,"Device is up, shutting down\n");*/
4128 (void)del_device(NGPS_port);
4129 was_up=1;
4130 usleep(1000000); // Wait for one second
4131 }
4132
4133 begin_critical_section(&devices_lock, "interface_gui.c:Config_NGPS_change_data" );
4134
4135 temp_ptr = XmTextFieldGetString(NGPS_host_name_data);
4136 xastir_snprintf(devices[NGPS_port].device_host_name,
4137 sizeof(devices[NGPS_port].device_host_name),
4138 "%s",
4139 temp_ptr);
4140 XtFree(temp_ptr);
4141
4142 (void)remove_trailing_spaces(devices[NGPS_port].device_host_name);
4143
4144 temp_ptr = XmTextFieldGetString(NGPS_host_port_data);
4145 devices[NGPS_port].sp=atoi(temp_ptr);
4146 XtFree(temp_ptr);
4147
4148 temp_ptr = XmTextFieldGetString(NGPS_comment);
4149 xastir_snprintf(devices[NGPS_port].comment,
4150 sizeof(devices[NGPS_port].comment),
4151 "%s",
4152 temp_ptr);
4153 XtFree(temp_ptr);
4154
4155 (void)remove_trailing_spaces(devices[NGPS_port].comment);
4156
4157 if(XmToggleButtonGetState(NGPS_active_on_startup))
4158 {
4159 devices[NGPS_port].connect_on_startup=1;
4160 }
4161 else
4162 {
4163 devices[NGPS_port].connect_on_startup=0;
4164 }
4165
4166 if (XmToggleButtonGetState(NGPS_host_reconnect_data))
4167 {
4168 devices[NGPS_port].reconnect=1;
4169 }
4170 else
4171 {
4172 devices[NGPS_port].reconnect=0;
4173 }
4174
4175 if (XmToggleButtonGetState(NGPS_set_time))
4176 {
4177 devices[NGPS_port].set_time=1;
4178 }
4179 else
4180 {
4181 devices[NGPS_port].set_time=0;
4182 }
4183
4184 /* reopen */
4185 if ( was_up )
4186 {
4187 (void)add_device(NGPS_port,
4188 DEVICE_NET_GPSD,
4189 devices[NGPS_port].device_host_name,
4190 "",
4191 devices[NGPS_port].sp,
4192 0,
4193 0,
4194 devices[NGPS_port].reconnect,
4195 "");
4196 }
4197
4198
4199 /* delete list */
4200 // modify_device_list(4,0);
4201
4202
4203 /* add device type */
4204 devices[NGPS_port].device_type=DEVICE_NET_GPSD;
4205
4206 /* rebuild list */
4207 // modify_device_list(3,0);
4208
4209
4210 end_critical_section(&devices_lock, "interface_gui.c:Config_NGPS_change_data" );
4211
4212 // Rebuild the interface control list
4213 update_interface_list();
4214
4215 Config_NGPS_destroy_shell(widget,clientData,callData);
4216 }
4217
4218
4219
4220
4221
Config_NGPS(Widget UNUSED (w),int config_type,int port)4222 void Config_NGPS( Widget UNUSED(w), int config_type, int port)
4223 {
4224 static Widget pane, scrollwindow, form, button_ok, button_cancel,
4225 hostn, portn, comment,
4226 sep;
4227 char temp[20];
4228 Atom delw;
4229
4230 if (!config_NGPS_dialog)
4231 {
4232 NGPS_port=port;
4233 config_NGPS_dialog = XtVaCreatePopupShell(langcode("WPUPCFG019"),
4234 xmDialogShellWidgetClass, appshell,
4235 XmNdeleteResponse, XmDESTROY,
4236 XmNdefaultPosition, FALSE,
4237 XmNfontList, fontlist1,
4238 NULL);
4239
4240 pane = XtVaCreateWidget("Config_NGPS pane",xmPanedWindowWidgetClass, config_NGPS_dialog,
4241 XmNbackground, colors[0xff],
4242 NULL);
4243
4244 scrollwindow = XtVaCreateManagedWidget("scrollwindow",
4245 xmScrolledWindowWidgetClass,
4246 pane,
4247 XmNscrollingPolicy, XmAUTOMATIC,
4248 NULL);
4249
4250 form = XtVaCreateWidget("Config_NGPS form",
4251 xmFormWidgetClass,
4252 scrollwindow,
4253 XmNfractionBase, 5,
4254 XmNbackground, colors[0xff],
4255 XmNautoUnmanage, FALSE,
4256 XmNshadowThickness, 1,
4257 NULL);
4258
4259 hostn = XtVaCreateManagedWidget(langcode("WPUPCFG017"),xmLabelWidgetClass, form,
4260 XmNtopAttachment, XmATTACH_FORM,
4261 XmNtopOffset, 10,
4262 XmNbottomAttachment, XmATTACH_NONE,
4263 XmNleftAttachment, XmATTACH_FORM,
4264 XmNleftOffset, 10,
4265 XmNrightAttachment, XmATTACH_NONE,
4266 XmNbackground, colors[0xff],
4267 XmNfontList, fontlist1,
4268 NULL);
4269
4270 NGPS_host_name_data = XtVaCreateManagedWidget("Config_NGPS host_data", xmTextFieldWidgetClass, form,
4271 XmNnavigationType, XmTAB_GROUP,
4272 XmNtraversalOn, TRUE,
4273 XmNeditable, TRUE,
4274 XmNcursorPositionVisible, TRUE,
4275 XmNsensitive, TRUE,
4276 XmNshadowThickness, 1,
4277 XmNcolumns, 25,
4278 XmNwidth, ((25*7)+2),
4279 XmNmaxLength, MAX_DEVICE_NAME,
4280 XmNbackground, colors[0x0f],
4281 XmNtopAttachment,XmATTACH_FORM,
4282 XmNtopOffset, 5,
4283 XmNbottomAttachment,XmATTACH_NONE,
4284 XmNleftAttachment, XmATTACH_WIDGET,
4285 XmNleftWidget, hostn,
4286 XmNleftOffset, 10,
4287 XmNrightAttachment,XmATTACH_FORM,
4288 XmNrightOffset, 5,
4289 XmNfontList, fontlist1,
4290 NULL);
4291
4292 portn = XtVaCreateManagedWidget(langcode("WPUPCFG018"),xmLabelWidgetClass, form,
4293 XmNtopAttachment, XmATTACH_WIDGET,
4294 XmNtopWidget, hostn,
4295 XmNtopOffset, 12,
4296 XmNbottomAttachment, XmATTACH_NONE,
4297 XmNleftAttachment, XmATTACH_FORM,
4298 XmNleftOffset, 10,
4299 XmNrightAttachment, XmATTACH_NONE,
4300 XmNbackground, colors[0xff],
4301 XmNfontList, fontlist1,
4302 NULL);
4303
4304 NGPS_host_port_data = XtVaCreateManagedWidget("Config_NGPS port_data", xmTextFieldWidgetClass, form,
4305 XmNnavigationType, XmTAB_GROUP,
4306 XmNtraversalOn, TRUE,
4307 XmNeditable, TRUE,
4308 XmNcursorPositionVisible, TRUE,
4309 XmNsensitive, TRUE,
4310 XmNshadowThickness, 1,
4311 XmNcolumns, 25,
4312 XmNwidth, ((25*7)+2),
4313 XmNmaxLength, 40,
4314 XmNbackground, colors[0x0f],
4315 XmNtopAttachment,XmATTACH_WIDGET,
4316 XmNtopWidget, hostn,
4317 XmNtopOffset, 8,
4318 XmNbottomAttachment,XmATTACH_NONE,
4319 XmNleftAttachment, XmATTACH_WIDGET,
4320 XmNleftWidget, portn,
4321 XmNleftOffset, 10,
4322 XmNrightAttachment,XmATTACH_FORM,
4323 XmNrightOffset, 5,
4324 XmNfontList, fontlist1,
4325 NULL);
4326
4327 comment = XtVaCreateManagedWidget(langcode("WPUPCFS017"),xmLabelWidgetClass, form,
4328 XmNtopAttachment, XmATTACH_WIDGET,
4329 XmNtopWidget, portn,
4330 XmNtopOffset, 12,
4331 XmNbottomAttachment, XmATTACH_NONE,
4332 XmNleftAttachment, XmATTACH_FORM,
4333 XmNleftOffset, 10,
4334 XmNrightAttachment, XmATTACH_NONE,
4335 XmNbackground, colors[0xff],
4336 XmNfontList, fontlist1,
4337 NULL);
4338
4339 NGPS_comment = XtVaCreateManagedWidget("Config_NGPS comment", xmTextFieldWidgetClass, form,
4340 XmNnavigationType, XmTAB_GROUP,
4341 XmNtraversalOn, TRUE,
4342 XmNeditable, TRUE,
4343 XmNcursorPositionVisible, TRUE,
4344 XmNsensitive, TRUE,
4345 XmNshadowThickness, 1,
4346 XmNcolumns, 25,
4347 XmNwidth, ((25*7)+2),
4348 XmNmaxLength, 49,
4349 XmNbackground, colors[0x0f],
4350 XmNtopAttachment,XmATTACH_WIDGET,
4351 XmNtopWidget, portn,
4352 XmNtopOffset, 8,
4353 XmNbottomAttachment,XmATTACH_NONE,
4354 XmNleftAttachment, XmATTACH_WIDGET,
4355 XmNleftWidget, comment,
4356 XmNleftOffset, 10,
4357 XmNrightAttachment,XmATTACH_FORM,
4358 XmNrightOffset, 5,
4359 XmNfontList, fontlist1,
4360 NULL);
4361
4362 NGPS_active_on_startup = XtVaCreateManagedWidget(langcode("UNIOP00011"),xmToggleButtonWidgetClass,form,
4363 XmNnavigationType, XmTAB_GROUP,
4364 XmNtraversalOn, TRUE,
4365 XmNtopAttachment, XmATTACH_WIDGET,
4366 XmNtopWidget, comment,
4367 XmNtopOffset, 15,
4368 XmNbottomAttachment, XmATTACH_NONE,
4369 XmNleftAttachment, XmATTACH_FORM,
4370 XmNleftOffset,10,
4371 XmNrightAttachment, XmATTACH_NONE,
4372 XmNbackground, colors[0xff],
4373 XmNfontList, fontlist1,
4374 NULL);
4375
4376 NGPS_host_reconnect_data = XtVaCreateManagedWidget(langcode("WPUPCFG020"),xmToggleButtonWidgetClass,form,
4377 XmNnavigationType, XmTAB_GROUP,
4378 XmNtraversalOn, TRUE,
4379 XmNtopAttachment, XmATTACH_WIDGET,
4380 XmNtopWidget, NGPS_active_on_startup,
4381 XmNtopOffset, 5,
4382 XmNbottomAttachment, XmATTACH_NONE,
4383 XmNleftAttachment, XmATTACH_FORM,
4384 XmNleftOffset,10,
4385 XmNrightAttachment, XmATTACH_NONE,
4386 XmNbackground, colors[0xff],
4387 XmNfontList, fontlist1,
4388 NULL);
4389
4390 NGPS_set_time = XtVaCreateManagedWidget(langcode("UNIOP00029"), xmToggleButtonWidgetClass, form,
4391 XmNnavigationType, XmTAB_GROUP,
4392 XmNtraversalOn, TRUE,
4393 XmNtopAttachment, XmATTACH_WIDGET,
4394 XmNtopWidget, NGPS_host_reconnect_data,
4395 XmNtopOffset, 5,
4396 XmNbottomAttachment, XmATTACH_NONE,
4397 XmNleftAttachment, XmATTACH_FORM,
4398 XmNleftOffset,10,
4399 XmNrightAttachment, XmATTACH_NONE,
4400 XmNbackground, colors[0xff],
4401 XmNfontList, fontlist1,
4402 NULL);
4403
4404 // We can only set the time properly on Linux systems
4405 #ifndef HAVE_SETTIMEOFDAY
4406 XtSetSensitive(NGPS_set_time,FALSE);
4407 #endif // HAVE_SETTIMEOFDAY
4408 #ifdef __CYGWIN__
4409 XtSetSensitive(NGPS_set_time,FALSE);
4410 #endif // __CYGWIN__
4411
4412
4413
4414 sep = XtVaCreateManagedWidget("Config_NGPS sep", xmSeparatorGadgetClass,form,
4415 XmNorientation, XmHORIZONTAL,
4416 XmNtopAttachment,XmATTACH_WIDGET,
4417 XmNtopWidget, NGPS_set_time,
4418 XmNtopOffset, 20,
4419 XmNbottomAttachment,XmATTACH_NONE,
4420 XmNleftAttachment, XmATTACH_FORM,
4421 XmNrightAttachment,XmATTACH_FORM,
4422 XmNbackground, colors[0xff],
4423 XmNfontList, fontlist1,
4424 NULL);
4425
4426 button_ok = XtVaCreateManagedWidget(langcode("UNIOP00001"),xmPushButtonGadgetClass, form,
4427 XmNnavigationType, XmTAB_GROUP,
4428 XmNtraversalOn, TRUE,
4429 XmNtopAttachment, XmATTACH_WIDGET,
4430 XmNtopWidget, sep,
4431 XmNtopOffset, 10,
4432 XmNbottomAttachment, XmATTACH_FORM,
4433 XmNbottomOffset, 5,
4434 XmNleftAttachment, XmATTACH_POSITION,
4435 XmNleftPosition, 1,
4436 XmNrightAttachment, XmATTACH_POSITION,
4437 XmNrightPosition, 2,
4438 XmNbackground, colors[0xff],
4439 XmNfontList, fontlist1,
4440 NULL);
4441
4442 button_cancel = XtVaCreateManagedWidget(langcode("UNIOP00002"),xmPushButtonGadgetClass, form,
4443 XmNnavigationType, XmTAB_GROUP,
4444 XmNtraversalOn, TRUE,
4445 XmNtopAttachment, XmATTACH_WIDGET,
4446 XmNtopWidget, sep,
4447 XmNtopOffset, 10,
4448 XmNbottomAttachment, XmATTACH_FORM,
4449 XmNbottomOffset, 5,
4450 XmNleftAttachment, XmATTACH_POSITION,
4451 XmNleftPosition, 3,
4452 XmNrightAttachment, XmATTACH_POSITION,
4453 XmNrightPosition, 4,
4454 XmNbackground, colors[0xff],
4455 XmNfontList, fontlist1,
4456 NULL);
4457
4458 XtAddCallback(button_ok, XmNactivateCallback, Config_NGPS_change_data, config_NGPS_dialog);
4459 XtAddCallback(button_cancel, XmNactivateCallback, Config_NGPS_destroy_shell, config_NGPS_dialog);
4460
4461 pos_dialog(config_NGPS_dialog);
4462
4463 delw = XmInternAtom(XtDisplay(config_NGPS_dialog),"WM_DELETE_WINDOW", FALSE);
4464 XmAddWMProtocolCallback(config_NGPS_dialog, delw, Config_NGPS_destroy_shell, (XtPointer)config_NGPS_dialog);
4465
4466 if (config_type==0)
4467 {
4468 /* first time port */
4469 XmTextFieldSetString(NGPS_host_name_data,"localhost");
4470 XmTextFieldSetString(NGPS_host_port_data,"2947");
4471 XmTextFieldSetString(NGPS_comment,"");
4472 XmToggleButtonSetState(NGPS_active_on_startup,TRUE,FALSE);
4473 XmToggleButtonSetState(NGPS_host_reconnect_data,TRUE,FALSE);
4474 XmToggleButtonSetState(NGPS_set_time, FALSE, FALSE);
4475 }
4476 else
4477 {
4478 /* reconfig */
4479
4480 begin_critical_section(&devices_lock, "interface_gui.c:Config_NGPS" );
4481
4482 XmTextFieldSetString(NGPS_host_name_data,devices[NGPS_port].device_host_name);
4483 xastir_snprintf(temp, sizeof(temp), "%d", devices[NGPS_port].sp); /* port number */
4484 XmTextFieldSetString(NGPS_host_port_data,temp);
4485 XmTextFieldSetString(NGPS_comment,devices[NGPS_port].comment);
4486
4487 if (devices[NGPS_port].connect_on_startup)
4488 {
4489 XmToggleButtonSetState(NGPS_active_on_startup,TRUE,FALSE);
4490 }
4491 else
4492 {
4493 XmToggleButtonSetState(NGPS_active_on_startup,FALSE,FALSE);
4494 }
4495
4496 if (devices[NGPS_port].reconnect)
4497 {
4498 XmToggleButtonSetState(NGPS_host_reconnect_data,TRUE,FALSE);
4499 }
4500 else
4501 {
4502 XmToggleButtonSetState(NGPS_host_reconnect_data,FALSE,FALSE);
4503 }
4504
4505 if (devices[NGPS_port].set_time)
4506 {
4507 XmToggleButtonSetState(NGPS_set_time, TRUE, FALSE);
4508 }
4509 else
4510 {
4511 XmToggleButtonSetState(NGPS_set_time, FALSE, FALSE);
4512 }
4513
4514 end_critical_section(&devices_lock, "interface_gui.c:Config_NGPS" );
4515
4516 }
4517 XtManageChild(form);
4518 XtManageChild(pane);
4519
4520 resize_dialog(form, config_NGPS_dialog);
4521
4522 XtPopup(config_NGPS_dialog,XtGrabNone);
4523 }
4524 else
4525 {
4526 (void)XRaiseWindow(XtDisplay(config_NGPS_dialog), XtWindow(config_NGPS_dialog));
4527 }
4528 }
4529
4530
4531
4532
4533
4534 /*****************************************************/
4535 /* Configure AX.25 TNC GUI */
4536 /*****************************************************/
4537
4538 /**** AX.25 CONFIGURE ******/
4539 int AX25_port;
4540 Widget config_AX25_dialog = (Widget)NULL;
4541 Widget AX25_device_name_data;
4542 Widget AX25_comment;
4543 Widget AX25_unproto1_data;
4544 Widget AX25_unproto2_data;
4545 Widget AX25_unproto3_data;
4546 Widget AX25_igate_data;
4547 Widget AX25_active_on_startup;
4548 Widget AX25_transmit_data;
4549 Widget AX25_relay_digipeat;
4550
4551
4552
4553
4554
Config_AX25_destroy_shell(Widget UNUSED (widget),XtPointer clientData,XtPointer UNUSED (callData))4555 void Config_AX25_destroy_shell( Widget UNUSED(widget), XtPointer clientData, XtPointer UNUSED(callData) )
4556 {
4557 Widget shell = (Widget) clientData;
4558 XtPopdown(shell);
4559 XtDestroyWidget(shell);
4560 config_AX25_dialog = (Widget)NULL;
4561 if (choose_interface_dialog != NULL)
4562 {
4563 Choose_interface_destroy_shell(choose_interface_dialog,choose_interface_dialog,NULL);
4564 }
4565
4566 choose_interface_dialog = (Widget)NULL;
4567 }
4568
4569
4570
4571
4572
Config_AX25_change_data(Widget widget,XtPointer clientData,XtPointer callData)4573 void Config_AX25_change_data(Widget widget, XtPointer clientData, XtPointer callData)
4574 {
4575 int was_up;
4576 char *temp_ptr;
4577
4578 busy_cursor(appshell);
4579
4580 was_up=0;
4581 if (get_device_status(AX25_port) == DEVICE_IN_USE)
4582 {
4583 /* if active shutdown before changes are made */
4584 /*fprintf(stderr,"Device is up, shutting down\n");*/
4585 (void)del_device(AX25_port);
4586 was_up=1;
4587 usleep(1000000); // Wait for one second
4588 }
4589
4590 begin_critical_section(&devices_lock, "interface_gui.c:Config_AX25_change_data" );
4591
4592 temp_ptr = XmTextFieldGetString(AX25_device_name_data);
4593 xastir_snprintf(devices[AX25_port].device_name,
4594 sizeof(devices[AX25_port].device_name),
4595 "%s",
4596 temp_ptr);
4597 XtFree(temp_ptr);
4598
4599 (void)remove_trailing_spaces(devices[AX25_port].device_name);
4600
4601 temp_ptr = XmTextFieldGetString(AX25_comment);
4602 xastir_snprintf(devices[AX25_port].comment,
4603 sizeof(devices[AX25_port].comment),
4604 "%s",
4605 temp_ptr);
4606 XtFree(temp_ptr);
4607
4608 (void)remove_trailing_spaces(devices[AX25_port].comment);
4609
4610 if(XmToggleButtonGetState(AX25_active_on_startup))
4611 {
4612 devices[AX25_port].connect_on_startup=1;
4613 }
4614 else
4615 {
4616 devices[AX25_port].connect_on_startup=0;
4617 }
4618
4619 if(XmToggleButtonGetState(AX25_transmit_data))
4620 {
4621 devices[AX25_port].transmit_data=1;
4622 XtSetSensitive(AX25_relay_digipeat, TRUE);
4623 }
4624 else
4625 {
4626 devices[AX25_port].transmit_data=0;
4627 XtSetSensitive(AX25_relay_digipeat, FALSE);
4628 }
4629
4630 if(XmToggleButtonGetState(AX25_relay_digipeat))
4631 {
4632 devices[AX25_port].relay_digipeat=1;
4633 }
4634 else
4635 {
4636 devices[AX25_port].relay_digipeat=0;
4637 }
4638
4639 devices[AX25_port].igate_options=device_igate_options;
4640
4641 temp_ptr = XmTextFieldGetString(AX25_unproto1_data);
4642 xastir_snprintf(devices[AX25_port].unproto1,
4643 sizeof(devices[AX25_port].unproto1),
4644 "%s",
4645 temp_ptr);
4646 XtFree(temp_ptr);
4647
4648 (void)remove_trailing_spaces(devices[AX25_port].unproto1);
4649
4650 if(check_unproto_path(devices[AX25_port].unproto1))
4651 {
4652 popup_message_always(langcode("WPUPCFT042"),
4653 langcode("WPUPCFT043"));
4654 }
4655
4656 temp_ptr = XmTextFieldGetString(AX25_unproto2_data);
4657 xastir_snprintf(devices[AX25_port].unproto2,
4658 sizeof(devices[AX25_port].unproto2),
4659 "%s",
4660 temp_ptr);
4661 XtFree(temp_ptr);
4662
4663 (void)remove_trailing_spaces(devices[AX25_port].unproto2);
4664
4665 if(check_unproto_path(devices[AX25_port].unproto2))
4666 {
4667 popup_message_always(langcode("WPUPCFT042"),
4668 langcode("WPUPCFT043"));
4669 }
4670
4671 temp_ptr = XmTextFieldGetString(AX25_unproto3_data);
4672 xastir_snprintf(devices[AX25_port].unproto3,
4673 sizeof(devices[AX25_port].unproto3),
4674 "%s",
4675 temp_ptr);
4676 XtFree(temp_ptr);
4677
4678 (void)remove_trailing_spaces(devices[AX25_port].unproto3);
4679
4680 if(check_unproto_path(devices[AX25_port].unproto3))
4681 {
4682 popup_message_always(langcode("WPUPCFT042"),
4683 langcode("WPUPCFT043"));
4684 }
4685
4686 temp_ptr = XmTextFieldGetString(AX25_igate_data);
4687 xastir_snprintf(devices[AX25_port].unproto_igate,
4688 sizeof(devices[AX25_port].unproto_igate),
4689 "%s",
4690 temp_ptr);
4691 XtFree(temp_ptr);
4692
4693 (void)remove_trailing_spaces(devices[AX25_port].unproto_igate);
4694
4695 if(check_unproto_path(devices[AX25_port].unproto_igate))
4696 {
4697 popup_message_always(langcode("WPUPCFT044"),
4698 langcode("WPUPCFT043"));
4699 }
4700
4701
4702 devices[AX25_port].reconnect=1;
4703
4704 // reopen if open before - n8ysz 20041213
4705 // if (devices[AX25_port].connect_on_startup==1 || was_up) {
4706 if ( was_up)
4707 {
4708 (void)add_device(AX25_port,
4709 DEVICE_AX25_TNC,
4710 devices[AX25_port].device_name,
4711 "",
4712 -1,
4713 -1,
4714 -1,
4715 0,
4716 "");
4717 }
4718
4719
4720 /* delete list */
4721 // modify_device_list(4,0);
4722
4723
4724 /* add device type */
4725 devices[AX25_port].device_type=DEVICE_AX25_TNC;
4726
4727 /* rebuild list */
4728 // modify_device_list(3,0);
4729
4730
4731 end_critical_section(&devices_lock, "interface_gui.c:Config_AX25_change_data" );
4732
4733 // Rebuild the interface control list
4734 update_interface_list();
4735
4736 Config_AX25_destroy_shell(widget,clientData,callData);
4737 }
4738
4739
4740
4741
4742
Config_AX25(Widget UNUSED (w),int config_type,int port)4743 void Config_AX25( Widget UNUSED(w), int config_type, int port)
4744 {
4745 static Widget pane, scrollwindow, form, button_ok, button_cancel, frame,
4746 devn, comment,
4747 proto, proto1, proto2, proto3,
4748 igate_box,
4749 igate_o_0, igate_o_1, igate_o_2,
4750 igate_label,
4751 sep;
4752 // static Widget igate;
4753
4754 char temp[50];
4755 Atom delw;
4756 Arg al[50]; /* Arg List */
4757 register unsigned int ac = 0; /* Arg Count */
4758
4759 if(!config_AX25_dialog)
4760 {
4761 AX25_port=port;
4762 config_AX25_dialog = XtVaCreatePopupShell(langcode("WPUPCAX001"),
4763 xmDialogShellWidgetClass, appshell,
4764 XmNdeleteResponse, XmDESTROY,
4765 XmNdefaultPosition, FALSE,
4766 XmNfontList, fontlist1,
4767 NULL);
4768
4769 pane = XtVaCreateWidget("Config_AX25 pane",xmPanedWindowWidgetClass, config_AX25_dialog,
4770 XmNbackground, colors[0xff],
4771 NULL);
4772
4773 scrollwindow = XtVaCreateManagedWidget("scrollwindow",
4774 xmScrolledWindowWidgetClass,
4775 pane,
4776 XmNscrollingPolicy, XmAUTOMATIC,
4777 NULL);
4778
4779 form = XtVaCreateWidget("Config_AX25 form",
4780 xmFormWidgetClass,
4781 scrollwindow,
4782 XmNfractionBase, 5,
4783 XmNbackground, colors[0xff],
4784 XmNautoUnmanage, FALSE,
4785 XmNshadowThickness, 1,
4786 NULL);
4787
4788 AX25_active_on_startup = XtVaCreateManagedWidget(langcode("UNIOP00011"),xmToggleButtonWidgetClass,form,
4789 XmNnavigationType, XmTAB_GROUP,
4790 XmNtraversalOn, TRUE,
4791 XmNtopAttachment, XmATTACH_FORM,
4792 XmNtopOffset, 5,
4793 XmNbottomAttachment, XmATTACH_NONE,
4794 XmNleftAttachment, XmATTACH_FORM,
4795 XmNleftOffset,10,
4796 XmNrightAttachment, XmATTACH_NONE,
4797 XmNbackground, colors[0xff],
4798 XmNfontList, fontlist1,
4799 NULL);
4800
4801 AX25_transmit_data = XtVaCreateManagedWidget(langcode("UNIOP00010"),xmToggleButtonWidgetClass,form,
4802 XmNnavigationType, XmTAB_GROUP,
4803 XmNtraversalOn, TRUE,
4804 XmNtopAttachment, XmATTACH_FORM,
4805 XmNtopOffset, 5,
4806 XmNbottomAttachment, XmATTACH_NONE,
4807 XmNleftAttachment, XmATTACH_WIDGET,
4808 XmNleftWidget, AX25_active_on_startup,
4809 XmNleftOffset,35,
4810 XmNrightAttachment, XmATTACH_NONE,
4811 XmNbackground, colors[0xff],
4812 XmNfontList, fontlist1,
4813 NULL);
4814
4815 AX25_relay_digipeat = XtVaCreateManagedWidget(langcode("UNIOP00030"),xmToggleButtonWidgetClass,form,
4816 XmNnavigationType, XmTAB_GROUP,
4817 XmNtraversalOn, TRUE,
4818 XmNtopAttachment, XmATTACH_FORM,
4819 XmNtopOffset, 5,
4820 XmNbottomAttachment, XmATTACH_NONE,
4821 XmNleftAttachment, XmATTACH_WIDGET,
4822 XmNleftWidget, AX25_transmit_data,
4823 XmNleftOffset,35,
4824 XmNrightAttachment, XmATTACH_NONE,
4825 XmNbackground, colors[0xff],
4826 XmNfontList, fontlist1,
4827 NULL);
4828
4829 devn = XtVaCreateManagedWidget(langcode("WPUPCAX002"),xmLabelWidgetClass, form,
4830 XmNtopAttachment, XmATTACH_WIDGET,
4831 XmNtopWidget, AX25_active_on_startup,
4832 XmNtopOffset, 5,
4833 XmNbottomAttachment, XmATTACH_NONE,
4834 XmNleftAttachment, XmATTACH_FORM,
4835 XmNleftOffset, 10,
4836 XmNrightAttachment, XmATTACH_NONE,
4837 XmNbackground, colors[0xff],
4838 XmNfontList, fontlist1,
4839 NULL);
4840
4841 AX25_device_name_data = XtVaCreateManagedWidget("Config_AX25 device_data", xmTextFieldWidgetClass, form,
4842 XmNnavigationType, XmTAB_GROUP,
4843 XmNtraversalOn, TRUE,
4844 XmNeditable, TRUE,
4845 XmNcursorPositionVisible, TRUE,
4846 XmNsensitive, TRUE,
4847 XmNshadowThickness, 1,
4848 XmNcolumns, 15,
4849 XmNwidth, ((15*7)+2),
4850 XmNmaxLength, MAX_DEVICE_NAME,
4851 XmNbackground, colors[0x0f],
4852 XmNtopAttachment,XmATTACH_WIDGET,
4853 XmNtopWidget, AX25_active_on_startup,
4854 XmNtopOffset, 2,
4855 XmNbottomAttachment,XmATTACH_NONE,
4856 XmNleftAttachment, XmATTACH_WIDGET,
4857 XmNleftWidget, devn,
4858 XmNleftOffset, 10,
4859 XmNrightAttachment,XmATTACH_NONE,
4860 XmNfontList, fontlist1,
4861 NULL);
4862
4863 comment = XtVaCreateManagedWidget(langcode("WPUPCFS017"),xmLabelWidgetClass, form,
4864 XmNtopAttachment, XmATTACH_WIDGET,
4865 XmNtopWidget, AX25_active_on_startup,
4866 XmNtopOffset, 5,
4867 XmNbottomAttachment, XmATTACH_NONE,
4868 XmNleftAttachment, XmATTACH_WIDGET,
4869 XmNleftWidget, AX25_device_name_data,
4870 XmNleftOffset, 10,
4871 XmNrightAttachment, XmATTACH_NONE,
4872 XmNbackground, colors[0xff],
4873 XmNfontList, fontlist1,
4874 NULL);
4875
4876 AX25_comment = XtVaCreateManagedWidget("Config_AX25 comment", xmTextFieldWidgetClass, form,
4877 XmNnavigationType, XmTAB_GROUP,
4878 XmNtraversalOn, TRUE,
4879 XmNeditable, TRUE,
4880 XmNcursorPositionVisible, TRUE,
4881 XmNsensitive, TRUE,
4882 XmNshadowThickness, 1,
4883 XmNcolumns, 15,
4884 XmNwidth, ((15*7)+2),
4885 XmNmaxLength, 40,
4886 XmNbackground, colors[0x0f],
4887 XmNtopAttachment,XmATTACH_WIDGET,
4888 XmNtopWidget, AX25_active_on_startup,
4889 XmNtopOffset, 2,
4890 XmNbottomAttachment,XmATTACH_NONE,
4891 XmNleftAttachment, XmATTACH_WIDGET,
4892 XmNleftWidget, comment,
4893 XmNleftOffset, 10,
4894 XmNrightAttachment,XmATTACH_NONE,
4895 XmNfontList, fontlist1,
4896 NULL);
4897
4898 frame = XtVaCreateManagedWidget("Config_AX25 frame", xmFrameWidgetClass, form,
4899 XmNtopAttachment, XmATTACH_WIDGET,
4900 XmNtopWidget, devn,
4901 XmNtopOffset, 10,
4902 XmNbottomAttachment, XmATTACH_NONE,
4903 XmNleftAttachment, XmATTACH_FORM,
4904 XmNleftOffset, 10,
4905 XmNrightAttachment, XmATTACH_FORM,
4906 XmNrightOffset, 10,
4907 XmNbackground, colors[0xff],
4908 NULL);
4909
4910 // igate
4911 XtVaCreateManagedWidget(langcode("IGPUPCF000"),xmLabelWidgetClass, frame,
4912 XmNchildType, XmFRAME_TITLE_CHILD,
4913 XmNbackground, colors[0xff],
4914 XmNfontList, fontlist1,
4915 NULL);
4916
4917 /* set args for color */
4918 ac=0;
4919 XtSetArg(al[ac], XmNbackground, colors[0xff]);
4920 ac++;
4921
4922
4923 igate_box = XmCreateRadioBox(frame,"Config_AX25 IGate box",al,ac);
4924
4925 XtVaSetValues(igate_box,
4926 XmNorientation, XmVERTICAL,
4927 XmNnumColumns,2,
4928 NULL);
4929
4930 igate_o_0 = XtVaCreateManagedWidget(langcode("IGPUPCF001"),xmToggleButtonGadgetClass,
4931 igate_box,
4932 XmNbackground, colors[0xff],
4933 XmNfontList, fontlist1,
4934 NULL);
4935
4936 XtAddCallback(igate_o_0,XmNvalueChangedCallback,igate_toggle,"0");
4937
4938 igate_o_1 = XtVaCreateManagedWidget(langcode("IGPUPCF002"),xmToggleButtonGadgetClass,
4939 igate_box,
4940 XmNbackground, colors[0xff],
4941 XmNfontList, fontlist1,
4942 NULL);
4943
4944 XtAddCallback(igate_o_1,XmNvalueChangedCallback,igate_toggle,"1");
4945
4946 igate_o_2 = XtVaCreateManagedWidget(langcode("IGPUPCF003"),xmToggleButtonGadgetClass,
4947 igate_box,
4948 XmNbackground, colors[0xff],
4949 XmNfontList, fontlist1,
4950 NULL);
4951
4952 XtAddCallback(igate_o_2,XmNvalueChangedCallback,igate_toggle,"2");
4953
4954 proto = XtVaCreateManagedWidget(langcode("WPUPCFT011"), xmLabelWidgetClass, form,
4955 XmNorientation, XmHORIZONTAL,
4956 XmNtopAttachment,XmATTACH_WIDGET,
4957 XmNtopWidget, frame,
4958 XmNtopOffset, 10,
4959 XmNbottomAttachment,XmATTACH_NONE,
4960 XmNleftAttachment, XmATTACH_FORM,
4961 XmNleftOffset,5,
4962 XmNrightAttachment,XmATTACH_FORM,
4963 XmNrightOffset,5,
4964 XmNbackground, colors[0xff],
4965 XmNfontList, fontlist1,
4966 NULL);
4967
4968 xastir_snprintf(temp, sizeof(temp), langcode("WPUPCFT012"), VERSIONFRM);
4969
4970 proto1 = XtVaCreateManagedWidget(temp, xmLabelWidgetClass, form,
4971 XmNorientation, XmHORIZONTAL,
4972 XmNtopAttachment,XmATTACH_WIDGET,
4973 XmNtopWidget, proto,
4974 XmNtopOffset, 12,
4975 XmNbottomAttachment,XmATTACH_NONE,
4976 XmNleftAttachment, XmATTACH_FORM,
4977 XmNleftOffset, 60,
4978 XmNrightAttachment,XmATTACH_NONE,
4979 XmNbackground, colors[0xff],
4980 XmNfontList, fontlist1,
4981 NULL);
4982
4983 AX25_unproto1_data = XtVaCreateManagedWidget("Config_AX25 protopath1", xmTextFieldWidgetClass, form,
4984 XmNnavigationType, XmTAB_GROUP,
4985 XmNtraversalOn, TRUE,
4986 XmNeditable, TRUE,
4987 XmNcursorPositionVisible, TRUE,
4988 XmNsensitive, TRUE,
4989 XmNshadowThickness, 1,
4990 XmNcolumns, 25,
4991 XmNwidth, ((25*7)+2),
4992 XmNmaxLength, 40,
4993 XmNbackground, colors[0x0f],
4994 XmNtopAttachment,XmATTACH_WIDGET,
4995 XmNtopWidget, proto,
4996 XmNtopOffset, 5,
4997 XmNbottomAttachment,XmATTACH_NONE,
4998 XmNleftAttachment,XmATTACH_WIDGET,
4999 XmNleftWidget, proto1,
5000 XmNleftOffset, 5,
5001 XmNrightAttachment,XmATTACH_NONE,
5002 XmNfontList, fontlist1,
5003 NULL);
5004
5005 xastir_snprintf(temp, sizeof(temp), langcode("WPUPCFT013"), VERSIONFRM);
5006
5007 proto2 = XtVaCreateManagedWidget(temp, xmLabelWidgetClass, form,
5008 XmNorientation, XmHORIZONTAL,
5009 XmNtopAttachment,XmATTACH_WIDGET,
5010 XmNtopWidget, proto1,
5011 XmNtopOffset, 15,
5012 XmNbottomAttachment,XmATTACH_NONE,
5013 XmNleftAttachment, XmATTACH_FORM,
5014 XmNleftOffset, 60,
5015 XmNrightAttachment,XmATTACH_NONE,
5016 XmNbackground, colors[0xff],
5017 XmNfontList, fontlist1,
5018 NULL);
5019
5020 AX25_unproto2_data = XtVaCreateManagedWidget("Config_AX25 protopath2", xmTextFieldWidgetClass, form,
5021 XmNnavigationType, XmTAB_GROUP,
5022 XmNtraversalOn, TRUE,
5023 XmNeditable, TRUE,
5024 XmNcursorPositionVisible, TRUE,
5025 XmNsensitive, TRUE,
5026 XmNshadowThickness, 1,
5027 XmNcolumns, 25,
5028 XmNwidth, ((25*7)+2),
5029 XmNmaxLength, 40,
5030 XmNbackground, colors[0x0f],
5031 XmNtopAttachment,XmATTACH_WIDGET,
5032 XmNtopWidget, AX25_unproto1_data,
5033 XmNtopOffset, 5,
5034 XmNbottomAttachment,XmATTACH_NONE,
5035 XmNleftAttachment, XmATTACH_WIDGET,
5036 XmNleftWidget, proto2,
5037 XmNleftOffset, 5,
5038 XmNrightAttachment,XmATTACH_NONE,
5039 XmNfontList, fontlist1,
5040 NULL);
5041
5042 xastir_snprintf(temp, sizeof(temp), langcode("WPUPCFT014"), VERSIONFRM);
5043
5044 proto3 = XtVaCreateManagedWidget(temp, xmLabelWidgetClass, form,
5045 XmNorientation, XmHORIZONTAL,
5046 XmNtopAttachment,XmATTACH_WIDGET,
5047 XmNtopWidget, proto2,
5048 XmNtopOffset, 15,
5049 XmNbottomAttachment,XmATTACH_NONE,
5050 XmNleftAttachment, XmATTACH_FORM,
5051 XmNleftOffset, 60,
5052 XmNrightAttachment,XmATTACH_NONE,
5053 XmNbackground, colors[0xff],
5054 XmNfontList, fontlist1,
5055 NULL);
5056
5057 AX25_unproto3_data = XtVaCreateManagedWidget("Config_AX25 protopath3", xmTextFieldWidgetClass, form,
5058 XmNnavigationType, XmTAB_GROUP,
5059 XmNtraversalOn, TRUE,
5060 XmNeditable, TRUE,
5061 XmNcursorPositionVisible, TRUE,
5062 XmNsensitive, TRUE,
5063 XmNshadowThickness, 1,
5064 XmNcolumns, 25,
5065 XmNwidth, ((25*7)+2),
5066 XmNmaxLength, 40,
5067 XmNbackground, colors[0x0f],
5068 XmNtopAttachment,XmATTACH_WIDGET,
5069 XmNtopWidget, AX25_unproto2_data,
5070 XmNtopOffset, 5,
5071 XmNbottomAttachment,XmATTACH_NONE,
5072 XmNleftAttachment,XmATTACH_WIDGET,
5073 XmNleftWidget, proto3,
5074 XmNleftOffset, 5,
5075 XmNrightAttachment,XmATTACH_NONE,
5076 XmNfontList, fontlist1,
5077 NULL);
5078
5079 xastir_snprintf(temp, sizeof(temp), "%s", langcode("IGPUPCF004"));
5080 igate_label = XtVaCreateManagedWidget(temp, xmLabelWidgetClass, form,
5081 XmNorientation, XmHORIZONTAL,
5082 XmNtopAttachment,XmATTACH_WIDGET,
5083 XmNtopWidget, proto3,
5084 XmNtopOffset, 15,
5085 XmNbottomAttachment,XmATTACH_NONE,
5086 XmNleftAttachment, XmATTACH_FORM,
5087 XmNleftOffset, 60,
5088 XmNrightAttachment,XmATTACH_NONE,
5089 XmNbackground, colors[0xff],
5090 XmNfontList, fontlist1,
5091 NULL);
5092
5093 AX25_igate_data = XtVaCreateManagedWidget("Config_TNC igate_data", xmTextFieldWidgetClass, form,
5094 XmNnavigationType, XmTAB_GROUP,
5095 XmNtraversalOn, TRUE,
5096 XmNeditable, TRUE,
5097 XmNcursorPositionVisible, TRUE,
5098 XmNsensitive, TRUE,
5099 XmNshadowThickness, 1,
5100 XmNcolumns, 25,
5101 XmNwidth, ((25*7)+2),
5102 XmNmaxLength, 40,
5103 XmNbackground, colors[0x0f],
5104 XmNtopAttachment,XmATTACH_WIDGET,
5105 XmNtopWidget, AX25_unproto3_data,
5106 XmNtopOffset, 5,
5107 XmNbottomAttachment,XmATTACH_NONE,
5108 XmNleftAttachment,XmATTACH_WIDGET,
5109 XmNleftWidget, igate_label,
5110 XmNleftOffset, 5,
5111 XmNrightAttachment,XmATTACH_NONE,
5112 XmNfontList, fontlist1,
5113 NULL);
5114
5115 sep = XtVaCreateManagedWidget("Config_AX25 sep", xmSeparatorGadgetClass,form,
5116 XmNorientation, XmHORIZONTAL,
5117 XmNtopAttachment,XmATTACH_WIDGET,
5118 XmNtopWidget, igate_label,
5119 XmNtopOffset, 20,
5120 XmNbottomAttachment,XmATTACH_NONE,
5121 XmNleftAttachment, XmATTACH_FORM,
5122 XmNrightAttachment,XmATTACH_FORM,
5123 XmNbackground, colors[0xff],
5124 XmNfontList, fontlist1,
5125 NULL);
5126
5127 button_ok = XtVaCreateManagedWidget(langcode("UNIOP00001"),xmPushButtonGadgetClass, form,
5128 XmNnavigationType, XmTAB_GROUP,
5129 XmNtraversalOn, TRUE,
5130 XmNtopAttachment, XmATTACH_WIDGET,
5131 XmNtopWidget, sep,
5132 XmNtopOffset, 10,
5133 XmNbottomAttachment, XmATTACH_FORM,
5134 XmNbottomOffset, 5,
5135 XmNleftAttachment, XmATTACH_POSITION,
5136 XmNleftPosition, 1,
5137 XmNrightAttachment, XmATTACH_POSITION,
5138 XmNrightPosition, 2,
5139 XmNbackground, colors[0xff],
5140 XmNfontList, fontlist1,
5141 NULL);
5142
5143 button_cancel = XtVaCreateManagedWidget(langcode("UNIOP00002"),xmPushButtonGadgetClass, form,
5144 XmNnavigationType, XmTAB_GROUP,
5145 XmNtraversalOn, TRUE,
5146 XmNtopAttachment, XmATTACH_WIDGET,
5147 XmNtopWidget, sep,
5148 XmNtopOffset, 10,
5149 XmNbottomAttachment, XmATTACH_FORM,
5150 XmNbottomOffset, 5,
5151 XmNleftAttachment, XmATTACH_POSITION,
5152 XmNleftPosition, 3,
5153 XmNrightAttachment, XmATTACH_POSITION,
5154 XmNrightPosition, 4,
5155 XmNbackground, colors[0xff],
5156 XmNfontList, fontlist1,
5157 NULL);
5158
5159 #ifdef HAVE_LIBAX25
5160 XtAddCallback(button_ok, XmNactivateCallback, Config_AX25_change_data, config_AX25_dialog);
5161 #else
5162 // Need code to use button_ok variable to quiet a compiler warning
5163 //when we don't have LIBAX25 linked-in.
5164 if (button_ok != button_cancel)
5165 {
5166 // Do nothing (to shut up a compiler warning)
5167 }
5168 #endif /* USE_AX25 */
5169 XtAddCallback(button_cancel, XmNactivateCallback, Config_AX25_destroy_shell, config_AX25_dialog);
5170
5171 pos_dialog(config_AX25_dialog);
5172
5173 delw = XmInternAtom(XtDisplay(config_AX25_dialog),"WM_DELETE_WINDOW", FALSE);
5174 XmAddWMProtocolCallback(config_AX25_dialog, delw, Config_AX25_destroy_shell, (XtPointer)config_AX25_dialog);
5175
5176 if (config_type==0)
5177 {
5178 /* first time port */
5179 XmToggleButtonSetState(AX25_active_on_startup,TRUE,FALSE);
5180 XmToggleButtonSetState(AX25_transmit_data,TRUE,FALSE);
5181 XmToggleButtonSetState(AX25_relay_digipeat,FALSE,FALSE);
5182 XmTextFieldSetString(AX25_device_name_data,"");
5183 XmTextFieldSetString(AX25_comment,"");
5184 device_igate_options=0;
5185 XmToggleButtonSetState(igate_o_0,TRUE,FALSE);
5186 XmTextFieldSetString(AX25_unproto1_data,"WIDE2-2");
5187 XmTextFieldSetString(AX25_unproto2_data,"");
5188 XmTextFieldSetString(AX25_unproto3_data,"");
5189 XmTextFieldSetString(AX25_igate_data,"");
5190 }
5191 else
5192 {
5193 /* reconfig */
5194
5195 begin_critical_section(&devices_lock, "interface_gui.c:Config_AX25" );
5196
5197 if (devices[AX25_port].connect_on_startup)
5198 {
5199 XmToggleButtonSetState(AX25_active_on_startup,TRUE,FALSE);
5200 }
5201 else
5202 {
5203 XmToggleButtonSetState(AX25_active_on_startup,FALSE,FALSE);
5204 }
5205
5206 switch (devices[AX25_port].igate_options)
5207 {
5208 case(0):
5209 XmToggleButtonSetState(igate_o_0,TRUE,FALSE);
5210 device_igate_options=0;
5211 break;
5212
5213 case(1):
5214 XmToggleButtonSetState(igate_o_1,TRUE,FALSE);
5215 device_igate_options=1;
5216 break;
5217
5218 case(2):
5219 XmToggleButtonSetState(igate_o_2,TRUE,FALSE);
5220 device_igate_options=2;
5221 break;
5222
5223 default:
5224 XmToggleButtonSetState(igate_o_0,TRUE,FALSE);
5225 device_igate_options=0;
5226 break;
5227 }
5228 if (devices[AX25_port].transmit_data)
5229 {
5230 XmToggleButtonSetState(AX25_transmit_data,TRUE,FALSE);
5231 }
5232 else
5233 {
5234 XmToggleButtonSetState(AX25_transmit_data,FALSE,FALSE);
5235 }
5236
5237 if (devices[AX25_port].relay_digipeat)
5238 {
5239 XmToggleButtonSetState(AX25_relay_digipeat,TRUE,FALSE);
5240 }
5241 else
5242 {
5243 XmToggleButtonSetState(AX25_relay_digipeat,FALSE,FALSE);
5244 }
5245
5246 XmTextFieldSetString(AX25_device_name_data,devices[AX25_port].device_name);
5247 XmTextFieldSetString(AX25_comment,devices[AX25_port].comment);
5248 XmTextFieldSetString(AX25_unproto1_data,devices[AX25_port].unproto1);
5249 XmTextFieldSetString(AX25_unproto2_data,devices[AX25_port].unproto2);
5250 XmTextFieldSetString(AX25_unproto3_data,devices[AX25_port].unproto3);
5251 XmTextFieldSetString(AX25_igate_data,devices[AX25_port].unproto_igate);
5252
5253 end_critical_section(&devices_lock, "interface_gui.c:Config_AX25" );
5254
5255 }
5256 XtManageChild(form);
5257 XtManageChild(igate_box);
5258 XtManageChild(pane);
5259
5260 resize_dialog(form, config_AX25_dialog);
5261
5262 XtPopup(config_AX25_dialog,XtGrabNone);
5263 }
5264 else
5265 {
5266 (void)XRaiseWindow(XtDisplay(config_AX25_dialog), XtWindow(config_AX25_dialog));
5267 }
5268 }
5269
5270
5271
5272
5273
5274 /*****************************************************/
5275 /* Configure Network server GUI */
5276 /*****************************************************/
5277
5278 /**** INTERNET CONFIGURE ******/
5279 Widget config_Inet_dialog = (Widget)NULL;
5280 Widget Inet_active_on_startup;
5281 Widget Inet_host_data;
5282 Widget Inet_port_data;
5283 Widget Inet_comment;
5284 Widget Inet_password_data;
5285 Widget Inet_filter_data;
5286 Widget Inet_transmit_data;
5287 Widget Inet_reconnect_data;
5288 int Inet_port;
5289
5290
5291
5292
5293
Inet_destroy_shell(Widget UNUSED (widget),XtPointer clientData,XtPointer UNUSED (callData))5294 void Inet_destroy_shell( Widget UNUSED(widget), XtPointer clientData, XtPointer UNUSED(callData) )
5295 {
5296 Widget shell = (Widget) clientData;
5297 XtPopdown(shell);
5298 XtDestroyWidget(shell);
5299 config_Inet_dialog = (Widget)NULL;
5300 if (choose_interface_dialog != NULL)
5301 {
5302 Choose_interface_destroy_shell(choose_interface_dialog,choose_interface_dialog,NULL);
5303 }
5304
5305 choose_interface_dialog = (Widget)NULL;
5306 }
5307
5308
5309
5310
5311
Inet_change_data(Widget widget,XtPointer clientData,XtPointer callData)5312 void Inet_change_data(Widget widget, XtPointer clientData, XtPointer callData)
5313 {
5314 int was_up;
5315 char *temp_ptr;
5316
5317
5318 busy_cursor(appshell);
5319 was_up=0;
5320 if (get_device_status(Inet_port) == DEVICE_IN_USE)
5321 {
5322 /* if active shutdown before changes are made */
5323 /*fprintf(stderr,"Device is up, shutting down\n");*/
5324 (void)del_device(Inet_port);
5325 was_up=1;
5326 usleep(1000000); // Wait for one second
5327 }
5328
5329 begin_critical_section(&devices_lock, "interface_gui.c:Inet_change_data" );
5330
5331 temp_ptr = XmTextFieldGetString(Inet_host_data);
5332 xastir_snprintf(devices[Inet_port].device_host_name,
5333 sizeof(devices[Inet_port].device_host_name),
5334 "%s",
5335 temp_ptr);
5336 XtFree(temp_ptr);
5337
5338 (void)remove_trailing_spaces(devices[Inet_port].device_host_name);
5339
5340 temp_ptr = XmTextFieldGetString(Inet_password_data);
5341 xastir_snprintf(devices[Inet_port].device_host_pswd,
5342 sizeof(devices[Inet_port].device_host_pswd),
5343 "%s",
5344 temp_ptr);
5345 XtFree(temp_ptr);
5346
5347 (void)remove_trailing_spaces(devices[Inet_port].device_host_pswd);
5348
5349 temp_ptr = XmTextFieldGetString(Inet_filter_data);
5350 xastir_snprintf(devices[Inet_port].device_host_filter_string,
5351 sizeof(devices[Inet_port].device_host_filter_string),
5352 "%s",
5353 temp_ptr);
5354 XtFree(temp_ptr);
5355
5356 (void)remove_trailing_spaces(devices[Inet_port].device_host_filter_string);
5357
5358 temp_ptr = XmTextFieldGetString(Inet_comment);
5359 xastir_snprintf(devices[Inet_port].comment,
5360 sizeof(devices[Inet_port].comment),
5361 "%s",
5362 temp_ptr);
5363 XtFree(temp_ptr);
5364
5365 (void)remove_trailing_spaces(devices[Inet_port].comment);
5366
5367 temp_ptr = XmTextFieldGetString(Inet_port_data);
5368 devices[Inet_port].sp=atoi(temp_ptr);
5369 XtFree(temp_ptr);
5370
5371 if(XmToggleButtonGetState(Inet_active_on_startup))
5372 {
5373 devices[Inet_port].connect_on_startup=1;
5374 }
5375 else
5376 {
5377 devices[Inet_port].connect_on_startup=0;
5378 }
5379
5380 if(XmToggleButtonGetState(Inet_transmit_data))
5381 {
5382 devices[Inet_port].transmit_data=1;
5383 }
5384 else
5385 {
5386 devices[Inet_port].transmit_data=0;
5387 }
5388
5389 if(XmToggleButtonGetState(Inet_reconnect_data))
5390 {
5391 devices[Inet_port].reconnect=1;
5392 }
5393 else
5394 {
5395 devices[Inet_port].reconnect=0;
5396 }
5397
5398 // Changed 20041213 per emails with we7u - n8ysz
5399 // if (devices[Inet_port].connect_on_startup==1 || was_up) {
5400
5401 if ( was_up)
5402 {
5403 (void)add_device(Inet_port,
5404 DEVICE_NET_STREAM,
5405 devices[Inet_port].device_host_name,
5406 devices[Inet_port].device_host_pswd,
5407 devices[Inet_port].sp,
5408 0,
5409 0,
5410 devices[Inet_port].reconnect,
5411 devices[Inet_port].device_host_filter_string);
5412 }
5413
5414 /* delete list */
5415 // modify_device_list(4,0);
5416
5417
5418 /* add device type */
5419 devices[Inet_port].device_type=DEVICE_NET_STREAM;
5420
5421 /* rebuild list */
5422 // modify_device_list(3,0);
5423
5424
5425 end_critical_section(&devices_lock, "interface_gui.c:Inet_change_data" );
5426
5427 // Rebuild the interface control list
5428 update_interface_list();
5429
5430 Inet_destroy_shell(widget,clientData,callData);
5431 }
5432
5433
5434
5435
5436
Config_Inet(Widget UNUSED (w),int config_type,int port)5437 void Config_Inet( Widget UNUSED(w), int config_type, int port)
5438 {
5439 static Widget pane, scrollwindow, form, button_ok, button_cancel,
5440 ihost, iport, password,
5441 filter, comment, sep;
5442 // static Widget password_fl;
5443
5444 Atom delw;
5445 char temp[40];
5446
5447 if(!config_Inet_dialog)
5448 {
5449 Inet_port=port;
5450 config_Inet_dialog = XtVaCreatePopupShell(langcode("WPUPCFI001"),
5451 xmDialogShellWidgetClass, appshell,
5452 XmNdeleteResponse, XmDESTROY,
5453 XmNdefaultPosition, FALSE,
5454 XmNfontList, fontlist1,
5455 NULL);
5456
5457 pane = XtVaCreateWidget("Config_Inet pane",xmPanedWindowWidgetClass, config_Inet_dialog,
5458 XmNbackground, colors[0xff],
5459 NULL);
5460
5461 scrollwindow = XtVaCreateManagedWidget("scrollwindow",
5462 xmScrolledWindowWidgetClass,
5463 pane,
5464 XmNscrollingPolicy, XmAUTOMATIC,
5465 NULL);
5466
5467 form = XtVaCreateWidget("Config_Inet form",
5468 xmFormWidgetClass,
5469 scrollwindow,
5470 XmNfractionBase, 5,
5471 XmNbackground, colors[0xff],
5472 XmNautoUnmanage, FALSE,
5473 XmNshadowThickness, 1,
5474 NULL);
5475
5476 Inet_active_on_startup = XtVaCreateManagedWidget(langcode("UNIOP00011"),xmToggleButtonWidgetClass,form,
5477 XmNnavigationType, XmTAB_GROUP,
5478 XmNtraversalOn, TRUE,
5479 XmNtopAttachment, XmATTACH_FORM,
5480 XmNtopOffset, 5,
5481 XmNbottomAttachment, XmATTACH_NONE,
5482 XmNleftAttachment, XmATTACH_FORM,
5483 XmNleftOffset,10,
5484 XmNrightAttachment, XmATTACH_NONE,
5485 XmNbackground, colors[0xff],
5486 XmNfontList, fontlist1,
5487 NULL);
5488
5489 Inet_transmit_data = XtVaCreateManagedWidget(langcode("UNIOP00010"),xmToggleButtonWidgetClass,form,
5490 XmNnavigationType, XmTAB_GROUP,
5491 XmNtraversalOn, TRUE,
5492 XmNtopAttachment, XmATTACH_WIDGET,
5493 XmNtopWidget, Inet_active_on_startup,
5494 XmNtopOffset, 5,
5495 XmNbottomAttachment, XmATTACH_NONE,
5496 XmNleftAttachment, XmATTACH_FORM,
5497 XmNleftOffset,10,
5498 XmNrightAttachment, XmATTACH_NONE,
5499 XmNbackground, colors[0xff],
5500 XmNfontList, fontlist1,
5501 NULL);
5502
5503 ihost = XtVaCreateManagedWidget(langcode("WPUPCFI002"),xmLabelWidgetClass, form,
5504 XmNtopAttachment, XmATTACH_WIDGET,
5505 XmNtopWidget, Inet_transmit_data,
5506 XmNtopOffset, 5,
5507 XmNbottomAttachment, XmATTACH_NONE,
5508 XmNleftAttachment, XmATTACH_FORM,
5509 XmNleftOffset, 10,
5510 XmNrightAttachment, XmATTACH_NONE,
5511 XmNbackground, colors[0xff],
5512 XmNfontList, fontlist1,
5513 NULL);
5514
5515 Inet_host_data = XtVaCreateManagedWidget("Config_Inet host_data", xmTextFieldWidgetClass, form,
5516 XmNnavigationType, XmTAB_GROUP,
5517 XmNtraversalOn, TRUE,
5518 XmNeditable, TRUE,
5519 XmNcursorPositionVisible, TRUE,
5520 XmNsensitive, TRUE,
5521 XmNshadowThickness, 1,
5522 XmNcolumns, 25,
5523 XmNwidth, ((25*7)+2),
5524 XmNmaxLength, MAX_DEVICE_NAME,
5525 XmNbackground, colors[0x0f],
5526 XmNtopAttachment,XmATTACH_WIDGET,
5527 XmNtopWidget, Inet_transmit_data,
5528 XmNbottomAttachment,XmATTACH_NONE,
5529 XmNleftAttachment, XmATTACH_WIDGET,
5530 XmNleftWidget, ihost,
5531 XmNrightAttachment,XmATTACH_NONE,
5532 XmNfontList, fontlist1,
5533 NULL);
5534
5535 iport = XtVaCreateManagedWidget(langcode("WPUPCFI003"),xmLabelWidgetClass, form,
5536 XmNtopAttachment, XmATTACH_WIDGET,
5537 XmNtopWidget,Inet_transmit_data,
5538 XmNtopOffset, 5,
5539 XmNbottomAttachment, XmATTACH_NONE,
5540 XmNleftAttachment, XmATTACH_WIDGET,
5541 XmNleftWidget,Inet_host_data,
5542 XmNleftOffset, 20,
5543 XmNrightAttachment, XmATTACH_NONE,
5544 XmNbackground, colors[0xff],
5545 XmNfontList, fontlist1,
5546 NULL);
5547
5548 Inet_port_data = XtVaCreateManagedWidget("Config_Inet port_data", xmTextFieldWidgetClass, form,
5549 XmNnavigationType, XmTAB_GROUP,
5550 XmNtraversalOn, TRUE,
5551 XmNeditable, TRUE,
5552 XmNcursorPositionVisible, TRUE,
5553 XmNsensitive, TRUE,
5554 XmNshadowThickness, 1,
5555 XmNcolumns, 5,
5556 XmNmaxLength, 6,
5557 XmNbackground, colors[0x0f],
5558 XmNtopAttachment, XmATTACH_WIDGET,
5559 XmNtopWidget, Inet_transmit_data,
5560 XmNbottomAttachment,XmATTACH_NONE,
5561 XmNleftAttachment, XmATTACH_WIDGET,
5562 XmNleftWidget, iport,
5563 XmNrightAttachment,XmATTACH_FORM,
5564 XmNrightOffset,10,
5565 XmNfontList, fontlist1,
5566 NULL);
5567
5568 password = XtVaCreateManagedWidget(langcode("WPUPCFI009"),xmLabelWidgetClass, form,
5569 XmNtopAttachment, XmATTACH_WIDGET,
5570 XmNtopWidget, ihost,
5571 XmNtopOffset, 20,
5572 XmNbottomAttachment, XmATTACH_NONE,
5573 XmNleftAttachment, XmATTACH_FORM,
5574 XmNleftOffset, 10,
5575 XmNrightAttachment, XmATTACH_NONE,
5576 XmNbackground, colors[0xff],
5577 XmNfontList, fontlist1,
5578 NULL);
5579
5580 Inet_password_data = XtVaCreateManagedWidget("Config_Inet password_data", xmTextFieldWidgetClass, form,
5581 XmNnavigationType, XmTAB_GROUP,
5582 XmNtraversalOn, TRUE,
5583 XmNeditable, TRUE,
5584 XmNcursorPositionVisible, TRUE,
5585 XmNsensitive, TRUE,
5586 XmNshadowThickness, 1,
5587 XmNcolumns, 20,
5588 XmNmaxLength, 20,
5589 XmNbackground, colors[0x0f],
5590 XmNleftAttachment,XmATTACH_WIDGET,
5591 XmNleftWidget, password,
5592 XmNleftOffset, 10,
5593 XmNtopAttachment,XmATTACH_WIDGET,
5594 XmNtopWidget, ihost,
5595 XmNtopOffset, 15,
5596 XmNbottomAttachment,XmATTACH_NONE,
5597 XmNrightAttachment,XmATTACH_NONE,
5598 XmNfontList, fontlist1,
5599 NULL);
5600
5601 // password_fl
5602 XtVaCreateManagedWidget(langcode("WPUPCFI010"),xmLabelWidgetClass, form,
5603 XmNtopAttachment, XmATTACH_WIDGET,
5604 XmNtopWidget, ihost,
5605 XmNtopOffset, 20,
5606 XmNbottomAttachment, XmATTACH_NONE,
5607 XmNleftAttachment, XmATTACH_WIDGET,
5608 XmNleftWidget,Inet_password_data,
5609 XmNleftOffset,20,
5610 XmNrightAttachment, XmATTACH_NONE,
5611 XmNbackground, colors[0xff],
5612 XmNfontList, fontlist1,
5613 NULL);
5614
5615 filter = XtVaCreateManagedWidget(langcode("WPUPCFI015"),xmLabelWidgetClass, form,
5616 XmNtopAttachment, XmATTACH_WIDGET,
5617 XmNtopWidget, password,
5618 XmNtopOffset, 20,
5619 XmNbottomAttachment, XmATTACH_NONE,
5620 XmNleftAttachment, XmATTACH_FORM,
5621 XmNleftOffset, 10,
5622 XmNrightAttachment, XmATTACH_NONE,
5623 XmNbackground, colors[0xff],
5624 XmNfontList, fontlist1,
5625 NULL);
5626
5627 Inet_filter_data = XtVaCreateManagedWidget("Config_Inet filter_data", xmTextFieldWidgetClass, form,
5628 XmNnavigationType, XmTAB_GROUP,
5629 XmNtraversalOn, TRUE,
5630 XmNeditable, TRUE,
5631 XmNcursorPositionVisible, TRUE,
5632 XmNsensitive, TRUE,
5633 XmNshadowThickness, 1,
5634 XmNcolumns, 30,
5635 XmNmaxLength, 190,
5636 XmNbackground, colors[0x0f],
5637 XmNleftAttachment,XmATTACH_WIDGET,
5638 XmNleftWidget, filter,
5639 XmNleftOffset, 10,
5640 XmNtopAttachment,XmATTACH_WIDGET,
5641 XmNtopWidget, password,
5642 XmNtopOffset, 15,
5643 XmNbottomAttachment,XmATTACH_NONE,
5644 XmNrightAttachment,XmATTACH_NONE,
5645 XmNfontList, fontlist1,
5646 NULL);
5647
5648 comment = XtVaCreateManagedWidget(langcode("WPUPCFS017"),xmLabelWidgetClass, form,
5649 XmNtopAttachment, XmATTACH_WIDGET,
5650 XmNtopWidget, Inet_filter_data,
5651 XmNtopOffset, 5,
5652 XmNbottomAttachment, XmATTACH_NONE,
5653 XmNleftAttachment, XmATTACH_FORM,
5654 XmNleftOffset, 10,
5655 XmNrightAttachment, XmATTACH_NONE,
5656 XmNbackground, colors[0xff],
5657 XmNfontList, fontlist1,
5658 NULL);
5659
5660 Inet_comment = XtVaCreateManagedWidget("Config_Inet comment", xmTextFieldWidgetClass, form,
5661 XmNnavigationType, XmTAB_GROUP,
5662 XmNtraversalOn, TRUE,
5663 XmNeditable, TRUE,
5664 XmNcursorPositionVisible, TRUE,
5665 XmNsensitive, TRUE,
5666 XmNshadowThickness, 1,
5667 XmNcolumns, 25,
5668 XmNwidth, ((25*7)+2),
5669 XmNmaxLength, 49,
5670 XmNbackground, colors[0x0f],
5671 XmNtopAttachment,XmATTACH_WIDGET,
5672 XmNtopWidget, Inet_filter_data,
5673 XmNbottomAttachment,XmATTACH_NONE,
5674 XmNleftAttachment, XmATTACH_WIDGET,
5675 XmNleftWidget, comment,
5676 XmNrightAttachment,XmATTACH_NONE,
5677 XmNfontList, fontlist1,
5678 NULL);
5679
5680 Inet_reconnect_data = XtVaCreateManagedWidget(langcode("WPUPCFI011"),xmToggleButtonWidgetClass,form,
5681 XmNnavigationType, XmTAB_GROUP,
5682 XmNtraversalOn, TRUE,
5683 XmNtopAttachment, XmATTACH_WIDGET,
5684 XmNtopWidget, comment,
5685 XmNtopOffset, 20,
5686 XmNbottomAttachment, XmATTACH_NONE,
5687 XmNleftAttachment, XmATTACH_FORM,
5688 XmNleftOffset,10,
5689 XmNrightAttachment, XmATTACH_NONE,
5690 XmNbackground, colors[0xff],
5691 XmNfontList, fontlist1,
5692 NULL);
5693
5694 sep = XtVaCreateManagedWidget("Config_Inet sep", xmSeparatorGadgetClass,form,
5695 XmNorientation, XmHORIZONTAL,
5696 XmNtopAttachment,XmATTACH_WIDGET,
5697 XmNtopWidget, Inet_reconnect_data,
5698 XmNtopOffset, 14,
5699 XmNbottomAttachment,XmATTACH_NONE,
5700 XmNleftAttachment, XmATTACH_FORM,
5701 XmNrightAttachment,XmATTACH_FORM,
5702 XmNbackground, colors[0xff],
5703 XmNfontList, fontlist1,
5704 NULL);
5705
5706 button_ok = XtVaCreateManagedWidget(langcode("UNIOP00001"),xmPushButtonGadgetClass, form,
5707 XmNnavigationType, XmTAB_GROUP,
5708 XmNtraversalOn, TRUE,
5709 XmNtopAttachment, XmATTACH_WIDGET,
5710 XmNtopWidget, sep,
5711 XmNtopOffset, 10,
5712 XmNbottomAttachment, XmATTACH_FORM,
5713 XmNbottomOffset, 5,
5714 XmNleftAttachment, XmATTACH_POSITION,
5715 XmNleftPosition, 1,
5716 XmNrightAttachment, XmATTACH_POSITION,
5717 XmNrightPosition, 2,
5718 XmNbackground, colors[0xff],
5719 XmNfontList, fontlist1,
5720 NULL);
5721
5722 button_cancel = XtVaCreateManagedWidget(langcode("UNIOP00002"),xmPushButtonGadgetClass, form,
5723 XmNnavigationType, XmTAB_GROUP,
5724 XmNtraversalOn, TRUE,
5725 XmNtopAttachment, XmATTACH_WIDGET,
5726 XmNtopWidget, sep,
5727 XmNtopOffset, 10,
5728 XmNbottomAttachment, XmATTACH_FORM,
5729 XmNbottomOffset, 5,
5730 XmNleftAttachment, XmATTACH_POSITION,
5731 XmNleftPosition, 3,
5732 XmNrightAttachment, XmATTACH_POSITION,
5733 XmNrightPosition, 4,
5734 XmNbackground, colors[0xff],
5735 XmNfontList, fontlist1,
5736 NULL);
5737
5738 XtAddCallback(button_ok, XmNactivateCallback, Inet_change_data, config_Inet_dialog);
5739 XtAddCallback(button_cancel, XmNactivateCallback, Inet_destroy_shell, config_Inet_dialog);
5740
5741 pos_dialog(config_Inet_dialog);
5742
5743 delw = XmInternAtom(XtDisplay(config_Inet_dialog),"WM_DELETE_WINDOW", FALSE);
5744 XmAddWMProtocolCallback(config_Inet_dialog, delw, Inet_destroy_shell, (XtPointer)config_Inet_dialog);
5745
5746 if (config_type==0)
5747 {
5748 /* first time port */
5749 XmToggleButtonSetState(Inet_active_on_startup,TRUE,FALSE);
5750 XmToggleButtonSetState(Inet_transmit_data,TRUE,FALSE);
5751
5752 // Core APRS-IS Servers
5753 XmTextFieldSetString(Inet_host_data,"rotate.aprs.net");
5754
5755 // Filtered port
5756 XmTextFieldSetString(Inet_port_data,"14580");
5757
5758 // Filter of 500 miles around my location. But only if I
5759 // enable transmit on that interface and globally!
5760 XmTextFieldSetString(Inet_filter_data,"m/500");
5761
5762 XmTextFieldSetString(Inet_comment,"Core INET Servers");
5763 XmToggleButtonSetState(Inet_reconnect_data,TRUE,FALSE);
5764 }
5765 else
5766 {
5767 /* reconfig */
5768
5769 begin_critical_section(&devices_lock, "interface_gui.c:Config_Inet" );
5770
5771 if (devices[Inet_port].connect_on_startup)
5772 {
5773 XmToggleButtonSetState(Inet_active_on_startup,TRUE,FALSE);
5774 }
5775 else
5776 {
5777 XmToggleButtonSetState(Inet_active_on_startup,FALSE,FALSE);
5778 }
5779
5780 if (devices[Inet_port].transmit_data)
5781 {
5782 XmToggleButtonSetState(Inet_transmit_data,TRUE,FALSE);
5783 }
5784 else
5785 {
5786 XmToggleButtonSetState(Inet_transmit_data,FALSE,FALSE);
5787 }
5788
5789 XmTextFieldSetString(Inet_host_data,devices[Inet_port].device_host_name);
5790 xastir_snprintf(temp, sizeof(temp), "%d", devices[Inet_port].sp);
5791 XmTextFieldSetString(Inet_port_data,temp);
5792 XmTextFieldSetString(Inet_password_data,devices[Inet_port].device_host_pswd);
5793 XmTextFieldSetString(Inet_filter_data,devices[Inet_port].device_host_filter_string);
5794 XmTextFieldSetString(Inet_comment,devices[Inet_port].comment);
5795
5796 if (devices[Inet_port].reconnect)
5797 {
5798 XmToggleButtonSetState(Inet_reconnect_data,TRUE,FALSE);
5799 }
5800 else
5801 {
5802 XmToggleButtonSetState(Inet_reconnect_data,FALSE,FALSE);
5803 }
5804
5805 end_critical_section(&devices_lock, "interface_gui.c:Config_Inet" );
5806
5807 }
5808 XtManageChild(form);
5809 XtManageChild(pane);
5810
5811 resize_dialog(form, config_Inet_dialog);
5812
5813 XtPopup(config_Inet_dialog,XtGrabNone);
5814 }
5815 else
5816 {
5817 (void)XRaiseWindow(XtDisplay(config_Inet_dialog), XtWindow(config_Inet_dialog));
5818 }
5819 }
5820
5821
5822
5823
5824
5825 //WE7U-DATABASE
5826 /*****************************************************/
5827 /* Configure Database Server GUI */
5828 /*****************************************************/
5829
5830 /**** DATABASE CONFIGURE ******/
5831 Widget config_Database_dialog = (Widget)NULL;
5832 Widget Database_active_on_startup;
5833 Widget Database_host_data;
5834 Widget Database_port_data;
5835 Widget Database_comment;
5836 Widget Database_password_data;
5837 Widget Database_filter_data;
5838 Widget Database_transmit_data;
5839 Widget Database_reconnect_data;
5840 int Database_port;
5841
5842
5843
5844
5845
Database_destroy_shell(Widget UNUSED (widget),XtPointer clientData,XtPointer UNUSED (callData))5846 void Database_destroy_shell( Widget UNUSED(widget), XtPointer clientData, XtPointer UNUSED(callData) )
5847 {
5848 Widget shell = (Widget) clientData;
5849 XtPopdown(shell);
5850 XtDestroyWidget(shell);
5851 config_Database_dialog = (Widget)NULL;
5852 if (choose_interface_dialog != NULL)
5853 {
5854 Choose_interface_destroy_shell(choose_interface_dialog,choose_interface_dialog,NULL);
5855 }
5856
5857 choose_interface_dialog = (Widget)NULL;
5858 }
5859
5860
5861
5862
5863
Database_change_data(Widget widget,XtPointer clientData,XtPointer callData)5864 void Database_change_data(Widget widget, XtPointer clientData, XtPointer callData)
5865 {
5866 int was_up;
5867 char *temp_ptr;
5868
5869
5870 busy_cursor(appshell);
5871 was_up=0;
5872 if (get_device_status(Database_port) == DEVICE_IN_USE)
5873 {
5874 /* if active shutdown before changes are made */
5875 /*fprintf(stderr,"Device is up, shutting down\n");*/
5876 (void)del_device(Database_port);
5877 was_up=1;
5878 usleep(1000000); // Wait for one second
5879 }
5880
5881 begin_critical_section(&devices_lock, "interface_gui.c:Database_change_data" );
5882
5883 temp_ptr = XmTextFieldGetString(Database_host_data);
5884 xastir_snprintf(devices[Database_port].device_host_name,
5885 sizeof(devices[Database_port].device_host_name),
5886 "%s",
5887 temp_ptr);
5888 XtFree(temp_ptr);
5889
5890 (void)remove_trailing_spaces(devices[Database_port].device_host_name);
5891
5892 temp_ptr = XmTextFieldGetString(Database_password_data);
5893 xastir_snprintf(devices[Database_port].device_host_pswd,
5894 sizeof(devices[Database_port].device_host_pswd),
5895 "%s",
5896 temp_ptr);
5897 XtFree(temp_ptr);
5898
5899 (void)remove_trailing_spaces(devices[Database_port].device_host_pswd);
5900
5901 temp_ptr = XmTextFieldGetString(Database_filter_data);
5902 xastir_snprintf(devices[Database_port].device_host_filter_string,
5903 sizeof(devices[Database_port].device_host_filter_string),
5904 "%s",
5905 temp_ptr);
5906 XtFree(temp_ptr);
5907
5908 (void)remove_trailing_spaces(devices[Database_port].device_host_filter_string);
5909
5910 temp_ptr = XmTextFieldGetString(Database_comment);
5911 xastir_snprintf(devices[Database_port].comment,
5912 sizeof(devices[Database_port].comment),
5913 "%s",
5914 temp_ptr);
5915 XtFree(temp_ptr);
5916
5917 (void)remove_trailing_spaces(devices[Database_port].comment);
5918
5919 temp_ptr = XmTextFieldGetString(Database_port_data);
5920 devices[Database_port].sp=atoi(temp_ptr);
5921 XtFree(temp_ptr);
5922
5923 if(XmToggleButtonGetState(Database_active_on_startup))
5924 {
5925 devices[Database_port].connect_on_startup=1;
5926 }
5927 else
5928 {
5929 devices[Database_port].connect_on_startup=0;
5930 }
5931
5932 if(XmToggleButtonGetState(Database_transmit_data))
5933 {
5934 devices[Database_port].transmit_data=1;
5935 }
5936 else
5937 {
5938 devices[Database_port].transmit_data=0;
5939 }
5940
5941 if(XmToggleButtonGetState(Database_reconnect_data))
5942 {
5943 devices[Database_port].reconnect=1;
5944 }
5945 else
5946 {
5947 devices[Database_port].reconnect=0;
5948 }
5949
5950 // n8ysz 20041213
5951 // if (devices[Database_port].connect_on_startup==1 || was_up) {
5952 if ( was_up)
5953 {
5954 (void)add_device(Database_port,
5955 DEVICE_NET_DATABASE,
5956 devices[Database_port].device_host_name,
5957 devices[Database_port].device_host_pswd,
5958 devices[Database_port].sp,
5959 0,
5960 0,
5961 devices[Database_port].reconnect,
5962 devices[Database_port].device_host_filter_string);
5963 }
5964
5965 /* delete list */
5966 // modify_device_list(4,0);
5967
5968
5969 /* add device type */
5970 devices[Database_port].device_type=DEVICE_NET_DATABASE;
5971
5972 /* rebuild list */
5973 // modify_device_list(3,0);
5974
5975
5976 end_critical_section(&devices_lock, "interface_gui.c:Database_change_data" );
5977
5978 // Rebuild the interface control list
5979 update_interface_list();
5980
5981 Database_destroy_shell(widget,clientData,callData);
5982 }
5983
5984
5985
5986
5987
Config_Database(Widget UNUSED (w),int config_type,int port)5988 void Config_Database( Widget UNUSED(w), int config_type, int port)
5989 {
5990 static Widget pane, scrollwindow, form, button_ok, button_cancel,
5991 ihost, iport, password,
5992 filter, sep, comment;
5993 // static Widget password_fl;
5994
5995 Atom delw;
5996 char temp[40];
5997
5998 if(!config_Database_dialog)
5999 {
6000 Database_port=port;
6001 config_Database_dialog = XtVaCreatePopupShell(langcode("WPUPCFID01"),
6002 xmDialogShellWidgetClass, appshell,
6003 XmNdeleteResponse, XmDESTROY,
6004 XmNdefaultPosition, FALSE,
6005 XmNfontList, fontlist1,
6006 NULL);
6007
6008 pane = XtVaCreateWidget("Config_Database pane",xmPanedWindowWidgetClass, config_Database_dialog,
6009 XmNbackground, colors[0xff],
6010 NULL);
6011
6012 scrollwindow = XtVaCreateManagedWidget("scrollwindow",
6013 xmScrolledWindowWidgetClass,
6014 pane,
6015 XmNscrollingPolicy, XmAUTOMATIC,
6016 NULL);
6017
6018 form = XtVaCreateWidget("Config_Database form",
6019 xmFormWidgetClass,
6020 scrollwindow,
6021 XmNfractionBase, 5,
6022 XmNbackground, colors[0xff],
6023 XmNautoUnmanage, FALSE,
6024 XmNshadowThickness, 1,
6025 NULL);
6026
6027 Database_active_on_startup = XtVaCreateManagedWidget(langcode("UNIOP00011"),xmToggleButtonWidgetClass,form,
6028 XmNnavigationType, XmTAB_GROUP,
6029 XmNtraversalOn, TRUE,
6030 XmNtopAttachment, XmATTACH_FORM,
6031 XmNtopOffset, 5,
6032 XmNbottomAttachment, XmATTACH_NONE,
6033 XmNleftAttachment, XmATTACH_FORM,
6034 XmNleftOffset,10,
6035 XmNrightAttachment, XmATTACH_NONE,
6036 XmNbackground, colors[0xff],
6037 XmNfontList, fontlist1,
6038 NULL);
6039
6040 Database_transmit_data = XtVaCreateManagedWidget(langcode("UNIOP00010"),xmToggleButtonWidgetClass,form,
6041 XmNnavigationType, XmTAB_GROUP,
6042 XmNtraversalOn, TRUE,
6043 XmNtopAttachment, XmATTACH_WIDGET,
6044 XmNtopWidget, Database_active_on_startup,
6045 XmNtopOffset, 5,
6046 XmNbottomAttachment, XmATTACH_NONE,
6047 XmNleftAttachment, XmATTACH_FORM,
6048 XmNleftOffset,10,
6049 XmNrightAttachment, XmATTACH_NONE,
6050 XmNbackground, colors[0xff],
6051 XmNfontList, fontlist1,
6052 NULL);
6053
6054 ihost = XtVaCreateManagedWidget(langcode("WPUPCFID02"),xmLabelWidgetClass, form,
6055 XmNtopAttachment, XmATTACH_WIDGET,
6056 XmNtopWidget, Database_transmit_data,
6057 XmNtopOffset, 5,
6058 XmNbottomAttachment, XmATTACH_NONE,
6059 XmNleftAttachment, XmATTACH_FORM,
6060 XmNleftOffset, 10,
6061 XmNrightAttachment, XmATTACH_NONE,
6062 XmNbackground, colors[0xff],
6063 XmNfontList, fontlist1,
6064 NULL);
6065
6066 Database_host_data = XtVaCreateManagedWidget("Config_Database host_data", xmTextFieldWidgetClass, form,
6067 XmNnavigationType, XmTAB_GROUP,
6068 XmNtraversalOn, TRUE,
6069 XmNeditable, TRUE,
6070 XmNcursorPositionVisible, TRUE,
6071 XmNsensitive, TRUE,
6072 XmNshadowThickness, 1,
6073 XmNcolumns, 25,
6074 XmNwidth, ((25*7)+2),
6075 XmNmaxLength, MAX_DEVICE_NAME,
6076 XmNbackground, colors[0x0f],
6077 XmNtopAttachment,XmATTACH_WIDGET,
6078 XmNtopWidget, Database_transmit_data,
6079 XmNbottomAttachment,XmATTACH_NONE,
6080 XmNleftAttachment, XmATTACH_WIDGET,
6081 XmNleftWidget, ihost,
6082 XmNrightAttachment,XmATTACH_NONE,
6083 XmNfontList, fontlist1,
6084 NULL);
6085
6086 iport = XtVaCreateManagedWidget(langcode("WPUPCFID03"),xmLabelWidgetClass, form,
6087 XmNtopAttachment, XmATTACH_WIDGET,
6088 XmNtopWidget,Database_transmit_data,
6089 XmNtopOffset, 5,
6090 XmNbottomAttachment, XmATTACH_NONE,
6091 XmNleftAttachment, XmATTACH_WIDGET,
6092 XmNleftWidget,Database_host_data,
6093 XmNleftOffset, 20,
6094 XmNrightAttachment, XmATTACH_NONE,
6095 XmNbackground, colors[0xff],
6096 XmNfontList, fontlist1,
6097 NULL);
6098
6099 Database_port_data = XtVaCreateManagedWidget("Config_Database port_data", xmTextFieldWidgetClass, form,
6100 XmNnavigationType, XmTAB_GROUP,
6101 XmNtraversalOn, TRUE,
6102 XmNeditable, TRUE,
6103 XmNcursorPositionVisible, TRUE,
6104 XmNsensitive, TRUE,
6105 XmNshadowThickness, 1,
6106 XmNcolumns, 5,
6107 XmNmaxLength, 6,
6108 XmNbackground, colors[0x0f],
6109 XmNtopAttachment, XmATTACH_WIDGET,
6110 XmNtopWidget, Database_transmit_data,
6111 XmNbottomAttachment,XmATTACH_NONE,
6112 XmNleftAttachment, XmATTACH_WIDGET,
6113 XmNleftWidget, iport,
6114 XmNrightAttachment,XmATTACH_FORM,
6115 XmNrightOffset,10,
6116 XmNfontList, fontlist1,
6117 NULL);
6118
6119 password = XtVaCreateManagedWidget(langcode("WPUPCFID09"),xmLabelWidgetClass, form,
6120 XmNtopAttachment, XmATTACH_WIDGET,
6121 XmNtopWidget, ihost,
6122 XmNtopOffset, 20,
6123 XmNbottomAttachment, XmATTACH_NONE,
6124 XmNleftAttachment, XmATTACH_FORM,
6125 XmNleftOffset, 10,
6126 XmNrightAttachment, XmATTACH_NONE,
6127 XmNbackground, colors[0xff],
6128 XmNfontList, fontlist1,
6129 NULL);
6130
6131 Database_password_data = XtVaCreateManagedWidget("Config_Database password_data", xmTextFieldWidgetClass, form,
6132 XmNnavigationType, XmTAB_GROUP,
6133 XmNtraversalOn, TRUE,
6134 XmNeditable, TRUE,
6135 XmNcursorPositionVisible, TRUE,
6136 XmNsensitive, TRUE,
6137 XmNshadowThickness, 1,
6138 XmNcolumns, 20,
6139 XmNmaxLength, 20,
6140 XmNbackground, colors[0x0f],
6141 XmNleftAttachment,XmATTACH_WIDGET,
6142 XmNleftWidget, password,
6143 XmNleftOffset, 10,
6144 XmNtopAttachment,XmATTACH_WIDGET,
6145 XmNtopWidget, ihost,
6146 XmNtopOffset, 15,
6147 XmNbottomAttachment,XmATTACH_NONE,
6148 XmNrightAttachment,XmATTACH_NONE,
6149 XmNfontList, fontlist1,
6150 NULL);
6151
6152 // password_fl
6153 XtVaCreateManagedWidget(langcode("WPUPCFID10"),xmLabelWidgetClass, form,
6154 XmNtopAttachment, XmATTACH_WIDGET,
6155 XmNtopWidget, ihost,
6156 XmNtopOffset, 20,
6157 XmNbottomAttachment, XmATTACH_NONE,
6158 XmNleftAttachment, XmATTACH_WIDGET,
6159 XmNleftWidget,Database_password_data,
6160 XmNleftOffset,20,
6161 XmNrightAttachment, XmATTACH_NONE,
6162 XmNbackground, colors[0xff],
6163 XmNfontList, fontlist1,
6164 NULL);
6165
6166 filter = XtVaCreateManagedWidget(langcode("WPUPCFID15"),xmLabelWidgetClass, form,
6167 XmNtopAttachment, XmATTACH_WIDGET,
6168 XmNtopWidget, password,
6169 XmNtopOffset, 20,
6170 XmNbottomAttachment, XmATTACH_NONE,
6171 XmNleftAttachment, XmATTACH_FORM,
6172 XmNleftOffset, 10,
6173 XmNrightAttachment, XmATTACH_NONE,
6174 XmNbackground, colors[0xff],
6175 XmNfontList, fontlist1,
6176 NULL);
6177
6178 Database_filter_data = XtVaCreateManagedWidget("Config_Database filter_data", xmTextFieldWidgetClass, form,
6179 XmNnavigationType, XmTAB_GROUP,
6180 XmNtraversalOn, TRUE,
6181 XmNeditable, TRUE,
6182 XmNcursorPositionVisible, TRUE,
6183 XmNsensitive, TRUE,
6184 XmNshadowThickness, 1,
6185 XmNcolumns, 30,
6186 XmNmaxLength, 190,
6187 XmNbackground, colors[0x0f],
6188 XmNleftAttachment,XmATTACH_WIDGET,
6189 XmNleftWidget, filter,
6190 XmNleftOffset, 10,
6191 XmNtopAttachment,XmATTACH_WIDGET,
6192 XmNtopWidget, password,
6193 XmNtopOffset, 15,
6194 XmNbottomAttachment,XmATTACH_NONE,
6195 XmNrightAttachment,XmATTACH_NONE,
6196 XmNfontList, fontlist1,
6197 NULL);
6198
6199 comment = XtVaCreateManagedWidget(langcode("WPUPCFS017"),xmLabelWidgetClass, form,
6200 XmNtopAttachment, XmATTACH_WIDGET,
6201 XmNtopWidget, filter,
6202 XmNtopOffset, 20,
6203 XmNbottomAttachment, XmATTACH_NONE,
6204 XmNleftAttachment, XmATTACH_FORM,
6205 XmNleftOffset, 10,
6206 XmNrightAttachment, XmATTACH_NONE,
6207 XmNbackground, colors[0xff],
6208 XmNfontList, fontlist1,
6209 NULL);
6210
6211 Database_comment = XtVaCreateManagedWidget("Config_Database comment", xmTextFieldWidgetClass, form,
6212 XmNnavigationType, XmTAB_GROUP,
6213 XmNtraversalOn, TRUE,
6214 XmNeditable, TRUE,
6215 XmNcursorPositionVisible, TRUE,
6216 XmNsensitive, TRUE,
6217 XmNshadowThickness, 1,
6218 XmNcolumns, 25,
6219 XmNwidth, ((25*7)+2),
6220 XmNmaxLength, 49,
6221 XmNbackground, colors[0x0f],
6222 XmNtopAttachment,XmATTACH_WIDGET,
6223 XmNtopWidget, filter,
6224 XmNtopOffset, 15,
6225 XmNbottomAttachment,XmATTACH_NONE,
6226 XmNleftAttachment, XmATTACH_WIDGET,
6227 XmNleftWidget, comment,
6228 XmNrightAttachment,XmATTACH_NONE,
6229 XmNfontList, fontlist1,
6230 NULL);
6231
6232 Database_reconnect_data = XtVaCreateManagedWidget(langcode("WPUPCFID11"),xmToggleButtonWidgetClass,form,
6233 XmNnavigationType, XmTAB_GROUP,
6234 XmNtraversalOn, TRUE,
6235 XmNtopAttachment, XmATTACH_WIDGET,
6236 XmNtopWidget, comment,
6237 XmNtopOffset, 20,
6238 XmNbottomAttachment, XmATTACH_NONE,
6239 XmNleftAttachment, XmATTACH_FORM,
6240 XmNleftOffset,10,
6241 XmNrightAttachment, XmATTACH_NONE,
6242 XmNbackground, colors[0xff],
6243 XmNfontList, fontlist1,
6244 NULL);
6245
6246 sep = XtVaCreateManagedWidget("Config_Database sep", xmSeparatorGadgetClass,form,
6247 XmNorientation, XmHORIZONTAL,
6248 XmNtopAttachment,XmATTACH_WIDGET,
6249 XmNtopWidget, Database_reconnect_data,
6250 XmNtopOffset, 14,
6251 XmNbottomAttachment,XmATTACH_NONE,
6252 XmNleftAttachment, XmATTACH_FORM,
6253 XmNrightAttachment,XmATTACH_FORM,
6254 XmNbackground, colors[0xff],
6255 XmNfontList, fontlist1,
6256 NULL);
6257
6258 button_ok = XtVaCreateManagedWidget(langcode("UNIOP00001"),xmPushButtonGadgetClass, form,
6259 XmNnavigationType, XmTAB_GROUP,
6260 XmNtraversalOn, TRUE,
6261 XmNtopAttachment, XmATTACH_WIDGET,
6262 XmNtopWidget, sep,
6263 XmNtopOffset, 10,
6264 XmNbottomAttachment, XmATTACH_FORM,
6265 XmNbottomOffset, 5,
6266 XmNleftAttachment, XmATTACH_POSITION,
6267 XmNleftPosition, 1,
6268 XmNrightAttachment, XmATTACH_POSITION,
6269 XmNrightPosition, 2,
6270 XmNbackground, colors[0xff],
6271 XmNfontList, fontlist1,
6272 NULL);
6273
6274 button_cancel = XtVaCreateManagedWidget(langcode("UNIOP00002"),xmPushButtonGadgetClass, form,
6275 XmNnavigationType, XmTAB_GROUP,
6276 XmNtraversalOn, TRUE,
6277 XmNtopAttachment, XmATTACH_WIDGET,
6278 XmNtopWidget, sep,
6279 XmNtopOffset, 10,
6280 XmNbottomAttachment, XmATTACH_FORM,
6281 XmNbottomOffset, 5,
6282 XmNleftAttachment, XmATTACH_POSITION,
6283 XmNleftPosition, 3,
6284 XmNrightAttachment, XmATTACH_POSITION,
6285 XmNrightPosition, 4,
6286 XmNbackground, colors[0xff],
6287 XmNfontList, fontlist1,
6288 NULL);
6289
6290 XtAddCallback(button_ok, XmNactivateCallback, Database_change_data, config_Database_dialog);
6291 XtAddCallback(button_cancel, XmNactivateCallback, Database_destroy_shell, config_Database_dialog);
6292
6293 pos_dialog(config_Database_dialog);
6294
6295 delw = XmInternAtom(XtDisplay(config_Database_dialog),"WM_DELETE_WINDOW", FALSE);
6296 XmAddWMProtocolCallback(config_Database_dialog, delw, Database_destroy_shell, (XtPointer)config_Database_dialog);
6297
6298 if (config_type==0)
6299 {
6300 /* first time port */
6301 XmToggleButtonSetState(Database_active_on_startup,TRUE,FALSE);
6302 XmToggleButtonSetState(Database_transmit_data,TRUE,FALSE);
6303 //XmTextFieldSetString(Database_host_data,"first.aprs.net");
6304 XmTextFieldSetString(Database_host_data,"");
6305 XmTextFieldSetString(Database_port_data,"");
6306 XmTextFieldSetString(Database_filter_data,"");
6307 XmTextFieldSetString(Database_comment,"");
6308 XmToggleButtonSetState(Database_reconnect_data,FALSE,FALSE);
6309 }
6310 else
6311 {
6312 /* reconfig */
6313
6314 begin_critical_section(&devices_lock, "interface_gui.c:Config_Database" );
6315
6316 if (devices[Database_port].connect_on_startup)
6317 {
6318 XmToggleButtonSetState(Database_active_on_startup,TRUE,FALSE);
6319 }
6320 else
6321 {
6322 XmToggleButtonSetState(Database_active_on_startup,FALSE,FALSE);
6323 }
6324
6325 if (devices[Database_port].transmit_data)
6326 {
6327 XmToggleButtonSetState(Database_transmit_data,TRUE,FALSE);
6328 }
6329 else
6330 {
6331 XmToggleButtonSetState(Database_transmit_data,FALSE,FALSE);
6332 }
6333
6334 XmTextFieldSetString(Database_host_data,devices[Database_port].device_host_name);
6335 xastir_snprintf(temp, sizeof(temp), "%d", devices[Database_port].sp);
6336 XmTextFieldSetString(Database_port_data,temp);
6337 XmTextFieldSetString(Database_password_data,devices[Database_port].device_host_pswd);
6338 XmTextFieldSetString(Database_filter_data,devices[Database_port].device_host_filter_string);
6339 XmTextFieldSetString(Database_comment,devices[Database_port].comment);
6340
6341 if (devices[Database_port].reconnect)
6342 {
6343 XmToggleButtonSetState(Database_reconnect_data,TRUE,FALSE);
6344 }
6345 else
6346 {
6347 XmToggleButtonSetState(Database_reconnect_data,FALSE,FALSE);
6348 }
6349
6350 end_critical_section(&devices_lock, "interface_gui.c:Config_Database" );
6351
6352 }
6353 XtManageChild(form);
6354 XtManageChild(pane);
6355
6356 resize_dialog(form, config_Database_dialog);
6357
6358 XtPopup(config_Database_dialog,XtGrabNone);
6359 }
6360 else
6361 {
6362 (void)XRaiseWindow(XtDisplay(config_Database_dialog), XtWindow(config_Database_dialog));
6363 }
6364 }
6365
6366
6367 #ifdef HAVE_DB
6368 //AA3SD-SQL SERVER DATABASE, for db_gis spatial databases
6369 /*****************************************************/
6370 /* Configure SQL Database Server GUI */
6371 /*****************************************************/
6372
6373 /**** DATABASE CONFIGURE ******/
6374 Widget config_Sql_Database_dialog = (Widget)NULL; // dialog for sql server database connections used in db_gis.c
6375 Widget Sql_Database_active_on_startup;
6376 Widget Sql_Database_query_on_startup_data;
6377 Widget Sql_Database_host_data;
6378 Widget Sql_Database_iport_data; // = sp, tcp port number on which to connect to database server
6379 Widget Sql_Database_comment;
6380 Widget Sql_Database_password_data;
6381 Widget Sql_Database_transmit_data;
6382 Widget Sql_Database_reconnect_data;
6383 int Sql_Database_port; // xastir interface port number, not tcp/ip port
6384 Widget Sql_Database_username_data;
6385 Widget Sql_Database_schema_name_data;
6386
6387 // lesstif combo boxes are not fully implemented.
6388 // replace combo box with a fake combo box made out of a menu when only lesstif is available
6389 #ifdef USE_COMBO_BOX
6390 Widget Sql_Database_dbms_data;
6391 #else
6392 int sddd_value; // integer value of the currently selected item (replicating ordinal position in picklist)
6393 Widget sddd_button; // button to bring up the picklist
6394 Widget sddd_buttons[3];
6395 Widget sddd_menuPane; /// menu that acts as the picklist of dbms types
6396 Widget sddd_menu; /// menu top level
6397 #endif // USE_COMBO_BOX
6398 Widget sddd_widget; // widget used to bind next control in either use combo box or not cases.
6399
6400 Widget Sql_Database_unix_socket_data;
6401 Widget Sql_Database_schema_type_data;
6402 Widget Sql_Database_errormessage_data; // display most recent error message on connection
6403
6404
6405
6406
6407
6408 #ifdef HAVE_MYSQL
6409 // Set the values on the user interface to an appropriate set
6410 // of defaults for connecting to a mysql database.
Sql_Database_set_defaults_mysql(Widget widget,XtPointer clientData,XtPointer callData)6411 void Sql_Database_set_defaults_mysql(Widget widget, XtPointer clientData, XtPointer callData)
6412 {
6413 XmString cb_item;
6414 //cb_item = XmStringCreateLtoR("MySQL (lat/long)", XmFONTLIST_DEFAULT_TAG);
6415 cb_item = XmStringCreateLtoR(&xastir_dbms_type[DB_MYSQL][0], XmFONTLIST_DEFAULT_TAG);
6416 //cb_item = XmStringCreateLtoR("MySQL (spatial)", XmFONTLIST_DEFAULT_TAG);
6417 #ifdef HAVE_MYSQL_SPATIAL
6418 cb_item = XmStringCreateLtoR(&xastir_dbms_type[DB_MYSQL_SPATIAL][0], XmFONTLIST_DEFAULT_TAG);
6419 #endif /* HAVE_MYSQL_SPATIAL */
6420 #ifdef USE_COMBO_BOX
6421 XmComboBoxSelectItem(Sql_Database_dbms_data,cb_item);
6422 #else
6423 XtVaSetValues(sddd_menu, XmNmenuHistory, sddd_buttons[DB_MYSQL_SPATIAL], NULL);
6424 sddd_value = DB_MYSQL_SPATIAL;
6425 #endif // USE_COMBO_BOX
6426 XmStringFree(cb_item);
6427 //cb_item = XmStringCreateLtoR("Xastir - simple", XmFONTLIST_DEFAULT_TAG);
6428 cb_item = XmStringCreateLtoR(&xastir_schema_type[XASTIR_SCHEMA_SIMPLE][0], XmFONTLIST_DEFAULT_TAG);
6429 XmComboBoxSelectItem(Sql_Database_schema_type_data,cb_item);
6430 XmStringFree(cb_item);
6431 XmToggleButtonSetState(Sql_Database_active_on_startup,TRUE,FALSE);
6432 XmToggleButtonSetState(Sql_Database_transmit_data,TRUE,FALSE);
6433 XmTextFieldSetString(Sql_Database_host_data,"localhost");
6434 XmTextFieldSetString(Sql_Database_iport_data,"3306");
6435 XmTextFieldSetString(Sql_Database_username_data,"xastir_user");
6436 XmTextFieldSetString(Sql_Database_schema_name_data,"xastir");
6437 // ** get default from mysql_config at configure time
6438 XmTextFieldSetString(Sql_Database_unix_socket_data,"/var/lib/mysql/mysql.sock");
6439 XmTextFieldSetString(Sql_Database_comment,"");
6440 XmToggleButtonSetState(Sql_Database_reconnect_data,FALSE,FALSE);
6441 // don't set Sql_Database_errormessage_data - leave most recent error message visible
6442 }
6443 #endif /* HAVE_MYSQL */
6444
6445
6446
6447
6448
6449 #ifdef HAVE_POSTGIS
6450 // Set the values on the user interface to an appropriate set
6451 // of defaults for connecting to a postgresql database.
Sql_Database_set_defaults_postgis(Widget widget,XtPointer clientData,XtPointer callData)6452 void Sql_Database_set_defaults_postgis(Widget widget, XtPointer clientData, XtPointer callData)
6453 {
6454 XmString cb_item;
6455 //cb_item = XmStringCreateLtoR("Postgres/Postgis", XmFONTLIST_DEFAULT_TAG);
6456 cb_item = XmStringCreateLtoR(&xastir_dbms_type[DB_POSTGIS][0], XmFONTLIST_DEFAULT_TAG);
6457 #ifdef USE_COMBO_BOX
6458 XmComboBoxSelectItem(Sql_Database_dbms_data,cb_item);
6459 #else
6460 XtVaSetValues(sddd_menu, XmNmenuHistory, sddd_buttons[DB_POSTGIS], NULL);
6461 sddd_value = DB_POSTGIS;
6462 #endif // USE_COMBO_BOX
6463 XmStringFree(cb_item);
6464 //cb_item = XmStringCreateLtoR("Xastir - simple", XmFONTLIST_DEFAULT_TAG);
6465 cb_item = XmStringCreateLtoR(&xastir_schema_type[XASTIR_SCHEMA_SIMPLE][0], XmFONTLIST_DEFAULT_TAG);
6466 XmComboBoxSelectItem(Sql_Database_schema_type_data,cb_item);
6467 XmStringFree(cb_item);
6468 XmToggleButtonSetState(Sql_Database_active_on_startup,TRUE,FALSE);
6469 XmToggleButtonSetState(Sql_Database_transmit_data,TRUE,FALSE);
6470 XmTextFieldSetString(Sql_Database_host_data,"localhost");
6471 XmTextFieldSetString(Sql_Database_iport_data,"5432");
6472 XmTextFieldSetString(Sql_Database_username_data,"xastir_user");
6473 XmTextFieldSetString(Sql_Database_schema_name_data,"xastir");
6474 // ** get default from mysql_config at configure time
6475 XmTextFieldSetString(Sql_Database_unix_socket_data,"");
6476 XmTextFieldSetString(Sql_Database_comment,"");
6477 XmToggleButtonSetState(Sql_Database_reconnect_data,FALSE,FALSE);
6478 // don't set Sql_Database_errormessage_data - leave most recent error message visible
6479 }
6480 #endif /* HAVE_POSTGIS */
6481
6482
6483
6484
6485
6486 // Destroy the dialog used to set properties for a SQL database interface.
Sql_Database_destroy_shell(Widget widget,XtPointer clientData,XtPointer callData)6487 void Sql_Database_destroy_shell( Widget widget, XtPointer clientData, XtPointer callData)
6488 {
6489 Widget shell = (Widget) clientData;
6490 XtPopdown(shell);
6491 XtDestroyWidget(shell);
6492 config_Sql_Database_dialog = (Widget)NULL;
6493 if (choose_interface_dialog != NULL)
6494 {
6495 Choose_interface_destroy_shell(choose_interface_dialog,choose_interface_dialog,NULL);
6496 }
6497
6498 choose_interface_dialog = (Widget)NULL;
6499 }
6500
6501
6502
6503
6504
6505
6506 /* Callback for OK button on SQL database interface properties dialog.
6507 Creates a new interface with the parameters provided in the dialog, or
6508 alters the values of the selected interface that was displayed in the
6509 dialog.
6510 Differs from other interfaces in that an active database connection needs
6511 to be started from the interface parameters.
6512 */
Sql_Database_change_data(Widget widget,XtPointer clientData,XtPointer callData)6513 void Sql_Database_change_data(Widget widget, XtPointer clientData, XtPointer callData)
6514 {
6515 int was_up; // flag to restart connection with new parameters
6516 char *temp_ptr; // temporary variable for retrieving string data from XmTextFields
6517 int cb_selected; // temporary variable for retrieving combo box selections
6518
6519 // change to use code from db_gis.c
6520
6521 busy_cursor(appshell);
6522 was_up=0;
6523
6524 if (debug_level & 2)
6525 {
6526 fprintf(stderr,"Storing SQL Database interface on port %d\n",Sql_Database_port);
6527 }
6528 // determine if there is an active connection based on this interface,
6529 // if so, stop it and restart after changes have been made.
6530 if (get_device_status(Sql_Database_port) == DEVICE_IN_USE)
6531 {
6532 /* if active shutdown before changes are made */
6533 fprintf(stderr,"Device is up, disconnecting from database \n");
6534 was_up=1;
6535
6536 // close connection
6537
6538 }
6539
6540 // This needs to be a unitary transaction for other interfaces as we don't
6541 // want to read/write data from an interface while its configuration is in an
6542 // inconsistent state. In this case (SQL databases, we still need this to be
6543 // a unitary transaction in case a new connection is created while the
6544 // configuration is in an inconsistent state.
6545 begin_critical_section(&devices_lock, "interface_gui.c:Sql_Database_change_data" );
6546
6547 // ** set the interface values needed to make a connection to a database **
6548
6549 // hostname
6550 temp_ptr = XmTextFieldGetString(Sql_Database_host_data);
6551 xastir_snprintf(devices[Sql_Database_port].device_host_name,
6552 sizeof(devices[Sql_Database_port].device_host_name),
6553 "%s",
6554 temp_ptr);
6555 XtFree(temp_ptr);
6556 (void)remove_trailing_spaces(devices[Sql_Database_port].device_host_name);
6557
6558 //port
6559 temp_ptr = XmTextFieldGetString(Sql_Database_iport_data);
6560 devices[Sql_Database_port].sp=atoi(temp_ptr);
6561 XtFree(temp_ptr);
6562
6563 //username
6564 temp_ptr = XmTextFieldGetString(Sql_Database_username_data);
6565 xastir_snprintf(devices[Sql_Database_port].database_username,
6566 sizeof(devices[Sql_Database_port].database_username),
6567 "%s",
6568 temp_ptr);
6569 XtFree(temp_ptr);
6570 (void)remove_trailing_spaces(devices[Sql_Database_port].device_host_pswd);
6571
6572 //password
6573 temp_ptr = XmTextFieldGetString(Sql_Database_password_data);
6574 xastir_snprintf(devices[Sql_Database_port].device_host_pswd,
6575 sizeof(devices[Sql_Database_port].device_host_pswd),
6576 "%s",
6577 temp_ptr);
6578 XtFree(temp_ptr);
6579 (void)remove_trailing_spaces(devices[Sql_Database_port].device_host_pswd);
6580
6581 // schema name
6582 temp_ptr = XmTextFieldGetString(Sql_Database_schema_name_data);
6583 xastir_snprintf(devices[Sql_Database_port].database_schema,
6584 sizeof(devices[Sql_Database_port].database_schema),
6585 "%s",
6586 temp_ptr);
6587 XtFree(temp_ptr);
6588 (void)remove_trailing_spaces(devices[Sql_Database_port].database_schema);
6589
6590 // database type
6591 cb_selected = FALSE;
6592 #ifdef USE_COMBO_BOX
6593 XtVaGetValues(Sql_Database_dbms_data,XmNselectedPosition, &cb_selected, NULL);
6594 #else
6595 // find out the value of the latest selection from the Sql_Databas_dbms_data_menu
6596 cb_selected = sddd_value;
6597 #endif
6598
6599 if (cb_selected)
6600 {
6601 devices[Sql_Database_port].database_type = cb_selected;
6602 }
6603 else
6604 {
6605 // If no selection,
6606 // default to mysql non-spatial, unless postgis is available.
6607 #ifdef HAVE_POSTGIS
6608 devices[Sql_Database_port].database_type = DB_POSTGIS;
6609 #endif /* HAVE_POSTGIS */
6610 #ifdef HAVE_MYSQL
6611 devices[Sql_Database_port].database_type = DB_MYSQL;
6612 #endif /* HAVE_MYSQL */
6613 }
6614
6615 // schema type
6616 cb_selected = FALSE;
6617 XtVaGetValues(Sql_Database_schema_type_data,XmNselectedPosition, &cb_selected, NULL);
6618
6619 if (cb_selected)
6620 {
6621 devices[Sql_Database_port].database_schema_type = cb_selected;
6622 }
6623 else
6624 {
6625 // If no selection, default to simple schema.
6626 devices[Sql_Database_port].database_schema_type = XASTIR_SCHEMA_SIMPLE;
6627 }
6628
6629 // unix socket
6630 temp_ptr = XmTextFieldGetString(Sql_Database_unix_socket_data);
6631 xastir_snprintf(devices[Sql_Database_port].database_unix_socket,
6632 sizeof(devices[Sql_Database_port].database_unix_socket),
6633 "%s",
6634 temp_ptr);
6635 XtFree(temp_ptr);
6636 (void)remove_trailing_spaces(devices[Sql_Database_port].database_unix_socket);
6637
6638 // reset the error message to a blank
6639 xastir_snprintf(devices[Sql_Database_port].database_errormessage,
6640 sizeof(devices[Sql_Database_port].database_errormessage),
6641 " ");
6642
6643 // ** set additional interface values **
6644
6645 // comment to display on interface list
6646 temp_ptr = XmTextFieldGetString(Sql_Database_comment);
6647 xastir_snprintf(devices[Sql_Database_port].comment,
6648 sizeof(devices[Sql_Database_port].comment),
6649 "%s",
6650 temp_ptr);
6651 XtFree(temp_ptr);
6652 (void)remove_trailing_spaces(devices[Sql_Database_port].comment);
6653
6654 // activate on startup
6655 if(XmToggleButtonGetState(Sql_Database_active_on_startup))
6656 {
6657 devices[Sql_Database_port].connect_on_startup=1;
6658 }
6659 else
6660 {
6661 devices[Sql_Database_port].connect_on_startup=0;
6662 }
6663
6664 // query on startup
6665 if(XmToggleButtonGetState(Sql_Database_query_on_startup_data))
6666 {
6667 devices[Sql_Database_port].query_on_startup=1;
6668 }
6669 else
6670 {
6671 devices[Sql_Database_port].query_on_startup=0;
6672 }
6673
6674 // allow saving data
6675 if(XmToggleButtonGetState(Sql_Database_transmit_data))
6676 {
6677 devices[Sql_Database_port].transmit_data=1;
6678 }
6679 else
6680 {
6681 devices[Sql_Database_port].transmit_data=0;
6682 }
6683
6684 // reconnect on database connection failure
6685 if(XmToggleButtonGetState(Sql_Database_reconnect_data))
6686 {
6687 devices[Sql_Database_port].reconnect=1;
6688 }
6689 else
6690 {
6691 devices[Sql_Database_port].reconnect=0;
6692 }
6693
6694 if (was_up)
6695 {
6696 // If the connection was allready open when we started then reconnect
6697 // and reopen the database connection with the new parameters.
6698 if (openConnection(&devices[Sql_Database_port],&connections[Sql_Database_port])==1)
6699 {
6700 port_data[Sql_Database_port].status = DEVICE_UP;
6701 }
6702 else
6703 {
6704 port_data[Sql_Database_port].status = DEVICE_ERROR;
6705 }
6706 }
6707
6708 /* add device type */
6709 devices[Sql_Database_port].device_type=DEVICE_SQL_DATABASE;
6710
6711 end_critical_section(&devices_lock, "interface_gui.c:Sql_Database_change_data" );
6712
6713 // Rebuild the interface control list
6714 update_interface_list();
6715
6716 // close the dialog
6717 Sql_Database_destroy_shell(widget,clientData,callData);
6718 if (debug_level & 2)
6719 {
6720 fprintf(stderr,"Done storing sql interface parameters\n");
6721 }
6722 }
6723
6724
6725
6726 #ifndef USE_COMBO_BOX
sddd_menuCallback(Widget widget,XtPointer ptr,XtPointer callData)6727 void sddd_menuCallback(Widget widget, XtPointer ptr, XtPointer callData)
6728 {
6729 XtPointer userData;
6730
6731 XtVaGetValues(widget, XmNuserData, &userData, NULL);
6732 //sddd_menu is zero based, constants for database types are one based.
6733 sddd_value = (int)userData + 1;
6734 if (debug_level & 4096)
6735 {
6736 fprintf(stderr,"Selected value on dbms pulldown: %d\n",sddd_value);
6737 }
6738 }
6739 #endif // USE_COMBO_BOX
6740
6741
6742
6743
6744
6745 /* dialog to obtain connection parameters for a SQL server (MySQL/Postgresql)
6746 * database for spatialy enabled database support
6747 */
Config_sql_Database(Widget w,int config_type,int port)6748 void Config_sql_Database( Widget w, int config_type, int port)
6749 {
6750 static Widget pane, scrollwindow, form, button_ok, button_cancel, label_dbms, label_schema_type,
6751 ihost, iport, password, unix_socket, error_message,
6752 sep, comment, username, schema_name;
6753 static Widget button_mysql_defaults; // set form values to defaults for mysql
6754 static Widget button_postgis_defaults; // set form values to deaults for postgresql/postgis
6755 Dimension width, height;
6756 int defaults_set; // Have defaults been set on form for new interface?
6757 // Used to make only a single set defaults call when
6758 // support for multiple types of dbms are available.
6759
6760 Atom delw;
6761 char temp[40];
6762 XmString cb_item;
6763 XmString *cb_items[2];
6764 int x;
6765 #ifndef USE_COMBO_BOX
6766 int i; // loop counter
6767 Arg args[12]; // available for XtSetArguments
6768 char buf[18];
6769 char *tmp;
6770 #endif // !USE_COMBO_BOX
6771 /*
6772 // configuration parameters for a sql server database
6773 char database_username[20]; // username to use to connect to database
6774 // default xastir
6775 int database_type; // type of dbms (posgresql, mysql, etc)
6776 // default mysql
6777 char database_schema[20]; // name of database or schema to use
6778 // default xastir
6779 char database_errormessage[255]; // most recent error message from
6780 attempting to make a
6781 connection with using this descriptor.
6782 int database_schema_type; // table structures to use in the database
6783 A database schema could contain both APRSWorld
6784 and XASTIR table structures, but a separate database
6785 descriptor should be defined for each.
6786 // default simple
6787 char database_unix_socket[255]; // MySQL - unix socket parameter (path and
6788 filename)
6789 // device_host_name = hostname for database server
6790 // sp = port on which to connect to database server (Not database_port)
6791 // device_host_password = password to use to connect to database -- security issue needs to be addressed
6792 */
6793
6794 if(!config_Sql_Database_dialog)
6795 {
6796 // port is position in xastir interface list, not tcp port on which to connect
6797 Sql_Database_port=port;
6798
6799 // SQL Server Database
6800 config_Sql_Database_dialog = XtVaCreatePopupShell("SQL Server Database",
6801 xmDialogShellWidgetClass, appshell,
6802 XmNdeleteResponse, XmDESTROY,
6803 XmNdefaultPosition, FALSE,
6804 XmNfontList, fontlist1,
6805 NULL);
6806
6807 pane = XtVaCreateWidget("Config_Database pane",xmPanedWindowWidgetClass, config_Sql_Database_dialog,
6808 XmNbackground, colors[0xff],
6809 NULL);
6810
6811 scrollwindow = XtVaCreateManagedWidget("scrollwindow",
6812 xmScrolledWindowWidgetClass,
6813 pane,
6814 XmNscrollingPolicy, XmAUTOMATIC,
6815 NULL);
6816
6817 form = XtVaCreateWidget("Config_Database form",
6818 xmFormWidgetClass,
6819 scrollwindow,
6820 XmNfractionBase, 13,
6821 XmNbackground, colors[0xff],
6822 XmNautoUnmanage, FALSE,
6823 XmNshadowThickness, 1,
6824 NULL);
6825
6826 // Activate on startup
6827 Sql_Database_active_on_startup = XtVaCreateManagedWidget(langcode("UNIOP00011"),xmToggleButtonWidgetClass,form,
6828 XmNnavigationType, XmTAB_GROUP,
6829 XmNtraversalOn, TRUE,
6830 XmNtopAttachment, XmATTACH_FORM,
6831 XmNtopOffset, 10,
6832 XmNbottomAttachment, XmATTACH_NONE,
6833 XmNleftAttachment, XmATTACH_FORM,
6834 XmNleftOffset, 10,
6835 XmNrightAttachment, XmATTACH_NONE,
6836 XmNbackground, colors[0xff],
6837 XmNfontList, fontlist1,
6838 NULL);
6839
6840 // DMBS
6841 label_dbms = XtVaCreateManagedWidget("Database:",xmLabelWidgetClass, form,
6842 XmNtopAttachment, XmATTACH_FORM,
6843 XmNtopOffset, 15,
6844 XmNbottomAttachment, XmATTACH_NONE,
6845 XmNleftAttachment, XmATTACH_WIDGET,
6846 XmNleftWidget, Sql_Database_active_on_startup,
6847 XmNleftOffset, 10,
6848 XmNrightAttachment, XmATTACH_NONE,
6849 XmNbackground, colors[0xff],
6850 XmNfontList, fontlist1,
6851 NULL);
6852 // Combo box to pick dbms
6853 cb_items [0] = (XmString *) XtMalloc ( sizeof (XmString) * 4 );
6854 // Combo box items are defined by xastir_dbms_type, defined in db_gis.c
6855 cb_items[0][0] = XmStringCreateLtoR( &xastir_dbms_type[1][0], XmFONTLIST_DEFAULT_TAG);
6856 cb_items[0][1] = XmStringCreateLtoR( &xastir_dbms_type[2][0], XmFONTLIST_DEFAULT_TAG);
6857 cb_items[0][2] = XmStringCreateLtoR( &xastir_dbms_type[3][0], XmFONTLIST_DEFAULT_TAG);
6858 // mysql
6859 //cb_items[0][0] = XmStringCreateLtoR("MySQL (lat/long)", XmFONTLIST_DEFAULT_TAG);
6860 // postgresql
6861 //cb_items[0][1] = XmStringCreateLtoR("Postgres/Postgis", XmFONTLIST_DEFAULT_TAG);
6862 // mysql with spatial extensions
6863 //cb_items[0][2] = XmStringCreateLtoR("MySQL (spatial)", XmFONTLIST_DEFAULT_TAG);
6864 cb_items[0][3] = NULL;
6865 #ifdef USE_COMBO_BOX
6866 Sql_Database_dbms_data = XtVaCreateManagedWidget("select dbms", xmComboBoxWidgetClass, form,
6867 XmNtopAttachment, XmATTACH_FORM,
6868 XmNtopOffset, 5,
6869 XmNbottomAttachment, XmATTACH_NONE,
6870 XmNleftAttachment, XmATTACH_WIDGET,
6871 XmNleftWidget, label_dbms,
6872 XmNleftOffset, 1,
6873 XmNrightAttachment, XmATTACH_NONE,
6874 XmNitems, cb_items[0],
6875 XmNitemCount, 3,
6876 XmNnavigationType, XmTAB_GROUP,
6877 XmNcomboBoxType, XmDROP_DOWN_LIST,
6878 XmNpositionMode, XmONE_BASED,
6879 XmNmatchBehavior, XmQUICK_NAVIGATE,
6880 MY_FOREGROUND_COLOR,
6881 MY_BACKGROUND_COLOR,
6882 XmNfontList, fontlist1,
6883 NULL);
6884 sddd_widget = Sql_Database_dbms_data;
6885 #else
6886 // lesstif, at least as of version 0.95 in 2008, doesn't fully support combo boxes.
6887 //
6888 // lesstif 0.94 doesn't support adding items to the list on creation through XmNitems
6889 // lesstif 0.94 combo boxes don't have means to set currently selected value
6890 // or to retrieve currently selected value.
6891 //
6892 // Need to replace combo boxes with a pull down menu when lesstif is used.
6893 // See xpdf's XPDFViewer.cc/XPDFViewer.h for an example.
6894 //
6895 // Fake a combo box with a menu, as done by xpdf in in XPDFViewer.cc
6896 //
6897 // create widgets and populate menu
6898 // sddd_ abbreviates name of single control that is being replaced: Sql_Database_dbms_data
6899 // sddd_value // numberic value for the database dbms type
6900 // sddd_button // picklist item
6901 // sddd_menu // menu that acts as the picklist of dbms types
6902 x = 0;
6903 XtSetArg(args[x], XmNmarginWidth, 0);
6904 ++x;
6905 XtSetArg(args[x], XmNmarginHeight, 0);
6906 ++x;
6907 sddd_menuPane = XmCreatePulldownMenu(form,"sddd_menuPane", args, x);
6908 //sddd_menu is zero based, constants for database types are one based.
6909 //sddd_value is set to match constants in callback.
6910 for (i=0; i<3; i++)
6911 {
6912 x = 0;
6913 XmStringGetLtoR(cb_items[0][i],XmFONTLIST_DEFAULT_TAG,&tmp);
6914 XtSetArg(args[x], XmNlabelString, cb_items[0][i]);
6915 x++;
6916 XtSetArg(args[x], XmNuserData, (XtPointer)i);
6917 x++;
6918 XtSetArg(args[x], XmNfontList, fontlist1);
6919 x++;
6920 sprintf(buf,"button%d",i);
6921 sddd_button = XmCreatePushButton(sddd_menuPane, buf, args, x);
6922 XtManageChild(sddd_button);
6923 XtAddCallback(sddd_button, XmNactivateCallback, sddd_menuCallback, config_Sql_Database_dialog);
6924 sddd_buttons[i] = sddd_button;
6925 }
6926 x = 0;
6927 XtSetArg(args[x], XmNleftAttachment, XmATTACH_WIDGET);
6928 ++x;
6929 XtSetArg(args[x], XmNleftWidget, label_dbms);
6930 ++x;
6931 XtSetArg(args[x], XmNtopAttachment, XmATTACH_FORM);
6932 ++x;
6933 XtSetArg(args[x], XmNmarginWidth, 0);
6934 ++x;
6935 XtSetArg(args[x], XmNmarginHeight, 0);
6936 ++x;
6937 XtSetArg(args[x], XmNtopOffset, 7);
6938 ++x;
6939 XtSetArg(args[x], XmNleftOffset, 1);
6940 ++x;
6941 XtSetArg(args[x], XmNsubMenuId, sddd_menuPane);
6942 ++x;
6943 sddd_menu = XmCreateOptionMenu(form, "sddd_Menu", args, x);
6944 XtManageChild(sddd_menu);
6945 sddd_widget = sddd_menu;
6946 #endif
6947 // free up the XmStrings used to create the picklist
6948 x=0;
6949 while ( cb_items[0][x] )
6950 {
6951 XmStringFree ( cb_items[0][x++] );
6952 }
6953 x=0;
6954 XtFree ( (char *) cb_items[0] );
6955
6956 // *** when localizing these strings propagate the localizations to
6957 // the set default functions above and to constants for picklist
6958 // selection recognition. ***
6959 //cb_item = XmStringCreateLtoR(&xastir_dbms_type[DB_MYSQL][0], XmFONTLIST_DEFAULT_TAG);
6960 //XmComboBoxAddItem(Sql_Database_dbms_data,cb_item,1,1);
6961 //XmStringFree(cb_item);
6962 //cb_item = XmStringCreateLtoR(&xastir_dbms_type[DB_POSTGIS][0], XmFONTLIST_DEFAULT_TAG);
6963 //XmComboBoxAddItem(Sql_Database_dbms_data,cb_item,2,1);
6964 //XmStringFree(cb_item);
6965 //cb_item = XmStringCreateLtoR(&xastir_dbms_type[DB_MYSQL_SPATIAL][0], XmFONTLIST_DEFAULT_TAG);
6966 //XmComboBoxAddItem(Sql_Database_dbms_data,cb_item,3,1);
6967 //XmStringFree(cb_item);
6968
6969 // Schema Type
6970 label_schema_type = XtVaCreateManagedWidget("With Tables for",xmLabelWidgetClass, form,
6971 XmNtopAttachment, XmATTACH_FORM,
6972 XmNtopOffset, 15,
6973 XmNbottomAttachment, XmATTACH_NONE,
6974 XmNleftAttachment, XmATTACH_WIDGET,
6975 XmNleftWidget, sddd_widget,
6976 XmNleftOffset, 10,
6977 XmNrightAttachment, XmATTACH_NONE,
6978 XmNbackground, colors[0xff],
6979 XmNfontList, fontlist1,
6980 NULL);
6981 // Combo box to pick schema
6982 Sql_Database_schema_type_data = XtVaCreateManagedWidget("Tables to use", xmComboBoxWidgetClass, form,
6983 XmNtopAttachment, XmATTACH_FORM,
6984 XmNtopOffset, 5,
6985 XmNbottomAttachment, XmATTACH_NONE,
6986 XmNleftAttachment, XmATTACH_WIDGET,
6987 XmNleftWidget, label_schema_type,
6988 XmNleftOffset, 1,
6989 XmNrightAttachment, XmATTACH_NONE,
6990 XmNnavigationType, XmTAB_GROUP,
6991 XmNcomboBoxType, XmDROP_DOWN_LIST,
6992 XmNpositionMode, XmONE_BASED,
6993 XmNvisibleItemCount, 3,
6994 MY_FOREGROUND_COLOR,
6995 MY_BACKGROUND_COLOR,
6996 XmNfontList, fontlist1,
6997 NULL);
6998 // *** need to add constants for order and localization ***
6999 // ? use an array - schm_typ[XASTIR_SCHEMA_SIMPLE]=langcode("codeforxastirsimple").... ?
7000 // ?or some other form of key-value pairs?
7001
7002 // simple
7003 //cb_item = XmStringCreateLtoR("Xastir - simple", XmFONTLIST_DEFAULT_TAG);
7004 cb_item = XmStringCreateLtoR(&xastir_schema_type[XASTIR_SCHEMA_SIMPLE][0], XmFONTLIST_DEFAULT_TAG);
7005 XmComboBoxAddItem(Sql_Database_schema_type_data,cb_item,1,1);
7006 XmStringFree(cb_item);
7007
7008 /* not yet implemented
7009 // aprs world
7010 cb_item = XmStringCreateLtoR("APRSWorld", XmFONTLIST_DEFAULT_TAG);
7011 XmComboBoxAddItem(cad_line_style_data,cb_item,2,1);
7012 XmStringFree(cb_item);
7013
7014 // full
7015 cb_item = XmStringCreateLtoR("Xastir - full", XmFONTLIST_DEFAULT_TAG);
7016 XmComboBoxAddItem(cad_line_style_data,cb_item,2,1);
7017 XmStringFree(cb_item);
7018
7019 // cad
7020 cb_item = XmStringCreateLtoR("Xastir - CAD", XmFONTLIST_DEFAULT_TAG);
7021 XmComboBoxAddItem(cad_line_style_data,cb_item,2,1);
7022 XmStringFree(cb_item);
7023 */
7024
7025 // Store data
7026 Sql_Database_transmit_data = XtVaCreateManagedWidget("Store incoming data",xmToggleButtonWidgetClass,form,
7027 XmNnavigationType, XmTAB_GROUP,
7028 XmNtraversalOn, TRUE,
7029 XmNtopAttachment, XmATTACH_WIDGET,
7030 XmNtopWidget, sddd_widget,
7031 XmNtopOffset, 5,
7032 XmNbottomAttachment, XmATTACH_NONE,
7033 XmNleftAttachment, XmATTACH_FORM,
7034 XmNleftOffset, 10,
7035 XmNrightAttachment, XmATTACH_NONE,
7036 XmNbackground, colors[0xff],
7037 XmNfontList, fontlist1,
7038 NULL);
7039
7040 // Retrieve data on start
7041 Sql_Database_query_on_startup_data = XtVaCreateManagedWidget("Load data on start",xmToggleButtonWidgetClass,form,
7042 XmNnavigationType, XmTAB_GROUP,
7043 XmNtraversalOn, TRUE,
7044 XmNtopAttachment, XmATTACH_WIDGET,
7045 XmNtopWidget, sddd_widget,
7046 XmNtopOffset, 5,
7047 XmNbottomAttachment, XmATTACH_NONE,
7048 XmNleftAttachment, XmATTACH_WIDGET,
7049 XmNleftWidget, Sql_Database_transmit_data,
7050 XmNleftOffset, 15,
7051 XmNrightAttachment, XmATTACH_NONE,
7052 XmNbackground, colors[0xff],
7053 XmNfontList, fontlist1,
7054 NULL);
7055
7056 // put retieve now button here.
7057
7058 // hostname
7059 ihost = XtVaCreateManagedWidget(langcode("WPUPCFID02"),xmLabelWidgetClass, form,
7060 XmNtopAttachment, XmATTACH_WIDGET,
7061 XmNtopWidget, Sql_Database_transmit_data,
7062 XmNtopOffset, 5,
7063 XmNbottomAttachment, XmATTACH_NONE,
7064 XmNleftAttachment, XmATTACH_FORM,
7065 XmNleftOffset, 10,
7066 XmNrightAttachment, XmATTACH_NONE,
7067 XmNbackground, colors[0xff],
7068 XmNfontList, fontlist1,
7069 NULL);
7070 Sql_Database_host_data = XtVaCreateManagedWidget("Config_Database host_data", xmTextFieldWidgetClass, form,
7071 XmNnavigationType, XmTAB_GROUP,
7072 XmNtraversalOn, TRUE,
7073 XmNeditable, TRUE,
7074 XmNcursorPositionVisible, TRUE,
7075 XmNsensitive, TRUE,
7076 XmNshadowThickness, 1,
7077 XmNcolumns, 55,
7078 XmNmaxLength, 255,
7079 XmNbackground, colors[0x0f],
7080 XmNtopAttachment, XmATTACH_WIDGET,
7081 XmNtopWidget, Sql_Database_transmit_data,
7082 XmNbottomAttachment, XmATTACH_NONE,
7083 XmNleftAttachment, XmATTACH_WIDGET,
7084 XmNleftWidget, ihost,
7085 XmNleftOffset, 1,
7086 XmNrightAttachment, XmATTACH_NONE,
7087 XmNfontList, fontlist1,
7088 NULL);
7089
7090 // tcp port for server, not xastir interface port
7091 // port
7092 iport = XtVaCreateManagedWidget(langcode("WPUPCFID03"),xmLabelWidgetClass, form,
7093 XmNtopAttachment, XmATTACH_WIDGET,
7094 XmNtopWidget, Sql_Database_transmit_data,
7095 XmNtopOffset, 5,
7096 XmNbottomAttachment, XmATTACH_NONE,
7097 XmNleftAttachment, XmATTACH_WIDGET,
7098 XmNleftWidget, Sql_Database_host_data,
7099 XmNleftOffset, 10,
7100 XmNrightAttachment, XmATTACH_NONE,
7101 XmNbackground, colors[0xff],
7102 XmNfontList, fontlist1,
7103 NULL);
7104
7105 Sql_Database_iport_data = XtVaCreateManagedWidget("Config_Database port_data", xmTextFieldWidgetClass, form,
7106 XmNnavigationType, XmTAB_GROUP,
7107 XmNtraversalOn, TRUE,
7108 XmNeditable, TRUE,
7109 XmNcursorPositionVisible, TRUE,
7110 XmNsensitive, TRUE,
7111 XmNshadowThickness, 1,
7112 XmNcolumns, 5,
7113 XmNmaxLength, 6,
7114 XmNbackground, colors[0x0f],
7115 XmNtopAttachment, XmATTACH_WIDGET,
7116 XmNtopWidget, Sql_Database_transmit_data,
7117 XmNbottomAttachment, XmATTACH_NONE,
7118 XmNleftAttachment, XmATTACH_WIDGET,
7119 XmNleftWidget, iport,
7120 XmNleftOffset, 1,
7121 XmNrightAttachment, XmATTACH_NONE,
7122 XmNfontList, fontlist1,
7123 NULL);
7124
7125 // Username
7126 username = XtVaCreateManagedWidget("Username",xmLabelWidgetClass, form,
7127 XmNtopAttachment, XmATTACH_WIDGET,
7128 XmNtopWidget, Sql_Database_host_data,
7129 XmNtopOffset, 5,
7130 XmNbottomAttachment, XmATTACH_NONE,
7131 XmNleftAttachment, XmATTACH_FORM,
7132 XmNleftOffset, 10,
7133 XmNrightAttachment, XmATTACH_NONE,
7134 XmNbackground, colors[0xff],
7135 XmNfontList, fontlist1,
7136 NULL);
7137
7138 Sql_Database_username_data = XtVaCreateManagedWidget("Config_Database username_data", xmTextFieldWidgetClass, form,
7139 XmNnavigationType, XmTAB_GROUP,
7140 XmNtraversalOn, TRUE,
7141 XmNeditable, TRUE,
7142 XmNcursorPositionVisible, TRUE,
7143 XmNsensitive, TRUE,
7144 XmNshadowThickness, 1,
7145 XmNcolumns, 15,
7146 XmNmaxLength, 25,
7147 XmNbackground, colors[0x0f],
7148 XmNtopAttachment, XmATTACH_WIDGET,
7149 XmNtopWidget, Sql_Database_host_data,
7150 XmNbottomAttachment, XmATTACH_NONE,
7151 XmNleftAttachment, XmATTACH_WIDGET,
7152 XmNleftWidget, username,
7153 XmNleftOffset, 1,
7154 XmNrightAttachment, XmATTACH_NONE,
7155 XmNfontList, fontlist1,
7156 NULL);
7157 // Password
7158 password = XtVaCreateManagedWidget("Password",xmLabelWidgetClass, form,
7159 XmNtopAttachment, XmATTACH_WIDGET,
7160 XmNtopWidget, Sql_Database_host_data,
7161 XmNtopOffset, 5,
7162 XmNbottomAttachment, XmATTACH_NONE,
7163 XmNleftAttachment, XmATTACH_WIDGET,
7164 XmNleftWidget, Sql_Database_username_data,
7165 XmNleftOffset, 10,
7166 XmNrightAttachment, XmATTACH_NONE,
7167 XmNbackground, colors[0xff],
7168 XmNfontList, fontlist1,
7169 NULL);
7170
7171 Sql_Database_password_data = XtVaCreateManagedWidget("Config_Database password_data", xmTextFieldWidgetClass, form,
7172 XmNnavigationType, XmTAB_GROUP,
7173 XmNtraversalOn, TRUE,
7174 XmNeditable, TRUE,
7175 XmNcursorPositionVisible, TRUE,
7176 XmNsensitive, TRUE,
7177 XmNshadowThickness, 1,
7178 XmNcolumns, 15,
7179 XmNmaxLength, 20,
7180 XmNbackground, colors[0x0f],
7181 XmNleftAttachment, XmATTACH_WIDGET,
7182 XmNleftWidget, password,
7183 XmNleftOffset, 1,
7184 XmNtopAttachment, XmATTACH_WIDGET,
7185 XmNtopWidget, Sql_Database_host_data,
7186 XmNbottomAttachment, XmATTACH_NONE,
7187 XmNrightAttachment, XmATTACH_NONE,
7188 XmNfontList, fontlist1,
7189 NULL);
7190 // Schema/Database name
7191 schema_name = XtVaCreateManagedWidget("Schema/Database name",xmLabelWidgetClass, form,
7192 XmNtopAttachment, XmATTACH_WIDGET,
7193 XmNtopWidget, Sql_Database_username_data,
7194 XmNtopOffset, 10,
7195 XmNbottomAttachment, XmATTACH_NONE,
7196 XmNleftAttachment, XmATTACH_FORM,
7197 XmNleftOffset, 10,
7198 XmNrightAttachment, XmATTACH_NONE,
7199 XmNbackground, colors[0xff],
7200 XmNfontList, fontlist1,
7201 NULL);
7202
7203 Sql_Database_schema_name_data= XtVaCreateManagedWidget("Config_Database schema_name_data", xmTextFieldWidgetClass, form,
7204 XmNnavigationType, XmTAB_GROUP,
7205 XmNtraversalOn, TRUE,
7206 XmNeditable, TRUE,
7207 XmNcursorPositionVisible, TRUE,
7208 XmNsensitive, TRUE,
7209 XmNshadowThickness, 1,
7210 XmNcolumns, 25,
7211 XmNmaxLength, 50,
7212 XmNbackground, colors[0x0f],
7213 XmNleftAttachment, XmATTACH_WIDGET,
7214 XmNleftWidget, schema_name,
7215 XmNleftOffset, 1,
7216 XmNtopAttachment, XmATTACH_WIDGET,
7217 XmNtopWidget, Sql_Database_username_data,
7218 XmNtopOffset, 5,
7219 XmNbottomAttachment, XmATTACH_NONE,
7220 XmNrightAttachment, XmATTACH_NONE,
7221 XmNfontList, fontlist1,
7222 NULL);
7223
7224 // MySQL unix socket
7225 unix_socket = XtVaCreateManagedWidget("MySQL unix socket",xmLabelWidgetClass, form,
7226 XmNtopAttachment, XmATTACH_WIDGET,
7227 XmNtopWidget, Sql_Database_username_data,
7228 XmNtopOffset, 10,
7229 XmNbottomAttachment, XmATTACH_NONE,
7230 XmNleftAttachment, XmATTACH_WIDGET,
7231 XmNleftWidget, Sql_Database_schema_name_data,
7232 XmNleftOffset, 10,
7233 XmNrightAttachment, XmATTACH_NONE,
7234 XmNbackground, colors[0xff],
7235 XmNfontList, fontlist1,
7236 NULL);
7237
7238 Sql_Database_unix_socket_data = XtVaCreateManagedWidget("Config_Database unix_socket_data", xmTextFieldWidgetClass, form,
7239 XmNnavigationType, XmTAB_GROUP,
7240 XmNtraversalOn, TRUE,
7241 XmNeditable, TRUE,
7242 XmNcursorPositionVisible, TRUE,
7243 XmNsensitive, TRUE,
7244 XmNshadowThickness, 1,
7245 XmNcolumns, 30,
7246 XmNmaxLength, 190,
7247 XmNbackground, colors[0x0f],
7248 XmNleftAttachment, XmATTACH_WIDGET,
7249 XmNleftWidget, unix_socket,
7250 XmNleftOffset, 1,
7251 XmNtopAttachment, XmATTACH_WIDGET,
7252 XmNtopWidget, Sql_Database_username_data,
7253 XmNtopOffset, 5,
7254 XmNbottomAttachment, XmATTACH_NONE,
7255 XmNrightAttachment, XmATTACH_NONE,
7256 XmNfontList, fontlist1,
7257 NULL);
7258
7259 // comment
7260 comment = XtVaCreateManagedWidget(langcode("WPUPCFS017"),xmLabelWidgetClass, form,
7261 XmNtopAttachment, XmATTACH_WIDGET,
7262 XmNtopWidget, Sql_Database_schema_name_data,
7263 XmNtopOffset, 10,
7264 XmNbottomAttachment, XmATTACH_NONE,
7265 XmNleftAttachment, XmATTACH_FORM,
7266 XmNleftOffset, 10,
7267 XmNrightAttachment, XmATTACH_NONE,
7268 XmNbackground, colors[0xff],
7269 XmNfontList, fontlist1,
7270 NULL);
7271 Sql_Database_comment = XtVaCreateManagedWidget("Config_Database comment", xmTextFieldWidgetClass, form,
7272 XmNnavigationType, XmTAB_GROUP,
7273 XmNtraversalOn, TRUE,
7274 XmNeditable, TRUE,
7275 XmNcursorPositionVisible, TRUE,
7276 XmNsensitive, TRUE,
7277 XmNshadowThickness, 1,
7278 XmNcolumns, 25,
7279 XmNwidth, ((25*7)+2),
7280 XmNmaxLength, 49,
7281 XmNbackground, colors[0x0f],
7282 XmNtopAttachment, XmATTACH_WIDGET,
7283 XmNtopWidget, Sql_Database_schema_name_data,
7284 XmNtopOffset, 5,
7285 XmNbottomAttachment, XmATTACH_NONE,
7286 XmNleftAttachment, XmATTACH_WIDGET,
7287 XmNleftWidget, comment,
7288 XmNrightAttachment, XmATTACH_NONE,
7289 XmNfontList, fontlist1,
7290 NULL);
7291
7292 // reconnect on network failure
7293 Sql_Database_reconnect_data = XtVaCreateManagedWidget(langcode("WPUPCFID11"),xmToggleButtonWidgetClass,form,
7294 XmNnavigationType, XmTAB_GROUP,
7295 XmNtraversalOn, TRUE,
7296 XmNtopAttachment, XmATTACH_WIDGET,
7297 XmNtopWidget, Sql_Database_comment,
7298 XmNtopOffset, 5,
7299 XmNbottomAttachment, XmATTACH_NONE,
7300 XmNleftAttachment, XmATTACH_FORM,
7301 XmNleftOffset, 10,
7302 XmNrightAttachment, XmATTACH_NONE,
7303 XmNbackground, colors[0xff],
7304 XmNfontList, fontlist1,
7305 NULL);
7306
7307 // most recent error
7308 error_message = XtVaCreateManagedWidget("Most Recent Error:",xmLabelWidgetClass, form,
7309 XmNtopAttachment, XmATTACH_WIDGET,
7310 XmNtopWidget, Sql_Database_reconnect_data,
7311 XmNtopOffset, 10,
7312 XmNbottomAttachment, XmATTACH_NONE,
7313 XmNleftAttachment, XmATTACH_FORM,
7314 XmNleftOffset, 10,
7315 XmNrightAttachment, XmATTACH_NONE,
7316 XmNbackground, colors[0xff],
7317 XmNfontList, fontlist1,
7318 NULL);
7319 // error message isn't editable and isn't saved
7320 Sql_Database_errormessage_data = XtVaCreateManagedWidget("Config_Database error_message", xmTextFieldWidgetClass, form,
7321 XmNnavigationType, XmTAB_GROUP,
7322 XmNtraversalOn, TRUE,
7323 XmNeditable, FALSE,
7324 XmNcursorPositionVisible, TRUE,
7325 XmNsensitive, TRUE,
7326 XmNshadowThickness, 1,
7327 XmNcolumns, 79,
7328 XmNwidth, ((79*7)+2),
7329 XmNmaxLength, 255,
7330 XmNbackground, colors[0x0f],
7331 XmNtopAttachment, XmATTACH_WIDGET,
7332 XmNtopWidget, Sql_Database_reconnect_data,
7333 XmNtopOffset, 5,
7334 XmNbottomAttachment, XmATTACH_NONE,
7335 XmNleftAttachment, XmATTACH_WIDGET,
7336 XmNleftWidget, error_message,
7337 XmNrightAttachment, XmATTACH_NONE,
7338 XmNfontList, fontlist1,
7339 NULL);
7340
7341 // separator line
7342 sep = XtVaCreateManagedWidget("Config_Database sep", xmSeparatorGadgetClass,form,
7343 XmNorientation, XmHORIZONTAL,
7344 XmNtopAttachment, XmATTACH_WIDGET,
7345 XmNtopWidget, Sql_Database_errormessage_data,
7346 XmNtopOffset, 5,
7347 XmNbottomAttachment, XmATTACH_NONE,
7348 XmNleftAttachment, XmATTACH_FORM,
7349 XmNrightAttachment, XmATTACH_FORM,
7350 XmNbackground, colors[0xff],
7351 XmNfontList, fontlist1,
7352 NULL);
7353
7354 // button: MySQL Defaults
7355 button_mysql_defaults = XtVaCreateManagedWidget("MySQL Defaults",xmPushButtonGadgetClass, form,
7356 XmNnavigationType, XmTAB_GROUP,
7357 XmNtraversalOn, TRUE,
7358 XmNtopAttachment, XmATTACH_WIDGET,
7359 XmNtopWidget, sep,
7360 XmNtopOffset, 10,
7361 XmNbottomAttachment, XmATTACH_FORM,
7362 XmNbottomOffset, 5,
7363 XmNleftAttachment, XmATTACH_POSITION,
7364 XmNleftPosition, 1,
7365 XmNrightAttachment, XmATTACH_POSITION,
7366 XmNrightPosition, 3,
7367 XmNbackground, colors[0xff],
7368 XmNfontList, fontlist1,
7369 NULL);
7370 // button: Postgis Defaults
7371 button_postgis_defaults = XtVaCreateManagedWidget("Postgis Defaults",xmPushButtonGadgetClass, form,
7372 XmNnavigationType, XmTAB_GROUP,
7373 XmNtraversalOn, TRUE,
7374 XmNtopAttachment, XmATTACH_WIDGET,
7375 XmNtopWidget, sep,
7376 XmNtopOffset, 10,
7377 XmNbottomAttachment, XmATTACH_FORM,
7378 XmNbottomOffset, 5,
7379 XmNleftAttachment, XmATTACH_POSITION,
7380 XmNleftPosition, 4,
7381 XmNrightAttachment, XmATTACH_POSITION,
7382 XmNrightPosition, 6,
7383 XmNbackground, colors[0xff],
7384 XmNfontList, fontlist1,
7385 NULL);
7386 // button: OK
7387 button_ok = XtVaCreateManagedWidget(langcode("UNIOP00001"),xmPushButtonGadgetClass, form,
7388 XmNnavigationType, XmTAB_GROUP,
7389 XmNtraversalOn, TRUE,
7390 XmNtopAttachment, XmATTACH_WIDGET,
7391 XmNtopWidget, sep,
7392 XmNtopOffset, 10,
7393 XmNbottomAttachment, XmATTACH_FORM,
7394 XmNbottomOffset, 5,
7395 XmNleftAttachment, XmATTACH_POSITION,
7396 XmNleftPosition, 7,
7397 XmNrightAttachment, XmATTACH_POSITION,
7398 XmNrightPosition, 9,
7399 XmNbackground, colors[0xff],
7400 XmNfontList, fontlist1,
7401 NULL);
7402 // button: Cancel
7403 button_cancel = XtVaCreateManagedWidget(langcode("UNIOP00002"),xmPushButtonGadgetClass, form,
7404 XmNnavigationType, XmTAB_GROUP,
7405 XmNtraversalOn, TRUE,
7406 XmNtopAttachment, XmATTACH_WIDGET,
7407 XmNtopWidget, sep,
7408 XmNtopOffset, 10,
7409 XmNbottomAttachment, XmATTACH_FORM,
7410 XmNbottomOffset, 5,
7411 XmNleftAttachment, XmATTACH_POSITION,
7412 XmNleftPosition, 10,
7413 XmNrightAttachment, XmATTACH_POSITION,
7414 XmNrightPosition, 12,
7415 XmNbackground, colors[0xff],
7416 XmNfontList, fontlist1,
7417 NULL);
7418
7419 XtSetSensitive(button_mysql_defaults,FALSE);
7420 #ifdef HAVE_MYSQL
7421 XtSetSensitive(button_mysql_defaults,TRUE);
7422 XtAddCallback(button_mysql_defaults,
7423 XmNactivateCallback, Sql_Database_set_defaults_mysql, config_Sql_Database_dialog);
7424 #endif /* HAVE_MYSQL */
7425 XtSetSensitive(button_postgis_defaults,FALSE);
7426 #ifdef HAVE_POSTGIS
7427 XtSetSensitive(button_postgis_defaults,TRUE);
7428 XtAddCallback(button_postgis_defaults,
7429 XmNactivateCallback, Sql_Database_set_defaults_postgis, config_Sql_Database_dialog);
7430 #endif /* HAVE_POSTGIS */
7431 XtAddCallback(button_ok,
7432 XmNactivateCallback, Sql_Database_change_data, config_Sql_Database_dialog);
7433 XtAddCallback(button_cancel,
7434 XmNactivateCallback, Sql_Database_destroy_shell, config_Sql_Database_dialog);
7435
7436 pos_dialog(config_Sql_Database_dialog);
7437
7438 delw = XmInternAtom(XtDisplay(config_Sql_Database_dialog),"WM_DELETE_WINDOW", FALSE);
7439 XmAddWMProtocolCallback(config_Sql_Database_dialog,
7440 delw, Sql_Database_destroy_shell, (XtPointer)config_Sql_Database_dialog);
7441
7442 if (config_type==0)
7443 {
7444 /* first time port */
7445 // Default settings for a new interface.
7446 defaults_set = 0;
7447 #ifdef HAVE_MYSQL
7448 Sql_Database_set_defaults_mysql(config_Sql_Database_dialog,NULL,NULL);
7449 defaults_set = 1;
7450 #endif /* HAVE_MYSQL */
7451 #ifdef HAVE_POSTGIS
7452 if (defaults_set==0)
7453 {
7454 // mysql support not available, use postgis
7455 Sql_Database_set_defaults_postgis(config_Sql_Database_dialog,NULL,NULL);
7456 }
7457 #endif /* HAVE_POSTGIS */
7458 }
7459 else
7460 {
7461 /* reconfigure an existing interface */
7462
7463 // why critical section here? We are reading data from an existing configuration,
7464 // not changing the configuration while the interface might be in use.
7465 begin_critical_section(&devices_lock, "interface_gui.c:Config_sql_Database" );
7466
7467 // *** need to look up localized string for database_type ***
7468 cb_item = XmStringCreateLtoR(&xastir_dbms_type[devices[Sql_Database_port].database_type][0], XmFONTLIST_DEFAULT_TAG);
7469 #ifdef USE_COMBO_BOX
7470 XmComboBoxSelectItem(Sql_Database_dbms_data,cb_item);
7471 XmComboBoxSetItem(Sql_Database_dbms_data,cb_item);
7472 #else
7473 //sddd_menu is zero based, constants for database types are one based.
7474 //sddd_value matches constants.
7475 XtVaSetValues(sddd_menu, XmNmenuHistory,
7476 sddd_buttons[devices[Sql_Database_port].database_type - 1 ], NULL);
7477 sddd_value = devices[Sql_Database_port].database_type;
7478 #endif
7479 XmStringFree(cb_item);
7480
7481 cb_item = XmStringCreateLtoR(&xastir_schema_type[devices[Sql_Database_port].database_schema_type][0], XmFONTLIST_DEFAULT_TAG);
7482 XmComboBoxSelectItem(Sql_Database_schema_type_data,cb_item);
7483 XmComboBoxSetItem(Sql_Database_schema_type_data,cb_item);
7484 XmStringFree(cb_item);
7485
7486 if (devices[Sql_Database_port].connect_on_startup)
7487 {
7488 XmToggleButtonSetState(Sql_Database_active_on_startup,TRUE,FALSE);
7489 }
7490 else
7491 {
7492 XmToggleButtonSetState(Sql_Database_active_on_startup,FALSE,FALSE);
7493 }
7494
7495 if (devices[Sql_Database_port].query_on_startup)
7496 {
7497 XmToggleButtonSetState(Sql_Database_query_on_startup_data,TRUE,FALSE);
7498 }
7499 else
7500 {
7501 XmToggleButtonSetState(Sql_Database_query_on_startup_data,FALSE,FALSE);
7502 }
7503
7504
7505 if (devices[Sql_Database_port].transmit_data)
7506 {
7507 XmToggleButtonSetState(Sql_Database_transmit_data,TRUE,FALSE);
7508 }
7509 else
7510 {
7511 XmToggleButtonSetState(Sql_Database_transmit_data,FALSE,FALSE);
7512 }
7513
7514 XmTextFieldSetString(Sql_Database_host_data,devices[Sql_Database_port].device_host_name);
7515 XmTextFieldSetString(Sql_Database_schema_name_data,devices[Sql_Database_port].database_schema);
7516 xastir_snprintf(temp, sizeof(temp), "%d", devices[Sql_Database_port].sp);
7517 XmTextFieldSetString(Sql_Database_iport_data,temp);
7518 XmTextFieldSetString(Sql_Database_username_data,devices[Sql_Database_port].database_username);
7519 XmTextFieldSetString(Sql_Database_password_data,devices[Sql_Database_port].device_host_pswd);
7520 XmTextFieldSetString(Sql_Database_unix_socket_data,devices[Sql_Database_port].database_unix_socket);
7521 XmTextFieldSetString(Sql_Database_comment,devices[Sql_Database_port].comment);
7522 // display most recent error message
7523 XmTextFieldSetString(Sql_Database_errormessage_data,devices[Sql_Database_port].database_errormessage);
7524
7525 if (devices[Sql_Database_port].reconnect)
7526 {
7527 XmToggleButtonSetState(Sql_Database_reconnect_data,TRUE,FALSE);
7528 }
7529 else
7530 {
7531 XmToggleButtonSetState(Sql_Database_reconnect_data,FALSE,FALSE);
7532 }
7533
7534 end_critical_section(&devices_lock, "interface_gui.c:Config_sql_Database" );
7535
7536 }
7537 XtManageChild(form);
7538 XtManageChild(pane);
7539
7540 resize_dialog(form, config_Sql_Database_dialog);
7541
7542 XtPopup(config_Sql_Database_dialog,XtGrabNone);
7543 }
7544 else
7545 {
7546 (void)XRaiseWindow(XtDisplay(config_Sql_Database_dialog), XtWindow(config_Sql_Database_dialog));
7547 }
7548 }
7549 #endif /* HAVE_DB */
7550
7551
7552
7553
7554 /*****************************************************/
7555 /* Configure AGWPE Server GUI */
7556 /*****************************************************/
7557
7558 /**** AGWPE CONFIGURE ******/
7559 Widget config_AGWPE_dialog = (Widget)NULL;
7560 Widget AGWPE_active_on_startup;
7561 Widget AGWPE_host_data;
7562 Widget AGWPE_port_data;
7563 Widget AGWPE_comment;
7564 Widget AGWPE_password_data;
7565 Widget AGWPE_transmit_data;
7566 Widget AGWPE_igate_data;
7567 Widget AGWPE_reconnect_data;
7568 Widget AGWPE_unproto1_data;
7569 Widget AGWPE_unproto2_data;
7570 Widget AGWPE_unproto3_data;
7571 Widget AGWPE_relay_digipeat;
7572 Widget AGWPE_radioport_data;
7573 int AGWPE_port;
7574
7575
7576
7577
7578
AGWPE_destroy_shell(Widget UNUSED (widget),XtPointer clientData,XtPointer UNUSED (callData))7579 void AGWPE_destroy_shell( Widget UNUSED(widget), XtPointer clientData, XtPointer UNUSED(callData) )
7580 {
7581 Widget shell = (Widget) clientData;
7582 XtPopdown(shell);
7583 XtDestroyWidget(shell);
7584 config_AGWPE_dialog = (Widget)NULL;
7585 if (choose_interface_dialog != NULL)
7586 {
7587 Choose_interface_destroy_shell(choose_interface_dialog,choose_interface_dialog,NULL);
7588 }
7589
7590 choose_interface_dialog = (Widget)NULL;
7591 }
7592
7593
7594
7595
7596
AGWPE_change_data(Widget widget,XtPointer clientData,XtPointer callData)7597 void AGWPE_change_data(Widget widget, XtPointer clientData, XtPointer callData)
7598 {
7599 int was_up;
7600 char *temp_ptr;
7601
7602
7603 busy_cursor(appshell);
7604 was_up=0;
7605 if (get_device_status(AGWPE_port) == DEVICE_IN_USE)
7606 {
7607 /* if active shutdown before changes are made */
7608 /*fprintf(stderr,"Device is up, shutting down\n");*/
7609 (void)del_device(AGWPE_port);
7610 was_up=1;
7611 usleep(1000000); // Wait for one second
7612 }
7613
7614 begin_critical_section(&devices_lock, "interface_gui.c:AGWPE_change_data" );
7615
7616 devices[AGWPE_port].igate_options=device_igate_options;
7617
7618 temp_ptr = XmTextFieldGetString(AGWPE_host_data);
7619 xastir_snprintf(devices[AGWPE_port].device_host_name,
7620 sizeof(devices[AGWPE_port].device_host_name),
7621 "%s",
7622 temp_ptr);
7623 XtFree(temp_ptr);
7624
7625 (void)remove_trailing_spaces(devices[AGWPE_port].device_host_name);
7626
7627 temp_ptr = XmTextFieldGetString(AGWPE_password_data);
7628 xastir_snprintf(devices[AGWPE_port].device_host_pswd,
7629 sizeof(devices[AGWPE_port].device_host_pswd),
7630 "%s",
7631 temp_ptr);
7632 XtFree(temp_ptr);
7633
7634 (void)remove_trailing_spaces(devices[AGWPE_port].device_host_pswd);
7635
7636 temp_ptr = XmTextFieldGetString(AGWPE_comment);
7637 xastir_snprintf(devices[AGWPE_port].comment,
7638 sizeof(devices[AGWPE_port].comment),
7639 "%s",
7640 temp_ptr);
7641 XtFree(temp_ptr);
7642
7643 (void)remove_trailing_spaces(devices[AGWPE_port].comment);
7644
7645 temp_ptr = XmTextFieldGetString(AGWPE_port_data);
7646 devices[AGWPE_port].sp=atoi(temp_ptr);
7647 XtFree(temp_ptr);
7648
7649 temp_ptr = XmTextFieldGetString(AGWPE_unproto1_data);
7650 xastir_snprintf(devices[AGWPE_port].unproto1,
7651 sizeof(devices[AGWPE_port].unproto1),
7652 "%s",
7653 temp_ptr);
7654 XtFree(temp_ptr);
7655
7656 (void)remove_trailing_spaces(devices[AGWPE_port].unproto1);
7657
7658 if(check_unproto_path(devices[AGWPE_port].unproto1))
7659 {
7660 popup_message_always(langcode("WPUPCFT042"),
7661 langcode("WPUPCFT043"));
7662 }
7663
7664 temp_ptr = XmTextFieldGetString(AGWPE_unproto2_data);
7665 xastir_snprintf(devices[AGWPE_port].unproto2,
7666 sizeof(devices[AGWPE_port].unproto2),
7667 "%s",
7668 temp_ptr);
7669 XtFree(temp_ptr);
7670
7671 (void)remove_trailing_spaces(devices[AGWPE_port].unproto2);
7672
7673 if(check_unproto_path(devices[AGWPE_port].unproto2))
7674 {
7675 popup_message_always(langcode("WPUPCFT042"),
7676 langcode("WPUPCFT043"));
7677 }
7678
7679 temp_ptr = XmTextFieldGetString(AGWPE_unproto3_data);
7680 xastir_snprintf(devices[AGWPE_port].unproto3,
7681 sizeof(devices[AGWPE_port].unproto3),
7682 "%s",
7683 temp_ptr);
7684 XtFree(temp_ptr);
7685
7686 (void)remove_trailing_spaces(devices[AGWPE_port].unproto3);
7687
7688 if(check_unproto_path(devices[AGWPE_port].unproto3))
7689 {
7690 popup_message_always(langcode("WPUPCFT042"),
7691 langcode("WPUPCFT043"));
7692 }
7693
7694 temp_ptr = XmTextFieldGetString(AGWPE_igate_data);
7695 xastir_snprintf(devices[AGWPE_port].unproto_igate,
7696 sizeof(devices[AGWPE_port].unproto_igate),
7697 "%s",
7698 temp_ptr);
7699 XtFree(temp_ptr);
7700
7701 (void)remove_trailing_spaces(devices[AGWPE_port].unproto_igate);
7702
7703 if(check_unproto_path(devices[AGWPE_port].unproto_igate))
7704 {
7705 popup_message_always(langcode("WPUPCFT044"),
7706 langcode("WPUPCFT043"));
7707 }
7708
7709
7710 temp_ptr = XmTextFieldGetString(AGWPE_radioport_data);
7711 xastir_snprintf(devices[AGWPE_port].device_host_filter_string,
7712 sizeof(devices[AGWPE_port].device_host_filter_string),
7713 "%s",
7714 temp_ptr);
7715 XtFree(temp_ptr);
7716
7717 (void)remove_trailing_spaces(devices[AGWPE_port].device_host_filter_string);
7718
7719 if(XmToggleButtonGetState(AGWPE_active_on_startup))
7720 {
7721 devices[AGWPE_port].connect_on_startup=1;
7722 }
7723 else
7724 {
7725 devices[AGWPE_port].connect_on_startup=0;
7726 }
7727
7728 if(XmToggleButtonGetState(AGWPE_transmit_data))
7729 {
7730 devices[AGWPE_port].transmit_data=1;
7731 }
7732 else
7733 {
7734 devices[AGWPE_port].transmit_data=0;
7735 }
7736
7737 //WE7U
7738 // if(XmToggleButtonGetState(AGWPE_relay_digipeat))
7739 // devices[AGWPE_port].relay_digipeat=1;
7740 // else
7741 devices[AGWPE_port].relay_digipeat=0;
7742
7743 if(XmToggleButtonGetState(AGWPE_reconnect_data))
7744 {
7745 devices[AGWPE_port].reconnect=1;
7746 }
7747 else
7748 {
7749 devices[AGWPE_port].reconnect=0;
7750 }
7751
7752 // n8ysz 20041213
7753 // if (devices[AGWPE_port].connect_on_startup==1 || was_up) {
7754 if ( was_up)
7755 {
7756 (void)add_device(AGWPE_port,
7757 DEVICE_NET_AGWPE,
7758 devices[AGWPE_port].device_host_name,
7759 devices[AGWPE_port].device_host_pswd,
7760 devices[AGWPE_port].sp,
7761 0,
7762 0,
7763 devices[AGWPE_port].reconnect,
7764 "");
7765 }
7766
7767 /* delete list */
7768 // modify_device_list(4,0);
7769
7770
7771 /* add device type */
7772 devices[AGWPE_port].device_type=DEVICE_NET_AGWPE;
7773
7774 /* rebuild list */
7775 // modify_device_list(3,0);
7776
7777
7778 end_critical_section(&devices_lock, "interface_gui.c:AGWPE_change_data" );
7779
7780 // Rebuild the interface control list
7781 update_interface_list();
7782
7783 AGWPE_destroy_shell(widget,clientData,callData);
7784 }
7785
7786
7787
7788
7789
Config_AGWPE(Widget UNUSED (w),int config_type,int port)7790 void Config_AGWPE( Widget UNUSED(w), int config_type, int port)
7791 {
7792 static Widget pane, scrollwindow, form, button_ok, button_cancel,
7793 ihost, iport, password, sep,
7794 igate_box, igate_o_0, igate_o_1, igate_o_2,
7795 igate_label, frame, proto, proto1, proto2, proto3,
7796 radioport_label, comment;
7797 // static Widget igate, password_fl;
7798 Atom delw;
7799 char temp[40];
7800 Arg al[50]; // Arg list
7801 register unsigned int ac = 0; // Arg Count
7802
7803 if(!config_AGWPE_dialog)
7804 {
7805 AGWPE_port=port;
7806 config_AGWPE_dialog = XtVaCreatePopupShell(langcode("WPUPCFIA01"),
7807 xmDialogShellWidgetClass, appshell,
7808 XmNdeleteResponse, XmDESTROY,
7809 XmNdefaultPosition, FALSE,
7810 XmNfontList, fontlist1,
7811 NULL);
7812
7813 pane = XtVaCreateWidget("Config_AGWPE pane",xmPanedWindowWidgetClass, config_AGWPE_dialog,
7814 XmNbackground, colors[0xff],
7815 NULL);
7816
7817 scrollwindow = XtVaCreateManagedWidget("scrollwindow",
7818 xmScrolledWindowWidgetClass,
7819 pane,
7820 XmNscrollingPolicy, XmAUTOMATIC,
7821 NULL);
7822
7823 form = XtVaCreateWidget("Config_AGWPE form",
7824 xmFormWidgetClass,
7825 scrollwindow,
7826 XmNfractionBase, 5,
7827 XmNbackground, colors[0xff],
7828 XmNautoUnmanage, FALSE,
7829 XmNshadowThickness, 1,
7830 NULL);
7831
7832 AGWPE_active_on_startup = XtVaCreateManagedWidget(langcode("UNIOP00011"),xmToggleButtonWidgetClass,form,
7833 XmNnavigationType, XmTAB_GROUP,
7834 XmNtraversalOn, TRUE,
7835 XmNtopAttachment, XmATTACH_FORM,
7836 XmNtopOffset, 5,
7837 XmNbottomAttachment, XmATTACH_NONE,
7838 XmNleftAttachment, XmATTACH_FORM,
7839 XmNleftOffset,10,
7840 XmNrightAttachment, XmATTACH_NONE,
7841 XmNbackground, colors[0xff],
7842 XmNfontList, fontlist1,
7843 NULL);
7844
7845 AGWPE_transmit_data = XtVaCreateManagedWidget(langcode("UNIOP00010"),xmToggleButtonWidgetClass,form,
7846 XmNnavigationType, XmTAB_GROUP,
7847 XmNtraversalOn, TRUE,
7848 XmNtopAttachment, XmATTACH_FORM,
7849 XmNtopOffset, 5,
7850 XmNbottomAttachment, XmATTACH_NONE,
7851 XmNleftAttachment, XmATTACH_WIDGET,
7852 XmNleftWidget, AGWPE_active_on_startup,
7853 XmNleftOffset,35,
7854 XmNrightAttachment, XmATTACH_NONE,
7855 XmNbackground, colors[0xff],
7856 XmNfontList, fontlist1,
7857 NULL);
7858
7859 AGWPE_relay_digipeat = XtVaCreateManagedWidget(langcode("UNIOP00030"),xmToggleButtonWidgetClass,form,
7860 XmNnavigationType, XmTAB_GROUP,
7861 XmNtraversalOn, TRUE,
7862 XmNtopAttachment, XmATTACH_FORM,
7863 XmNtopOffset, 5,
7864 XmNbottomAttachment, XmATTACH_NONE,
7865 XmNleftAttachment, XmATTACH_WIDGET,
7866 XmNleftWidget, AGWPE_transmit_data,
7867 XmNleftOffset,35,
7868 XmNrightAttachment, XmATTACH_NONE,
7869 XmNbackground, colors[0xff],
7870 XmNfontList, fontlist1,
7871 NULL);
7872
7873 ihost = XtVaCreateManagedWidget(langcode("WPUPCFIA02"),xmLabelWidgetClass, form,
7874 XmNtopAttachment, XmATTACH_WIDGET,
7875 XmNtopWidget, AGWPE_transmit_data,
7876 XmNtopOffset, 5,
7877 XmNbottomAttachment, XmATTACH_NONE,
7878 XmNleftAttachment, XmATTACH_FORM,
7879 XmNleftOffset, 10,
7880 XmNrightAttachment, XmATTACH_NONE,
7881 XmNbackground, colors[0xff],
7882 XmNfontList, fontlist1,
7883 NULL);
7884
7885 AGWPE_host_data = XtVaCreateManagedWidget("Config_AGWPE host_data", xmTextFieldWidgetClass, form,
7886 XmNnavigationType, XmTAB_GROUP,
7887 XmNtraversalOn, TRUE,
7888 XmNeditable, TRUE,
7889 XmNcursorPositionVisible, TRUE,
7890 XmNsensitive, TRUE,
7891 XmNshadowThickness, 1,
7892 XmNcolumns, 25,
7893 XmNwidth, ((25*7)+2),
7894 XmNmaxLength, MAX_DEVICE_NAME,
7895 XmNbackground, colors[0x0f],
7896 XmNtopAttachment,XmATTACH_WIDGET,
7897 XmNtopWidget, AGWPE_transmit_data,
7898 XmNbottomAttachment,XmATTACH_NONE,
7899 XmNleftAttachment, XmATTACH_WIDGET,
7900 XmNleftWidget, ihost,
7901 XmNrightAttachment,XmATTACH_NONE,
7902 XmNfontList, fontlist1,
7903 NULL);
7904
7905 iport = XtVaCreateManagedWidget(langcode("WPUPCFIA03"),xmLabelWidgetClass, form,
7906 XmNtopAttachment, XmATTACH_WIDGET,
7907 XmNtopWidget,AGWPE_transmit_data,
7908 XmNtopOffset, 5,
7909 XmNbottomAttachment, XmATTACH_NONE,
7910 XmNleftAttachment, XmATTACH_WIDGET,
7911 XmNleftWidget,AGWPE_host_data,
7912 XmNleftOffset, 10,
7913 XmNrightAttachment, XmATTACH_NONE,
7914 XmNbackground, colors[0xff],
7915 XmNfontList, fontlist1,
7916 NULL);
7917
7918 AGWPE_port_data = XtVaCreateManagedWidget("Config_AGWPE port_data", xmTextFieldWidgetClass, form,
7919 XmNnavigationType, XmTAB_GROUP,
7920 XmNtraversalOn, TRUE,
7921 XmNeditable, TRUE,
7922 XmNcursorPositionVisible, TRUE,
7923 XmNsensitive, TRUE,
7924 XmNshadowThickness, 1,
7925 XmNcolumns, 5,
7926 XmNwidth, ((5*7)+2),
7927 XmNmaxLength, 6,
7928 XmNbackground, colors[0x0f],
7929 XmNtopAttachment, XmATTACH_WIDGET,
7930 XmNtopWidget, AGWPE_transmit_data,
7931 XmNbottomAttachment,XmATTACH_NONE,
7932 XmNleftAttachment, XmATTACH_WIDGET,
7933 XmNleftWidget, iport,
7934 XmNrightAttachment,XmATTACH_NONE,
7935 XmNfontList, fontlist1,
7936 NULL);
7937
7938 comment = XtVaCreateManagedWidget(langcode("WPUPCFS017"),xmLabelWidgetClass, form,
7939 XmNtopAttachment, XmATTACH_WIDGET,
7940 XmNtopWidget, AGWPE_transmit_data,
7941 XmNtopOffset, 5,
7942 XmNbottomAttachment, XmATTACH_NONE,
7943 XmNleftAttachment, XmATTACH_WIDGET,
7944 XmNleftWidget, AGWPE_port_data,
7945 XmNleftOffset, 10,
7946 XmNrightAttachment, XmATTACH_NONE,
7947 XmNbackground, colors[0xff],
7948 XmNfontList, fontlist1,
7949 NULL);
7950
7951 AGWPE_comment = XtVaCreateManagedWidget("Config_AGWPE comment", xmTextFieldWidgetClass, form,
7952 XmNnavigationType, XmTAB_GROUP,
7953 XmNtraversalOn, TRUE,
7954 XmNeditable, TRUE,
7955 XmNcursorPositionVisible, TRUE,
7956 XmNsensitive, TRUE,
7957 XmNshadowThickness, 1,
7958 XmNcolumns, 25,
7959 XmNwidth, ((25*7)+2),
7960 XmNmaxLength, 49,
7961 XmNbackground, colors[0x0f],
7962 XmNtopAttachment,XmATTACH_WIDGET,
7963 XmNtopWidget, AGWPE_transmit_data,
7964 XmNbottomAttachment,XmATTACH_NONE,
7965 XmNleftAttachment, XmATTACH_WIDGET,
7966 XmNleftWidget, comment,
7967 XmNrightAttachment,XmATTACH_NONE,
7968 XmNfontList, fontlist1,
7969 NULL);
7970
7971 password = XtVaCreateManagedWidget(langcode("WPUPCFIA09"),xmLabelWidgetClass, form,
7972 XmNtopAttachment, XmATTACH_WIDGET,
7973 XmNtopWidget, ihost,
7974 XmNtopOffset, 20,
7975 XmNbottomAttachment, XmATTACH_NONE,
7976 XmNleftAttachment, XmATTACH_FORM,
7977 XmNleftOffset, 10,
7978 XmNrightAttachment, XmATTACH_NONE,
7979 XmNbackground, colors[0xff],
7980 XmNfontList, fontlist1,
7981 NULL);
7982
7983 AGWPE_password_data = XtVaCreateManagedWidget("Config_AGWPE password_data", xmTextFieldWidgetClass, form,
7984 XmNnavigationType, XmTAB_GROUP,
7985 XmNtraversalOn, TRUE,
7986 XmNeditable, TRUE,
7987 XmNcursorPositionVisible, TRUE,
7988 XmNsensitive, TRUE,
7989 XmNshadowThickness, 1,
7990 XmNcolumns, 20,
7991 XmNmaxLength, 20,
7992 XmNbackground, colors[0x0f],
7993 XmNleftAttachment,XmATTACH_WIDGET,
7994 XmNleftWidget, password,
7995 XmNleftOffset, 10,
7996 XmNtopAttachment,XmATTACH_WIDGET,
7997 XmNtopWidget, ihost,
7998 XmNtopOffset, 15,
7999 XmNbottomAttachment,XmATTACH_NONE,
8000 XmNrightAttachment,XmATTACH_NONE,
8001 XmNfontList, fontlist1,
8002 NULL);
8003
8004 // password_fl
8005 XtVaCreateManagedWidget(langcode("WPUPCFIA10"),xmLabelWidgetClass, form,
8006 XmNtopAttachment, XmATTACH_WIDGET,
8007 XmNtopWidget, ihost,
8008 XmNtopOffset, 20,
8009 XmNbottomAttachment, XmATTACH_NONE,
8010 XmNleftAttachment, XmATTACH_WIDGET,
8011 XmNleftWidget,AGWPE_password_data,
8012 XmNleftOffset,20,
8013 XmNrightAttachment, XmATTACH_NONE,
8014 XmNbackground, colors[0xff],
8015 NULL);
8016
8017 AGWPE_reconnect_data = XtVaCreateManagedWidget(langcode("WPUPCFIA11"),xmToggleButtonWidgetClass,form,
8018 XmNnavigationType, XmTAB_GROUP,
8019 XmNtraversalOn, TRUE,
8020 XmNtopAttachment, XmATTACH_WIDGET,
8021 XmNtopWidget, password,
8022 XmNtopOffset, 20,
8023 XmNbottomAttachment, XmATTACH_NONE,
8024 XmNleftAttachment, XmATTACH_FORM,
8025 XmNleftOffset,10,
8026 XmNrightAttachment, XmATTACH_NONE,
8027 XmNbackground, colors[0xff],
8028 XmNfontList, fontlist1,
8029 NULL);
8030
8031 radioport_label = XtVaCreateManagedWidget(langcode("WPUPCFIA15"),xmLabelWidgetClass, form,
8032 XmNtopAttachment, XmATTACH_WIDGET,
8033 XmNtopWidget, password,
8034 XmNtopOffset, 25,
8035 XmNbottomAttachment, XmATTACH_NONE,
8036 XmNleftAttachment, XmATTACH_WIDGET,
8037 XmNleftWidget, AGWPE_reconnect_data,
8038 XmNleftOffset, 50,
8039 XmNrightAttachment, XmATTACH_NONE,
8040 XmNbackground, colors[0xff],
8041 XmNfontList, fontlist1,
8042 NULL);
8043
8044 AGWPE_radioport_data = XtVaCreateManagedWidget("Config_AGWPE radioport_data", xmTextFieldWidgetClass, form,
8045 XmNnavigationType, XmTAB_GROUP,
8046 XmNtraversalOn, TRUE,
8047 XmNeditable, TRUE,
8048 XmNcursorPositionVisible, TRUE,
8049 XmNsensitive, TRUE,
8050 XmNshadowThickness, 1,
8051 XmNcolumns, 3,
8052 XmNmaxLength, 3,
8053 XmNbackground, colors[0x0f],
8054 XmNleftAttachment,XmATTACH_WIDGET,
8055 XmNleftWidget, radioport_label,
8056 XmNleftOffset, 10,
8057 XmNtopAttachment,XmATTACH_WIDGET,
8058 XmNtopWidget, password,
8059 XmNtopOffset, 20,
8060 XmNbottomAttachment,XmATTACH_NONE,
8061 XmNrightAttachment,XmATTACH_NONE,
8062 XmNfontList, fontlist1,
8063 NULL);
8064
8065 frame = XtVaCreateManagedWidget("Config_AGWPE frame", xmFrameWidgetClass, form,
8066 XmNtopAttachment, XmATTACH_WIDGET,
8067 XmNtopWidget, AGWPE_reconnect_data,
8068 XmNtopOffset, 10,
8069 XmNbottomAttachment, XmATTACH_NONE,
8070 XmNleftAttachment, XmATTACH_FORM,
8071 XmNleftOffset, 10,
8072 XmNrightAttachment, XmATTACH_FORM,
8073 XmNrightOffset, 10,
8074 XmNbackground, colors[0xff],
8075 NULL);
8076
8077 // igate
8078 XtVaCreateManagedWidget(langcode("IGPUPCF000"),xmLabelWidgetClass, frame,
8079 XmNchildType, XmFRAME_TITLE_CHILD,
8080 XmNbackground, colors[0xff],
8081 XmNfontList, fontlist1,
8082 NULL);
8083
8084 // Set args for color
8085 ac=0;
8086 XtSetArg(al[ac], XmNbackground, colors[0xff]);
8087 ac++;
8088
8089
8090 igate_box = XmCreateRadioBox(frame,"Config_AGWPE IGate box",al,ac);
8091
8092 XtVaSetValues(igate_box,XmNorientation, XmVERTICAL,XmNnumColumns,2,NULL);
8093
8094 igate_o_0 = XtVaCreateManagedWidget(langcode("IGPUPCF001"),xmToggleButtonGadgetClass,
8095 igate_box,
8096 XmNbackground, colors[0xff],
8097 XmNfontList, fontlist1,
8098 NULL);
8099 XtAddCallback(igate_o_0,XmNvalueChangedCallback,igate_toggle,"0");
8100
8101 igate_o_1 = XtVaCreateManagedWidget(langcode("IGPUPCF002"),xmToggleButtonGadgetClass,
8102 igate_box,
8103 XmNbackground, colors[0xff],
8104 XmNfontList, fontlist1,
8105 NULL);
8106 XtAddCallback(igate_o_1,XmNvalueChangedCallback,igate_toggle,"1");
8107
8108 igate_o_2 = XtVaCreateManagedWidget(langcode("IGPUPCF003"),xmToggleButtonGadgetClass,
8109 igate_box,
8110 XmNbackground, colors[0xff],
8111 XmNfontList, fontlist1,
8112 NULL);
8113 XtAddCallback(igate_o_2,XmNvalueChangedCallback,igate_toggle,"2");
8114
8115 proto = XtVaCreateManagedWidget(langcode("WPUPCFT011"), xmLabelWidgetClass, form,
8116 XmNorientation, XmHORIZONTAL,
8117 XmNtopAttachment,XmATTACH_WIDGET,
8118 XmNtopWidget, frame,
8119 XmNtopOffset, 10,
8120 XmNbottomAttachment,XmATTACH_NONE,
8121 XmNleftAttachment, XmATTACH_FORM,
8122 XmNleftOffset, 5,
8123 XmNrightAttachment,XmATTACH_FORM,
8124 XmNrightOffset, 5,
8125 XmNbackground, colors[0xff],
8126 XmNfontList, fontlist1,
8127 NULL);
8128
8129 xastir_snprintf(temp, sizeof(temp), langcode("WPUPCFT012"), VERSIONFRM);
8130
8131 proto1 = XtVaCreateManagedWidget(temp, xmLabelWidgetClass, form,
8132 XmNorientation, XmHORIZONTAL,
8133 XmNtopAttachment,XmATTACH_WIDGET,
8134 XmNtopWidget, proto,
8135 XmNtopOffset, 12,
8136 XmNbottomAttachment,XmATTACH_NONE,
8137 XmNleftAttachment, XmATTACH_FORM,
8138 XmNleftOffset, 45,
8139 XmNrightAttachment,XmATTACH_NONE,
8140 XmNbackground, colors[0xff],
8141 XmNfontList, fontlist1,
8142 NULL);
8143
8144 AGWPE_unproto1_data = XtVaCreateManagedWidget("Config_AGWPE protopath1", xmTextFieldWidgetClass, form,
8145 XmNnavigationType, XmTAB_GROUP,
8146 XmNtraversalOn, TRUE,
8147 XmNeditable, TRUE,
8148 XmNcursorPositionVisible, TRUE,
8149 XmNsensitive, TRUE,
8150 XmNshadowThickness, 1,
8151 XmNcolumns, 25,
8152 XmNwidth, ((25*7)+2),
8153 XmNmaxLength, 40,
8154 XmNbackground, colors[0x0f],
8155 XmNtopAttachment,XmATTACH_WIDGET,
8156 XmNtopWidget, proto,
8157 XmNtopOffset, 5,
8158 XmNbottomAttachment,XmATTACH_NONE,
8159 XmNleftAttachment,XmATTACH_WIDGET,
8160 XmNleftWidget, proto1,
8161 XmNleftOffset, 5,
8162 XmNrightAttachment,XmATTACH_NONE,
8163 XmNfontList, fontlist1,
8164 NULL);
8165
8166 xastir_snprintf(temp, sizeof(temp), langcode("WPUPCFT013"), VERSIONFRM);
8167
8168 proto2 = XtVaCreateManagedWidget(temp, xmLabelWidgetClass, form,
8169 XmNorientation, XmHORIZONTAL,
8170 XmNtopAttachment,XmATTACH_WIDGET,
8171 XmNtopWidget, proto1,
8172 XmNtopOffset, 15,
8173 XmNbottomAttachment,XmATTACH_NONE,
8174 XmNleftAttachment, XmATTACH_FORM,
8175 XmNleftOffset, 45,
8176 XmNrightAttachment,XmATTACH_NONE,
8177 XmNbackground, colors[0xff],
8178 XmNfontList, fontlist1,
8179 NULL);
8180
8181 AGWPE_unproto2_data = XtVaCreateManagedWidget("Config_AGWPE protopath2", xmTextFieldWidgetClass, form,
8182 XmNnavigationType, XmTAB_GROUP,
8183 XmNtraversalOn, TRUE,
8184 XmNeditable, TRUE,
8185 XmNcursorPositionVisible, TRUE,
8186 XmNsensitive, TRUE,
8187 XmNshadowThickness, 1,
8188 XmNcolumns, 25,
8189 XmNwidth, ((25*7)+2),
8190 XmNmaxLength, 40,
8191 XmNbackground, colors[0x0f],
8192 XmNtopAttachment,XmATTACH_WIDGET,
8193 XmNtopWidget, AGWPE_unproto1_data,
8194 XmNtopOffset, 5,
8195 XmNbottomAttachment,XmATTACH_NONE,
8196 XmNleftAttachment, XmATTACH_WIDGET,
8197 XmNleftWidget, proto2,
8198 XmNleftOffset, 5,
8199 XmNrightAttachment,XmATTACH_NONE,
8200 XmNfontList, fontlist1,
8201 NULL);
8202
8203 xastir_snprintf(temp, sizeof(temp), langcode("WPUPCFT014"), VERSIONFRM);
8204
8205 proto3 = XtVaCreateManagedWidget(temp, xmLabelWidgetClass, form,
8206 XmNorientation, XmHORIZONTAL,
8207 XmNtopAttachment,XmATTACH_WIDGET,
8208 XmNtopWidget, proto2,
8209 XmNtopOffset, 15,
8210 XmNbottomAttachment,XmATTACH_NONE,
8211 XmNleftAttachment, XmATTACH_FORM,
8212 XmNleftOffset, 45,
8213 XmNrightAttachment,XmATTACH_NONE,
8214 XmNbackground, colors[0xff],
8215 XmNfontList, fontlist1,
8216 NULL);
8217
8218
8219 AGWPE_unproto3_data = XtVaCreateManagedWidget("Config_AGWPE protopath3", xmTextFieldWidgetClass, form,
8220 XmNnavigationType, XmTAB_GROUP,
8221 XmNtraversalOn, TRUE,
8222 XmNeditable, TRUE,
8223 XmNcursorPositionVisible, TRUE,
8224 XmNsensitive, TRUE,
8225 XmNshadowThickness, 1,
8226 XmNcolumns, 25,
8227 XmNwidth, ((25*7)+2),
8228 XmNmaxLength, 40,
8229 XmNbackground, colors[0x0f],
8230 XmNtopAttachment,XmATTACH_WIDGET,
8231 XmNtopWidget, AGWPE_unproto2_data,
8232 XmNtopOffset, 5,
8233 XmNbottomAttachment,XmATTACH_NONE,
8234 XmNleftAttachment,XmATTACH_WIDGET,
8235 XmNleftWidget, proto3,
8236 XmNleftOffset, 5,
8237 XmNrightAttachment,XmATTACH_NONE,
8238 XmNfontList, fontlist1,
8239 NULL);
8240
8241
8242 xastir_snprintf(temp, sizeof(temp), "%s", langcode("IGPUPCF004"));
8243 igate_label = XtVaCreateManagedWidget(temp, xmLabelWidgetClass, form,
8244 XmNorientation, XmHORIZONTAL,
8245 XmNtopAttachment,XmATTACH_WIDGET,
8246 XmNtopWidget, proto3,
8247 XmNtopOffset, 15,
8248 XmNbottomAttachment,XmATTACH_NONE,
8249 XmNleftAttachment, XmATTACH_FORM,
8250 XmNleftOffset, 45,
8251 XmNrightAttachment,XmATTACH_NONE,
8252 XmNbackground, colors[0xff],
8253 XmNfontList, fontlist1,
8254 NULL);
8255
8256 AGWPE_igate_data = XtVaCreateManagedWidget("Config_AGWPE igate_data", xmTextFieldWidgetClass, form,
8257 XmNnavigationType, XmTAB_GROUP,
8258 XmNtraversalOn, TRUE,
8259 XmNeditable, TRUE,
8260 XmNcursorPositionVisible, TRUE,
8261 XmNsensitive, TRUE,
8262 XmNshadowThickness, 1,
8263 XmNcolumns, 25,
8264 XmNwidth, ((25*7)+2),
8265 XmNmaxLength, 40,
8266 XmNbackground, colors[0x0f],
8267 XmNtopAttachment,XmATTACH_WIDGET,
8268 XmNtopWidget, AGWPE_unproto3_data,
8269 XmNtopOffset, 5,
8270 XmNbottomAttachment,XmATTACH_NONE,
8271 XmNleftAttachment,XmATTACH_WIDGET,
8272 XmNleftWidget, igate_label,
8273 XmNleftOffset, 5,
8274 XmNrightAttachment,XmATTACH_NONE,
8275 XmNfontList, fontlist1,
8276 NULL);
8277
8278
8279 sep = XtVaCreateManagedWidget("Config_AGWPE sep", xmSeparatorGadgetClass,form,
8280 XmNorientation, XmHORIZONTAL,
8281 XmNtopAttachment,XmATTACH_WIDGET,
8282 XmNtopWidget, AGWPE_igate_data,
8283 XmNtopOffset, 14,
8284 XmNbottomAttachment,XmATTACH_NONE,
8285 XmNleftAttachment, XmATTACH_FORM,
8286 XmNrightAttachment,XmATTACH_FORM,
8287 XmNbackground, colors[0xff],
8288 XmNfontList, fontlist1,
8289 NULL);
8290
8291 button_ok = XtVaCreateManagedWidget(langcode("UNIOP00001"),xmPushButtonGadgetClass, form,
8292 XmNnavigationType, XmTAB_GROUP,
8293 XmNtraversalOn, TRUE,
8294 XmNtopAttachment, XmATTACH_WIDGET,
8295 XmNtopWidget, sep,
8296 XmNtopOffset, 10,
8297 XmNbottomAttachment, XmATTACH_FORM,
8298 XmNbottomOffset, 5,
8299 XmNleftAttachment, XmATTACH_POSITION,
8300 XmNleftPosition, 1,
8301 XmNrightAttachment, XmATTACH_POSITION,
8302 XmNrightPosition, 2,
8303 XmNbackground, colors[0xff],
8304 XmNfontList, fontlist1,
8305 NULL);
8306
8307 button_cancel = XtVaCreateManagedWidget(langcode("UNIOP00002"),xmPushButtonGadgetClass, form,
8308 XmNnavigationType, XmTAB_GROUP,
8309 XmNtraversalOn, TRUE,
8310 XmNtopAttachment, XmATTACH_WIDGET,
8311 XmNtopWidget, sep,
8312 XmNtopOffset, 10,
8313 XmNbottomAttachment, XmATTACH_FORM,
8314 XmNbottomOffset, 5,
8315 XmNleftAttachment, XmATTACH_POSITION,
8316 XmNleftPosition, 3,
8317 XmNrightAttachment, XmATTACH_POSITION,
8318 XmNrightPosition, 4,
8319 XmNbackground, colors[0xff],
8320 XmNfontList, fontlist1,
8321 NULL);
8322
8323 XtAddCallback(button_ok, XmNactivateCallback, AGWPE_change_data, config_AGWPE_dialog);
8324 XtAddCallback(button_cancel, XmNactivateCallback, AGWPE_destroy_shell, config_AGWPE_dialog);
8325
8326 pos_dialog(config_AGWPE_dialog);
8327
8328 delw = XmInternAtom(XtDisplay(config_AGWPE_dialog),"WM_DELETE_WINDOW", FALSE);
8329 XmAddWMProtocolCallback(config_AGWPE_dialog, delw, AGWPE_destroy_shell, (XtPointer)config_AGWPE_dialog);
8330
8331 if (config_type==0)
8332 {
8333 /* first time port */
8334 XmToggleButtonSetState(AGWPE_active_on_startup,TRUE,FALSE);
8335 XmToggleButtonSetState(AGWPE_transmit_data,TRUE,FALSE);
8336 //XmTextFieldSetString(AGWPE_host_data,"first.aprs.net");
8337 XmTextFieldSetString(AGWPE_host_data,"localhost");
8338 XmTextFieldSetString(AGWPE_port_data,"8000");
8339 XmTextFieldSetString(AGWPE_comment,"");
8340 XmToggleButtonSetState(AGWPE_reconnect_data,FALSE,FALSE);
8341 XmToggleButtonSetState(AGWPE_relay_digipeat, FALSE, FALSE);
8342 device_igate_options=0;
8343 XmToggleButtonSetState(igate_o_0,TRUE,FALSE);
8344 XmTextFieldSetString(AGWPE_unproto1_data,"WIDE2-2");
8345 XmTextFieldSetString(AGWPE_unproto2_data,"");
8346 XmTextFieldSetString(AGWPE_unproto3_data,"");
8347 XmTextFieldSetString(AGWPE_igate_data,"");
8348 XmTextFieldSetString(AGWPE_radioport_data,"1");
8349
8350 //WE7U
8351 // Keep this statement until we get relay digipeating functional for
8352 // this interface.
8353 XtSetSensitive(AGWPE_relay_digipeat, FALSE);
8354
8355 }
8356 else
8357 {
8358 /* reconfig */
8359
8360 begin_critical_section(&devices_lock, "interface_gui.c:Config_AGWPE" );
8361
8362 if (devices[AGWPE_port].connect_on_startup)
8363 {
8364 XmToggleButtonSetState(AGWPE_active_on_startup,TRUE,FALSE);
8365 }
8366 else
8367 {
8368 XmToggleButtonSetState(AGWPE_active_on_startup,FALSE,FALSE);
8369 }
8370
8371 if (devices[AGWPE_port].transmit_data)
8372 {
8373 XmToggleButtonSetState(AGWPE_transmit_data,TRUE,FALSE);
8374 }
8375 else
8376 {
8377 XmToggleButtonSetState(AGWPE_transmit_data,FALSE,FALSE);
8378 }
8379
8380 // if (devices[AGWPE_port].relay_digipeat)
8381 // XmToggleButtonSetState(AGWPE_relay_digipeat, TRUE, FALSE);
8382 // else
8383 XmToggleButtonSetState(AGWPE_relay_digipeat, FALSE, FALSE);
8384
8385 // if (devices[AGWPE_port].transmit_data) {
8386 // XtSetSensitive(AGWPE_relay_digipeat, TRUE);
8387 // }
8388 // else
8389 XtSetSensitive(AGWPE_relay_digipeat, FALSE);
8390
8391 XmTextFieldSetString(AGWPE_host_data,devices[AGWPE_port].device_host_name);
8392 xastir_snprintf(temp, sizeof(temp), "%d", devices[AGWPE_port].sp);
8393 XmTextFieldSetString(AGWPE_port_data,temp);
8394 XmTextFieldSetString(AGWPE_password_data,devices[AGWPE_port].device_host_pswd);
8395 XmTextFieldSetString(AGWPE_comment,devices[AGWPE_port].comment);
8396
8397 if (devices[AGWPE_port].reconnect)
8398 {
8399 XmToggleButtonSetState(AGWPE_reconnect_data,TRUE,FALSE);
8400 }
8401 else
8402 {
8403 XmToggleButtonSetState(AGWPE_reconnect_data,FALSE,FALSE);
8404 }
8405
8406 XmTextFieldSetString(AGWPE_radioport_data,devices[AGWPE_port].device_host_filter_string);
8407
8408 switch (devices[AGWPE_port].igate_options)
8409 {
8410 case(0):
8411 XmToggleButtonSetState(igate_o_0,TRUE,FALSE);
8412 device_igate_options=0;
8413 break;
8414
8415 case(1):
8416 XmToggleButtonSetState(igate_o_1,TRUE,FALSE);
8417 device_igate_options=1;
8418 break;
8419
8420 case(2):
8421 XmToggleButtonSetState(igate_o_2,TRUE,FALSE);
8422 device_igate_options=2;
8423 break;
8424
8425 default:
8426 XmToggleButtonSetState(igate_o_0,TRUE,FALSE);
8427 device_igate_options=0;
8428 break;
8429 }
8430
8431 XmTextFieldSetString(AGWPE_unproto1_data,devices[AGWPE_port].unproto1);
8432 XmTextFieldSetString(AGWPE_unproto2_data,devices[AGWPE_port].unproto2);
8433 XmTextFieldSetString(AGWPE_unproto3_data,devices[AGWPE_port].unproto3);
8434 XmTextFieldSetString(AGWPE_igate_data,devices[AGWPE_port].unproto_igate);
8435
8436 end_critical_section(&devices_lock, "interface_gui.c:Config_AGWPE" );
8437
8438 }
8439 XtManageChild(igate_box);
8440 XtManageChild(form);
8441 XtManageChild(pane);
8442
8443 resize_dialog(form, config_AGWPE_dialog);
8444
8445 XtPopup(config_AGWPE_dialog,XtGrabNone);
8446 }
8447 else
8448 {
8449 (void)XRaiseWindow(XtDisplay(config_AGWPE_dialog), XtWindow(config_AGWPE_dialog));
8450 }
8451 }
8452
8453
8454
8455
8456
8457 /*****************************************************/
8458 /* Configure Interface GUI */
8459 /*****************************************************/
8460
are_shells_up(void)8461 int are_shells_up(void)
8462 {
8463 int up;
8464
8465 up=1;
8466 if (config_TNC_dialog)
8467 {
8468 (void)XRaiseWindow(XtDisplay(config_TNC_dialog), XtWindow(config_TNC_dialog));
8469 }
8470 else
8471 {
8472 if (config_GPS_dialog)
8473 {
8474 (void)XRaiseWindow(XtDisplay(config_GPS_dialog), XtWindow(config_GPS_dialog));
8475 }
8476 else
8477 {
8478 if (config_WX_dialog)
8479 {
8480 (void)XRaiseWindow(XtDisplay(config_WX_dialog), XtWindow(config_WX_dialog));
8481 }
8482 else
8483 {
8484 if (config_NGPS_dialog)
8485 {
8486 (void)XRaiseWindow(XtDisplay(config_NGPS_dialog), XtWindow(config_NGPS_dialog));
8487 }
8488 else
8489 {
8490 if (config_AX25_dialog)
8491 {
8492 (void)XRaiseWindow(XtDisplay(config_AX25_dialog), XtWindow(config_AX25_dialog));
8493 }
8494 else
8495 {
8496 if (config_Inet_dialog)
8497 {
8498 (void)XRaiseWindow(XtDisplay(config_Inet_dialog), XtWindow(config_Inet_dialog));
8499 }
8500 else
8501 {
8502 if (config_NWX_dialog)
8503 {
8504 (void)XRaiseWindow(XtDisplay(config_NWX_dialog), XtWindow(config_NWX_dialog));
8505 }
8506 else
8507 {
8508 if (config_Database_dialog)
8509 {
8510 (void)XRaiseWindow(XtDisplay(config_Database_dialog), XtWindow(config_Database_dialog));
8511 }
8512 else
8513 {
8514 #ifdef HAVE_DB
8515 if (config_Sql_Database_dialog)
8516 {
8517 (void)XRaiseWindow(XtDisplay(config_Sql_Database_dialog), XtWindow(config_Sql_Database_dialog));
8518 }
8519 else
8520 {
8521
8522 #endif /* HAVE_DB */
8523 if (config_AGWPE_dialog)
8524 {
8525 (void)XRaiseWindow(XtDisplay(config_AGWPE_dialog), XtWindow(config_AGWPE_dialog));
8526 }
8527 else
8528 {
8529 up=0;
8530 }
8531 #ifdef HAVE_DB
8532 }
8533 #endif /* HAVE_DB */
8534 }
8535 }
8536 }
8537 }
8538 }
8539 }
8540 }
8541 }
8542 return(up);
8543 }
8544
8545
8546
8547
8548
Choose_interface_destroy_shell(Widget UNUSED (widget),XtPointer clientData,XtPointer UNUSED (callData))8549 void Choose_interface_destroy_shell( Widget UNUSED(widget), XtPointer clientData, XtPointer UNUSED(callData) )
8550 {
8551 Widget shell = (Widget) clientData;
8552 if (are_shells_up()==0)
8553 {
8554 XtPopdown(shell);
8555 XtDestroyWidget(shell);
8556 choose_interface_dialog = (Widget)NULL;
8557 }
8558 }
8559
8560
8561
8562
8563
modify_device_list(int option,int port)8564 void modify_device_list(int option, int port)
8565 {
8566 int i,n;
8567 char temp[150];
8568 char temp2[150];
8569 XmString str_ptr;
8570
8571
8572 n=1;
8573 for (i=0; i < MAX_IFACE_DEVICES; i++)
8574 {
8575 if (devices[i].device_type!=DEVICE_NONE)
8576 {
8577 switch (option)
8578 {
8579 case 0 :
8580 /* delete entire list available */
8581 XmListDeleteAllItems(control_iface_list);
8582 return; // Exit routine
8583 break;
8584
8585 case 1 :
8586 /* delete item pointed to by port */
8587 if (i==port)
8588 {
8589 XmListDeletePos(control_iface_list,n);
8590 }
8591 n++;
8592 break;
8593
8594 case 2 :
8595 /* create item list */
8596 /* format list for device modify*/
8597 switch (devices[i].device_type)
8598 {
8599 case DEVICE_SERIAL_TNC:
8600 case DEVICE_SERIAL_TNC_HSP_GPS:
8601 case DEVICE_SERIAL_TNC_AUX_GPS:
8602 case DEVICE_SERIAL_KISS_TNC:
8603 case DEVICE_SERIAL_GPS:
8604 case DEVICE_SERIAL_WX:
8605 xastir_snprintf(temp,
8606 sizeof(temp),
8607 langcode("IFDIN00000"),
8608 langcode("UNIOP00006"),
8609 i,
8610 dtype[devices[i].device_type].device_name,
8611 devices[i].device_name,
8612 devices[i].comment);
8613 strncat(temp,
8614 " ",
8615 sizeof(temp) - 1 - strlen(temp));
8616 break;
8617
8618 case DEVICE_SERIAL_MKISS_TNC:
8619 xastir_snprintf(temp,
8620 sizeof(temp),
8621 langcode("IFDIN00001"),
8622 langcode("UNIOP00006"),
8623 i,
8624 dtype[devices[i].device_type].device_name,
8625 devices[i].device_name,
8626 atoi(devices[i].radio_port),
8627 devices[i].comment);
8628 strncat(temp,
8629 " ",
8630 sizeof(temp) - 1 - strlen(temp));
8631 break;
8632
8633 case DEVICE_NET_DATABASE:
8634 case DEVICE_SQL_DATABASE:
8635 case DEVICE_NET_STREAM:
8636 case DEVICE_NET_GPSD:
8637 case DEVICE_NET_WX:
8638 case DEVICE_NET_AGWPE:
8639 xastir_snprintf(temp,
8640 sizeof(temp),
8641 langcode("IFDIN00001"),
8642 langcode("UNIOP00006"),
8643 i,
8644 dtype[devices[i].device_type].device_name,
8645 devices[i].device_host_name,
8646 devices[i].sp,
8647 devices[i].comment);
8648 strncat(temp,
8649 " ",
8650 sizeof(temp) - 1 - strlen(temp));
8651 break;
8652
8653 case DEVICE_AX25_TNC:
8654 xastir_snprintf(temp,
8655 sizeof(temp),
8656 langcode("IFDIN00002"),
8657 langcode("UNIOP00006"),
8658 i,
8659 dtype[devices[i].device_type].device_name,
8660 devices[i].device_name,
8661 devices[i].comment);
8662 strncat(temp,
8663 " ",
8664 sizeof(temp) - 1 - strlen(temp));
8665 break;
8666
8667 default:
8668 break;
8669 }
8670 /* look at list data (Must be "Device" port#) */
8671 XmListAddItem(control_iface_list, str_ptr = XmStringCreateLtoR(temp,XmFONTLIST_DEFAULT_TAG),n++);
8672
8673 XmStringFree(str_ptr);
8674 break;
8675
8676 case 3 :
8677 /* create item list */
8678 /* format list for device control*/
8679 if (port_data[i].active==DEVICE_IN_USE)
8680 {
8681 switch (port_data[i].status)
8682 {
8683 case DEVICE_DOWN:
8684 xastir_snprintf(temp2,
8685 sizeof(temp2),
8686 "%s",
8687 langcode("IFDIN00006"));
8688 break;
8689
8690 case DEVICE_UP:
8691 xastir_snprintf(temp2,
8692 sizeof(temp2),
8693 "%s",
8694 langcode("IFDIN00007"));
8695 break;
8696
8697 case DEVICE_ERROR:
8698 xastir_snprintf(temp2,
8699 sizeof(temp2),
8700 "%s",
8701 langcode("IFDIN00008"));
8702 break;
8703
8704 default:
8705 xastir_snprintf(temp2,
8706 sizeof(temp2),
8707 "%s",
8708 langcode("IFDIN00009"));
8709 break;
8710 }
8711 }
8712 else
8713 {
8714 xastir_snprintf(temp2,
8715 sizeof(temp2),
8716 "%s",
8717 langcode("IFDIN00006"));
8718 }
8719 switch (devices[i].device_type)
8720 {
8721 case DEVICE_SERIAL_TNC:
8722 case DEVICE_SERIAL_KISS_TNC:
8723 case DEVICE_SERIAL_TNC_HSP_GPS:
8724 case DEVICE_SERIAL_TNC_AUX_GPS:
8725 case DEVICE_SERIAL_GPS:
8726 case DEVICE_SERIAL_WX:
8727 xastir_snprintf(temp,
8728 sizeof(temp),
8729 langcode("IFDIN00003"),
8730 langcode("UNIOP00006"),
8731 i,
8732 temp2,
8733 dtype[devices[i].device_type].device_name,
8734 devices[i].device_name,
8735 devices[i].comment);
8736 strncat(temp,
8737 " ",
8738 sizeof(temp) - 1 - strlen(temp));
8739 break;
8740
8741 case DEVICE_SERIAL_MKISS_TNC:
8742 xastir_snprintf(temp,
8743 sizeof(temp),
8744 langcode("IFDIN00004"),
8745 langcode("UNIOP00006"),
8746 i,
8747 temp2,
8748 dtype[devices[i].device_type].device_name,
8749 devices[i].device_name,
8750 atoi(devices[i].radio_port),
8751 devices[i].comment);
8752 strncat(temp,
8753 " ",
8754 sizeof(temp) - 1 - strlen(temp));
8755 break;
8756
8757 case DEVICE_NET_DATABASE:
8758 case DEVICE_SQL_DATABASE:
8759 case DEVICE_NET_STREAM:
8760 case DEVICE_NET_GPSD:
8761 case DEVICE_NET_WX:
8762 case DEVICE_NET_AGWPE:
8763 xastir_snprintf(temp,
8764 sizeof(temp),
8765 langcode("IFDIN00004"),
8766 langcode("UNIOP00006"),
8767 i,
8768 temp2,
8769 dtype[devices[i].device_type].device_name,
8770 devices[i].device_host_name,
8771 devices[i].sp,
8772 devices[i].comment);
8773 strncat(temp,
8774 " ",
8775 sizeof(temp) - 1 - strlen(temp));
8776 break;
8777
8778 case DEVICE_AX25_TNC:
8779 xastir_snprintf(temp,
8780 sizeof(temp),
8781 langcode("IFDIN00005"),
8782 langcode("UNIOP00006"),
8783 i,
8784 temp2,
8785 dtype[devices[i].device_type].device_name,
8786 devices[i].device_name,
8787 devices[i].comment);
8788 strncat(temp,
8789 " ",
8790 sizeof(temp) - 1 - strlen(temp));
8791 break;
8792
8793 default:
8794 break;
8795 }
8796 /* look at list data (Must be "Device" port#) */
8797 XmListAddItem(control_iface_list, str_ptr = XmStringCreateLtoR(temp,XmFONTLIST_DEFAULT_TAG),n++);
8798 XmStringFree(str_ptr);
8799 break;
8800
8801 case 4 :
8802 /* delete entire list available */
8803 XmListDeleteAllItems(control_iface_list);
8804 return; // Exit routine
8805 break;
8806
8807 default:
8808 break;
8809 }
8810 }
8811 }
8812 }
8813
8814
8815
8816
8817
8818 // Rebuild the list in the interface control dialog so that the
8819 // current status of each interface is shown.
8820 //
update_interface_list(void)8821 void update_interface_list(void)
8822 {
8823
8824 // If the interface control dialog exists
8825 if (control_interface_dialog)
8826 {
8827
8828 // Delete the entire list
8829 modify_device_list(4,0);
8830
8831 // Create the list again with updated values
8832 modify_device_list(3,0);
8833 }
8834 }
8835
8836
8837
8838
8839
interface_setup(Widget w,XtPointer clientData,XtPointer UNUSED (callData))8840 void interface_setup(Widget w, XtPointer clientData, XtPointer UNUSED(callData) )
8841 {
8842 char *what = (char *)clientData;
8843 int x,i,do_w;
8844 char *temp;
8845 /*char temp2[100];*/
8846 XmString *list;
8847 int port;
8848 int found;
8849
8850 port=-1;
8851 found=0;
8852 do_w=atoi(what);
8853
8854 /* get option selected */
8855 XtVaGetValues(interface_type_list,
8856 XmNitemCount,&i,
8857 XmNitems,&list,
8858 NULL);
8859
8860 for (x=1; x<=i; x++)
8861 {
8862 if (XmListPosSelected(interface_type_list,x))
8863 {
8864 found=x;
8865 if (XmStringGetLtoR(list[(x-1)],XmFONTLIST_DEFAULT_TAG,&temp))
8866 {
8867 x=i+1;
8868 }
8869 }
8870 }
8871
8872 /* if selection was made */
8873 if (found)
8874 {
8875 if (do_w==0) // Add an interface
8876 {
8877 /* add */
8878 /*fprintf(stderr,"ADD DEVICE\n");*/
8879
8880 /* delete list */
8881
8882 begin_critical_section(&devices_lock, "interface_gui.c:interface_setup" );
8883 modify_device_list(0,0);
8884 end_critical_section(&devices_lock, "interface_gui.c:interface_setup" );
8885
8886 port=get_open_device(); // Find an unused port number
8887 /*fprintf(stderr,"Open_port %d\n",port);*/
8888
8889 if(port!=-1)
8890 {
8891 /*devices[port].device_type=found;*/
8892 /*fprintf(stderr,"adding device %s on port %d\n",dtype[found].device_name,port);*/
8893
8894 switch (found)
8895 {
8896
8897 //WE7U: Set up for new KISS device type
8898 case DEVICE_SERIAL_KISS_TNC:
8899 // configure this port
8900 if (debug_level & 1)
8901 {
8902 fprintf(stderr,"ADD SERIAL KISS TNC\n");
8903 }
8904 Config_TNC(w, DEVICE_SERIAL_KISS_TNC, 0, port);
8905 break;
8906
8907 case DEVICE_SERIAL_MKISS_TNC:
8908 // configure this port
8909 if (debug_level & 1)
8910 {
8911 fprintf(stderr,"ADD SERIAL MKISS TNC\n");
8912 }
8913 Config_TNC(w, DEVICE_SERIAL_MKISS_TNC, 0, port);
8914 break;
8915
8916 case DEVICE_SERIAL_TNC:
8917 /* configure this port */
8918 if (debug_level & 1)
8919 {
8920 fprintf(stderr,"ADD SERIAL TNC\n");
8921 }
8922 Config_TNC(w, DEVICE_SERIAL_TNC, 0, port);
8923 break;
8924
8925 case DEVICE_SERIAL_TNC_HSP_GPS:
8926 /* configure this port */
8927 if (debug_level & 1)
8928 {
8929 fprintf(stderr,"ADD SERIAL TNC w HSP GPS\n");
8930 }
8931 Config_TNC(w, DEVICE_SERIAL_TNC_HSP_GPS, 0, port);
8932 break;
8933
8934 case DEVICE_SERIAL_TNC_AUX_GPS:
8935 /* configure this port */
8936 if (debug_level & 1)
8937 {
8938 fprintf(stderr,"ADD SERIAL TNC w AUX GPS\n");
8939 }
8940 Config_TNC(w, DEVICE_SERIAL_TNC_AUX_GPS, 0, port);
8941 break;
8942
8943 case DEVICE_SERIAL_GPS:
8944 /* configure this port */
8945 if (debug_level & 1)
8946 {
8947 fprintf(stderr,"ADD SERIAL GPS\n");
8948 }
8949 Config_GPS(w, 0, port);
8950 break;
8951
8952 case DEVICE_SERIAL_WX:
8953 /* configure this port */
8954 if (debug_level & 1)
8955 {
8956 fprintf(stderr,"ADD SERIAL WX\n");
8957 }
8958 Config_WX(w, 0, port);
8959 break;
8960
8961 case DEVICE_NET_WX:
8962 /* configure this port */
8963 if (debug_level & 1)
8964 {
8965 fprintf(stderr,"ADD Network WX\n");
8966 }
8967 Config_NWX(w, 0, port);
8968 break;
8969
8970 case DEVICE_NET_GPSD:
8971 /* configure this port */
8972 if (debug_level & 1)
8973 {
8974 fprintf(stderr,"ADD Network GPS\n");
8975 }
8976 Config_NGPS(w, 0, port);
8977 break;
8978
8979 case DEVICE_AX25_TNC:
8980 /* configure this port */
8981 if (debug_level & 1)
8982 #ifdef HAVE_LIBAX25
8983 fprintf(stderr,"ADD AX.25 TNC\n");
8984 Config_AX25(w, 0, port);
8985 #else // HAVE_LIBAX25
8986 fprintf(stderr,"AX.25 support not compiled into Xastir!\n");
8987 popup_message(langcode("POPEM00004"),langcode("POPEM00021"));
8988
8989 #endif // HAVE_LIBAX25
8990 break;
8991
8992 case DEVICE_NET_STREAM:
8993 /* configure this port */
8994 if (debug_level & 1)
8995 {
8996 fprintf(stderr,"ADD NET STREAM\n");
8997 }
8998 Config_Inet(w, 0, port);
8999 break;
9000
9001 case DEVICE_NET_DATABASE:
9002 /* configure this port */
9003 if (debug_level & 1)
9004 {
9005 fprintf(stderr,"ADD NET DATABASE\n");
9006 }
9007 Config_Database(w, 0, port);
9008 break;
9009 #ifdef HAVE_DB
9010 case DEVICE_SQL_DATABASE:
9011 /* configure this port */
9012 if (debug_level & 1)
9013 {
9014 fprintf(stderr,"ADD SQL DATABASE\n");
9015 }
9016 Config_sql_Database(w, 0, port);
9017 break;
9018 #endif /* HAVE_DB */
9019 case DEVICE_NET_AGWPE:
9020 /* configure this port */
9021 if (debug_level & 1)
9022 {
9023 fprintf(stderr,"ADD NET AGWPE\n");
9024 }
9025 Config_AGWPE(w, 0, port);
9026 break;
9027
9028 default:
9029 break;
9030 }
9031 }
9032
9033 /* rebuild list */
9034
9035 begin_critical_section(&devices_lock, "interface_gui.c:interface_setup" );
9036 modify_device_list(2,0);
9037 end_critical_section(&devices_lock, "interface_gui.c:interface_setup" );
9038
9039 }
9040 /*fprintf(stderr,"SELECTION is %s\n",temp);*/
9041 XtFree(temp);
9042 }
9043 }
9044
9045
9046
9047
9048
9049 // clientData:
9050 // 0 = Add
9051 // 1 = Delete
9052 // 2 = Properties
9053 //
interface_option(Widget w,XtPointer clientData,XtPointer UNUSED (callData))9054 void interface_option(Widget w, XtPointer clientData, XtPointer UNUSED(callData) )
9055 {
9056 Widget pane, scrollwindow, form, label, button_add, button_cancel;
9057 char *what = (char *)clientData;
9058 int i,x,n,do_w;
9059 char *temp;
9060 char temp2[50];
9061 int port;
9062 XmString *list;
9063 // int data_on,pos;
9064 int found;
9065 Atom delw;
9066 XmString str_ptr;
9067 Arg al[50]; /* Arg List */
9068 register unsigned int ac = 0; /* Arg Count */
9069
9070 // data_on=0;
9071 // pos=0;
9072 found=0;
9073 do_w=atoi(what);
9074 switch (do_w)
9075 {
9076 case 0:/* add interface */
9077 if (!choose_interface_dialog)
9078 {
9079 choose_interface_dialog = XtVaCreatePopupShell(langcode("WPUPCIF002"),
9080 xmDialogShellWidgetClass, appshell,
9081 XmNdeleteResponse, XmDESTROY,
9082 XmNdefaultPosition, FALSE,
9083 XmNresize, FALSE,
9084 XmNfontList, fontlist1,
9085 NULL);
9086
9087 pane = XtVaCreateWidget("interface_option pane",xmPanedWindowWidgetClass, choose_interface_dialog,
9088 XmNbackground, colors[0xff],
9089 NULL);
9090
9091 scrollwindow = XtVaCreateManagedWidget("scrollwindow",
9092 xmScrolledWindowWidgetClass,
9093 pane,
9094 XmNscrollingPolicy, XmAUTOMATIC,
9095 NULL);
9096
9097 form = XtVaCreateWidget("interface_option form",
9098 xmFormWidgetClass,
9099 scrollwindow,
9100 XmNfractionBase, 5,
9101 XmNbackground, colors[0xff],
9102 XmNautoUnmanage, FALSE,
9103 XmNshadowThickness, 1,
9104 NULL);
9105
9106 label = XtVaCreateManagedWidget(langcode("WPUPCIF002"),xmLabelWidgetClass, form,
9107 XmNtopAttachment, XmATTACH_FORM,
9108 XmNtopOffset, 10,
9109 XmNbottomAttachment, XmATTACH_NONE,
9110 XmNleftAttachment, XmATTACH_FORM,
9111 XmNleftOffset, 5,
9112 XmNrightAttachment, XmATTACH_NONE,
9113 XmNbackground, colors[0xff],
9114 XmNfontList, fontlist1,
9115 NULL);
9116
9117 /*set args for color */
9118 ac=0;
9119 XtSetArg(al[ac], XmNbackground, colors[0xff]);
9120 ac++;
9121 XtSetArg(al[ac], XmNvisibleItemCount, MAX_IFACE_DEVICE_TYPES);
9122 ac++;
9123 XtSetArg(al[ac], XmNtraversalOn, TRUE);
9124 ac++;
9125 XtSetArg(al[ac], XmNshadowThickness, 3);
9126 ac++;
9127 XtSetArg(al[ac], XmNselectionPolicy, XmSINGLE_SELECT);
9128 ac++;
9129 XtSetArg(al[ac], XmNscrollBarPlacement, XmBOTTOM_RIGHT);
9130 ac++;
9131 XtSetArg(al[ac], XmNtopAttachment, XmATTACH_WIDGET);
9132 ac++;
9133 XtSetArg(al[ac], XmNtopWidget, label);
9134 ac++;
9135 XtSetArg(al[ac], XmNtopOffset, 5);
9136 ac++;
9137 XtSetArg(al[ac], XmNbottomAttachment, XmATTACH_NONE);
9138 ac++;
9139 XtSetArg(al[ac], XmNrightAttachment, XmATTACH_FORM);
9140 ac++;
9141 XtSetArg(al[ac], XmNrightOffset, 5);
9142 ac++;
9143 XtSetArg(al[ac], XmNleftAttachment, XmATTACH_FORM);
9144 ac++;
9145 XtSetArg(al[ac], XmNleftOffset, 5);
9146 ac++;
9147 XtSetArg(al[ac], XmNfontList, fontlist1);
9148 ac++;
9149
9150 interface_type_list = XmCreateScrolledList(form,"interface_option list",al,ac);
9151 n=1;
9152 for (i=1; i<MAX_IFACE_DEVICE_TYPES; i++)
9153 {
9154 XmListAddItem(interface_type_list, str_ptr = XmStringCreateLtoR(dtype[i].device_name,XmFONTLIST_DEFAULT_TAG),n++);
9155 XmStringFree(str_ptr);
9156 }
9157 button_add = XtVaCreateManagedWidget(langcode("UNIOP00007"),xmPushButtonGadgetClass, form,
9158 XmNnavigationType, XmTAB_GROUP,
9159 XmNtraversalOn, TRUE,
9160 XmNtopAttachment, XmATTACH_WIDGET,
9161 XmNtopWidget, XtParent(interface_type_list),
9162 XmNtopOffset,10,
9163 XmNbottomAttachment, XmATTACH_FORM,
9164 XmNbottomOffset, 5,
9165 XmNleftAttachment, XmATTACH_POSITION,
9166 XmNleftPosition, 1,
9167 XmNrightAttachment, XmATTACH_POSITION,
9168 XmNrightPosition, 2,
9169 XmNbackground, colors[0xff],
9170 XmNfontList, fontlist1,
9171 NULL);
9172
9173 button_cancel = XtVaCreateManagedWidget(langcode("UNIOP00003"),xmPushButtonGadgetClass, form,
9174 XmNnavigationType, XmTAB_GROUP,
9175 XmNtraversalOn, TRUE,
9176 XmNtopAttachment, XmATTACH_WIDGET,
9177 XmNtopWidget, XtParent(interface_type_list),
9178 XmNtopOffset,10,
9179 XmNbottomAttachment, XmATTACH_FORM,
9180 XmNbottomOffset, 5,
9181 XmNleftAttachment, XmATTACH_POSITION,
9182 XmNleftPosition, 3,
9183 XmNrightAttachment, XmATTACH_POSITION,
9184 XmNrightPosition, 4,
9185 XmNbackground, colors[0xff],
9186 XmNfontList, fontlist1,
9187 NULL);
9188
9189 XtAddCallback(button_cancel, XmNactivateCallback, Choose_interface_destroy_shell, choose_interface_dialog);
9190 XtAddCallback(button_add, XmNactivateCallback, interface_setup, "0");
9191
9192 pos_dialog(choose_interface_dialog);
9193
9194 delw = XmInternAtom(XtDisplay(choose_interface_dialog),"WM_DELETE_WINDOW", FALSE);
9195 XmAddWMProtocolCallback(choose_interface_dialog, delw, Choose_interface_destroy_shell, (XtPointer)configure_interface_dialog);
9196
9197 XtManageChild(form);
9198 XtManageChild(interface_type_list);
9199 XtVaSetValues(interface_type_list, XmNbackground, colors[0x0f], NULL);
9200 XtManageChild(pane);
9201
9202 resize_dialog(form, choose_interface_dialog);
9203
9204 XtPopup(choose_interface_dialog,XtGrabNone);
9205
9206 // Move focus to the Cancel button. This appears to highlight the
9207 // button fine, but we're not able to hit the <Enter> key to
9208 // have that default function happen. Note: We _can_ hit the
9209 // <SPACE> key, and that activates the option.
9210 // XmUpdateDisplay(choose_interface_dialog);
9211 XmProcessTraversal(button_cancel, XmTRAVERSE_CURRENT);
9212
9213 }
9214 else
9215 {
9216 (void)XRaiseWindow(XtDisplay(choose_interface_dialog), XtWindow(choose_interface_dialog));
9217 }
9218 break;
9219
9220 case 1:/* delete interface */
9221
9222 case 2:/* interface properties */
9223 /* get option selected */
9224 XtVaGetValues(control_iface_list,
9225 XmNitemCount,&i,
9226 XmNitems,&list,
9227 NULL);
9228
9229 for (x=1; x<=i; x++)
9230 {
9231 if(XmListPosSelected(control_iface_list,x))
9232 {
9233 found=1;
9234 if (XmStringGetLtoR(list[(x-1)],XmFONTLIST_DEFAULT_TAG,&temp))
9235 {
9236 x=i+1;
9237 }
9238 }
9239 }
9240
9241 /* if selection was made */
9242 if (found)
9243 {
9244 /* look at list data (Must be "Device" port#) */
9245 if (2 != sscanf(temp,"%49s %d",temp2,&port))
9246 {
9247 fprintf(stderr,"interface_option:sscanf parsing error\n");
9248 }
9249 if(do_w==1)
9250 {
9251 /* delete interface */
9252 /*fprintf(stderr,"delete interface port %d\n",port);*/
9253
9254 if (port_data[port].active==DEVICE_IN_USE)
9255 {
9256 /* shut down and delete port */
9257 /*fprintf(stderr,"Shutting down port %d\n",port);*/
9258 (void)del_device(port);
9259 }
9260
9261 begin_critical_section(&devices_lock, "interface_gui.c:interface_option" );
9262
9263 /* delete item at that port */
9264 modify_device_list(1,port);
9265 /* Clear device */
9266 devices[port].device_type=DEVICE_NONE;
9267 devices[port].device_name[0] = '\0';
9268 devices[port].radio_port[0] = '\0';
9269 devices[port].device_converse_string[0] = '\0';
9270 devices[port].device_host_name[0] = '\0';
9271 devices[port].device_host_pswd[0] = '\0';
9272 devices[port].device_host_filter_string[0] = '\0';
9273 devices[port].comment[0] = '\0';
9274 devices[port].unproto1[0] = '\0';
9275 devices[port].unproto2[0] = '\0';
9276 devices[port].unproto3[0] = '\0';
9277 devices[port].unproto_igate[0] = '\0';
9278 devices[port].style=0;
9279 devices[port].igate_options=0;
9280 devices[port].transmit_data=0;
9281 devices[port].reconnect=0;
9282 devices[port].connect_on_startup=0;
9283
9284 end_critical_section(&devices_lock, "interface_gui.c:interface_option" );
9285
9286 }
9287 else
9288 {
9289 /* Properties */
9290
9291 begin_critical_section(&devices_lock, "interface_gui.c:interface_option" );
9292
9293 if (debug_level & 1)
9294 {
9295 fprintf(stderr,"Changing device %s on port %d\n",
9296 dtype[devices[port].device_type].device_name,port);
9297 }
9298 switch (devices[port].device_type)
9299 {
9300 case DEVICE_SERIAL_TNC:
9301
9302 end_critical_section(&devices_lock, "interface_gui.c:interface_option" );
9303
9304 /* configure this port */
9305 if (debug_level & 1)
9306 {
9307 fprintf(stderr,"Modify SERIAL TNC\n");
9308 }
9309 Config_TNC(w, DEVICE_SERIAL_TNC, 1, port);
9310 break;
9311
9312 case DEVICE_SERIAL_KISS_TNC:
9313
9314 end_critical_section(&devices_lock, "interface_gui.c:interface_option" );
9315
9316 /* configure this port */
9317 if (debug_level & 1)
9318 {
9319 fprintf(stderr,"Modify SERIAL KISS TNC\n");
9320 }
9321 Config_TNC(w, DEVICE_SERIAL_KISS_TNC, 1, port);
9322 break;
9323
9324 case DEVICE_SERIAL_MKISS_TNC:
9325
9326 end_critical_section(&devices_lock, "interface_gui.c:interface_option" );
9327
9328 /* configure this port */
9329 if (debug_level & 1)
9330 {
9331 fprintf(stderr,"Modify SERIAL MKISS TNC\n");
9332 }
9333 Config_TNC(w, DEVICE_SERIAL_MKISS_TNC, 1, port);
9334 break;
9335
9336 case DEVICE_SERIAL_TNC_HSP_GPS:
9337
9338 end_critical_section(&devices_lock, "interface_gui.c:interface_option" );
9339
9340 /* configure this port */
9341 if (debug_level & 1)
9342 {
9343 fprintf(stderr,"Modify SERIAL TNC with HSP GPS\n");
9344 }
9345 Config_TNC(w, DEVICE_SERIAL_TNC_HSP_GPS, 1, port);
9346 break;
9347
9348 case DEVICE_SERIAL_TNC_AUX_GPS:
9349
9350 end_critical_section(&devices_lock, "interface_gui.c:interface_option" );
9351
9352 /* configure this port */
9353 if (debug_level & 1)
9354 {
9355 fprintf(stderr,"Modify SERIAL TNC with AUX GPS\n");
9356 }
9357 Config_TNC(w, DEVICE_SERIAL_TNC_AUX_GPS, 1, port);
9358 break;
9359
9360 case DEVICE_SERIAL_GPS:
9361
9362 end_critical_section(&devices_lock, "interface_gui.c:interface_option" );
9363
9364 /* configure this port */
9365 if (debug_level & 1)
9366 {
9367 fprintf(stderr,"Modify SERIAL GPS\n");
9368 }
9369 Config_GPS(w, 1, port);
9370 break;
9371
9372 case DEVICE_SERIAL_WX:
9373
9374 end_critical_section(&devices_lock, "interface_gui.c:interface_option" );
9375
9376 /* configure this port */
9377 if (debug_level & 1)
9378 {
9379 fprintf(stderr,"Modify SERIAL WX\n");
9380 }
9381 Config_WX(w, 1, port);
9382 break;
9383
9384 case DEVICE_NET_WX:
9385
9386 end_critical_section(&devices_lock, "interface_gui.c:interface_option" );
9387
9388 /* configure this port */
9389 if (debug_level & 1)
9390 {
9391 fprintf(stderr,"Modify Network WX\n");
9392 }
9393 Config_NWX(w, 1, port);
9394 break;
9395
9396 case DEVICE_NET_GPSD:
9397
9398 end_critical_section(&devices_lock, "interface_gui.c:interface_option" );
9399
9400 /* configure this port */
9401 if (debug_level & 1)
9402 {
9403 fprintf(stderr,"Modify Network GPS\n");
9404 }
9405 Config_NGPS(w, 1, port);
9406 break;
9407
9408 case DEVICE_AX25_TNC:
9409
9410 end_critical_section(&devices_lock, "interface_gui.c:interface_option" );
9411
9412 /* configure this port */
9413 if (debug_level & 1)
9414 {
9415 fprintf(stderr,"Modify AX.25 TNC\n");
9416 }
9417 Config_AX25(w, 1, port);
9418 break;
9419
9420 case DEVICE_NET_STREAM:
9421
9422 end_critical_section(&devices_lock, "interface_gui.c:interface_option" );
9423
9424 /* configure this port */
9425 if (debug_level & 1)
9426 {
9427 fprintf(stderr,"Modify NET STREAM\n");
9428 }
9429 Config_Inet(w, 1, port);
9430 break;
9431
9432 case DEVICE_NET_DATABASE:
9433
9434 end_critical_section(&devices_lock, "interface_gui.c:interface_option" );
9435
9436 /* configure this port */
9437 if (debug_level & 1)
9438 {
9439 fprintf(stderr,"Modify NET DATABASE\n");
9440 }
9441 Config_Database(w, 1, port);
9442 break;
9443 #ifdef HAVE_DB
9444 case DEVICE_SQL_DATABASE:
9445
9446 end_critical_section(&devices_lock, "interface_gui.c:interface_option" );
9447
9448 /* configure this port */
9449 if (debug_level & 1)
9450 {
9451 fprintf(stderr,"Modify SQL DATABASE\n");
9452 }
9453 Config_sql_Database(w, 1, port);
9454 break;
9455 #endif /* HAVE_DB */
9456 case DEVICE_NET_AGWPE:
9457
9458 end_critical_section(&devices_lock, "interface_gui.c:interface_option" );
9459
9460 /* configure this port */
9461 if (debug_level & 1)
9462 {
9463 fprintf(stderr,"Modify NET AGWPE\n");
9464 }
9465 Config_AGWPE(w, 1, port);
9466 break;
9467
9468 default:
9469
9470 end_critical_section(&devices_lock, "interface_gui.c:interface_option" );
9471
9472 break;
9473 }
9474 }
9475 /*fprintf(stderr,"interface - %s\n",temp);*/
9476 XtFree(temp);
9477 }
9478 break;
9479
9480 default:
9481 break;
9482 }
9483 }
9484
9485
9486
9487
9488
9489 /*****************************************************/
9490 /* Control Interface GUI */
9491 /*****************************************************/
9492 extern void startup_all_or_defined_port(int port);
9493 extern void shutdown_all_active_or_defined_port(int port);
9494
9495
9496
9497
9498
start_stop_interface(Widget UNUSED (widget),XtPointer clientData,XtPointer UNUSED (callData))9499 void start_stop_interface( Widget UNUSED(widget), XtPointer clientData, XtPointer UNUSED(callData) )
9500 {
9501 char *which = (char *)clientData;
9502 int do_w;
9503 char temp2[50];
9504 int i,x;
9505 char *temp;
9506 int port;
9507 XmString *list;
9508 int found;
9509
9510 busy_cursor(appshell);
9511
9512 found=0;
9513 /* get option selected */
9514 XtVaGetValues(control_iface_list,
9515 XmNitemCount,&i,
9516 XmNitems,&list,
9517 NULL);
9518
9519 for (x=1; x<=i; x++)
9520 {
9521 if (XmListPosSelected(control_iface_list,x))
9522 {
9523 found=1;
9524 if (XmStringGetLtoR(list[(x-1)],XmFONTLIST_DEFAULT_TAG,&temp))
9525 {
9526 x=i+1;
9527 }
9528 }
9529 }
9530
9531 /* if selection was made */
9532 if (found)
9533 {
9534
9535 /* delete list */
9536
9537 //begin_critical_section(&devices_lock, "interface_gui.c:start_stop_interface" );
9538 // modify_device_list(4,0);
9539 //end_critical_section(&devices_lock, "interface_gui.c:start_stop_interface" );
9540
9541 /* look at list data (Must be "Device" port#) */
9542 if (2 != sscanf(temp,"%49s %d",temp2,&port))
9543 {
9544 fprintf(stderr,"start_stop_interface:sscanf parsing error\n");
9545 }
9546 /*fprintf(stderr,"Port to change %d\n",port);*/
9547 do_w = atoi(which);
9548 if (do_w)
9549 {
9550 shutdown_all_active_or_defined_port(port);
9551 }
9552 else
9553 {
9554 /*fprintf(stderr,"DO port up\n");*/
9555 if (port_data[port].active==DEVICE_IN_USE)
9556 {
9557 /*fprintf(stderr,"Device was up, Shutting down\n");*/
9558 shutdown_all_active_or_defined_port(port);
9559 }
9560 /* now start port */
9561 startup_all_or_defined_port(port);
9562 }
9563 /* rebuild list */
9564
9565 //begin_critical_section(&devices_lock, "interface_gui.c:start_stop_interface" );
9566 // modify_device_list(3,0);
9567 //end_critical_section(&devices_lock, "interface_gui.c:start_stop_interface" );
9568
9569 // Rebuild the interface control list
9570 update_interface_list();
9571
9572 XtFree(temp);
9573 }
9574 }
9575
9576
9577
9578
9579
start_stop_all_interfaces(Widget UNUSED (widget),XtPointer clientData,XtPointer UNUSED (callData))9580 void start_stop_all_interfaces( Widget UNUSED(widget), XtPointer clientData, XtPointer UNUSED(callData) )
9581 {
9582 char *which = (char *)clientData; // Whether to start or stop the interfaces
9583 int do_w;
9584
9585 busy_cursor(appshell);
9586
9587 //begin_critical_section(&devices_lock, "interface_gui.c:start_stop_all_interfaces" );
9588 // modify_device_list(4,0);
9589 //end_critical_section(&devices_lock, "interface_gui.c:start_stop_all_interfaces" );
9590
9591 do_w = atoi(which);
9592 if (do_w) // We wish to shut down all ports
9593 {
9594 shutdown_all_active_or_defined_port(-1);
9595 }
9596 else // We wish to start up all ports
9597 {
9598 startup_all_or_defined_port(-2);
9599 }
9600 /* rebuild list */
9601
9602 //begin_critical_section(&devices_lock, "interface_gui.c:start_stop_all_interfaces" );
9603 // modify_device_list(3,0);
9604 //end_critical_section(&devices_lock, "interface_gui.c:start_stop_all_interfaces" );
9605
9606 // Rebuild the interface control list
9607 update_interface_list();
9608
9609 }
9610
9611
9612
9613
9614
Control_interface_destroy_shell(Widget UNUSED (widget),XtPointer clientData,XtPointer UNUSED (callData))9615 void Control_interface_destroy_shell( Widget UNUSED(widget), XtPointer clientData, XtPointer UNUSED(callData) )
9616 {
9617 Widget shell = (Widget) clientData;
9618 XtPopdown(shell);
9619
9620 begin_critical_section(&control_interface_dialog_lock, "interface_gui.c:Control_interface_destroy_shell" );
9621
9622 XtDestroyWidget(shell);
9623 control_interface_dialog = (Widget)NULL;
9624
9625 end_critical_section(&control_interface_dialog_lock, "interface_gui.c:Control_interface_destroy_shell" );
9626
9627 }
9628
9629
9630
9631
9632
control_interface(Widget UNUSED (w),XtPointer UNUSED (clientData),XtPointer UNUSED (callData))9633 void control_interface( Widget UNUSED(w), XtPointer UNUSED(clientData), XtPointer UNUSED(callData) )
9634 {
9635 static Widget scrollwindow, rowcol, form, button_start, button_stop, button_start_all, button_stop_all, button_cancel;
9636 static Widget button_add, button_delete, button_properties;
9637 Atom delw;
9638 Arg al[50]; /* Arg List */
9639 register unsigned int ac = 0; /* Arg Count */
9640
9641
9642 if(!control_interface_dialog)
9643 {
9644
9645 begin_critical_section(&control_interface_dialog_lock, "interface_gui.c:control_interface" );
9646
9647 control_interface_dialog = XtVaCreatePopupShell(langcode("IFPUPCT000"),
9648 xmDialogShellWidgetClass, appshell,
9649 XmNdeleteResponse, XmDESTROY,
9650 XmNdefaultPosition, FALSE,
9651 XmNresize, TRUE,
9652 XmNfontList, fontlist1,
9653 NULL);
9654
9655 scrollwindow = XtVaCreateManagedWidget("scrollwindow",
9656 xmScrolledWindowWidgetClass,
9657 control_interface_dialog,
9658 XmNscrollingPolicy, XmAUTOMATIC,
9659 NULL);
9660
9661 rowcol = XtVaCreateWidget("control_interface rowcol",
9662 xmRowColumnWidgetClass,
9663 scrollwindow,
9664 XmNorientation, XmVERTICAL,
9665 XmNnumColumns, 1,
9666 XmNpacking, XmPACK_TIGHT,
9667 XmNisAligned, TRUE,
9668 XmNentryAlignment, XmALIGNMENT_CENTER,
9669 XmNkeyboardFocusPolicy, XmEXPLICIT,
9670 XmNbackground, colors[0xff],
9671 XmNautoUnmanage, FALSE,
9672 XmNshadowThickness, 1,
9673 NULL);
9674
9675 /*set args for color */
9676 ac=0;
9677 XtSetArg(al[ac], XmNbackground, colors[0xff]);
9678 ac++;
9679 XtSetArg(al[ac], XmNvisibleItemCount, MAX_IFACE_DEVICES);
9680 ac++;
9681 XtSetArg(al[ac], XmNtraversalOn, TRUE);
9682 ac++;
9683 XtSetArg(al[ac], XmNshadowThickness, 3);
9684 ac++;
9685 XtSetArg(al[ac], XmNselectionPolicy, XmSINGLE_SELECT);
9686 ac++;
9687 XtSetArg(al[ac], XmNscrollBarPlacement, XmBOTTOM_RIGHT);
9688 ac++;
9689 XtSetArg(al[ac], XmNtopAttachment, XmATTACH_FORM);
9690 ac++;
9691 XtSetArg(al[ac], XmNtopOffset, 5);
9692 ac++;
9693 XtSetArg(al[ac], XmNbottomAttachment, XmATTACH_FORM);
9694 ac++;
9695 XtSetArg(al[ac], XmNrightAttachment, XmATTACH_FORM);
9696 ac++;
9697 XtSetArg(al[ac], XmNrightOffset, 5);
9698 ac++;
9699 XtSetArg(al[ac], XmNleftAttachment, XmATTACH_FORM);
9700 ac++;
9701 XtSetArg(al[ac], XmNleftOffset, 5);
9702 ac++;
9703 XtSetArg(al[ac], XmNfontList, fontlist1);
9704 ac++;
9705 control_iface_list = XmCreateScrolledList(rowcol,"control_interface list",al,ac);
9706
9707 /* build device list */
9708
9709 begin_critical_section(&devices_lock, "interface_gui.c:control_interface" );
9710 modify_device_list(3,0);
9711 end_critical_section(&devices_lock, "interface_gui.c:control_interface" );
9712
9713 form = XtVaCreateWidget("control_interface form",xmFormWidgetClass, rowcol,
9714 XmNfractionBase, 4,
9715 XmNbackground, colors[0xff],
9716 XmNautoUnmanage, FALSE,
9717 XmNshadowThickness, 1,
9718 NULL);
9719
9720 button_start = XtVaCreateManagedWidget(langcode("IFPUPCT001"),xmPushButtonGadgetClass, form,
9721 XmNnavigationType, XmTAB_GROUP,
9722 XmNtraversalOn, TRUE,
9723 XmNtopAttachment, XmATTACH_FORM,
9724 XmNtopOffset, 5,
9725 XmNleftAttachment, XmATTACH_FORM,
9726 XmNrightAttachment, XmATTACH_POSITION,
9727 XmNrightPosition, 1,
9728 XmNbottomAttachment, XmATTACH_NONE,
9729 XmNbackground, colors[0xff],
9730 XmNnavigationType, XmTAB_GROUP,
9731 XmNfontList, fontlist1,
9732 NULL);
9733
9734 button_start_all = XtVaCreateManagedWidget(langcode("IFPUPCT003"),xmPushButtonGadgetClass, form,
9735 XmNnavigationType, XmTAB_GROUP,
9736 XmNtraversalOn, TRUE,
9737 XmNtopAttachment, XmATTACH_FORM,
9738 XmNtopOffset, 5,
9739 XmNleftAttachment, XmATTACH_POSITION,
9740 XmNleftPosition, 1,
9741 XmNrightAttachment, XmATTACH_POSITION,
9742 XmNrightPosition, 2,
9743 XmNbottomAttachment, XmATTACH_NONE,
9744 XmNbackground, colors[0xff],
9745 XmNnavigationType, XmTAB_GROUP,
9746 XmNfontList, fontlist1,
9747 NULL);
9748
9749 button_add = XtVaCreateManagedWidget(langcode("UNIOP00007"),xmPushButtonGadgetClass, form,
9750 XmNnavigationType, XmTAB_GROUP,
9751 XmNtraversalOn, TRUE,
9752 XmNtopAttachment, XmATTACH_FORM,
9753 XmNtopOffset,5,
9754 XmNbottomAttachment, XmATTACH_NONE,
9755 XmNleftAttachment, XmATTACH_POSITION,
9756 XmNleftPosition, 2,
9757 XmNrightAttachment, XmATTACH_POSITION,
9758 XmNrightPosition, 3,
9759 XmNbackground, colors[0xff],
9760 XmNfontList, fontlist1,
9761 NULL);
9762
9763 button_delete = XtVaCreateManagedWidget(langcode("UNIOP00008"),xmPushButtonGadgetClass, form,
9764 XmNnavigationType, XmTAB_GROUP,
9765 XmNtraversalOn, TRUE,
9766 XmNtopAttachment, XmATTACH_FORM,
9767 XmNtopOffset,5,
9768 XmNbottomAttachment, XmATTACH_NONE,
9769 XmNleftAttachment, XmATTACH_POSITION,
9770 XmNleftPosition, 3,
9771 XmNrightAttachment, XmATTACH_POSITION,
9772 XmNrightPosition, 4,
9773 XmNbackground, colors[0xff],
9774 XmNfontList, fontlist1,
9775 NULL);
9776
9777 button_stop = XtVaCreateManagedWidget(langcode("IFPUPCT002"),xmPushButtonGadgetClass, form,
9778 XmNnavigationType, XmTAB_GROUP,
9779 XmNtraversalOn, TRUE,
9780 XmNtopAttachment, XmATTACH_WIDGET,
9781 XmNtopWidget, button_start,
9782 XmNleftAttachment, XmATTACH_POSITION,
9783 XmNleftPosition, 0,
9784 XmNrightAttachment, XmATTACH_POSITION,
9785 XmNrightPosition, 1,
9786 XmNbottomAttachment, XmATTACH_FORM,
9787 XmNbackground, colors[0xff],
9788 XmNnavigationType, XmTAB_GROUP,
9789 XmNfontList, fontlist1,
9790 NULL);
9791
9792 button_stop_all = XtVaCreateManagedWidget(langcode("IFPUPCT004"),xmPushButtonGadgetClass, form,
9793 XmNnavigationType, XmTAB_GROUP,
9794 XmNtraversalOn, TRUE,
9795 XmNtopAttachment, XmATTACH_WIDGET,
9796 XmNtopWidget, button_start,
9797 XmNleftAttachment, XmATTACH_POSITION,
9798 XmNleftPosition, 1,
9799 XmNrightAttachment, XmATTACH_POSITION,
9800 XmNrightPosition, 2,
9801 XmNbottomAttachment, XmATTACH_FORM,
9802 XmNbackground, colors[0xff],
9803 XmNnavigationType, XmTAB_GROUP,
9804 XmNfontList, fontlist1,
9805 NULL);
9806
9807 button_properties = XtVaCreateManagedWidget(langcode("UNIOP00009"),xmPushButtonGadgetClass, form,
9808 XmNnavigationType, XmTAB_GROUP,
9809 XmNtraversalOn, TRUE,
9810 XmNtopAttachment, XmATTACH_WIDGET,
9811 XmNtopWidget, button_start,
9812 XmNbottomAttachment, XmATTACH_FORM,
9813 XmNleftAttachment, XmATTACH_POSITION,
9814 XmNleftPosition, 2,
9815 XmNrightAttachment, XmATTACH_POSITION,
9816 XmNrightPosition, 3,
9817 XmNbackground, colors[0xff],
9818 XmNfontList, fontlist1,
9819 NULL);
9820
9821 button_cancel = XtVaCreateManagedWidget(langcode("UNIOP00003"),xmPushButtonGadgetClass, form,
9822 XmNnavigationType, XmTAB_GROUP,
9823 XmNtraversalOn, TRUE,
9824 XmNtopAttachment, XmATTACH_WIDGET,
9825 XmNtopWidget, button_start,
9826 XmNrightAttachment, XmATTACH_FORM,
9827 XmNleftAttachment, XmATTACH_POSITION,
9828 XmNleftPosition, 3,
9829 XmNbottomAttachment, XmATTACH_FORM,
9830 XmNbackground, colors[0xff],
9831 XmNnavigationType, XmTAB_GROUP,
9832 XmNfontList, fontlist1,
9833 NULL);
9834
9835 XtAddCallback(button_add, XmNactivateCallback, interface_option, "0");
9836 XtAddCallback(button_delete, XmNactivateCallback, interface_option, "1");
9837 XtAddCallback(button_properties, XmNactivateCallback, interface_option, "2");
9838
9839 XtAddCallback(button_cancel, XmNactivateCallback, Control_interface_destroy_shell, control_interface_dialog);
9840 XtAddCallback(button_start, XmNactivateCallback, start_stop_interface, "0");
9841 XtAddCallback(button_stop, XmNactivateCallback, start_stop_interface, "1");
9842
9843 XtAddCallback(button_start_all, XmNactivateCallback, start_stop_all_interfaces, "0");
9844 XtAddCallback(button_stop_all, XmNactivateCallback, start_stop_all_interfaces, "1");
9845
9846 delw = XmInternAtom(XtDisplay(control_interface_dialog),"WM_DELETE_WINDOW", FALSE);
9847 XmAddWMProtocolCallback(control_interface_dialog, delw, Control_interface_destroy_shell, (XtPointer)control_interface_dialog);
9848
9849 XtVaSetValues(control_iface_list, XmNbackground, colors[0x0f], NULL);
9850
9851 pos_dialog(control_interface_dialog);
9852
9853 XtManageChild(control_iface_list);
9854 XtManageChild(form);
9855 XtManageChild(rowcol);
9856
9857 resize_dialog(rowcol, control_interface_dialog);
9858
9859 end_critical_section(&control_interface_dialog_lock, "interface_gui.c:control_interface" );
9860
9861 XtPopup(control_interface_dialog,XtGrabNone);
9862
9863 // Move focus to the Cancel button. This appears to highlight the
9864 // button fine, but we're not able to hit the <Enter> key to
9865 // have that default function happen. Note: We _can_ hit the
9866 // <SPACE> key, and that activates the option.
9867 // XmUpdateDisplay(control_interface_dialog);
9868 XmProcessTraversal(button_cancel, XmTRAVERSE_CURRENT);
9869
9870 }
9871 else
9872 {
9873 (void)XRaiseWindow(XtDisplay(control_interface_dialog), XtWindow(control_interface_dialog));
9874 }
9875 }
9876
9877
9878
9879
9880
interface_status(Widget w)9881 void interface_status(Widget w)
9882 {
9883 int i;
9884 char s;
9885 char opt;
9886 int read_data;
9887 int write_data;
9888
9889 read_data=0;
9890 write_data=0;
9891 s='\0';
9892
9893 begin_critical_section(&devices_lock, "interface_gui.c:interface_status" );
9894
9895 for (i=0; i < MAX_IFACE_DEVICES; i++)
9896 {
9897 read_data=0;
9898 write_data=0;
9899 opt='\0';
9900
9901 if (devices[i].device_type!=DEVICE_NONE)
9902 {
9903 switch(devices[i].device_type)
9904 {
9905 case DEVICE_SERIAL_TNC:
9906 s='0'; // Select icon for status bar
9907 break;
9908
9909 case DEVICE_SERIAL_TNC_HSP_GPS:
9910 s='1'; // Select icon for status bar
9911 break;
9912
9913 case DEVICE_SERIAL_GPS:
9914 s='2'; // Select icon for status bar
9915 break;
9916
9917 case DEVICE_SERIAL_WX:
9918 case DEVICE_NET_WX:
9919 s='3'; // Select icon for status bar
9920 break;
9921
9922 case DEVICE_SQL_DATABASE:
9923 s='8'; // Select icon for status bar
9924 break;
9925
9926 case DEVICE_NET_DATABASE:
9927 case DEVICE_NET_STREAM:
9928 case DEVICE_NET_AGWPE:
9929 s='4'; // Select icon for status bar
9930 break;
9931
9932 case DEVICE_AX25_TNC:
9933 case DEVICE_SERIAL_KISS_TNC:
9934 case DEVICE_SERIAL_MKISS_TNC:
9935 s='5'; // Select icon for status bar
9936 break;
9937
9938 case DEVICE_NET_GPSD:
9939 s='6'; // Select icon for status bar
9940 break;
9941
9942 case DEVICE_SERIAL_TNC_AUX_GPS:
9943 s='7'; // Select icon for status bar
9944 break;
9945
9946 default:
9947 break;
9948 }
9949 if (port_data[i].active==DEVICE_IN_USE)
9950 {
9951 if (port_data[i].status==DEVICE_UP)
9952 {
9953 if (port_data[i].bytes_input_last != port_data[i].bytes_input)
9954 {
9955 if (begin_critical_section(&port_data_lock, "interface_gui.c:interface_status(1)" ) > 0)
9956 {
9957 fprintf(stderr,"port_data_lock, Port = %d\n", i);
9958 }
9959 port_data[i].bytes_input_last = port_data[i].bytes_input;
9960 port_data[i].port_activity = 1;
9961 if (end_critical_section(&port_data_lock, "interface_gui.c:interface_status(2)" ) > 0)
9962 {
9963 fprintf(stderr,"port_data_lock, Port = %d\n", i);
9964 }
9965 read_data=1;
9966 }
9967 if (port_data[i].bytes_output_last != port_data[i].bytes_output)
9968 {
9969 if (begin_critical_section(&port_data_lock, "interface_gui.c:interface_status(3)" ) > 0)
9970 {
9971 fprintf(stderr,"port_data_lock, Port = %d\n", i);
9972 }
9973 port_data[i].bytes_output_last = port_data[i].bytes_output;
9974 port_data[i].port_activity = 1;
9975 if (end_critical_section(&port_data_lock, "interface_gui.c:interface_status(4)" ) > 0)
9976 {
9977 fprintf(stderr,"port_data_lock, Port = %d\n", i);
9978 }
9979 write_data=1;
9980 }
9981 if (write_data)
9982 {
9983 opt='>';
9984 }
9985 else
9986 {
9987 if (read_data)
9988 {
9989 opt='<';
9990 }
9991 else
9992 {
9993 opt='^';
9994 }
9995 }
9996 }
9997 else
9998 {
9999 opt='*';
10000 }
10001 }
10002 else
10003 {
10004 opt='\0';
10005 }
10006 symbol(w,0,'~',s,opt,XtWindow(iface_da),0,(i*10),0,' ');
10007 }
10008 else
10009 {
10010 symbol(w,0,'~','#','\0',XtWindow(iface_da),0,(i*10),0,' ');
10011 }
10012 }
10013
10014 end_critical_section(&devices_lock, "interface_gui.c:interface_option" );
10015
10016 }
10017
10018
10019