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 | { |