Subversion Repositories Kolibri OS

Rev

Rev 1418 | Rev 1438 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 1418 Rev 1435
Line 24... Line 24...
24
; ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
24
; ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
25
; (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
25
; (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
26
; SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26
; SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
27
;*****************************************************************************
27
;*****************************************************************************
28
;*****************************************************************************
28
;*****************************************************************************
29
macro OpenDialog_exit
29
macro	OpenDialog_exit
30
{
30
{
31
popa         
31
popa
32
ret
32
ret
33
}
33
}
34
;*****************************************************************************
34
;*****************************************************************************
35
macro	use_OpenDialog
35
macro	use_OpenDialog
36
{
36
{
37
OpenDialog:
37
OpenDialog:
38
od_type			equ dword [ebp] ; 0-Open, 1-Save, 2-Dir
38
od_type			equ dword [ebp]	; 0-Open, 1-Save, 2-Dir
39
od_procinfo		equ dword [ebp+4] ; Process info area for function 9
39
od_procinfo		equ dword [ebp+4] ; Process info area for function 9
40
od_com_area_name	equ dword [ebp+8] ; Name for shared area
40
od_com_area_name	equ dword [ebp+8] ; Name for shared area
41
od_com_area		equ dword [ebp+12] ; Adress of shared area
41
od_com_area		equ dword [ebp+12] ; Adress of shared area
42
od_opendir_pach		equ dword [ebp+16] ; Temp area the directory for show
42
od_opendir_pach		equ dword [ebp+16] ; Temp area the directory for show
43
od_dir_default_pach	equ dword [ebp+20] ; Default path of directory, 
43
od_dir_default_pach	equ dword [ebp+20] ; Default path of directory,
44
od_start_path		equ dword [ebp+24] ; Location path to OpenDialog
44
od_start_path		equ dword [ebp+24] ; Location path to OpenDialog
45
od_draw_window		equ dword [ebp+28] ; Adress of  procedure - draw_window
45
od_draw_window		equ dword [ebp+28] ; Adress of procedure - draw_window
46
od_status		equ dword [ebp+32] ; 0-Cancel, 1-Get path OK, 2-Use alternatives
46
od_status		equ dword [ebp+32] ; 0-Cancel, 1-Get path OK, 2-Use alternatives
47
od_openfile_pach	equ dword [ebp+36] ; Getting path to file
47
od_openfile_pach	equ dword [ebp+36] ; Getting path to file
-
 
48
od_filename_area	equ dword [ebp+40] ; Adress of file name area
-
 
49
od_filter_area		equ dword [ebp+44] ; Adress of filter area
48
;*****************************************************************************
50
;*****************************************************************************
49
.init:
51
.init:
50
	pusha
52
	pusha
51
	mcall	9, od_procinfo, -1
53
	mcall	9,od_procinfo,-1
52
	mov	ebx,[ebx+30]
54
	mov	ebx,[ebx+30]
53
	mov	edi,od_com_area_name
55
	mov	edi,od_com_area_name
54
	add	edi,7
56
	add	edi,7
55
	std
57
	std
56
	mov	ecx,4
58
	mov	ecx,4
Line 70... Line 72...
70
	cld
72
	cld
Line 71... Line 73...
71
	
73
	
72
	mcall	68,22,od_com_area_name,8192,0x09
74
	mcall	68,22,od_com_area_name,8192,0x09
Line 73... Line 75...
73
	mov	od_com_area,eax
75
	mov	od_com_area,eax
74
	
76
	
75
    mov   esi,od_openfile_pach
77
	mov	esi,od_openfile_pach
Line 76... Line 78...
76
    mov   edi,od_opendir_pach
78
	mov	edi,od_opendir_pach
77
	call	.copy_dir_path
79
	call	.copy_dir_path
78
	
80
	
79
OpenDialog_exit
81
OpenDialog_exit
80
;*****************************************************************************
82
;*****************************************************************************
81
;*****************************************************************************
83
;*****************************************************************************
82
.start:
84
.start:
83
	pusha
85
	pusha
84
	mov	eax,od_com_area
86
	mov	eax,od_com_area
85
	test	eax,eax
87
	test	eax,eax
Line 86... Line 88...
86
	jz	.1
88
	jz	.1
87
	mov ebx,od_type
89
	mov	ebx,od_type
88
	mov [eax+2],bx
90
	mov	[eax+2],bx
Line 89... Line 91...
89
	
91
	
90
	mov	[eax],word 2 ; folder for open
92
	mov	[eax],word 2	; folder for open
91
	mov	edi,eax
93
	mov	edi,eax
92
	add	edi,4
94
	add	edi,4
93
 
95
 
94
	mov	esi,od_opendir_pach
96
	mov	esi,od_opendir_pach
95
	xor	eax,eax
97
	xor	eax,eax
96
	mov	al,[esi]
98
	mov	al,[esi]
-
 
99
	test	eax,eax
-
 
100
	jnz	@f
-
 
101
	mov	esi,od_dir_default_pach	;communication_area_default_pach
-
 
102
@@:
-
 
103
	call	.copy
-
 
104
;----------------------------------------------
Line -... Line 105...
-
 
105
; copy file name to shared area
-
 
106
	cmp	od_type,dword 1
-
 
107
	jne	.4
-
 
108
	mov	edi,od_com_area
-
 
109
	add	edi,4096-256
-
 
110
 
-
 
111
	mov	esi,od_filename_area
-
 
112
;	xor	eax,eax
-
 
113
;	mov	al,[esi]
-
 
114
;	test	eax,eax
-
 
115
	test	esi,esi
-
 
116
	jnz	@f
-
 
117
	mov	esi,.null
-
 
118
@@:
-
 
119
	call	.copy
-
 
120
.4:
97
	test	eax,eax
121
;----------------------------------------------
98
	jnz	@f
122
	cmp	od_type,dword 2
Line 99... Line 123...
99
	mov	esi,od_dir_default_pach ;communication_area_default_pach
123
	je	@f
100
@@:
124
	call	.get_filter_data
Line 101... Line 125...
101
	call	.copy
125
@@:
102
 
126
;----------------------------------------------
103
	mov	eax,od_com_area_name
127
	mov	eax,od_com_area_name
104
	mov	[start_open_dialog.parameter],eax
128
	mov	[start_open_dialog.parameter],eax
105
 
129
 
106
	mov	eax,od_start_path
130
	mov	eax,od_start_path
107
	mov	[start_open_dialog.name],eax
131
	mov	[start_open_dialog.name],eax
108
 
132
 
109
	mcall	70, start_open_dialog
133
	mcall	70,start_open_dialog
110
	shr	eax,31
134
	shr	eax,31
111
	test	eax,eax
135
	test	eax,eax
112
	jnz	.1
136
	jnz	.1
113
	jmp	.still
137
	jmp	.still
114
.red:
138
.red:
115
	pusha
139
	pusha
116
	call	od_draw_window
140
	call	od_draw_window
117
	popa
141
	popa
118
.still:
142
.still:
119
	mcall	23, 50
143
	mcall	23,50
120
	cmp	eax,1
144
	cmp	eax,1
121
	je	.red
145
	je	.red
Line 122... Line 146...
122
	mov	eax,od_com_area
146
	mov	eax,od_com_area
123
	movzx	ebx,word [eax]
147
	movzx	ebx,word [eax]
124
	test	ebx,ebx
148
	test	ebx,ebx
125
	jz	.still
149
	jz	.still
126
	cmp	ebx,3
150
	cmp	ebx,3
127
	je	.2 ;still
151
	je	.2
128
	cmp	ebx,1
152
	cmp	ebx,1
129
	jne	.still
153
	jne	.still
-
 
154
 
-
 
155
	mov	esi,od_com_area
-
 
156
	add	esi,4
-
 
157
	mov	edi,od_openfile_pach
-
 
158
	call	.copy
-
 
159
	mov	od_status,1
-
 
160
	mov	esi,od_openfile_pach
-
 
161
	mov	edi,od_opendir_pach
-
 
162
	call	.copy_dir_path
-
 
163
;----------------------------------------------
-
 
164
; copy file name from shared area
-
 
165
	cmp	od_type,dword 1
-
 
166
	jne	@f
-
 
167
	mov	esi,od_com_area
-
 
168
	add	esi,4096-256
130
 
169
	mov	edi,od_filename_area
131
	mov	esi,od_com_area
170
;	xor	eax,eax
132
	add	esi,4
171
;	mov	al,[edi]
133
	mov	edi,od_openfile_pach ;string
172
;	test	eax,eax
134
	call	.copy
173
	test	edi,edi
135
	mov	od_status,1
174
	jz	@f
136
    mov   esi,od_openfile_pach
175
	call	.copy
137
    mov   edi,od_opendir_pach
176
@@:
138
	call	.copy_dir_path
177
;----------------------------------------------
-
 
178
	jmp	.3
-
 
179
.2:
-
 
180
	mov	od_status,0
-
 
181
	jmp	.3
-
 
182
.1:
-
 
183
	mov	od_status,2
-
 
184
.3:
-
 
185
OpenDialog_exit
-
 
186
;----------------------------------------------
-
 
187
.null:
-
 
188
	dd 0
-
 
189
;----------------------------------------------
-
 
190
.get_filter_data:
-
 
191
	mov	edi,od_com_area
-
 
192
	test	edi,edi
-
 
193
	jnz	@f
-
 
194
;	add	esp,4
-
 
195
;	jmp	still
-
 
196
	ret
-
 
197
@@:
-
 
198
	add	edi,4096+4
-
 
199
	mov	esi,od_filter_area
-
 
200
	mov	ecx,[esi]
-
 
201
	test	ecx,ecx
-
 
202
	jnz	@f
-
 
203
	mov	edi,od_com_area
-
 
204
	mov	[edi+4096],dword 0
139
	jmp	.3  ;kopen_1
205
	ret
140
.2:
206
@@:
141
	mov	od_status,0
207
	inc	ecx
142
	jmp	.3 ; still
208
	cld
143
.1:
209
	rep	movsb
Line 154... Line 220...
154
	test	eax,eax
220
	test	eax,eax
155
	jnz	@b
221
	jnz	@b
156
	ret
222
	ret
157
;----------------------------------------------
223
;----------------------------------------------
158
.copy_dir_path:
224
.copy_dir_path:
159
    xor   eax,eax
225
	xor	eax,eax
160
	cmp  [esi],al
226
	cmp	[esi],al
161
	jne  @f
227
	jne	@f
162
	mov  [edi],al
228
	mov	[edi],al
163
	mov  [ebx],al
229
	mov	[ebx],al
164
	xor  ebx,ebx
230
	xor	ebx,ebx
165
	inc  ebx
231
	inc	ebx
166
	ret
232
	ret
167
@@:
233
@@:
168
    cld
234
	cld
169
    lodsb
235
	lodsb
170
    stosb
236
	stosb
171
    test  eax,eax
237
	test	eax,eax
172
    jnz   @b
238
	jnz	@b
173
    mov   esi,edi
239
	cmp	od_type,dword 2
174
	dec   esi
240
	jne	@f
175
@@:
241
	ret
176
    std
-
 
177
    lodsb
-
 
178
    cmp   al,'/'
-
 
179
    jnz   @b
-
 
180
	
242
@@:
181
;	push  esi
243
	mov	esi,edi
182
;	add  esi,2
244
	dec	esi
183
;;	mov  edi,ebx  ;file_name
-
 
184
;;	xor  ebx,ebx
-
 
185
;@@:
245
@@:
186
;    cld
246
	std
187
;    lodsb
247
	lodsb
188
;;   stosb
-
 
189
;	inc   ebx
248
	cmp	al,'/'
190
;    test  eax,eax
-
 
191
;    jnz   @b
249
	jnz	@b
192
;	pop   esi
-
 
Line 193... Line 250...
193
	
250
	
194
    mov  [esi+1], byte 0
251
	mov	[esi+1],byte 0
195
    cld
252
	cld
196
	ret
253
	ret
197
;----------------------------------------------
254
;----------------------------------------------
198
align 4
255
align	4
199
start_open_dialog:
256
start_open_dialog:
200
.subfunction	dd 7
257
.subfunction	dd 7
201
.flags		dd 0
258
.flags		dd 0
202
.parameter	dd 0 ;od_com_area_name
259
.parameter	dd 0	;od_com_area_name
203
.reserved1	dd 0
260
.reserved1	dd 0
204
.reserved2	dd 0
261
.reserved2	dd 0
205
		db 0
262
		db 0
206
.name:		dd 0 ;od_start_path
263
.name:		dd 0	;od_start_path
207
}
264
}
208
;*****************************************************************************
265
;*****************************************************************************
209
macro	init_OpenDialog od_ptr
266
macro	init_OpenDialog od_ptr
210
{
267
{