You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

91 lines
2.4 KiB
C

#include <Xm/Xm.h>
#include <stdio.h>
#include <stdlib.h>
#include <Xm/PushB.h>
#include <Xm/TextF.h>
#include <Xm/Form.h>
#include <XmHTML/XmHTML.h>
#include "easysock.h"
#include "url_manipulation.h"
void testFunc(Widget,XtPointer,XmPushButtonCallbackStruct *);
int main(int argc,char** argv) {
Widget window,top_wid,search_bar,search,result;
XtAppContext app;
top_wid = XtVaAppInitialize(&app,
"Web Browser",
NULL,0,&argc,argv,NULL,NULL);
window = XtVaCreateManagedWidget("Main Window",
xmFormWidgetClass,
top_wid,
NULL);
search = XtVaCreateManagedWidget("Search",
xmPushButtonWidgetClass,
window,
XmNtopAttachment,XmATTACH_FORM,
XmNrightAttachment,XmATTACH_FORM,
NULL);
search_bar = XtVaCreateManagedWidget("Search Bar",
xmTextFieldWidgetClass,
window,
XmNleftAttachment,XmATTACH_FORM,
XmNtopAttachment,XmATTACH_FORM,
XmNrightAttachment,XmATTACH_WIDGET,XmNrightWidget,search,NULL);
result = XtVaCreateManagedWidget("HTML Result",
xmHTMLWidgetClass,
window,
XmNbottomAttachment,XmATTACH_FORM,
XmNrightAttachment,XmATTACH_FORM,
XmNleftAttachment,XmATTACH_FORM,
XmNtopAttachment,XmATTACH_WIDGET,XmNtopWidget,search_bar,NULL);
int val = 5;
Widget widget_array[] = {search_bar,result};
XtAddCallback(search,XmNactivateCallback,testFunc,widget_array);
XtRealizeWidget(top_wid);
XtAppMainLoop(app);
}
void testFunc(Widget w, XtPointer client_data, XmPushButtonCallbackStruct *callback_struct) {
Widget* widget_list = (Widget *)client_data;
Widget result_widget = widget_list[1];
Widget text_widget = widget_list[0];
int port;
char* url = XmTextFieldGetString(text_widget);
char* protocol = url_to_proto(url); /* Extract the protocol string from the URL input */
if (strcmp(protocol,"http") == 0) {
port = 80;
} else if (strcmp(protocol,"https") == 0) {
port = 443;
} else {
exit(50); /* I haven't added support for other protocols yet */
}
/* We call the create_remote function to create an address, bind it to a socket,
and make the connection for us. It returns the socket, so that the HTTP request can be made.
First parameter is IP version - set to -1 because we don't know yet if the address is IPv4 or IPv6. */
struct sockaddr* address_struct;
int remote_socket = create_remote(-1,'T',url_to_hostname(url),port,address_struct);
XmHTMLTextSetString(result_widget,"");
// printf("%d\n",val);
// exit(2);
}