Subversion Repositories Kolibri OS

Rev

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