Subversion Repositories Kolibri OS

Rev

Rev 5094 | Go to most recent revision | Only display areas with differences | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

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