; ; ¢ í⮬ ä ©«¥ ᮡà ë äãªæ¨¨ ã¦ë¥ ¤«ï ᮧ¤ ¨ï ¨ ; à ¡®âë ®ª ᮠ᢮©á⢠¬¨ ®¡ê¥ªâ ; 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