define @Menuet@OpenFileDialog$qr22Menuet@TOpenFileStruct push ebx push esi push edi push ebp call @Menuet@GetThreadData$qv mov ebp,eax mov ebx,[esp+20] cmp dword [ebx+4],0 jnz Menuet_open_file_dlg_str mov esi,7 jmp Menuet_open_file_dlg_alloc Menuet_open_file_dlg_str: cld mov edi,[ebx+4] mov ecx,-1 xor al,al repnz scas byte [edi] not ecx mov esi,ecx Menuet_open_file_dlg_alloc: push esi call @@Menuet@Alloc$qui pop ecx test eax,eax jz Menuet_open_file_dlg_ret mov ecx,esi dec ecx push esi push ecx push eax mov dword [ebx],-1 cmp dword [ebx+4],0 jnz Menuet_open_file_dlg_copy mov dword [eax],0x2F64722F mov word [eax+4],0x2F31 jmp Menuet_open_file_dlg_redraw Menuet_open_file_dlg_copy: cld mov ecx,esi mov esi,[ebx+4] mov edi,eax rep movs byte [edi],[esi] Menuet_open_file_dlg_redraw: mov eax,12 mov ebx,1 int 0x40 xor eax,eax mov ebx,[ebp+MENUET_THREAD_DATA_X*4] mov ecx,[ebp+MENUET_THREAD_DATA_Y*4] mov edx,[ebp+MENUET_THREAD_DATA_C_WINDOW*4] mov esi,[ebp+MENUET_THREAD_DATA_C_HEADER*4] mov edi,[ebp+MENUET_THREAD_DATA_C_BORDER*4] int 0x40 mov eax,4 mov ebx,0x00070007 mov ecx,[ebp+MENUET_THREAD_DATA_C_TITLE*4] mov edx,Menuet_open_file_dlg_name mov esi,Menuet_open_file_dlg_name_end - Menuet_open_file_dlg_name int 0x40 mov eax,4 mov ebx,0x000C001E xor ecx,ecx mov edx,[esp] mov esi,[esp+4] int 0x40 mov eax,12 mov ebx,2 int 0x40 Menuet_open_file_dlg_loop: mov eax,10 int 0x40 dec eax jz Menuet_open_file_dlg_redraw dec eax jz Menuet_open_file_dlg_key dec eax jz Menuet_open_file_dlg_end jmp Menuet_open_file_dlg_loop Menuet_open_file_dlg_key: xor edi,edi Menuet_open_file_dlg_key_loop: mov eax,2 int 0x40 test al,al jnz Menuet_open_file_dlg_key_end cmp ah,27 jz Menuet_open_file_dlg_end cmp ah,13 jz Menuet_open_file_dlg_apply cmp ah,8 jz Menuet_open_file_dlg_key_bsp cmp ah,32 jna Menuet_open_file_dlg_key_loop mov ebx,[esp+4] cmp ebx,[esp+8] jb Menuet_open_file_dlg_key_any lea esi,[ebx+2*ebx] shr esi,1 inc esi push eax push esi push dword [esp+8] call @@Menuet@ReAlloc$qpvui add esp,8 mov ecx,eax pop eax test ecx,ecx jz Menuet_open_file_dlg_key mov [esp+8],esi mov [esp],ecx Menuet_open_file_dlg_key_any: mov esi,ebx add esi,[esp] mov byte [esi],ah inc ebx mov edi,1 mov [esp+4],ebx jmp Menuet_open_file_dlg_key_loop Menuet_open_file_dlg_key_bsp: mov eax,[esp+4] test eax,eax jz Menuet_open_file_dlg_key_loop dec eax mov edi,1 mov [esp+4],eax jmp Menuet_open_file_dlg_key_loop Menuet_open_file_dlg_key_end: test edi,edi jnz Menuet_open_file_dlg_redraw jmp Menuet_open_file_dlg_loop Menuet_open_file_dlg_apply: mov eax,[esp+4] inc eax mov [esp+8],eax push eax push dword [esp+4] call @@Menuet@ReAlloc$qpvui add esp,8 test eax,eax jz Menuet_open_file_dlg_end mov eax,[esp] mov esi,eax add eax,[esp+4] mov byte [eax],0 add esp,12 mov ebx,[esp+20] mov dword [ebx],2 push dword [ebx+4] call @@Menuet@Free$qpv pop ecx mov [ebx+4],esi jmp Menuet_open_file_dlg_invalidate Menuet_open_file_dlg_end: call @@Menuet@Free$qpv add esp,12 mov ebx,[esp+20] mov dword [ebx],1 Menuet_open_file_dlg_invalidate: push ebp push dword 1 call @@Menuet@Invalidate$qippv add esp,8 Menuet_open_file_dlg_ret: pop ebp pop edi pop esi pop ebx ret Menuet_open_file_dlg_name: db 'Open file' Menuet_open_file_dlg_name_end: enddef