[WK2] select all,select word text selection options are displaying
[framework/web/webkit-efl.git] / Tools / WinCELauncher / main.cpp
1 /*
2  * Copyright (C) 2010 Patrick Gansterer <paroga@paroga.com>
3  *
4  * Redistribution and use in source and binary forms, with or without
5  * modification, are permitted provided that the following conditions
6  * are met:
7  * 1. Redistributions of source code must retain the above copyright
8  *    notice, this list of conditions and the following disclaimer.
9  * 2. Redistributions in binary form must reproduce the above copyright
10  *    notice, this list of conditions and the following disclaimer in the
11  *    documentation and/or other materials provided with the distribution.
12  *
13  * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY
14  * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
15  * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
16  * DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY
17  * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
18  * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
19  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
20  * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
21  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
22  * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
23  */
24
25 #include "config.h"
26 #include "WebView.h"
27 #include <windows.h>
28 #include <wtf/PassOwnPtr.h>
29
30 static const LPCWSTR kMainWindowTitle = L"WebKit for WinCE";
31 static const LPCWSTR kMainWindowClassName = L"MainWindowClass";
32
33
34 static LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
35 {
36     switch (message) {
37     case WM_DESTROY:
38         PostQuitMessage(0);
39         break;
40
41     default:
42         return DefWindowProc(hWnd, message, wParam, lParam);
43     }
44
45     return 0;
46 }
47
48 int APIENTRY _tWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPTSTR lpCmdLine, int nCmdShow)
49 {
50     UNREFERENCED_PARAMETER(hPrevInstance);
51
52     CoInitializeEx(0, COINIT_MULTITHREADED);
53     WebView::initialize(hInstance);
54
55     LPCWSTR homeUrl = lpCmdLine;
56     bool enableDoubleBuffer = true;
57     bool fullscreen = false;
58
59     if (homeUrl[0] == '-') {
60         for (; *homeUrl && *homeUrl != ' '; ++homeUrl) {
61             switch (*homeUrl) {
62             case 'd':
63                 enableDoubleBuffer = false;
64                 break;
65             case 'f':
66                 fullscreen = true;
67                 break;
68             default:
69                 break;
70             }
71         }
72         if (*homeUrl)
73             ++homeUrl;
74     }
75
76     DWORD styles = WS_VISIBLE;
77
78     if (!fullscreen) {
79         styles |= WS_CAPTION
80             | WS_MAXIMIZEBOX
81             | WS_MINIMIZEBOX
82             | WS_OVERLAPPED
83             | WS_SYSMENU
84             | WS_THICKFRAME;
85     }
86
87     WNDCLASSW wc;
88     wc.style          = CS_HREDRAW | CS_VREDRAW;
89     wc.lpfnWndProc    = WndProc;
90     wc.cbClsExtra     = 0;
91     wc.cbWndExtra     = 0;
92     wc.hInstance      = hInstance;
93     wc.hIcon          = 0;
94     wc.hCursor        = 0;
95     wc.hbrBackground  = static_cast<HBRUSH>(GetStockObject(WHITE_BRUSH));
96     wc.lpszMenuName   = 0;
97     wc.lpszClassName  = kMainWindowClassName;
98     RegisterClass(&wc);
99
100     HWND hMainWindow = CreateWindowW(kMainWindowClassName, kMainWindowTitle, styles,
101         CW_USEDEFAULT, 0, CW_USEDEFAULT, 0, 0, 0, hInstance, 0);
102
103     if (fullscreen) {
104         SetWindowPos(hMainWindow, HWND_TOPMOST, 0, 0, GetSystemMetrics(SM_CXSCREEN),
105             GetSystemMetrics(SM_CYSCREEN), SWP_SHOWWINDOW);
106     }
107
108     ShowWindow(hMainWindow, nCmdShow);
109     UpdateWindow(hMainWindow);
110
111     WTF::OwnPtr<WebView> webView = WTF::adoptPtr(new WebView(hMainWindow, enableDoubleBuffer ? WebView::EnableDoubleBuffering : WebView::NoFeature));
112     webView->load(homeUrl);
113
114     // Main message loop:
115     MSG msg;
116     BOOL bRet;
117     while (bRet = GetMessage(&msg, 0, 0, 0)) {
118         if (bRet == -1) {
119             // FIXME: Handle the error and possibly exit.
120         } else {
121             TranslateMessage(&msg);
122             DispatchMessage(&msg);
123         }
124     }
125
126     webView.clear();
127     DestroyWindow(hMainWindow);
128
129     WebView::cleanup();
130     CoUninitialize();
131
132     return msg.wParam;
133 }