Rev 7742 | Go to most recent revision | Only display areas with differences | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 7742 | Rev 7746 | ||
---|---|---|---|
1 | #define MEMSIZE 4096 * 200 |
1 | #define MEMSIZE 4096 * 200 |
2 | 2 | ||
3 | //libraries |
3 | //libraries |
4 | #include "..\lib\gui.h" |
4 | #include "..\lib\gui.h" |
5 | #include "..\lib\draw_buf.h" |
5 | #include "..\lib\draw_buf.h" |
6 | #include "..\lib\list_box.h" |
6 | #include "..\lib\list_box.h" |
7 | #include "..\lib\cursor.h" |
7 | #include "..\lib\cursor.h" |
8 | #include "..\lib\collection.h" |
8 | #include "..\lib\collection.h" |
9 | #include "..\lib\random.h" |
9 | #include "..\lib\random.h" |
10 | #include "..\lib\clipboard.h" |
10 | #include "..\lib\clipboard.h" |
11 | 11 | ||
12 | // *.obj libraries |
12 | // *.obj libraries |
13 | #include "..\lib\obj\box_lib.h" |
13 | #include "..\lib\obj\box_lib.h" |
14 | #include "..\lib\obj\libio.h" |
14 | #include "..\lib\obj\libio.h" |
15 | #include "..\lib\obj\libimg.h" |
15 | #include "..\lib\obj\libimg.h" |
16 | #include "..\lib\obj\http.h" |
16 | #include "..\lib\obj\http.h" |
17 | #include "..\lib\obj\iconv.h" |
17 | #include "..\lib\obj\iconv.h" |
18 | 18 | ||
19 | #include "..\lib\patterns\history.h" |
19 | #include "..\lib\patterns\history.h" |
20 | #include "..\lib\patterns\http_downloader.h" |
20 | #include "..\lib\patterns\http_downloader.h" |
21 | 21 | ||
22 | _http http = {0, 0, 0, 0, 0, 0, 0}; |
22 | _http http = {0, 0, 0, 0, 0, 0, 0}; |
23 | 23 | ||
24 | char homepage[] = FROM "html\\homepage.htm""\0"; |
24 | char homepage[] = FROM "html\\homepage.htm""\0"; |
25 | char page_not_found[] = FROM "html\\page_not_found_en.htm""\0"; |
25 | char page_not_found[] = FROM "html\\page_not_found_en.htm""\0"; |
26 | 26 | ||
27 | char version[]="C-- Code View"; |
27 | char version[]="C-- Code View"; |
28 | char accept_language[]= "Accept-Language: en\n"; |
28 | char accept_language[]= "Accept-Language: en\n"; |
29 | 29 | ||
30 | #define URL_SERVICE_HOME "CodeView://home" |
30 | #define URL_SERVICE_HOME "CodeView://home" |
31 | 31 | ||
32 | proc_info Form; |
32 | proc_info Form; |
33 | 33 | ||
34 | 34 | ||
35 | dword TOOLBAR_H = 40; |
35 | dword TOOLBAR_H = 40; |
36 | dword STATUSBAR_H = 0; |
36 | dword STATUSBAR_H = 0; |
37 | 37 | ||
38 | dword col_bg = 0xE3E2E2; |
38 | dword col_bg = 0xE3E2E2; |
39 | dword panel_color = 0xE3E2E2; |
39 | dword panel_color = 0xE3E2E2; |
40 | dword border_color = 0x8C8C8C; |
40 | dword border_color = 0x8C8C8C; |
41 | 41 | ||
42 | bool debug_mode = false; |
42 | bool debug_mode = false; |
43 | bool old_tag_parser_mode = false; |
43 | |
44 | - | ||
45 | bool open_in_a_new_window = false; |
44 | bool open_in_a_new_window = false; |
46 | 45 | ||
47 | enum { |
46 | enum { |
48 | REFRESH_BUTTON, |
47 | REFRESH_BUTTON, |
49 | EDIT_SOURCE, |
48 | EDIT_SOURCE, |
50 | }; |
49 | }; |
51 | 50 | ||
52 | #include "..\TWB\TWB.c" |
51 | #include "..\TWB\TWB.c" |
53 | #include "show_src.h" |
52 | #include "show_src.h" |
54 | 53 | ||
55 | char editURL[sizeof(URL)]; |
54 | char editURL[sizeof(URL)]; |
56 | int mouse_twb; |
55 | int mouse_twb; |
57 | edit_box address_box = {250,60,30,0xffffff,0x94AECE,0xffffff,0xffffff,0x10000000,sizeof(URL),#editURL,#mouse_twb,2,19,19}; |
56 | edit_box address_box = {250,60,30,0xffffff,0x94AECE,0xffffff,0xffffff,0x10000000,sizeof(URL),#editURL,#mouse_twb,2,19,19}; |
58 | 57 | ||
59 | #define SKIN_Y 24 |
58 | #define SKIN_Y 24 |
60 | 59 | ||
61 | void main() |
60 | void main() |
62 | { |
61 | { |
63 | int i; |
62 | int i; |
64 | int id; |
63 | int id; |
65 | load_dll(boxlib, #box_lib_init,0); |
64 | load_dll(boxlib, #box_lib_init,0); |
66 | load_dll(libio, #libio_init,1); |
65 | load_dll(libio, #libio_init,1); |
67 | load_dll(libimg, #libimg_init,1); |
66 | load_dll(libimg, #libimg_init,1); |
68 | load_dll(iconv_lib, #iconv_open,0); |
67 | load_dll(iconv_lib, #iconv_open,0); |
69 | if (param) strcpy(#URL, #param); else strcpy(#URL, URL_SERVICE_HOME); |
68 | if (param) strcpy(#URL, #param); else strcpy(#URL, URL_SERVICE_HOME); |
70 | WB1.list.SetFont(8, 14, 10011000b); |
69 | WB1.list.SetFont(8, 14, 10011000b); |
71 | WB1.list.no_selection = true; |
70 | WB1.list.no_selection = true; |
72 | SetEventMask(EVM_REDRAW + EVM_KEY + EVM_BUTTON + EVM_MOUSE + EVM_MOUSE_FILTER); |
71 | SetEventMask(EVM_REDRAW + EVM_KEY + EVM_BUTTON + EVM_MOUSE + EVM_MOUSE_FILTER); |
73 | loop() switch(WaitEvent()) |
72 | loop() switch(WaitEvent()) |
74 | { |
73 | { |
75 | case evMouse: |
74 | case evMouse: |
76 | edit_box_mouse stdcall (#address_box); |
75 | edit_box_mouse stdcall (#address_box); |
77 | mouse.get(); |
76 | mouse.get(); |
78 | if (WB1.list.MouseScroll(mouse.vert)) WB1.DrawPage(); |
77 | if (WB1.list.MouseScroll(mouse.vert)) WB1.DrawPage(); |
79 | scrollbar_v_mouse (#scroll_wv); |
78 | scrollbar_v_mouse (#scroll_wv); |
80 | if (WB1.list.first != scroll_wv.position) |
79 | if (WB1.list.first != scroll_wv.position) |
81 | { |
80 | { |
82 | WB1.list.first = scroll_wv.position; |
81 | WB1.list.first = scroll_wv.position; |
83 | WB1.DrawPage(); |
82 | WB1.DrawPage(); |
84 | break; |
83 | break; |
85 | } |
84 | } |
86 | break; |
85 | break; |
87 | 86 | ||
88 | case evButton: |
87 | case evButton: |
89 | id=GetButtonID(); |
88 | id=GetButtonID(); |
90 | if (1==id) ExitProcess(); |
89 | if (1==id) ExitProcess(); |
91 | break; |
90 | break; |
92 | 91 | ||
93 | case evKey: |
92 | case evKey: |
94 | GetKeys(); |
93 | GetKeys(); |
95 | 94 | ||
96 | if (SCAN_CODE_F5 == key_scancode) { |
95 | if (SCAN_CODE_F5 == key_scancode) { |
97 | OpenPage(); |
96 | OpenPage(); |
98 | } |
97 | } |
99 | if (SCAN_CODE_F3 == key_scancode) { |
98 | if (SCAN_CODE_F3 == key_scancode) { |
100 | RunProgram("/rd/1/tinypad", #URL); |
99 | RunProgram("/rd/1/tinypad", #URL); |
101 | } |
100 | } |
102 | 101 | ||
103 | if (address_box.flags & 0b10) |
102 | if (address_box.flags & 0b10) |
104 | { |
103 | { |
105 | if (key_ascii == ASCII_KEY_ENTER) EventGoToPage(); |
104 | if (key_ascii == ASCII_KEY_ENTER) EventGoToPage(); |
106 | else { |
105 | else { |
107 | EAX = key_editbox; |
106 | EAX = key_editbox; |
108 | edit_box_key stdcall(#address_box); |
107 | edit_box_key stdcall(#address_box); |
109 | } |
108 | } |
110 | } |
109 | } |
111 | else |
110 | else |
112 | { |
111 | { |
113 | #define KEY_SCROLL_N 11 |
112 | #define KEY_SCROLL_N 11 |
114 | if (SCAN_CODE_UP == key_scancode) for (i=0;i |
113 | if (SCAN_CODE_UP == key_scancode) for (i=0;i |
115 | if (SCAN_CODE_DOWN == key_scancode) for (i=0;i |
114 | if (SCAN_CODE_DOWN == key_scancode) for (i=0;i |
116 | if (WB1.list.ProcessKey(key_scancode)) WB1.DrawPage(); |
115 | if (WB1.list.ProcessKey(key_scancode)) WB1.DrawPage(); |
117 | } |
116 | } |
118 | break; |
117 | break; |
119 | 118 | ||
120 | case evReDraw: |
119 | case evReDraw: |
121 | DefineAndDrawWindow(GetScreenWidth()-800/2-random(80),GetScreenHeight()-600/2-random(80),800,600,0x73,col_bg,0,0); |
120 | DefineAndDrawWindow(GetScreenWidth()-800/2-random(80),GetScreenHeight()-600/2-random(80),800,600,0x73,col_bg,0,0); |
122 | GetProcessInfo(#Form, SelfInfo); |
121 | GetProcessInfo(#Form, SelfInfo); |
123 | if (Form.status_window>2) { DrawTitle(#header); break; } |
122 | if (Form.status_window>2) { DrawTitle(#header); break; } |
124 | if (Form.height<120) { MoveSize(OLD,OLD,OLD,120); break; } |
123 | if (Form.height<120) { MoveSize(OLD,OLD,OLD,120); break; } |
125 | if (Form.width<280) { MoveSize(OLD,OLD,280,OLD); break; } |
124 | if (Form.width<280) { MoveSize(OLD,OLD,280,OLD); break; } |
126 | Draw_Window(); |
125 | Draw_Window(); |
127 | break; |
126 | break; |
128 | } |
127 | } |
129 | } |
128 | } |
130 | 129 | ||
131 | void SetElementSizes() |
130 | void SetElementSizes() |
132 | { |
131 | { |
133 | address_box.top = TOOLBAR_H/2-10; |
132 | address_box.top = TOOLBAR_H/2-10; |
134 | basic_line_h = calc(WB1.list.font_h * 130) / 100; |
133 | basic_line_h = calc(WB1.list.font_h * 130) / 100; |
135 | address_box.left = address_box.top; |
134 | address_box.left = address_box.top; |
136 | address_box.width = Form.cwidth - address_box.left - address_box.left -14; |
135 | address_box.width = Form.cwidth - address_box.left - address_box.left -14; |
137 | WB1.list.SetSizes(0, TOOLBAR_H, Form.width - 10 - scroll_wv.size_x, |
136 | WB1.list.SetSizes(0, TOOLBAR_H, Form.width - 10 - scroll_wv.size_x, |
138 | Form.cheight - TOOLBAR_H - STATUSBAR_H, basic_line_h); |
137 | Form.cheight - TOOLBAR_H - STATUSBAR_H, basic_line_h); |
139 | WB1.list.wheel_size = 7 * basic_line_h; |
138 | WB1.list.wheel_size = 7 * basic_line_h; |
140 | WB1.list.column_max = WB1.list.w - scroll_wv.size_x / WB1.list.font_w; |
139 | WB1.list.column_max = WB1.list.w - scroll_wv.size_x / WB1.list.font_w; |
141 | WB1.list.visible = WB1.list.h; |
140 | WB1.list.visible = WB1.list.h; |
142 | if (WB1.list.w!=WB1.DrawBuf.bufw) { |
141 | if (WB1.list.w!=WB1.DrawBuf.bufw) { |
143 | WB1.DrawBuf.Init(WB1.list.x, WB1.list.y, WB1.list.w, 32700); |
142 | WB1.DrawBuf.Init(WB1.list.x, WB1.list.y, WB1.list.w, 32700); |
144 | OpenPage(); |
143 | OpenPage(); |
145 | } |
144 | } |
146 | } |
145 | } |
147 | 146 | ||
148 | void Draw_Window() |
147 | void Draw_Window() |
149 | { |
148 | { |
150 | DrawBar(0,0, Form.cwidth,TOOLBAR_H-2, panel_color); |
149 | DrawBar(0,0, Form.cwidth,TOOLBAR_H-2, panel_color); |
151 | DrawBar(0,TOOLBAR_H-2, Form.cwidth,1, 0xD7D0D3); |
150 | DrawBar(0,TOOLBAR_H-2, Form.cwidth,1, 0xD7D0D3); |
152 | DrawBar(0,TOOLBAR_H-1, Form.cwidth,1, border_color); |
151 | DrawBar(0,TOOLBAR_H-1, Form.cwidth,1, border_color); |
153 | SetElementSizes(); |
152 | SetElementSizes(); |
154 | DrawRectangle(address_box.left-3, address_box.top-3, address_box.width+4, 25,border_color); |
153 | DrawRectangle(address_box.left-3, address_box.top-3, address_box.width+4, 25,border_color); |
155 | DrawBar(0,Form.cheight - STATUSBAR_H, Form.cwidth,STATUSBAR_H, col_bg); |
154 | DrawBar(0,Form.cheight - STATUSBAR_H, Form.cwidth,STATUSBAR_H, col_bg); |
156 | DrawBar(0,Form.cheight - STATUSBAR_H, Form.cwidth,1, border_color); |
155 | DrawBar(0,Form.cheight - STATUSBAR_H, Form.cwidth,1, border_color); |
157 | DrawEditBoxWebView(); |
156 | DrawEditBoxWebView(); |
158 | if (!header) |
157 | if (!header) |
159 | OpenPage(); |
158 | OpenPage(); |
160 | else { |
159 | else { |
161 | WB1.DrawPage(); |
160 | WB1.DrawPage(); |
162 | DrawEditBoxWebView(); |
161 | DrawEditBoxWebView(); |
163 | } |
162 | } |
164 | DrawRectangle(scroll_wv.start_x, scroll_wv.start_y, scroll_wv.size_x, scroll_wv.size_y-1, scroll_wv.bckg_col); |
163 | DrawRectangle(scroll_wv.start_x, scroll_wv.start_y, scroll_wv.size_x, scroll_wv.size_y-1, scroll_wv.bckg_col); |
165 | } |
164 | } |
166 | 165 | ||
167 | void EventGoToPage() |
166 | void EventGoToPage() |
168 | { |
167 | { |
169 | if (!editURL[0]) { |
168 | if (!editURL[0]) { |
170 | strcpy(#URL, URL_SERVICE_HOME); |
169 | strcpy(#URL, URL_SERVICE_HOME); |
171 | } |
170 | } |
172 | else |
171 | else |
173 | { |
172 | { |
174 | strcpy(#URL, #editURL); |
173 | strcpy(#URL, #editURL); |
175 | } |
174 | } |
176 | OpenPage(); |
175 | OpenPage(); |
177 | } |
176 | } |
178 | 177 | ||
179 | 178 | ||
180 | void SetPageDefaults() |
179 | void SetPageDefaults() |
181 | { |
180 | { |
182 | strcpy(#header, #version); |
181 | strcpy(#header, #version); |
183 | WB1.list.count = WB1.list.first = 0; |
182 | WB1.list.count = WB1.list.first = 0; |
184 | cur_encoding = CH_NULL; |
183 | cur_encoding = CH_NULL; |
185 | if (o_bufpointer) o_bufpointer = free(o_bufpointer); |
184 | if (o_bufpointer) o_bufpointer = free(o_bufpointer); |
186 | } |
185 | } |
187 | 186 | ||
188 | void OpenPage() |
187 | void OpenPage() |
189 | { |
188 | { |
190 | char getUrl[sizeof(URL)]; |
189 | char getUrl[sizeof(URL)]; |
191 | strcpy(#editURL, #URL); |
190 | strcpy(#editURL, #URL); |
192 | history.add(#URL); |
191 | history.add(#URL); |
193 | if (!strncmp(#URL,"CodeView:",8)) |
192 | if (!strncmp(#URL,"CodeView:",8)) |
194 | { |
193 | { |
195 | SetPageDefaults(); |
194 | SetPageDefaults(); |
196 | if (!strcmp(#URL, URL_SERVICE_HOME)) WB1.LoadInternalPage(#homepage, sizeof(homepage)); |
195 | if (!strcmp(#URL, URL_SERVICE_HOME)) WB1.LoadInternalPage(#homepage, sizeof(homepage)); |
197 | DrawEditBoxWebView(); |
196 | DrawEditBoxWebView(); |
198 | return; |
197 | return; |
199 | } |
198 | } |
200 | else |
199 | else |
201 | { |
200 | { |
202 | file_size stdcall (#URL); |
201 | file_size stdcall (#URL); |
203 | bufsize = EBX; |
202 | bufsize = EBX; |
204 | if (bufsize) |
203 | if (bufsize) |
205 | { |
204 | { |
206 | free(bufpointer); |
205 | free(bufpointer); |
207 | bufpointer = malloc(bufsize); |
206 | bufpointer = malloc(bufsize); |
208 | SetPageDefaults(); |
207 | SetPageDefaults(); |
209 | ReadFile(0, bufsize, bufpointer, #URL); |
208 | ReadFile(0, bufsize, bufpointer, #URL); |
210 | ShowCodeSource(); |
209 | ShowCodeSource(); |
211 | WB1.LoadInternalPage(bufpointer, bufsize); |
210 | WB1.LoadInternalPage(bufpointer, bufsize); |
212 | } |
211 | } |
213 | ShowPage(); |
212 | ShowPage(); |
214 | } |
213 | } |
215 | } |
214 | } |
216 | 215 | ||
217 | DrawEditBoxWebView() |
216 | DrawEditBoxWebView() |
218 | { |
217 | { |
219 | int skin_x_offset; |
218 | int skin_x_offset; |
220 | DrawBar(address_box.left-2, address_box.top-2, address_box.width+3, 2, address_box.color); |
219 | DrawBar(address_box.left-2, address_box.top-2, address_box.width+3, 2, address_box.color); |
221 | DrawBar(address_box.left-2, address_box.top, 2, 22, address_box.color); |
220 | DrawBar(address_box.left-2, address_box.top, 2, 22, address_box.color); |
222 | address_box.size = address_box.pos = address_box.shift = address_box.shift_old = strlen(#editURL); |
221 | address_box.size = address_box.pos = address_box.shift = address_box.shift_old = strlen(#editURL); |
223 | address_box.offset = 0; |
222 | address_box.offset = 0; |
224 | edit_box_draw stdcall(#address_box); |
223 | edit_box_draw stdcall(#address_box); |
225 | skin_x_offset = 51; |
224 | skin_x_offset = 51; |
226 | img_draw stdcall(skin.image, address_box.left+address_box.width+1, address_box.top-3, 17, skin.h, skin_x_offset, SKIN_Y); |
225 | img_draw stdcall(skin.image, address_box.left+address_box.width+1, address_box.top-3, 17, skin.h, skin_x_offset, SKIN_Y); |
227 | } |
226 | } |
228 | 227 | ||
229 | 228 | ||
230 | void ShowPage() |
229 | void ShowPage() |
231 | { |
230 | { |
232 | DrawEditBoxWebView(); |
231 | DrawEditBoxWebView(); |
233 | if (!bufsize) |
232 | if (!bufsize) |
234 | { |
233 | { |
235 | WB1.LoadInternalPage(#page_not_found, sizeof(page_not_found)); |
234 | WB1.LoadInternalPage(#page_not_found, sizeof(page_not_found)); |
236 | } |
235 | } |
237 | else |
236 | else |
238 | { |
237 | { |
239 | WB1.Prepare(); |
238 | WB1.Prepare(); |
240 | } |
239 | } |
241 | } |
240 | } |
242 | 241 | ||
243 | void DrawStatusBar() {return;}; |
242 | void DrawStatusBar() {return;}; |
244 | void EventClickLink() {return;}; |
243 | void EventClickLink() {return;}; |
245 | void EventShowLinkMenu() {return;}; |
244 | void EventShowLinkMenu() {return;}; |
246 | 245 | ||
247 | char anchor[256]; |
246 | char anchor[256]; |
248 | 247 | ||
249 | stop:280)>120)> |
248 | stop:280)>120)> |