Rev 4221 | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 4221 | Rev 4243 | ||
---|---|---|---|
Line 16... | Line 16... | ||
16 | 16 | ||
17 | __DEBUG__ = 1 |
17 | __DEBUG__ = 1 |
Line 18... | Line 18... | ||
18 | __DEBUG_LEVEL__ = 1 |
18 | __DEBUG_LEVEL__ = 1 |
- | 19 | ||
- | 20 | format binary as "" |
|
- | 21 | ;-------------------------------------- |
|
- | 22 | frame_1: |
|
- | 23 | .x = 5 |
|
- | 24 | .y = 10 |
|
- | 25 | .width = 350 |
|
19 | 26 | .height = 55 |
|
- | 27 | ;-------------------------------------- |
|
- | 28 | frame_2: |
|
- | 29 | .x = 5 |
|
- | 30 | .y = 75 |
|
- | 31 | .width = 350 |
|
20 | format binary as "" |
32 | .height = 55 |
21 | 33 | ;--------------------------------------------------------------------- |
|
Line 22... | Line 34... | ||
22 | use32 |
34 | use32 |
23 | org 0x0 |
35 | org 0x0 |
24 | 36 | ||
25 | db 'MENUET01' ; header |
37 | db 'MENUET01' ; header |
26 | dd 0x01 ; header version |
38 | dd 0x01 ; header version |
27 | dd START ; entry point |
39 | dd START ; entry point |
28 | dd IM_END ; image size |
40 | dd IM_END ; image size |
29 | dd I_END+0x1000 ; required memory |
41 | dd I_END ; required memory |
30 | dd I_END+0x1000 ; esp |
- | |
- | 42 | dd stacktop ; esp |
|
31 | dd params ; I_PARAM |
43 | dd params ; I_PARAM |
32 | dd 0x0 ; I_Path |
44 | dd 0x0 ; I_Path |
33 | 45 | ;--------------------------------------------------------------------- |
|
34 | include '../../../../macros.inc' |
46 | include '../../../../macros.inc' |
35 | include '../../../../proc32.inc' |
47 | include '../../../../proc32.inc' |
36 | include '../../../../dll.inc' |
48 | include '../../../../dll.inc' |
Line 37... | Line 49... | ||
37 | include '../../../../debug-fdo.inc' |
49 | include '../../../../debug-fdo.inc' |
38 | include '../../box_lib/trunk/box_lib.mac' |
50 | include '../../box_lib/trunk/box_lib.mac' |
39 | include '../../http/http.inc' |
51 | include '../../http/http.inc' |
40 | - | ||
- | 52 | ||
41 | virtual at 0 |
53 | virtual at 0 |
Line 42... | Line 54... | ||
42 | http_msg http_msg |
54 | http_msg http_msg |
Line 43... | Line 55... | ||
43 | end virtual |
55 | end virtual |
44 | 56 | ;--------------------------------------------------------------------- |
|
45 | START: |
57 | START: |
46 | 58 | ||
- | 59 | mcall 68, 11 ; init heap so we can allocate memory dynamically |
|
- | 60 | ||
- | 61 | ; load libraries |
|
- | 62 | stdcall dll.Load, @IMPORT |
|
47 | mcall 68, 11 ; init heap so we can allocate memory dynamically |
63 | test eax, eax |
- | 64 | jnz exit |
|
- | 65 | ;--------------------------------------------------------------------- |
|
- | 66 | mov edi,filename_area |
|
- | 67 | mov esi,start_temp_file_name |
|
- | 68 | call copy_file_name_path |
|
- | 69 | ||
- | 70 | mov edi,fname_buf |
|
- | 71 | mov esi,start_file_path |
|
- | 72 | call copy_file_name_path |
|
- | 73 | ||
- | 74 | ;OpenDialog initialisation |
|
- | 75 | push dword OpenDialog_data |
|
48 | 76 | call [OpenDialog_Init] |
|
49 | ; load libraries |
77 | |
50 | stdcall dll.Load, @IMPORT |
78 | ; prepare for PathShow |
Line 51... | Line 79... | ||
51 | test eax, eax |
79 | push dword PathShow_data_1 |
Line 52... | Line 80... | ||
52 | jnz exit |
80 | call [PathShow_prepare] |
53 | - | ||
54 | ; check parameters |
- | |
55 | cmp byte[params], 0 ; no parameters ? |
- | |
56 | je reset_events ; load the GUI |
- | |
57 | - | ||
58 | inc [silently] |
- | |
59 | - | ||
60 | download: |
- | |
61 | 81 | ;--------------------------------------------------------------------- |
|
62 | DEBUGF 1, "Starting download\n" |
- | |
63 | - | ||
64 | invoke HTTP_get, params, 0 |
- | |
Line 65... | Line 82... | ||
65 | test eax, eax |
82 | ; check parameters |
66 | jz fail |
83 | cmp byte[params], 0 ; no parameters ? |
Line 67... | Line 84... | ||
67 | mov [identifier], eax |
84 | je reset_events ; load the GUI |
68 | 85 | ||
Line 69... | Line 86... | ||
69 | .loop: |
86 | inc [silently] |
70 | invoke HTTP_process, [identifier] |
87 | |
71 | test eax, eax |
88 | download: |
72 | jnz .loop |
- | |
- | 89 | call download_1 |
|
73 | 90 | ||
74 | test [silently], 0xff |
91 | test [silently], 0xff |
Line 75... | Line 92... | ||
75 | jnz save |
92 | jnz save |
76 | 93 | ||
Line 100... | Line 117... | ||
100 | 117 | ||
101 | cmp eax, EV_MOUSE |
118 | cmp eax, EV_MOUSE |
Line 102... | Line 119... | ||
102 | je mouse |
119 | je mouse |
103 | - | ||
- | 120 | ||
104 | jmp still |
121 | jmp still |
105 | 122 | ;--------------------------------------------------------------------- |
|
Line 106... | Line 123... | ||
106 | key: |
123 | key: |
Line 107... | Line 124... | ||
107 | mcall 2 ; read key |
124 | mcall 2 ; read key |
108 | 125 | ||
Line 109... | Line 126... | ||
109 | stdcall [edit_box_key], dword edit1 |
126 | stdcall [edit_box_key], dword edit1 |
110 | - | ||
- | 127 | ||
111 | cmp ax, 13 shl 8 |
128 | cmp ax, 13 shl 8 |
Line 112... | Line 129... | ||
112 | je download |
129 | je download |
Line 113... | Line 130... | ||
113 | 130 | ||
114 | jmp still |
131 | jmp still |
- | 132 | ;--------------------------------------------------------------------- |
|
- | 133 | button: |
|
- | 134 | ||
- | 135 | mcall 17 ; get id |
|
115 | 136 | ||
- | 137 | cmp ah, 26 |
|
- | 138 | jne @f |
|
- | 139 | ; invoke OpenDialog |
|
- | 140 | push dword OpenDialog_data |
|
- | 141 | call [OpenDialog_Start] |
|
116 | button: |
142 | cmp [OpenDialog_data.status],1 |
117 | 143 | jne still |
|
118 | mcall 17 ; get id |
144 | |
119 | 145 | ; prepare for PathShow |
|
Line -... | Line 146... | ||
- | 146 | push dword PathShow_data_1 |
|
120 | cmp ah, 26 |
147 | call [PathShow_prepare] |
121 | jne @f |
- | |
- | 148 | call draw_window |
|
122 | call save |
149 | jmp still |
123 | jmp still |
150 | @@: |
124 | @@: |
151 | cmp ah, 1 ; button id=1 ? |
125 | cmp ah, 1 ; button id=1 ? |
- | |
- | 152 | je exit |
|
126 | je exit |
153 | |
127 | 154 | call download_1 |
|
128 | jmp download |
155 | jmp save |
129 | 156 | ;--------------------------------------------------------------------- |
|
130 | mouse: |
157 | mouse: |
131 | stdcall [edit_box_mouse], edit1 |
158 | stdcall [edit_box_mouse], edit1 |
- | 159 | jmp still |
|
- | 160 | ;--------------------------------------------------------------------- |
|
- | 161 | exit: |
|
Line -... | Line 162... | ||
- | 162 | DEBUGF 1, "Exiting\n" |
|
- | 163 | invoke HTTP_free, [identifier] ; free buffer |
|
- | 164 | fail: |
|
- | 165 | or eax, -1 ; close this program |
|
Line -... | Line 166... | ||
- | 166 | mcall |
|
- | 167 | ;--------------------------------------------------------------------- |
|
- | 168 | download_1: |
|
- | 169 | DEBUGF 1, "Starting download\n" |
|
- | 170 | ||
- | 171 | invoke HTTP_get, params, 0 |
|
132 | jmp still |
172 | test eax, eax |
133 | 173 | jz fail |
|
134 | exit: |
174 | mov [identifier], eax |
135 | DEBUGF 1, "Exiting\n" |
175 | |
136 | invoke HTTP_free, [identifier] ; free buffer |
176 | .loop: |
137 | fail: |
177 | invoke HTTP_process, [identifier] |
138 | or eax, -1 ; close this program |
178 | test eax, eax |
139 | mcall |
179 | jnz .loop |
Line -... | Line 180... | ||
- | 180 | ret |
|
- | 181 | ;--------------------------------------------------------------------- |
|
140 | 182 | save: |
|
141 | 183 | mov ebp, [identifier] |
|
Line 142... | Line 184... | ||
142 | save: |
184 | mov eax, [ebp + http_msg.content_received] |
143 | mov ebp, [identifier] |
185 | mov [final_size], eax |
144 | mov eax, [ebp + http_msg.content_received] |
186 | lea ebx, [ebp + http_msg.data] |
Line 145... | Line 187... | ||
145 | mov [final_size], eax |
187 | add ebx, [ebp + http_msg.header_length] |
- | 188 | mov [final_buffer], ebx |
|
- | 189 | mcall 70, fileinfo |
|
- | 190 | ||
- | 191 | DEBUGF 1, "File saved\n" |
|
146 | lea ebx, [ebp + http_msg.data] |
192 | |
- | 193 | test [silently], 0xff |
|
- | 194 | jnz exit |
|
- | 195 | ||
- | 196 | mov ecx, [sc.work_text] |
|
- | 197 | or ecx, 0x80000000 |
|
- | 198 | mcall 4, <10, frame_2.y+frame_2.height+7>, , download_complete |
|
147 | add ebx, [ebp + http_msg.header_length] |
199 | |
148 | mov [final_buffer], ebx |
200 | jmp still |
149 | mcall 70, fileinfo |
201 | ;--------------------------------------------------------------------- |
Line 150... | Line 202... | ||
150 | 202 | copy_file_name_path: |
|
Line 151... | Line 203... | ||
151 | test [silently], 0xff |
203 | xor eax,eax |
152 | jnz exit |
- | |
- | 204 | cld |
|
153 | 205 | @@: |
|
154 | mov ecx, [sc.work_text] |
206 | lodsb |
155 | or ecx, 0x80000000 |
- | |
- | 207 | stosb |
|
156 | mcall 4, <10, 93>, , download_complete |
208 | test eax,eax |
157 | 209 | jnz @r |
|
158 | jmp still |
210 | ret |
159 | 211 | ;--------------------------------------------------------------------- |
|
- | 212 | ; ********************************************* |
|
- | 213 | ; ******* WINDOW DEFINITIONS AND DRAW ******** |
|
- | 214 | ; ********************************************* |
|
- | 215 | ||
- | 216 | draw_window: |
|
- | 217 | ||
- | 218 | mcall 12, 1 ; start window draw |
|
- | 219 | ;----------------------------------- |
|
- | 220 | ; get system colors |
|
160 | ; ********************************************* |
221 | mcall 48, 3, sc, 40 |
- | 222 | ;----------------------------------- |
|
- | 223 | ; draw window |
|
- | 224 | mov edx, [sc.work] |
|
- | 225 | or edx, 0x34000000 |
|
- | 226 | mcall 0, <50, 370>, <350, 170>, , 0, title |
|
- | 227 | ;----------------------------------- |
|
- | 228 | ; draw frames |
|
- | 229 | mov [frame_data.x],dword frame_1.x shl 16+frame_1.width |
|
- | 230 | mov [frame_data.y],dword frame_1.y shl 16+frame_1.height |
|
- | 231 | mov [frame_data.text_pointer],dword select_addr_text |
|
161 | ; ******* WINDOW DEFINITIONS AND DRAW ******** |
232 | mov eax,[sc.work] |
162 | ; ********************************************* |
233 | mov [frame_data.font_backgr_color],eax |
163 | 234 | mov eax,[sc.work_text] |
|
164 | draw_window: |
235 | mov [frame_data.font_color],eax |
165 | - | ||
- | 236 | ||
166 | mcall 12, 1 ; start window draw |
237 | push dword frame_data |
167 | 238 | call [Frame_draw] |
|
168 | ; get system colors |
239 | ;----------------------------------- |
169 | mcall 48, 3, sc, 40 |
- | |
- | 240 | mov [frame_data.x],dword frame_2.x shl 16+frame_2.width |
|
170 | 241 | mov [frame_data.y],dword frame_2.y shl 16+frame_2.height |
|
171 | ; draw window |
242 | mov [frame_data.text_pointer],dword select_path_text |
172 | mov edx, [sc.work] |
243 | |
173 | or edx, 0x34000000 |
- | |
Line -... | Line 244... | ||
- | 244 | push dword frame_data |
|
- | 245 | call [Frame_draw] |
|
174 | mcall 0, <50, 370>, <350, 140>, , 0, title |
246 | ;----------------------------------- |
175 | 247 | ; draw "url:" text |
|
176 | ; draw "url:" text |
248 | mov ecx, [sc.work_text] |
- | 249 | or ecx, 80000000h |
|
- | 250 | mcall 4, |
|
- | 251 | ;----------------------------------- |
|
- | 252 | ; draw editbox |
|
- | 253 | edit_boxes_set_sys_color edit1, editboxes_end, sc |
|
- | 254 | stdcall [edit_box_draw], edit1 |
|
177 | mov ecx, [sc.work_text] |
255 | ;----------------------------------- |
Line 178... | Line 256... | ||
178 | or ecx, 80000000h |
256 | ; draw buttons |
Line 179... | Line 257... | ||
179 | mcall 4, <14, 14>, , type_pls |
257 | mcall 8, |
180 | - | ||
181 | ; draw editbox |
- | |
182 | edit_boxes_set_sys_color edit1, editboxes_end, sc |
258 | mcall , |
183 | stdcall [edit_box_draw], edit1 |
259 | |
184 | 260 | mcall , |
|
185 | ; draw buttons |
261 | ;----------------------------------- |
186 | mcall 8, <90, 68>, <54, 16>, 22, [sc.work_button] ; reload |
262 | ; draw buttons text |
Line 187... | Line 263... | ||
187 | mcall , <166, 50>, <54, 16>, 24 ; stop |
263 | mov ecx, [sc.work_button_text] |
188 | mcall , <224, 54>, , 26 ; save |
264 | or ecx, 80000000h |
- | 265 | mcall 4, |
|
Line 189... | Line 266... | ||
189 | 266 | mcall , |
|
190 | ; draw buttons text |
267 | mcall , |
191 | mov ecx, [sc.work_button_text] |
268 | |
192 | or ecx, 80000000h |
269 | mcall 13, |
Line 193... | Line 270... | ||
193 | mcall 4, <102, 59>, , button_text |
270 | push dword PathShow_data_1 |
194 | 271 | call [PathShow_draw] |
|
195 | mcall 12, 2 ; end window redraw |
272 | |
196 | 273 | mcall 12, 2 ; end window redraw |
|
- | 274 | ||
- | 275 | ret |
|
- | 276 | ;--------------------------------------------------------------------- |
|
197 | ret |
277 | ; Data area |
- | 278 | ;----------------------------------------------------------------------------- |
|
- | 279 | align 4 |
|
- | 280 | @IMPORT: |
|
198 | 281 | ||
199 | 282 | library lib_http, 'http.obj', \ |
|
200 | ;----------------------------------------------------------------------------- |
283 | box_lib, 'box_lib.obj', \ |
201 | ; Data area |
284 | proc_lib, 'proc_lib.obj' |
- | 285 | ||
202 | ;----------------------------------------------------------------------------- |
286 | import lib_http, \ |
203 | align 4 |
- | |
204 | @IMPORT: |
287 | HTTP_get , 'get' , \ |
Line 205... | Line 288... | ||
205 | 288 | HTTP_process , 'process' ,\ |
|
206 | library lib_http, 'http.obj', \ |
289 | HTTP_free , 'free' |
207 | box_lib, 'box_lib.obj' |
290 | |
Line 208... | Line 291... | ||
208 | 291 | import box_lib, \ |
|
Line 209... | Line 292... | ||
209 | import lib_http, \ |
292 | edit_box_draw, 'edit_box', \ |
Line 210... | Line 293... | ||
210 | HTTP_get , 'get' , \ |
293 | edit_box_key, 'edit_box_key', \ |
Line 211... | Line 294... | ||
211 | HTTP_process , 'process' ,\ |
294 | edit_box_mouse, 'edit_box_mouse', \ |
- | 295 | PathShow_prepare, 'PathShow_prepare', \ |
|
212 | HTTP_free , 'free' |
296 | PathShow_draw, 'PathShow_draw', \ |
- | 297 | Frame_draw, 'frame_draw' |
|
- | 298 | ||
213 | 299 | import proc_lib, \ |
|
214 | import box_lib, \ |
300 | OpenDialog_Init, 'OpenDialog_init', \ |
215 | edit_box_draw, 'edit_box', \ |
301 | OpenDialog_Start, 'OpenDialog_start' |
Line 216... | Line 302... | ||
216 | edit_box_key, 'edit_box_key', \ |
302 | ;--------------------------------------------------------------------- |
- | 303 | fileinfo dd 2, 0, 0 |
|
- | 304 | final_size dd 0 |
|
- | 305 | final_buffer dd 0 |
|
- | 306 | db 0 |
|
- | 307 | dd fname_buf |
|
- | 308 | ;--------------------------------------------------------------------- |
|
- | 309 | ||
- | 310 | mouse_dd dd 0 |
|
- | 311 | edit1 edit_box 295, 48, (frame_1.y+10), 0xffffff, 0xff, 0x80ff, 0, 0x8000, URLMAXLEN, document_user, mouse_dd, ed_focus+ed_always_focus, 7, 7 |
|
- | 312 | editboxes_end: |
|
- | 313 | ||
- | 314 | ;--------------------------------------------------------------------- |
|
- | 315 | ||
- | 316 | include_debug_strings |
|
- | 317 | ||
- | 318 | ;--------------------------------------------------------------------- |
|
- | 319 | ||
- | 320 | type_pls db 'URL:', 0 |
|
- | 321 | button_text: |
|
- | 322 | .1: db 'DOWNLOAD',0 |
|
- | 323 | .2: db 'STOP',0 |
|
- | 324 | .3: db 'SELECT', 0 |
|
- | 325 | download_complete db 'FILE SAVED!', 0 |
|
- | 326 | title db 'HTTP Downloader', 0 |
|
- | 327 | silently db 0 |
|
- | 328 | ||
- | 329 | ;--------------------------------------------------------------------- |
|
- | 330 | select_addr_text db ' NETWORK ADDRESS: ',0 |
|
- | 331 | select_path_text db ' PATH TO SAVE FILE: ',0 |
|
- | 332 | ;--------------------------------------------------------------------- |
|
- | 333 | frame_data: |
|
- | 334 | .type dd 0 ;+0 |
|
- | 335 | .x: |
|
- | 336 | .x_size dw 0 ;+4 |
|
- | 337 | .x_start dw 0 ;+6 |
|
- | 338 | .y: |
|
- | 339 | .y_size dw 0 ;+8 |
|
- | 340 | .y_start dw 0 ;+10 |
|
- | 341 | .ext_fr_col dd 0x0 ;+12 |
|
- | 342 | .int_fr_col dd 0xffffff ;+16 |
|
- | 343 | .draw_text_flag dd 1 ;+20 |
|
- | 344 | .text_pointer dd 0 ;+24 |
|
- | 345 | .text_position dd 0 ;+28 |
|
- | 346 | .font_number dd 0 ;+32 |
|
- | 347 | .font_size_y dd 9 ;+36 |
|
- | 348 | .font_color dd 0x0 ;+40 |
|
- | 349 | .font_backgr_color dd 0xffffff ;+44 |
|
- | 350 | ;--------------------------------------------------------------------- |
|
- | 351 | PathShow_data_1: |
|
- | 352 | .type dd 0 ;+0 |
|
- | 353 | .start_y dw frame_2.y+14 ;+4 |
|
- | 354 | .start_x dw frame_2.x+20 ;+6 |
|
- | 355 | .font_size_x dw 6 ;+8 ; 6 - for font 0, 8 - for font 1 |
|
- | 356 | .area_size_x dw frame_2.width-35 ;+10 |
|
- | 357 | .font_number dd 0 ;+12 ; 0 - monospace, 1 - variable |
|
- | 358 | .background_flag dd 0 ;+16 |
|
- | 359 | .font_color dd 0 ;+20 |
|
- | 360 | .background_color dd 0 ;+24 |
|
- | 361 | .text_pointer dd fname_buf ;+28 |
|
- | 362 | .work_area_pointer dd text_work_area ;+32 |
|
- | 363 | .temp_text_length dd 0 ;+36 |
|
- | 364 | ;--------------------------------------------------------------------- |
|
- | 365 | OpenDialog_data: |
|
- | 366 | .type dd 1 ; Save |
|
- | 367 | .procinfo dd procinfo ;+4 |
|
- | 368 | .com_area_name dd communication_area_name ;+8 |
|
- | 369 | .com_area dd 0 ;+12 |
|
- | 370 | .opendir_path dd temp_dir_path ;+16 |
|
- | 371 | .dir_default_path dd communication_area_default_path ;+20 |
|
- | 372 | .start_path dd open_dialog_path ;+24 |
|
- | 373 | .draw_window dd draw_window ;+28 |
|
- | 374 | .status dd 0 ;+32 |
|
- | 375 | .openfile_pach dd fname_buf ;+36 |
|
- | 376 | .filename_area dd filename_area ;+40 |
|
217 | edit_box_mouse, 'edit_box_mouse' |
377 | .filter_area dd Filter |
218 | 378 | .x: |
|
219 | ;--------------------------------------------------------------------- |
379 | .x_size dw 420 ;+48 ; Window X size |
220 | fileinfo dd 2, 0, 0 |
380 | .x_start dw 200 ;+50 ; Window X position |
221 | final_size dd 0 |
381 | .y: |
222 | final_buffer dd 0 |
382 | .y_size dw 320 ;+52 ; Window y size |
223 | db '/rd/1/.download', 0 |
383 | .y_start dw 120 ;+54 ; Window Y position |
224 | 384 | ||
225 | ;--------------------------------------------------------------------- |
385 | communication_area_name: |
226 | 386 | db 'FFFFFFFF_open_dialog',0 |
|
- | 387 | open_dialog_path: |
|
- | 388 | db '/sys/File Managers/opendial',0 |
|
- | 389 | communication_area_default_path: |
|
- | 390 | db '/sys',0 |
|
- | 391 | ||
- | 392 | Filter: |
|
227 | mouse_dd dd 0 |
393 | dd Filter.end - Filter |
- | 394 | .1: |
|
- | 395 | db 'IMG',0 |
|
- | 396 | db 'IMA',0 |
|
- | 397 | .end: |
|
- | 398 | db 0 |
|
- | 399 | ||
- | 400 | start_temp_file_name: db 'some.garbage',0 |
|
- | 401 | ||
- | 402 | start_file_path: db '/sys/.download', 0 |
|
- | 403 | ;--------------------------------------------------------------------- |
|
- | 404 | document_user db 'http://' |
|
228 | edit1 edit_box 295, 48, 10, 0xffffff, 0xff, 0x80ff, 0, 0x8000, URLMAXLEN, document_user, mouse_dd, ed_focus+ed_always_focus, 7, 7 |
405 | ;--------------------------------------------------------------------- |
229 | editboxes_end: |
- | |
- | 406 | IM_END: |