Subversion Repositories Kolibri OS

Rev

Rev 1717 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | Download | RSS feed

  1. ;
  2. ; ¢ í⮬ ä ©«¥ ᮡ࠭ë ä㭪樨 ­ã¦­ë¥ ¤«ï ᮧ¤ ­¨ï ¨
  3. ; à ¡®âë ®ª­  ᮠ᢮©á⢠¬¨ ®¡ê¥ªâ 
  4. ;
  5.  
  6. prop_edits_top equ 25
  7. prop_edits_height equ 18
  8. prop_wnd_width equ 520 ;è¨à¨­  ®ª­  ᮠ᢮©á⢠¬¨ ®¡ê¥ªâ 
  9.  
  10. prop_wnd_run db 0 ;¯¥à¥¬¥­­ ï á«¥¤ïé ï §  ⥬ çâ®-¡ë ­¥ § ¯ã᪠âì ¡®«ìè¥ 1-£® ®ª­  ᮠ᢮©á⢠¬¨ ®¤­®¢à¥¬¥­­®
  11.  
  12. ;¤ ­®¥ ®ª­® (¯à®æ¥áá) ¢ë§ë¢ ¥âìáï ä㭪樥© on_file_object_select
  13. align 4
  14. prop_start:
  15. pushad
  16.         mcall 40,0x27 ;¬ áª  ®¦¨¤ ¥¬ëå ᮡë⨩
  17.  
  18.         ; ­ áâனª  ⥪á⮢ëå ¯®«¥©
  19.         xor ebx,ebx
  20.         mov edi,edit2
  21.         @@:
  22.                 stdcall set_obj_win_param, ebx,edi
  23.                 inc ebx
  24.                 add edi,ed_struc_size
  25.                 cmp edi,prop_wnd_edits_end
  26.                 jl @b
  27.  
  28.         ; ­ áâனª  ᯨ᪠ ®¡ê¥ªâ®¢, ®¯à¥¤¥«ïîé¨å â¨¯ë ¯¥à¥¬¥­­ëå
  29.         stdcall dword[tl_data_init], tree3
  30.         cmp byte[err_ini0],1
  31.         je @f
  32.                 mov dword[tree3.data_img],bmp_icon
  33.         @@:
  34.         mov eax,dword[icon_tl_sys]
  35.         mov dword[tree3.data_img_sys],eax
  36.  
  37.         mov edx,[foc_obj]
  38.         cmp byte[edx],C_VAR
  39.         jne .sel_end
  40.  
  41.         stdcall [tl_node_poi_get_info], 0,tree2
  42.         pop edx
  43.         @@:
  44.                 cmp edx,0
  45.                 je @f
  46.                 stdcall [tl_node_poi_get_data], edx,tree2
  47.                 pop esi ;¯®«ãç ¥¬ ¤ ­­ë¥ 㧫 
  48. ;------ ¤®¡ ¢«¥­¨¥ ®¡ê¥ªâ  ¢ ᯨ᮪ -------------------------------------------
  49.                 mov ebx,[foc_obj]
  50.                 cmp ebx,esi
  51.                 je .add_end ;¨§¡¥£ ¥¬ 横«¨ç¥áª®© áá뫪¨
  52.                 mov bl,[esi]
  53.                 cmp bl,C_TDF
  54.                 je .add_beg
  55.                 cmp bl,C_STR
  56.                 je .add_beg
  57.                         jmp .add_end
  58.                 .add_beg:
  59.                         stdcall get_obj_id,esi
  60.                         mov edi,u_object
  61.                         mov dword[edi],eax
  62.                         add edi,4
  63.                         inc esi ;¯¥à¥å®¤¨¬ ­  ¨¬ï ®¡ê¥ªâ 
  64.                         mov ecx,MAX_LEN_OBJ_TXT
  65.                         cld
  66.                         rep movsb
  67.  
  68.                         call find_obj_in_opt ;edi = pointer to ObjOpt struct
  69.                         mov cx,word[edi+obj_opt.img-obj_opt]
  70.                         cmp cx,0
  71.                         jge .zero
  72.                                 xor cx,cx ;çâ®-¡ë ­¥ £«î稫® á ®âà¨æ â¥«ì­ë¬ ¨­¤¥ªá®¬
  73.                         .zero:
  74.                         shl ecx,16 ;¢ ecx ¨­¤¥ªá ¨ª®­ª¨
  75.  
  76.                         stdcall dword[tl_node_add], u_object, ecx, tree3 ;áâàãªâãà  u_object ¢ ¤ ­­®¬ á«ãç ¥ ­¥ ᮡ«î¤ ¥âáï, ®­  ­ã¦­  ¯à®áâ® ª ª ¯ ¬ïâì ¤«ï ¢áâ ¢ª¨
  77.                         stdcall dword[tl_cur_next], tree3 ;¯¥à¥­®á¨¬ ªãàá®à ¢­¨§, çâ®-¡ë ­¥ ¯®¬¥­ï«áï ¯®à冷ª
  78.                 .add_end:
  79. ;-------
  80.                 stdcall [tl_node_poi_get_next_info], edx,tree2
  81.                 pop edx ;¯¥à¥å®¤¨¬ ª á«¥¤ã饬ã 㧫ã
  82.                 jmp @b
  83.         @@:
  84.  
  85.         ;áâ ¢¨¬ ªãàá®à ­  ­ã¦­ãî ¯®§¨æ¨î
  86.         mov edx,[foc_obj] ;¡¥à¥¬ 㪠§ â¥«ì ­  ®¡ê¥ªâ
  87.         cmp edx,0
  88.         je .sel_end
  89.                 mov edx,dword[edx+u_object.typid-u_object]
  90.                 stdcall [tl_cur_beg],tree3
  91.                 @@:
  92.                         stdcall [tl_node_get_data],tree3
  93.                         pop eax
  94.                         cmp eax,0
  95.                         je .sel_end
  96.                         cmp dword[eax],edx
  97.                         je .sel_end ;¥á«¨ ­ è«¨ 㪠§ â¥«ì
  98.                         stdcall [tl_cur_next],tree3
  99.                 jmp @b
  100.         .sel_end:
  101.  
  102.         ;ç¨á⪠ ¯®¤¯¨á¥©
  103.         mov dword[ch1.text],ch_text
  104.         mov dword[ch2.text],ch_text
  105.         mov dword[ch3.text],ch_text
  106.         mov dword[ch4.text],ch_text
  107.  
  108.         ;ãáâ ­®¢ª  ­®¢ëå ¯®¤¯¨á¥©
  109.         mov esi,[foc_obj] ;¡¥à¥¬ 㪠§ â¥«ì ­  ®¡ê¥ªâ
  110.         mov bl,byte[esi]
  111.         call find_obj_in_opt
  112.         mov edi,dword[edi+obj_opt.bit_prop-obj_opt]
  113.         cmp edi,0
  114.         je .no_bit_capts ;¥á«¨ 1-¥ ¡¨â®¢®¥ ᢮©á⢮ ¯ãá⮥, â® ¢ 横« ­¥ § å®¤¨¬
  115.         mov edx,ch1.text
  116.         xor al,al ;0 - ᨬ¢®« ª®­æ  áâப¨
  117.         add edi,obj_opt
  118.         @@:
  119.                 mov [edx],edi ;§ ¯¨á뢠¥¬ ⥪áâ ¢ check_box
  120.                 xor ecx,ecx
  121.                 dec ecx ;ecx - ç¨á«® ¯à®á¬ âਢ ¥¬ëå ¡ ©â
  122.                 cld
  123.                 repne scasb ;¨é¥¬ ª®­¥æ áâப¨ (al=0)
  124.                 cmp byte[edi],0
  125.                 je .no_bit_capts ;¥á«¨ á«¥¤ãî饩 áâப¨ ­¥â ¢ë室 ¨§ 横« 
  126.  
  127.                 add edx,ch_struc_size
  128.                 cmp edx,check_boxes_end
  129.                 jl @b
  130.         .no_bit_capts:
  131.  
  132.         ;ãáâ ­®¢ª  ä« ¦ª®¢
  133.         mov esi,[foc_obj] ;¡¥à¥¬ 㪠§ â¥«ì ­  ®¡ê¥ªâ
  134.         mov edx,ch1.flags
  135.         xor eax,eax
  136.         @@:
  137.                 bt dword[esi+u_object.modif-u_object],eax
  138.                 jc .flag_set
  139.                         btr dword[edx],1 ;á­¨¬ ¥¬ £ «®çªã
  140.                         jmp .end_set
  141.                 .flag_set:
  142.                         bts dword[edx],1 ;áâ ¢¨¬ £ «®çªã (ch_flag_en = 10b = 2^1)
  143.                 .end_set:
  144.  
  145.                 inc eax
  146.                 add edx,ch_struc_size
  147.                 cmp edx,check_boxes_end
  148.         jl @b
  149.  
  150.         init_checkboxes2 check_boxes,check_boxes_end
  151.         check_boxes_set_sys_color2 check_boxes,check_boxes_end,sc
  152. popad
  153.  
  154. align 4
  155. prop_red_win:
  156. pushad
  157.         mcall 12,1
  158.  
  159.         xor eax,eax
  160.         mov edi,hed
  161.         mov edx,[foc_obj] ;¡¥à¥¬ 㪠§ â¥«ì ­  ®¡ê¥ªâ
  162.         cmp edx,0
  163.         je @f
  164.                 mov bl,[edx]
  165.                 call find_obj_in_opt
  166.                 add edi,obj_opt.info-obj_opt ;edi - ¯®¤¯¨áì (­ §¢ ­¨¥ ®¡ê¥ªâ )
  167.         @@:
  168.         mov ebx,30*65536+prop_wnd_width
  169.         mov ecx,50*65536+250
  170.         mov edx,0xffffd0
  171.         or  edx,0x33000000
  172.         int 0x40
  173.  
  174.         mov edx,[foc_obj] ;¡¥à¥¬ 㪠§ â¥«ì ­  ®¡ê¥ªâ
  175.         cmp edx,0
  176.         je .exit_fun
  177.  
  178.                 mov eax,8 ;ª­®¯ª  ¤«ï á®åà ­¥­¨ï ¨§¬¥­¥­¨©
  179.                 mov ebx,prop_wnd_width-18-20
  180.                 shl ebx,16
  181.                 add ebx,18
  182.                 mov ecx,3
  183.                 shl ecx,16
  184.                 add ecx,18
  185.                 mov edx,10
  186.                 mov esi,0xd040
  187.                 int 0x40
  188.  
  189.                 ror ebx,16 ;¢ëç¨á«ï¥¬ ª®®à¤¨­ âë ¤«ï ¨ª®­ª¨
  190.                 ror ecx,16
  191.                 and ebx,0xffff
  192.                 and ecx,0xffff
  193.                 inc ebx
  194.                 inc ecx
  195.                 stdcall draw_icon, 17,ebx,ecx ;17 - save
  196.  
  197.                 mov edi,edit2
  198.                 .cycle:
  199.                         stdcall [edit_box_draw], edi ;à¨á㥬 ¯®«ï ᮠ᢮©á⢠¬¨ ®¡ê¥ªâ 
  200.                         add edi,ed_struc_size
  201.                         cmp edi,prop_wnd_edits_end
  202.                 jl .cycle
  203.  
  204.                 cmp [err_ini0],1
  205.                 je .exit_fun
  206.                 cmp [err_ini1],1
  207.                 je .exit_fun
  208.  
  209.                 mov edx,[foc_obj] ;¡¥à¥¬ 㪠§ â¥«ì ­  ®¡ê¥ªâ
  210.                 xor ebx,ebx ;­®¬¥à ¯®«ï
  211.                 .draw_column:
  212.                         mov eax,ebx
  213.                         imul eax,prop_edits_height
  214.                         add eax,prop_edits_top
  215.                         stdcall draw_obj_icon,[edx],ebx,eax
  216.                         stdcall draw_obj_caption,[edx],ebx,eax
  217.  
  218.                         inc ebx
  219.                         cmp ebx,MAX_OPT_FIELDS
  220.                         jl .draw_column
  221.  
  222.                 cmp byte[edx],C_VAR
  223.                 jne .no_tree
  224.                         mov dword[w_scr_t3.all_redraw],1
  225.                         stdcall [tl_draw], tree3
  226.                 .no_tree:
  227.  
  228.                 checkboxes_draw2 check_boxes,check_boxes_end
  229.  
  230.         .exit_fun:
  231.         mcall 12,2
  232. popad
  233.  
  234. align 4
  235. prop_still:
  236.         pushad
  237.         mcall 10
  238.  
  239.         cmp al,1 ;¨§¬. ¯®«®¦¥­¨¥ ®ª­ 
  240.         jz prop_red_win
  241.         cmp al,2
  242.         jne @f
  243.                 call prop_key
  244.         @@:
  245.         cmp al,3
  246.         jz prop_button
  247.         cmp al,6
  248.         jne @f
  249.                 call prop_mouse
  250.         @@:
  251.         popad
  252.         jmp prop_still
  253.  
  254. align 4
  255. prop_key:
  256. push eax edi
  257.         mcall 2
  258.         mov edi,edit2
  259.         .cycle:
  260.                 stdcall [edit_box_key], edi
  261.                 add edi,ed_struc_size
  262.                 cmp edi,prop_wnd_edits_end
  263.                 jl .cycle
  264.  
  265.         mov edi,[foc_obj]
  266.         cmp byte[edi],C_VAR
  267.         jne @f
  268.                 stdcall [tl_key], tree3
  269.         @@:
  270. pop edi eax
  271.         ret
  272.  
  273. align 4
  274. prop_mouse:
  275.         push edi
  276.         mov edi,edit2
  277.         .cycle:
  278.                 stdcall [edit_box_mouse], edi
  279.                 add edi,ed_struc_size
  280.                 cmp edi,prop_wnd_edits_end
  281.                 jl .cycle
  282.  
  283.         mov edi,[foc_obj]
  284.         cmp byte[edi],C_VAR
  285.         jne @f
  286.                 stdcall [tl_mouse], tree3
  287.         @@:
  288.  
  289.         checkboxes_mouse2 check_boxes,check_boxes_end
  290.  
  291.         pop edi
  292.         ret
  293.  
  294. align 4
  295. prop_button:
  296.         mcall 17 ;¯®«ãç¨âì ª®¤ ­ ¦ â®© ª­®¯ª¨
  297.  
  298.         cmp ah,10
  299.         jne @f
  300.                 call but_element_change
  301.                 mov ah,1 ;¤«ï § ªàëâ¨ï ®ª­ 
  302.         @@:
  303.  
  304.         cmp ah,1
  305.         jne prop_still
  306. .exit:
  307.         mov dword[tree3.data_img],0 ;ç¨á⨬ 㪠§ â¥«¨ ­  ¨ª®­ª¨ çâ®-¡ë ¨å ­¥ 㤠«¨« ¤¥áâàãªâ®à
  308.         mov dword[tree3.data_img_sys],0 ;â. ª. ®­¨ ¥é¥ ¨á¯®«ì§ãîâìáï ¢ ¤à㣨å í«¥¬¥­â å
  309.         stdcall dword[tl_data_clear], tree3
  310.         mov byte[prop_wnd_run],0 ;®¡­ã«ï¥¬ áç¥â稪 ®ª®­
  311.         mcall -1 ;¢ë室 ¨§ ¯à®£à ¬¬ë
  312.  
  313. ;¤¥à¥¢® á ®¡ê¥ªâ ¬¨ ¢ ¯®«ì§®¢ â¥«ì᪮¬ ä ©«¥
  314. tree3 tree_list sizeof.object,(MAX_CED_OBJECTS shr 2)+2, tl_key_no_edit+tl_list_box_mode,\
  315.         16,16, 0xffffff,0xb0d0ff,0xd000ff, 320,30,165,125, 0,4,MAX_LEN_OBJ_TXT, el_focus,\
  316.         w_scr_t3,0
  317.  
  318. align 4
  319. w_scr_t3:
  320. .size_x     dw 16 ;+0
  321. rb 2+2+2
  322. .btn_high   dd 15 ;+8
  323. .type       dd 1  ;+12
  324. .max_area   dd 100  ;+16
  325. rb 4+4
  326. .bckg_col   dd 0xeeeeee ;+28
  327. .frnt_col   dd 0xbbddff ;+32
  328. .line_col   dd 0  ;+36
  329. rb 4+2+2
  330. .run_x:
  331. rb 2+2+2+2+4+4+4+4+4+4
  332. .all_redraw dd 0 ;+80
  333. .ar_offset  dd 1 ;+84
  334.  
  335. check_boxes:
  336. ch1 check_box2 (320 shl 16+11),(160 shl 16 +11),5,0xffffff,0,0x80000000,ch_text,ch_flag_en+ch_flag_middle
  337. ch2 check_box2 (320 shl 16+11),(175 shl 16 +11),5,0xffffff,0,0x80000000,ch_text,ch_flag_en+ch_flag_middle
  338. ch3 check_box2 (320 shl 16+11),(190 shl 16 +11),5,0xffffff,0,0x80000000,ch_text,ch_flag_en+ch_flag_middle
  339. ch4 check_box2 (320 shl 16+11),(205 shl 16 +11),5,0xffffff,0,0x80000000,ch_text,ch_flag_en+ch_flag_middle
  340. check_boxes_end:
  341.  
  342. ch_text db 0
  343.