forked from KolibriOS/kolibrios
8cc2207bd7
2) fix & update 'kol_f_edit' git-svn-id: svn://kolibrios.org@1717 a494cfbc-eb01-0410-851d-a64ba20cac60
440 lines
9.6 KiB
PHP
440 lines
9.6 KiB
PHP
;
|
||
; ¢ í⮬ ä ©«¥ ᮡà ë äãªæ¨¨ ã¦ë¥ ¤«ï ᮧ¤ ¨ï ¨
|
||
; à ¡®âë ®ª ᮠ᢮©á⢠¬¨ ®¡ê¥ªâ
|
||
;
|
||
|
||
prop_edits_top equ 25
|
||
prop_edits_height equ 18
|
||
prop_wnd_width equ 520 ;è¨à¨ ®ª ᮠ᢮©á⢠¬¨ ®¡ê¥ªâ
|
||
|
||
prop_wnd_run db 0 ;¯¥à¥¬¥ ï á«¥¤ïé ï § ⥬ çâ®-¡ë ¥ § ¯ã᪠âì ¡®«ìè¥ 1-£® ®ª ᮠ᢮©á⢠¬¨ ®¤®¢à¥¬¥®
|
||
|
||
;¤ ®¥ ®ª® (¯à®æ¥áá) ¢ë§ë¢ ¥âìáï äãªæ¨¥© on_file_object_select
|
||
align 4
|
||
prop_start:
|
||
pushad
|
||
mcall 40,0x27 ;¬ ᪠®¦¨¤ ¥¬ëå ᮡë⨩
|
||
|
||
call init_obj_count_txt_props ;¯®«ãç ¥¬ ç¨á«® ¨á¯®«ì§ã¥¬ëå ¯®«¥©
|
||
|
||
; áâனª ⥪á⮢ëå ¯®«¥©
|
||
xor ebx,ebx
|
||
mov edi,edit2
|
||
@@:
|
||
stdcall set_obj_win_param, ebx,edi
|
||
inc ebx
|
||
add edi,ed_struc_size
|
||
cmp edi,prop_wnd_edits_end
|
||
jl @b
|
||
|
||
; áâனª ᯨ᪠®¡ê¥ªâ®¢, ®¯à¥¤¥«ïîé¨å â¨¯ë ¯¥à¥¬¥ëå
|
||
stdcall dword[tl_data_init], tree3
|
||
cmp byte[err_ini0],1
|
||
je @f
|
||
mov dword[tree3.data_img],bmp_icon
|
||
@@:
|
||
mov eax,dword[icon_tl_sys]
|
||
mov dword[tree3.data_img_sys],eax
|
||
|
||
mov edx,[foc_obj]
|
||
cmp dword[edx],C_VAR
|
||
jne .sel_end
|
||
|
||
stdcall [tl_node_poi_get_info], 0,tree2
|
||
pop edx
|
||
@@:
|
||
cmp edx,0
|
||
je @f
|
||
stdcall [tl_node_poi_get_data], edx,tree2
|
||
pop esi ;¯®«ãç ¥¬ ¤ ë¥ ã§«
|
||
;------ ¤®¡ ¢«¥¨¥ ®¡ê¥ªâ ¢ ᯨ᮪ -------------------------------------------
|
||
mov ebx,[foc_obj]
|
||
cmp ebx,esi
|
||
je .add_end ;¨§¡¥£ ¥¬ 横«¨ç¥áª®© áá뫪¨
|
||
mov ebx,dword[esi]
|
||
cmp ebx,C_TDF
|
||
je .add_beg
|
||
cmp ebx,C_STR
|
||
je .add_beg
|
||
jmp .add_end
|
||
.add_beg:
|
||
stdcall get_obj_id,esi
|
||
mov edi,u_object
|
||
mov dword[edi],eax
|
||
add edi,4
|
||
add esi,u_object.txt-u_object ;¯¥à¥å®¤¨¬ ¨¬ï ®¡ê¥ªâ
|
||
mov ecx,MAX_LEN_OBJ_TXT
|
||
cld
|
||
rep movsb
|
||
|
||
call find_obj_in_opt ;edi = pointer to ObjOpt struct
|
||
mov cx,word[edi+obj_opt.img-obj_opt]
|
||
cmp cx,0
|
||
jge .zero
|
||
xor cx,cx ;çâ®-¡ë ¥ £«î稫® á ®âà¨æ ⥫ìë¬ ¨¤¥ªá®¬
|
||
.zero:
|
||
shl ecx,16 ;¢ ecx ¨¤¥ªá ¨ª®ª¨
|
||
|
||
stdcall dword[tl_node_add], u_object, ecx, tree3 ;áâàãªâãà u_object ¢ ¤ ®¬ á«ãç ¥ ¥ ᮡ«î¤ ¥âáï, ® 㦠¯à®áâ® ª ª ¯ ¬ïâì ¤«ï ¢áâ ¢ª¨
|
||
stdcall dword[tl_cur_next], tree3 ;¯¥à¥®á¨¬ ªãàá®à ¢¨§, çâ®-¡ë ¥ ¯®¬¥ï«áï ¯®à冷ª
|
||
.add_end:
|
||
;-------
|
||
stdcall [tl_node_poi_get_next_info], edx,tree2
|
||
pop edx ;¯¥à¥å®¤¨¬ ª á«¥¤ã饬ã 㧫ã
|
||
jmp @b
|
||
@@:
|
||
|
||
;áâ ¢¨¬ ªãàá®à ã¦ãî ¯®§¨æ¨î
|
||
mov edx,[foc_obj] ;¡¥à¥¬ 㪠§ â¥«ì ®¡ê¥ªâ
|
||
cmp edx,0
|
||
je .sel_end
|
||
mov edx,dword[edx+u_object.typid-u_object]
|
||
stdcall [tl_cur_beg],tree3
|
||
@@:
|
||
stdcall [tl_node_get_data],tree3
|
||
pop eax
|
||
cmp eax,0
|
||
je .sel_end
|
||
cmp dword[eax],edx
|
||
je .sel_end ;¥á«¨ 諨 㪠§ ⥫ì
|
||
stdcall [tl_cur_next],tree3
|
||
jmp @b
|
||
.sel_end:
|
||
|
||
;ç¨á⪠¯®¤¯¨á¥©
|
||
mov dword[ch1.text],ch_text
|
||
mov dword[ch2.text],ch_text
|
||
mov dword[ch3.text],ch_text
|
||
mov dword[ch4.text],ch_text
|
||
|
||
;ãáâ ®¢ª ®¢ëå ¯®¤¯¨á¥©
|
||
mov esi,[foc_obj] ;¡¥à¥¬ 㪠§ â¥«ì ®¡ê¥ªâ
|
||
mov ebx,dword[esi]
|
||
call find_obj_in_opt
|
||
mov edi,dword[edi+obj_opt.bit_prop-obj_opt]
|
||
cmp edi,0
|
||
je .no_bit_capts ;¥á«¨ 1-¥ ¡¨â®¢®¥ ᢮©á⢮ ¯ãá⮥, â® ¢ 横« ¥ § 室¨¬
|
||
mov edx,ch1.text
|
||
xor al,al ;0 - ᨬ¢®« ª®æ áâப¨
|
||
add edi,obj_opt
|
||
@@:
|
||
mov [edx],edi ;§ ¯¨áë¢ ¥¬ ⥪áâ ¢ check_box
|
||
xor ecx,ecx
|
||
dec ecx ;ecx - ç¨á«® ¯à®á¬ âਢ ¥¬ëå ¡ ©â
|
||
cld
|
||
repne scasb ;¨é¥¬ ª®¥æ áâப¨ (al=0)
|
||
cmp byte[edi],0
|
||
je .no_bit_capts ;¥á«¨ á«¥¤ãî饩 áâப¨ ¥â ¢ë室 ¨§ 横«
|
||
|
||
add edx,ch_struc_size
|
||
cmp edx,check_boxes_end
|
||
jl @b
|
||
.no_bit_capts:
|
||
|
||
;ãáâ ®¢ª ä« ¦ª®¢
|
||
mov esi,[foc_obj] ;¡¥à¥¬ 㪠§ â¥«ì ®¡ê¥ªâ
|
||
mov edx,ch1.flags
|
||
xor eax,eax
|
||
@@:
|
||
bt dword[esi+u_object.modif-u_object],eax
|
||
jc .flag_set
|
||
btr dword[edx],1 ;ᨬ ¥¬ £ «®çªã
|
||
jmp .end_set
|
||
.flag_set:
|
||
bts dword[edx],1 ;áâ ¢¨¬ £ «®çªã (ch_flag_en = 10b = 2^1)
|
||
.end_set:
|
||
|
||
inc eax
|
||
add edx,ch_struc_size
|
||
cmp edx,check_boxes_end
|
||
jl @b
|
||
|
||
init_checkboxes2 check_boxes,check_boxes_end
|
||
check_boxes_set_sys_color2 check_boxes,check_boxes_end,sc
|
||
popad
|
||
|
||
align 4
|
||
prop_red_win:
|
||
pushad
|
||
mcall 12,1
|
||
|
||
xor eax,eax
|
||
mov edi,hed
|
||
mov edx,[foc_obj] ;¡¥à¥¬ 㪠§ â¥«ì ®¡ê¥ªâ
|
||
cmp edx,0
|
||
je @f
|
||
mov ebx,dword[edx]
|
||
call find_obj_in_opt
|
||
add edi,obj_opt.info-obj_opt ;edi - ¯®¤¯¨áì ( §¢ ¨¥ ®¡ê¥ªâ )
|
||
@@:
|
||
mov ebx,30*65536+prop_wnd_width
|
||
mov ecx,50*65536+250
|
||
mov edx,0xffffd0
|
||
or edx,0x33000000
|
||
int 0x40
|
||
|
||
mov edx,[foc_obj] ;¡¥à¥¬ 㪠§ â¥«ì ®¡ê¥ªâ
|
||
cmp edx,0
|
||
je .exit_fun
|
||
|
||
mov eax,8 ;ª®¯ª ¤«ï á®åà ¥¨ï ¨§¬¥¥¨©
|
||
mov ebx,prop_wnd_width-18-20
|
||
shl ebx,16
|
||
add ebx,18
|
||
mov ecx,3
|
||
shl ecx,16
|
||
add ecx,18
|
||
mov edx,10
|
||
mov esi,0xd040
|
||
int 0x40
|
||
|
||
ror ebx,16 ;¢ëç¨á«ï¥¬ ª®®à¤¨ âë ¤«ï ¨ª®ª¨
|
||
ror ecx,16
|
||
and ebx,0xffff
|
||
and ecx,0xffff
|
||
inc ebx
|
||
inc ecx
|
||
stdcall draw_icon, 17,ebx,ecx ;17 - save
|
||
|
||
mov edi,edit2
|
||
mov ecx,[obj_count_txt_props]
|
||
cld
|
||
.cycle:
|
||
stdcall [edit_box_draw], edi
|
||
add edi,ed_struc_size
|
||
loop .cycle
|
||
|
||
cmp [err_ini0],1
|
||
je .exit_fun
|
||
cmp [err_ini1],1
|
||
je .exit_fun
|
||
|
||
mov edx,[foc_obj] ;¡¥à¥¬ 㪠§ â¥«ì ®¡ê¥ªâ
|
||
xor ebx,ebx ;®¬¥à ¯®«ï
|
||
.draw_column:
|
||
mov eax,ebx
|
||
imul eax,prop_edits_height
|
||
add eax,prop_edits_top
|
||
stdcall draw_obj_icon,[edx],ebx,eax
|
||
stdcall draw_obj_caption,[edx],ebx,eax
|
||
|
||
inc ebx
|
||
cmp ebx,MAX_OPT_FIELDS
|
||
jl .draw_column
|
||
|
||
cmp dword[edx],C_VAR
|
||
jne .no_tree
|
||
mov dword[w_scr_t3.all_redraw],1
|
||
stdcall [tl_draw], tree3
|
||
.no_tree:
|
||
|
||
checkboxes_draw2 check_boxes,check_boxes_end
|
||
|
||
.exit_fun:
|
||
mcall 12,2
|
||
popad
|
||
|
||
;¥ ®âàë¢ âì íâã äãªæ¨î ®â ¯à¥¤ë¤ã饩
|
||
align 4
|
||
prop_still:
|
||
pushad
|
||
mcall 10
|
||
|
||
cmp al,1 ;¨§¬. ¯®«®¦¥¨¥ ®ª
|
||
jz prop_red_win
|
||
cmp al,2
|
||
jne @f
|
||
call prop_key
|
||
@@:
|
||
cmp al,3
|
||
jz prop_button
|
||
cmp al,6
|
||
jne @f
|
||
call prop_mouse
|
||
@@:
|
||
popad
|
||
jmp prop_still
|
||
|
||
;¢ 横«¥ ¯à®¡¥£ ¥¬ ¯® ¢á¥¬ ¯®«ï¬ ᮠ᢮©á⢠¬¨,
|
||
;çâ®-¡ë ¯®áç¨â âì ç¨á«® ¨á¯®«ì§ã¥¬ëå ¯®«¥©
|
||
align 4
|
||
init_obj_count_txt_props:
|
||
pushad
|
||
mov edx,[foc_obj] ;¡¥à¥¬ 㪠§ â¥«ì ®¡ê¥ªâ
|
||
xor ebx,ebx
|
||
mov edi,edit2
|
||
.cycle:
|
||
stdcall get_obj_text_len_col, edx,ebx ;eax - ¤«¨ ¯®«ï
|
||
cmp eax,1
|
||
jl @f ;¢ë室 ¨§ 横« ¥á«¨ ¯®«¥ ¥ ¨á¯®«ì§ã¥âìáï
|
||
inc ebx
|
||
|
||
add edi,ed_struc_size
|
||
cmp edi,prop_wnd_edits_end
|
||
jl .cycle
|
||
@@:
|
||
mov [obj_count_txt_props],ebx
|
||
popad
|
||
ret
|
||
|
||
;¢ë¢®¤ ⥪á⮢ëå ¯®¤¯¨á¥© ¤«ï ¯®«¥© ᮠ᢮©á⢠¬¨
|
||
align 4
|
||
proc draw_obj_caption, o_type:dword,n_col:dword, coord_y:dword
|
||
pushad
|
||
stdcall get_obj_text_len_col, [foc_obj], [n_col] ;eax - ¤«¨ ¯®«ï
|
||
cmp eax,1
|
||
jl .no_draw
|
||
|
||
xor ebx,ebx
|
||
mov ebx,dword[o_type]
|
||
call find_obj_in_opt
|
||
|
||
mov edx,edi
|
||
add edx,obj_opt.caption-obj_opt
|
||
|
||
mov eax,[n_col]
|
||
mov ebx,143 ;®âáâ㯠᫥¢
|
||
shl ebx,16
|
||
add ebx,dword[coord_y]
|
||
add ebx,3
|
||
mov ecx,0 ;text color
|
||
|
||
mov esi,edx
|
||
.beg_found:
|
||
cmp byte[esi],0
|
||
je .end_found
|
||
cmp byte[esi],'*'
|
||
je @f
|
||
inc esi
|
||
jmp .beg_found
|
||
@@:
|
||
cmp eax,0
|
||
je .end_found
|
||
dec eax
|
||
inc esi
|
||
mov edx,esi ;¯¥à¥ª«îç ¥¬ ç «® áâப¨ á«¥¤. ¯®¤¯¨áì
|
||
jmp .beg_found
|
||
.end_found:
|
||
cmp esi,edx
|
||
jle .no_draw
|
||
sub esi,edx ;esi = text len
|
||
mov eax,4
|
||
int 0x40
|
||
.no_draw:
|
||
popad
|
||
ret
|
||
endp
|
||
|
||
align 4
|
||
proc set_obj_win_param, col:dword, edit:dword
|
||
pushad
|
||
stdcall get_obj_text_col, [foc_obj], [col] ;edx - text
|
||
stdcall get_obj_text_len_col, [foc_obj], [col] ;eax - ¤«¨ ¯®«ï
|
||
mov edi,[edit]
|
||
cmp eax,1
|
||
jl @f
|
||
dec eax
|
||
mov ed_max,eax ;ed_max = edi+.max
|
||
mov ed_focus_border_color, dword 0xff
|
||
mov ed_blur_border_color, dword 0x808080
|
||
stdcall [edit_box_set_text], edi,edx ;®¡®¢«ï¥¬ editbox
|
||
jmp .end_f
|
||
@@:
|
||
mov ed_max,dword MAX_LEN_OBJ_TXT
|
||
;stdcall [edit_box_set_text], edi,txt_null
|
||
.end_f:
|
||
popad
|
||
ret
|
||
endp
|
||
|
||
align 4
|
||
prop_key:
|
||
push eax ecx edi
|
||
mcall 2
|
||
mov edi,edit2
|
||
mov ecx,[obj_count_txt_props]
|
||
cld
|
||
.cycle:
|
||
stdcall [edit_box_key], edi
|
||
add edi,ed_struc_size
|
||
loop .cycle
|
||
|
||
mov edi,dword[foc_obj]
|
||
cmp dword[edi],C_VAR
|
||
jne @f
|
||
stdcall [tl_key], tree3
|
||
@@:
|
||
pop edi ecx eax
|
||
ret
|
||
|
||
align 4
|
||
prop_mouse:
|
||
push ecx edi
|
||
mov edi,edit2
|
||
mov ecx,[obj_count_txt_props]
|
||
cld
|
||
.cycle:
|
||
stdcall [edit_box_mouse], edi
|
||
add edi,ed_struc_size
|
||
loop .cycle
|
||
|
||
mov edi,dword[foc_obj]
|
||
cmp dword[edi],C_VAR
|
||
jne @f
|
||
stdcall [tl_mouse], tree3
|
||
@@:
|
||
|
||
checkboxes_mouse2 check_boxes,check_boxes_end
|
||
pop edi ecx
|
||
ret
|
||
|
||
align 4
|
||
prop_button:
|
||
mcall 17 ;¯®«ãç¨âì ª®¤ ¦ ⮩ ª®¯ª¨
|
||
|
||
cmp ah,10
|
||
jne @f
|
||
call but_element_change
|
||
mov ah,1 ;¤«ï § ªàëâ¨ï ®ª
|
||
@@:
|
||
|
||
cmp ah,1
|
||
jne prop_still
|
||
.exit:
|
||
mov dword[tree3.data_img],0 ;ç¨á⨬ 㪠§ ⥫¨ ¨ª®ª¨ çâ®-¡ë ¨å ¥ 㤠«¨« ¤¥áâàãªâ®à
|
||
mov dword[tree3.data_img_sys],0 ;â. ª. ®¨ ¥é¥ ¨á¯®«ì§ãîâìáï ¢ ¤à㣨å í«¥¬¥â å
|
||
stdcall dword[tl_data_clear], tree3
|
||
mov byte[prop_wnd_run],0 ;®¡ã«ï¥¬ áç¥â稪 ®ª®
|
||
mcall -1 ;¢ë室 ¨§ ¯à®£à ¬¬ë
|
||
|
||
;¤¥à¥¢® á ®¡ê¥ªâ ¬¨ ¢ ¯®«ì§®¢ ⥫ì᪮¬ ä ©«¥
|
||
tree3 tree_list sizeof.object,(MAX_CED_OBJECTS shr 2)+2, tl_key_no_edit+tl_list_box_mode,\
|
||
16,16, 0xffffff,0xb0d0ff,0xd000ff, 320,30,165,125, 0,4,MAX_LEN_OBJ_TXT, el_focus,\
|
||
w_scr_t3,0
|
||
|
||
align 4
|
||
w_scr_t3:
|
||
.size_x dw 16 ;+0
|
||
rb 2+2+2
|
||
.btn_high dd 15 ;+8
|
||
.type dd 1 ;+12
|
||
.max_area dd 100 ;+16
|
||
rb 4+4
|
||
.bckg_col dd 0xeeeeee ;+28
|
||
.frnt_col dd 0xbbddff ;+32
|
||
.line_col dd 0 ;+36
|
||
rb 4+2+2
|
||
.run_x:
|
||
rb 2+2+2+2+4+4+4+4+4+4
|
||
.all_redraw dd 0 ;+80
|
||
.ar_offset dd 1 ;+84
|
||
|
||
check_boxes:
|
||
ch1 check_box2 (320 shl 16+11),(160 shl 16 +11),5,0xffffff,0,0x80000000,ch_text,ch_flag_en+ch_flag_middle
|
||
ch2 check_box2 (320 shl 16+11),(175 shl 16 +11),5,0xffffff,0,0x80000000,ch_text,ch_flag_en+ch_flag_middle
|
||
ch3 check_box2 (320 shl 16+11),(190 shl 16 +11),5,0xffffff,0,0x80000000,ch_text,ch_flag_en+ch_flag_middle
|
||
ch4 check_box2 (320 shl 16+11),(205 shl 16 +11),5,0xffffff,0,0x80000000,ch_text,ch_flag_en+ch_flag_middle
|
||
check_boxes_end:
|
||
|
||
ch_text db 0
|