0,0 → 1,330 |
;----------------------------------------------------------------------------- |
func define_3d_button ;/////////////////////////////////////////////////////// |
;----------------------------------------------------------------------------- |
; ebx = <x,width> |
; ecx = <y,height> |
; esp+4*3 = id |
; esp+4*2 = text |
; esp+4*1 = text length |
;----------------------------------------------------------------------------- |
pushad |
mov edx,[esp+4*8+4+4*2] |
or edx,0x40000000 |
mcall 8 |
mov eax,[esp+4*8+4*1] |
add eax,2 |
imul eax,6 |
pushad |
shr ebx,16 |
shr ecx,16 |
push ebx ecx eax 15 |
call draw_3d_panel |
popad |
shr ecx,16 |
mov bx,cx |
add ebx,7*65536+4 |
mcall 4,,[sc.work_text],[esp+4*8+4*2],[esp+4*8+4*1] |
popad |
ret 4*3 |
endf |
|
finddlg_handler: |
cmp al,1 |
je .draw |
cmp al,2 |
je .key |
cmp al,3 |
je botdlg.button |
ret |
|
.draw: |
mov ebx,[bot_ofs] |
add ebx,(1+3)*65536+6 |
mcall 4,,[sc.work_text],s_2find,s_2find.size+1 |
mov ecx,[bot_ofs] |
shl ecx,16 |
add ecx,(3+17)*65536+15 |
|
push ecx |
cmp [bot_dlg_mode2],0 |
je @f |
add ebx,18 |
mcall 4,,[sc.work_text],s_2replace,s_2replace.size+1 |
mov ecx,[esp] |
add ecx,18*65536 |
@@: |
|
mov ebx,[p_info.client_box.width] |
shl ebx,16 |
|
push 20003 |
cmp [bot_dlg_mode2],0 |
jne .draw.lp1 |
add ebx,-(2+6*(s_2find.size+2))*65536+6*(s_2find.size+2) |
push s_2find s_2find.size |
jmp @f |
|
.draw.lp1: |
add ebx,-(2+6*(s_2replace.size+2))*65536+6*(s_2replace.size+2) |
push s_2replace s_2replace.size |
|
@@: call define_3d_button |
sub ebx,(6*(s_2cancel.size+2)+3)*65536 |
mov bx,6*(s_2cancel.size+2) |
push 20001 s_2cancel s_2cancel.size |
call define_3d_button |
|
mov ecx,[esp] |
|
mov ebp,tb_find |
mov eax,[p_info.client_box.width] |
sub eax,6*(s_2find.size+2)+1 |
add eax,6*(s_2find.size+2)*65536 |
mov dword[tbox.x],eax |
add ecx,-18*65536+1 |
mov dword[tbox.y],ecx |
call textbox.draw |
|
pop ecx |
|
cmp [bot_dlg_mode2],0 |
je @f |
mov ebp,tb_replace |
mov eax,[p_info.client_box.width] |
sub eax,6*(s_2replace.size+2)+1 |
add eax,6*(s_2replace.size+2)*65536 |
mov dword[tbox.x],eax |
inc ecx |
mov dword[tbox.y],ecx |
call textbox.draw |
@@: |
|
ret |
|
.key: |
cmp ebx,KEY_ESCAPE |
je btn.bot.cancel |
cmp ebx,KEY_RETURN |
je btn.bot.find |
cmp ebx,KEY_NUMRETURN |
je btn.bot.find |
cmp ebx,KEY_TAB |
je ..tab |
call textbox.key |
ret |
|
..tab: |
cmp [bot_dlg_mode2],0 |
je @f |
mov eax,tb_replace |
cmp eax,[focused_tb] |
jne .key.lp1 |
mov eax,tb_find |
.key.lp1: |
mov [focused_tb],eax |
call .draw |
@@: ret |
|
osdlg_handler: |
cmp al,1 |
je .draw |
cmp al,2 |
je .key |
cmp al,3 |
je botdlg.button |
ret |
|
.draw: |
mov ebx,[bot_ofs] |
add ebx,(1+3)*65536+6 |
mcall 4,,[sc.work_text],s_2filename,s_2filename.size |
mov ebx,[p_info.client_box.width] |
shl ebx,16 |
mov ecx,[bot_ofs] |
shl ecx,16 |
add ecx,(2+18)*65536+15 |
|
push 20002 |
cmp [bot_dlg_mode2],0 |
jne .draw.lp1 |
add ebx,-(2+6*(s_2open.size+2))*65536+6*(s_2open.size+2) |
push s_2open s_2open.size |
jmp @f |
.draw.lp1: |
add ebx,-(2+6*(s_2save.size+2))*65536+6*(s_2save.size+2) |
push s_2save s_2save.size |
|
@@: call define_3d_button |
sub ebx,(6*(s_2cancel.size+2)+3)*65536 |
mov bx,6*(s_2cancel.size+2) |
push 20001 s_2cancel s_2cancel.size |
call define_3d_button |
|
mov ebp,tb_opensave |
mov eax,[p_info.client_box.width] |
sub eax,6*(s_2filename.size+1)+1 |
add eax,6*(s_2filename.size+1)*65536 |
mov dword[tbox.x],eax |
add ecx,-18*65536+1 |
mov dword[tbox.y],ecx |
call textbox.draw |
|
ret |
|
.key: |
cmp ebx,KEY_ESCAPE |
je btn.bot.cancel |
cmp ebx,KEY_RETURN |
je btn.bot.opensave |
cmp ebx,KEY_NUMRETURN |
je btn.bot.opensave |
call textbox.key |
ret |
|
gotodlg_handler: |
cmp al,1 |
je .draw |
cmp al,2 |
je .key |
cmp al,3 |
je botdlg.button |
ret |
|
.draw: |
mov ebx,[bot_ofs] |
add ebx,(1+3)*65536+6 |
mcall 4,,[sc.work_text],s_2filename,s_2filename.size |
mov ebx,[p_info.box.width] |
shl ebx,16 |
mov ecx,[bot_ofs] |
shl ecx,16 |
add ecx,(2+18)*65536+15 |
|
push 20002 |
cmp [bot_dlg_mode2],0 |
jne .draw.lp1 |
add ebx,-(2+6*(s_2open.size+2))*65536+6*(s_2open.size+2) |
push s_2open s_2open.size |
jmp @f |
.draw.lp1: |
add ebx,-(2+6*(s_2save.size+2))*65536+6*(s_2save.size+2) |
push s_2save s_2save.size |
|
@@: call define_3d_button |
sub ebx,(6*(s_2cancel.size+2)+3)*65536 |
mov bx,6*(s_2cancel.size+2) |
push 20001 s_2cancel s_2cancel.size |
call define_3d_button |
|
mov ebp,tb_opensave |
mov eax,[p_info.box.width] |
sub eax,6*(s_2filename.size+3) |
add eax,6*(s_2filename.size+2)*65536 |
mov dword[tbox.x],eax |
add ecx,-18*65536+1 |
mov dword[tbox.y],ecx |
call textbox.draw |
|
ret |
|
.key: |
cmp ebx,KEY_ESCAPE |
je btn.bot.cancel |
cmp ebx,KEY_RETURN |
je btn.bot.opensave |
cmp ebx,KEY_NUMRETURN |
je btn.bot.opensave |
call textbox.key |
ret |
|
botdlg.button: |
mov esi,accel_table2_botdlg |
.acc: cmp ebx,[esi] |
jne @f |
call dword[esi+4] |
ret |
@@: add esi,8 |
cmp byte[esi],0 |
jne .acc |
ret |
|
btn.bot.cancel: |
xor eax,eax |
mov [bot_mode],al |
mov [bot_dlg_height],eax |
call drawwindow |
ret |
|
btn.bot.opensave: |
cmp [bot_dlg_mode2],0 |
je .lp1 |
call save_file |
jnc @f |
jmp .lp2 |
.lp1: call btn.load_file |
jnc @f |
.lp2: |
ret |
@@: call update_caption |
xor eax,eax |
mov [bot_mode],al |
mov [bot_dlg_height],eax |
call drawwindow |
ret |
|
btn.bot.find: |
movzx ecx,[tb_find.length] |
mov [s_search.size],ecx |
mov esi,tb_find.text |
mov edi,s_search |
cld |
rep movsb |
|
cmp [bot_dlg_mode2],0 |
je @f |
call search |
jnc .found |
call check_inv_all |
ret |
|
.found: |
;--------------------------------------- |
push [copy_size] [copy_count] |
|
mov esi,AREA_CBUF |
mov edi,AREA_CBUF-304 |
mov ecx,300/4 |
rep movsd |
|
movzx eax,[tb_replace.length] |
mov esi,tb_replace.text |
mov edi,AREA_CBUF |
stosd |
mov ecx,eax |
jecxz .lp1 |
rep movsb |
.lp1: add eax,4 |
mov [copy_size],eax |
mov [copy_count],1 |
|
push [sel.x] |
call init_sel_vars |
call key.ctrl_v |
pop [sel.x] |
|
mov esi,AREA_CBUF-304 |
mov edi,AREA_CBUF |
mov ecx,300/4 |
rep movsd |
|
pop [copy_count] [copy_size] |
;--------------------------------------- |
|
call check_inv_all |
ret |
@@: xor eax,eax |
mov [bot_mode],al |
mov [bot_dlg_height],eax |
call btn.search |
call drawwindow |
ret |