1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125
|
#include <stdio.h>
#include <stdlib.h>
#include <resources.h>
#include <X11/Intrinsic.h>
#include <X11/StringDefs.h>
#include <X11/Xaw/Form.h>
#include <X11/Xaw/Label.h>
#include <X11/Xaw/SimpleMenu.h>
#include <X11/Xaw/Command.h>
#include <X11/Xaw/AsciiText.h>
#include <xstuff.h>
#include <clinet.h>
#include <chatline.h>
extern AppResources appResources;
extern Widget toplevel;
extern char name[];
extern char server_host[];
extern int server_port;
Widget iname, ihost, iport;
Widget connw, quitw;
void server_address_ok_callback(Widget w, XtPointer client_data,
XtPointer call_data);
void quit_callback(Widget w, XtPointer client_data, XtPointer call_data);
void connect_callback(Widget w, XtPointer client_data, XtPointer call_data);
int gui_server_connect(void)
{
Widget shell, form, label;
char buf[512];
XtTranslations textfieldtranslations;
XtSetSensitive(toplevel, FALSE);
shell=XtCreatePopupShell("connectdialog", transientShellWidgetClass,
toplevel, NULL, 0);
form=XtVaCreateManagedWidget("cform", formWidgetClass, shell, NULL);
label=XtVaCreateManagedWidget("cheadline", labelWidgetClass, form, NULL);
XtVaCreateManagedWidget("cnamel", labelWidgetClass, form, NULL);
iname=XtVaCreateManagedWidget("cnamei", asciiTextWidgetClass, form,
XtNstring, name, NULL);
XtVaCreateManagedWidget("chostl", labelWidgetClass, form, NULL);
ihost=XtVaCreateManagedWidget("chosti", asciiTextWidgetClass, form,
XtNstring, server_host, NULL);
sprintf(buf, "%d", server_port);
XtVaCreateManagedWidget("cportl", labelWidgetClass, form, NULL);
iport=XtVaCreateManagedWidget("cporti", asciiTextWidgetClass, form,
XtNstring, buf, NULL);
connw=XtVaCreateManagedWidget("cconnectc", commandWidgetClass, form, NULL);
quitw=XtVaCreateManagedWidget("cquitc", commandWidgetClass, form, NULL);
XtAddCallback(connw, XtNcallback, connect_callback, NULL);
XtAddCallback(quitw, XtNcallback, quit_callback, NULL);
XtPopup(shell, XtGrabNone);
xaw_set_relative_position(toplevel, shell, 50, 50);
textfieldtranslations =
XtParseTranslationTable("<Key>Return: connect-dialog-returnkey()");
XtOverrideTranslations(form, textfieldtranslations);
XtOverrideTranslations(iname, textfieldtranslations);
XtOverrideTranslations(ihost, textfieldtranslations);
XtOverrideTranslations(iport, textfieldtranslations);
XtSetKeyboardFocus(toplevel, shell);
return 1;
}
/****************************************************************
...
*****************************************************************/
void connect_dialog_returnkey(Widget w, XEvent *event, String *params,
Cardinal *num_params)
{
x_simulate_button_click(connw);
}
void quit_callback(Widget w, XtPointer client_data,
XtPointer call_data)
{
exit(0);
}
void connect_callback(Widget w, XtPointer client_data,
XtPointer call_data)
{
XtPointer dp;
char errbuf[512];
XtVaGetValues(iname, XtNstring, &dp, NULL);
strcpy(name, (char*)dp);
XtVaGetValues(ihost, XtNstring, &dp, NULL);
strcpy(server_host, (char*)dp);
XtVaGetValues(iport, XtNstring, &dp, NULL);
sscanf((char*)dp, "%d", &server_port);
if(connect_to_server(name, server_host, server_port, errbuf)!=-1) {
XtDestroyWidget(XtParent(XtParent(w)));
XtSetSensitive(toplevel, True);
return;
}
append_output_window(errbuf);
}
|