Reviewed by Maciej Stachowiak.
[WebKit-https.git] / WebKitTools / GdkLauncher / main.cpp
1 #include <assert.h>
2 #include <stdio.h>
3 #include <string.h>
4 #include <unistd.h>
5 #include <gdk/gdk.h>
6 #include <gtk/gtk.h>
7 #include "config.h"
8 #include "FrameGdk.h"
9 #include "Page.h"
10 #include "Document.h"
11 #include "DocLoader.h"
12 #include "DOMImplementation.h"
13
14 #include "Cache.h"
15 #include "EventNames.h"
16
17 #if SVG_SUPPORT
18 #include "SVGNames.h"
19 #include "XLinkNames.h"
20 #include "SVGDocumentExtensions.h"
21 #endif
22
23 #include "RenderObject.h"
24 #include "GraphicsContext.h"
25
26 using namespace WebCore;
27
28 class LauncherFrameGdk : public FrameGdk
29 {
30 public:
31     LauncherFrameGdk(Page* page, Element* element, PassRefPtr<EditorClient> editorClient) : FrameGdk(page, element, editorClient), m_exitAfterLoading(false) {}
32     LauncherFrameGdk(GdkDrawable* drawable) : FrameGdk(drawable), m_exitAfterLoading(false) {}
33     virtual void handledOnloadEvents();
34     void setExitAfterLoading(bool exitAfterLoading) { m_exitAfterLoading = exitAfterLoading; }
35 private:
36     bool m_exitAfterLoading;
37 };
38
39 void LauncherFrameGdk::handledOnloadEvents()
40 {
41     if (m_exitAfterLoading)
42         gtk_main_quit();
43 }
44
45 static  LauncherFrameGdk *frame;
46 static  GdkWindow *win;
47
48 static void handle_event(GdkEvent *event)
49 {
50     if (GDK_DELETE == event->type) {
51         gtk_main_quit();
52         return;
53     }
54     frame->handleGdkEvent(event);
55 }
56
57 int main(int argc, char *argv[]) 
58 {
59     GdkWindowAttr attr;
60     char *url;
61     gdk_init(&argc,&argv);
62     gdk_event_handler_set ((GdkEventFunc)handle_event, NULL, NULL);
63
64     attr.width = 800;
65     attr.height = 600;
66     attr.window_type = GDK_WINDOW_TOPLEVEL;
67     attr.wclass = GDK_INPUT_OUTPUT;
68     //see how where we handle motion here need to do the hint stuff
69     attr.event_mask = ((GDK_ALL_EVENTS_MASK^GDK_POINTER_MOTION_HINT_MASK)); 
70     win = gdk_window_new(NULL,&attr,0);
71     frame = new LauncherFrameGdk(win);
72     gdk_window_show(win);
73     url = "http://www.google.com";
74     bool exitAfterLoading = false;
75     for (int argPos = 1; argPos < argc; ++argPos) {
76         if (0 == strcmp(argv[argPos], "-exit-after-loading"))
77             exitAfterLoading = true;
78         else
79             url = argv[argPos];
80     }
81     frame->setExitAfterLoading(exitAfterLoading);
82     if (url) {
83         printf("OPENING URL == %s \n", url);
84         frame->client()->openURL(url);
85     } else {
86 #if 0
87         char *pg = " <html><head><title>Google</title> <body bgcolor=#ffffff text=#000000> <p><font size=-2/>2006 Google Hello bigworld from mike</p></body></html> ";
88         frame->createEmptyDocument();
89         frame->document()->open();
90         frame->write(pg,strlen(pg));
91         frame->document()->close();
92 #endif
93     }
94     
95     gtk_main();
96     delete frame;
97     gdk_window_destroy(win);
98     return 0;
99 }