Subversion Repositories Kolibri OS

Rev

Rev 1717 | 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.         call init_obj_count_txt_props ;¯®«ãç ¥¬ ç¨á«® ¨á¯®«ì§ã¥¬ëå ¯®«¥©
  19.  
  20.         ; ­ áâனª  ⥪á⮢ëå ¯®«¥©
  21.         xor ebx,ebx
  22.         mov edi,edit2
  23.         @@:
  24.                 stdcall set_obj_win_param, ebx,edi
  25.                 inc ebx
  26.                 add edi,ed_struc_size
  27.                 cmp edi,prop_wnd_edits_end
  28.                 jl @b
  29.  
  30.         ; ­ áâனª  ᯨ᪠ ®¡ê¥ªâ®¢, ®¯à¥¤¥«ïîé¨å â¨¯ë ¯¥à¥¬¥­­ëå
  31.         stdcall dword[tl_data_init], tree3
  32.         cmp byte[err_ini0],1
  33.         je @f
  34.                 mov dword[tree3.data_img],bmp_icon
  35.         @@:
  36.         mov eax,dword[icon_tl_sys]
  37.         mov dword[tree3.data_img_sys],eax
  38.  
  39.         mov edx,[foc_obj]
  40.         cmp dword[edx],C_VAR
  41.         jne .sel_end
  42.  
  43.         stdcall [tl_node_poi_get_info], tree2,0
  44.         @@:
  45.                 cmp eax,0
  46.                 je @f
  47.                 mov edx,eax
  48.                 stdcall [tl_node_poi_get_data], tree2,edx
  49.                 mov esi,eax ;¯®«ãç ¥¬ ¤ ­­ë¥ 㧫 
  50. ;------ ¤®¡ ¢«¥­¨¥ ®¡ê¥ªâ  ¢ ᯨ᮪ -------------------------------------------
  51.                 mov ebx,[foc_obj]
  52.                 cmp ebx,esi
  53.                 je .add_end ;¨§¡¥£ ¥¬ 横«¨ç¥áª®© áá뫪¨
  54.                 mov ebx,dword[esi]
  55.                 cmp ebx,C_TDF
  56.                 je .add_beg
  57.                 cmp ebx,C_STR
  58.                 je .add_beg
  59.                         jmp .add_end
  60.                 .add_beg:
  61.                         stdcall get_obj_id,esi
  62.                         mov edi,u_object
  63.                         mov dword[edi],eax
  64.                         add edi,4
  65.                         add esi,u_object.txt-u_object ;¯¥à¥å®¤¨¬ ­  ¨¬ï ®¡ê¥ªâ 
  66.                         mov ecx,MAX_LEN_OBJ_TXT
  67.                         cld
  68.                         rep movsb
  69.  
  70.                         call find_obj_in_opt ;edi = pointer to ObjOpt struct
  71.                         mov cx,word[edi+obj_opt.img-obj_opt]
  72.                         cmp cx,0
  73.                         jge .zero
  74.                                 xor cx,cx ;çâ®-¡ë ­¥ £«î稫® á ®âà¨æ â¥«ì­ë¬ ¨­¤¥ªá®¬
  75.                         .zero:
  76.                         shl ecx,16 ;¢ ecx ¨­¤¥ªá ¨ª®­ª¨
  77.  
  78.                         stdcall dword[tl_node_add], tree3,ecx,u_object ;áâàãªâãà  u_object ¢ ¤ ­­®¬ á«ãç ¥ ­¥ ᮡ«î¤ ¥âáï, ®­  ­ã¦­  ¯à®áâ® ª ª ¯ ¬ïâì ¤«ï ¢áâ ¢ª¨
  79.                         stdcall dword[tl_cur_next], tree3 ;¯¥à¥­®á¨¬ ªãàá®à ¢­¨§, çâ®-¡ë ­¥ ¯®¬¥­ï«áï ¯®à冷ª
  80.                 .add_end:
  81. ;-------
  82.                 stdcall [tl_node_poi_get_next_info], tree2,edx
  83.                 mov edx,eax ;¯¥à¥å®¤¨¬ ª á«¥¤ã饬ã 㧫ã
  84.                 jmp @b
  85.         @@:
  86.  
  87.         ;áâ ¢¨¬ ªãàá®à ­  ­ã¦­ãî ¯®§¨æ¨î
  88.         mov edx,[foc_obj] ;¡¥à¥¬ 㪠§ â¥«ì ­  ®¡ê¥ªâ
  89.         cmp edx,0
  90.         je .sel_end
  91.                 mov edx,dword[edx+u_object.typid-u_object]
  92.                 stdcall [tl_cur_beg],tree3
  93.                 @@:
  94.                         stdcall [tl_node_get_data],tree3
  95.                         cmp eax,0
  96.                         je .sel_end
  97.                         cmp dword[eax],edx
  98.                         je .sel_end ;¥á«¨ ­ è«¨ 㪠§ â¥«ì
  99.                         stdcall [tl_cur_next],tree3
  100.                 jmp @b
  101.         .sel_end:
  102.  
  103.         ;ç¨á⪠ ¯®¤¯¨á¥©
  104.         mov dword[ch1.text],ch_text
  105.         mov dword[ch2.text],ch_text
  106.         mov dword[ch3.text],ch_text
  107.         mov dword[ch4.text],ch_text
  108.  
  109.         ;ãáâ ­®¢ª  ­®¢ëå ¯®¤¯¨á¥©
  110.         mov esi,[foc_obj] ;¡¥à¥¬ 㪠§ â¥«ì ­  ®¡ê¥ªâ
  111.         mov ebx,dword[esi]
  112.         call find_obj_in_opt
  113.         mov edi,dword[edi+obj_opt.bit_prop-obj_opt]
  114.         cmp edi,0
  115.         je .no_bit_capts ;¥á«¨ 1-¥ ¡¨â®¢®¥ ᢮©á⢮ ¯ãá⮥, â® ¢ 横« ­¥ § å®¤¨¬
  116.         mov edx,ch1.text
  117.         xor al,al ;0 - ᨬ¢®« ª®­æ  áâப¨
  118.         add edi,obj_opt
  119.         @@:
  120.                 mov [edx],edi ;§ ¯¨á뢠¥¬ ⥪áâ ¢ check_box
  121.                 xor ecx,ecx
  122.                 dec ecx ;ecx - ç¨á«® ¯à®á¬ âਢ ¥¬ëå ¡ ©â
  123.                 cld
  124.                 repne scasb ;¨é¥¬ ª®­¥æ áâப¨ (al=0)
  125.                 cmp byte[edi],0
  126.                 je .no_bit_capts ;¥á«¨ á«¥¤ãî饩 áâப¨ ­¥â ¢ë室 ¨§ 横« 
  127.  
  128.                 add edx,ch_struc_size
  129.                 cmp edx,check_boxes_end
  130.                 jl @b
  131.         .no_bit_capts:
  132.  
  133.         ;ãáâ ­®¢ª  ä« ¦ª®¢
  134.         mov esi,[foc_obj] ;¡¥à¥¬ 㪠§ â¥«ì ­  ®¡ê¥ªâ
  135.         mov edx,ch1.flags
  136.         xor eax,eax
  137.         @@:
  138.                 bt dword[esi+u_object.modif-u_object],eax
  139.                 jc .flag_set
  140.                         btr dword[edx],1 ;á­¨¬ ¥¬ £ «®çªã
  141.                         jmp .end_set
  142.                 .flag_set:
  143.                         bts dword[edx],1 ;áâ ¢¨¬ £ «®çªã (ch_flag_en = 10b = 2^1)
  144.                 .end_set:
  145.  
  146.                 inc eax
  147.                 add edx,ch_struc_size
  148.                 cmp edx,check_boxes_end
  149.         jl @b
  150.  
  151.         init_checkboxes2 check_boxes,check_boxes_end
  152.         check_boxes_set_sys_color2 check_boxes,check_boxes_end,sc
  153. popad
  154.  
  155. align 4
  156. prop_red_win:
  157. pushad
  158.         mcall 12,1
  159.  
  160.         xor eax,eax
  161.         mov edi,hed
  162.         mov edx,[foc_obj] ;¡¥à¥¬ 㪠§ â¥«ì ­  ®¡ê¥ªâ
  163.         cmp edx,0
  164.         je @f
  165.                 mov ebx,dword[edx]
  166.                 call find_obj_in_opt
  167.                 add edi,obj_opt.info-obj_opt ;edi - ¯®¤¯¨áì (­ §¢ ­¨¥ ®¡ê¥ªâ )
  168.         @@:
  169.         mov ebx,30*65536+prop_wnd_width
  170.         mov ecx,50*65536+250
  171.         mov edx,0xffffd0
  172.         or  edx,0x33000000
  173.         int 0x40
  174.  
  175.         mov edx,[foc_obj] ;¡¥à¥¬ 㪠§ â¥«ì ­  ®¡ê¥ªâ
  176.         cmp edx,0
  177.         je .exit_fun
  178.  
  179.                 mov eax,8 ;ª­®¯ª  ¤«ï á®åà ­¥­¨ï ¨§¬¥­¥­¨©
  180.                 mov ebx,prop_wnd_width-18-20
  181.                 shl ebx,16
  182.                 add ebx,18
  183.                 mov ecx,3
  184.                 shl ecx,16
  185.                 add ecx,18
  186.                 mov edx,10
  187.                 mov esi,0xd040
  188.                 int 0x40
  189.  
  190.                 ror ebx,16 ;¢ëç¨á«ï¥¬ ª®®à¤¨­ âë ¤«ï ¨ª®­ª¨
  191.                 ror ecx,16
  192.                 and ebx,0xffff
  193.                 and ecx,0xffff
  194.                 inc ebx
  195.                 inc ecx
  196.                 stdcall draw_icon, 17,ebx,ecx ;17 - save
  197.  
  198.                 mov edi,edit2
  199.                 mov ecx,[obj_count_txt_props]
  200.                 cld
  201.                 .cycle:
  202.                         stdcall [edit_box_draw], edi
  203.                         add edi,ed_struc_size
  204.                 loop .cycle
  205.  
  206.                 cmp [err_ini0],1
  207.                 je .exit_fun
  208.                 cmp [err_ini1],1
  209.                 je .exit_fun
  210.  
  211.                 mov edx,[foc_obj] ;¡¥à¥¬ 㪠§ â¥«ì ­  ®¡ê¥ªâ
  212.                 xor ebx,ebx ;­®¬¥à ¯®«ï
  213.                 .draw_column:
  214.                         mov eax,ebx
  215.                         imul eax,prop_edits_height
  216.                         add eax,prop_edits_top
  217.                         stdcall draw_obj_icon,[edx],ebx,eax
  218.                         stdcall draw_obj_caption,[edx],ebx,eax
  219.  
  220.                         inc ebx
  221.                         cmp ebx,MAX_OPT_FIELDS
  222.                         jl .draw_column
  223.  
  224.                 cmp dword[edx],C_VAR
  225.                 jne .no_tree
  226.                         mov dword[w_scr_t3.all_redraw],1
  227.                         stdcall [tl_draw], tree3
  228.                 .no_tree:
  229.  
  230.                 checkboxes_draw2 check_boxes,check_boxes_end
  231.  
  232.         .exit_fun:
  233.         mcall 12,2
  234. popad
  235.  
  236. ;­¥ ®âà뢠âì íâã äã­ªæ¨î ®â ¯à¥¤ë¤ã饩
  237. align 4
  238. prop_still:
  239.         pushad
  240.         mcall 10
  241.  
  242.         cmp al,1 ;¨§¬. ¯®«®¦¥­¨¥ ®ª­ 
  243.         jz prop_red_win
  244.         cmp al,2
  245.         jne @f
  246.                 call prop_key
  247.         @@:
  248.         cmp al,3
  249.         jz prop_button
  250.         cmp al,6
  251.         jne @f
  252.                 call prop_mouse
  253.         @@:
  254.         popad
  255.         jmp prop_still
  256.  
  257. ;¢ 横«¥ ¯à®¡¥£ ¥¬ ¯® ¢á¥¬ ¯®«ï¬ ᮠ᢮©á⢠¬¨,
  258. ;çâ®-¡ë ¯®áç¨â âì ç¨á«® ¨á¯®«ì§ã¥¬ëå ¯®«¥©
  259. align 4
  260. init_obj_count_txt_props:
  261. pushad
  262.         mov edx,[foc_obj] ;¡¥à¥¬ 㪠§ â¥«ì ­  ®¡ê¥ªâ
  263.         xor ebx,ebx
  264.         mov edi,edit2
  265.         .cycle:
  266.                 stdcall get_obj_text_len_col, edx,ebx ;eax - ¤«¨­­  ¯®«ï
  267.                 cmp eax,1
  268.                 jl @f ;¢ë室 ¨§ 横«  ¥á«¨ ¯®«¥ ­¥ ¨á¯®«ì§ã¥âìáï
  269.                 inc ebx
  270.  
  271.                 add edi,ed_struc_size
  272.                 cmp edi,prop_wnd_edits_end
  273.                 jl .cycle
  274.         @@:
  275.         mov [obj_count_txt_props],ebx
  276. popad
  277.         ret
  278.  
  279. ;¢ë¢®¤ ⥪á⮢ëå ¯®¤¯¨á¥© ¤«ï ¯®«¥© ᮠ᢮©á⢠¬¨
  280. align 4
  281. proc draw_obj_caption, o_type:dword,n_col:dword, coord_y:dword
  282.         pushad
  283.         stdcall get_obj_text_len_col, [foc_obj], [n_col] ;eax - ¤«¨­­  ¯®«ï
  284.         cmp eax,1
  285.         jl .no_draw
  286.  
  287.         xor ebx,ebx
  288.         mov ebx,dword[o_type]
  289.         call find_obj_in_opt
  290.  
  291.         mov edx,edi
  292.         add edx,obj_opt.caption-obj_opt
  293.  
  294.         mov eax,[n_col]
  295.         mov ebx,143 ;®âáâ㯠᫥¢ 
  296.         shl ebx,16
  297.         add ebx,dword[coord_y]
  298.         add ebx,3
  299.         mov ecx,0 ;text color
  300.  
  301.         mov esi,edx
  302.         .beg_found:
  303.                 cmp byte[esi],0
  304.                 je .end_found
  305.                 cmp byte[esi],'*'
  306.                 je @f
  307.                 inc esi
  308.                 jmp .beg_found
  309.         @@:
  310.         cmp eax,0
  311.         je .end_found
  312.                 dec eax
  313.                 inc esi
  314.                 mov edx,esi ;¯¥à¥ª«îç ¥¬ ­ ç «® áâப¨ ­  á«¥¤. ¯®¤¯¨áì
  315.                 jmp .beg_found
  316.         .end_found:
  317.         cmp esi,edx
  318.         jle .no_draw
  319.                 sub esi,edx ;esi = text len
  320.                 mov eax,4
  321.                 int 0x40
  322.         .no_draw:
  323.         popad
  324.         ret
  325. endp
  326.  
  327. align 4
  328. proc set_obj_win_param, col:dword, edit:dword
  329.         pushad
  330.                 stdcall get_obj_text_col, [foc_obj], [col] ;edx - text
  331.                 stdcall get_obj_text_len_col, [foc_obj], [col] ;eax - ¤«¨­­  ¯®«ï
  332.                 mov edi,[edit]
  333.                 cmp eax,1
  334.                 jl @f
  335.                         dec eax
  336.                         mov ed_max,eax ;ed_max = edi+.max
  337.                         mov ed_focus_border_color, dword 0xff
  338.                         mov ed_blur_border_color, dword 0x808080
  339.                         stdcall [edit_box_set_text], edi,edx ;®¡­®¢«ï¥¬ editbox
  340.                         jmp .end_f
  341.                 @@:
  342.                         mov ed_max,dword MAX_LEN_OBJ_TXT
  343.                         ;stdcall [edit_box_set_text], edi,txt_null
  344.                 .end_f:
  345.         popad
  346.         ret
  347. endp
  348.  
  349. align 4
  350. prop_key:
  351. push eax ecx edi
  352.         mcall 2
  353.         mov edi,edit2
  354.         mov ecx,[obj_count_txt_props]
  355.         cld
  356.         .cycle:
  357.                 stdcall [edit_box_key], edi
  358.                 add edi,ed_struc_size
  359.         loop .cycle
  360.  
  361.         mov edi,dword[foc_obj]
  362.         cmp dword[edi],C_VAR
  363.         jne @f
  364.                 stdcall [tl_key], tree3
  365.         @@:
  366. pop edi ecx eax
  367.         ret
  368.  
  369. align 4
  370. prop_mouse:
  371.         push ecx edi
  372.         mov edi,edit2
  373.         mov ecx,[obj_count_txt_props]
  374.         cld
  375.         .cycle:
  376.                 stdcall [edit_box_mouse], edi
  377.                 add edi,ed_struc_size
  378.         loop .cycle
  379.  
  380.         mov edi,dword[foc_obj]
  381.         cmp dword[edi],C_VAR
  382.         jne @f
  383.                 stdcall [tl_mouse], tree3
  384.         @@:
  385.  
  386.         checkboxes_mouse2 check_boxes,check_boxes_end
  387.         pop edi ecx
  388.         ret
  389.  
  390. align 4
  391. prop_button:
  392.         mcall 17 ;¯®«ãç¨âì ª®¤ ­ ¦ â®© ª­®¯ª¨
  393.  
  394.         cmp ah,10
  395.         jne @f
  396.                 call but_element_change
  397.                 mov ah,1 ;¤«ï § ªàëâ¨ï ®ª­ 
  398.         @@:
  399.  
  400.         cmp ah,1
  401.         jne prop_still
  402. .exit:
  403.         mov dword[tree3.data_img],0 ;ç¨á⨬ 㪠§ â¥«¨ ­  ¨ª®­ª¨ çâ®-¡ë ¨å ­¥ 㤠«¨« ¤¥áâàãªâ®à
  404.         mov dword[tree3.data_img_sys],0 ;â. ª. ®­¨ ¥é¥ ¨á¯®«ì§ãîâìáï ¢ ¤à㣨å í«¥¬¥­â å
  405.         stdcall dword[tl_data_clear], tree3
  406.         mov byte[prop_wnd_run],0 ;®¡­ã«ï¥¬ áç¥â稪 ®ª®­
  407.         mcall -1 ;¢ë室 ¨§ ¯à®£à ¬¬ë
  408.  
  409. ;¤¥à¥¢® á ®¡ê¥ªâ ¬¨ ¢ ¯®«ì§®¢ â¥«ì᪮¬ ä ©«¥
  410. tree3 tree_list sizeof.object,(MAX_CED_OBJECTS shr 2)+2, tl_key_no_edit+tl_list_box_mode,\
  411.         16,16, 0xffffff,0xb0d0ff,0xd000ff, 320,30,165,125, 0,4,MAX_LEN_OBJ_TXT, el_focus,\
  412.         w_scr_t3,0
  413.  
  414. align 4
  415. w_scr_t3:
  416. .size_x     dw 16 ;+0
  417. rb 2+2+2
  418. .btn_high   dd 15 ;+8
  419. .type       dd 1  ;+12
  420. .max_area   dd 100  ;+16
  421. rb 4+4
  422. .bckg_col   dd 0xeeeeee ;+28
  423. .frnt_col   dd 0xbbddff ;+32
  424. .line_col   dd 0  ;+36
  425. rb 4+2+2
  426. .run_x:
  427. rb 2+2+2+2+4+4+4+4+4+4
  428. .all_redraw dd 0 ;+80
  429. .ar_offset  dd 1 ;+84
  430.  
  431. check_boxes:
  432. ch1 check_box2 (320 shl 16+11),(160 shl 16 +11),5,0xffffff,0,0x80000000,ch_text,ch_flag_en+ch_flag_middle
  433. ch2 check_box2 (320 shl 16+11),(175 shl 16 +11),5,0xffffff,0,0x80000000,ch_text,ch_flag_en+ch_flag_middle
  434. ch3 check_box2 (320 shl 16+11),(190 shl 16 +11),5,0xffffff,0,0x80000000,ch_text,ch_flag_en+ch_flag_middle
  435. ch4 check_box2 (320 shl 16+11),(205 shl 16 +11),5,0xffffff,0,0x80000000,ch_text,ch_flag_en+ch_flag_middle
  436. check_boxes_end:
  437.  
  438. ch_text db 0
  439.