Subversion Repositories Kolibri OS

Rev

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

  1.  
  2. ;¯®¤­¨¬ ¥¬ ®¡ê¥ªâ ¢¢¥àå ¯® ᯨáªã
  3. align 4
  4. but_obj_move_up:
  5.         stdcall [tl_node_move_up], tree2
  6.         ret
  7.  
  8. ;®¯ã᪠¥¬ ®¡ê¥ªâ ¢­¨§ ¯® ᯨáªã
  9. align 4
  10. but_obj_move_down:
  11.         stdcall [tl_node_move_down], tree2
  12.         ret
  13.  
  14. ;ª®¯¨à㥬 ®¡ê¥ªâ
  15. align 4
  16. but_obj_copy:
  17. push ecx esi edi
  18.         stdcall [tl_node_get_data], tree2
  19.         pop esi
  20.         mov edi,[tree2.data_info] ;¤ ­­ë¥ 0-£® 㧫 , ¨á¯®«ì§ã¥¬ ¤«ï ª®¯¨à®¢ ­¨ï
  21.         xor ecx,ecx
  22.         mov cx,word[tree2.info_size]
  23.         cld
  24.         rep movsb
  25. pop edi esi ecx
  26.         ret
  27.  
  28. ;¢áâ ¢«ï¥¬ ®¡ê¥ªâ
  29. align 4
  30. but_obj_paste:
  31. push eax ebx ecx edi
  32.         mov eax,[tree2.data_info] ;¤ ­­ë¥ 0-£® 㧫 , ¨á¯®«ì§ã¥¬ ¤«ï ª®¯¨à®¢ ­¨ï
  33.         mov ebx,dword[eax]
  34.         call find_obj_in_opt
  35.         xor ecx,ecx
  36.         mov cx,word[edi+obj_opt.img-obj_opt] ;cx - ¨­¤¥ªá £« ¢­®© ¨ª®­ª¨ ¤®¡ ¢«ï¥¬®£® ®¡ê¥ªâ 
  37.         shl ecx,16
  38.         stdcall [tl_node_add], eax, ecx, tree2 ;¤®¡ ¢«ï¥¬ ®¡ê¥ªâ
  39.         stdcall [tl_draw], tree2
  40. pop edi ecx ebx eax
  41.         ret
  42.  
  43. ;®¡­®¢«¥­¨¥ ®¡ê¥ªâ®¢ ¢ tree2, ¯® §­ ç¥­¨ï¬ ⥪á⮢ëå ¯®«¥©
  44. ;äã­ªæ¨ï ®¡à â­ ï ª ¤ ­­®© on_file_object_select
  45. align 4
  46. but_element_change:
  47.         ;foc_obj - 㪠§ â¥«ì ­  ¯®á«¥¤­¨© ¢ë¡à ­­ë© 㧥« ¢ tree2
  48.         cmp dword[foc_obj],0
  49.         je .err_obj
  50.                 pushad
  51.                 ;ãáâ ­®¢ª  ⥪á⮢ëå ᢮©áâ¢
  52.                 xor ebx,ebx
  53.                 mov edi,edit2
  54.                 @@:
  55.                         call get_obj_win_param
  56.                         inc ebx
  57.                         add edi,ed_struc_size
  58.                         cmp edi,prop_wnd_edits_end
  59.                 jl @b
  60.  
  61.                 ;ãáâ ­®¢ª  áá뫪¨ ­  ®¡ê¥ªâ ⨯ 
  62.                 mov edx,dword[foc_obj]
  63.                 mov dword[edx+u_object.typid-u_object],0 ;­  á«ãç © ¥á«¨ ­¨ç¥£® ­¥ ¢ë¡à ­®
  64.                 stdcall [tl_node_get_data],tree3
  65.                 pop eax
  66.                 cmp eax,0
  67.                 je @f
  68.                         mov eax,dword[eax] ;¡¥à¥¬ ¯®à浪®¢ë© ­®¬¥à (¢ ¯ ¬ïâ¨) ¢ë¡à ­­®£® ®¡ê¥ªâ 
  69.                         mov dword[edx+u_object.typid-u_object],eax
  70.                 @@:
  71.  
  72.                 ;ãáâ ­®¢ª  «®£¨ç¥áª¨å ᢮©áâ¢
  73.                 mov edi,ch1.flags
  74.                 mov eax,1
  75.                 xor ebx,ebx
  76.                 @@:
  77.                         bt dword[edi],1
  78.                         jnc .opt_no_sel
  79.                                 or ebx,eax ;­ ª®¯«¥­¨¥ ®â¬¥ç¥­­ëå ®¯æ¨©
  80.                         .opt_no_sel:
  81.                         shl eax,1
  82.                         add edi,ch_struc_size
  83.                         cmp edi,check_boxes_end
  84.                 jl @b
  85.                 mov dword[edx+u_object.modif-u_object],ebx
  86.                 popad
  87.         .err_obj:
  88.         call draw_constructor ;®¡­®¢«ï¥¬ ®ª­® ª®­áâàãªâ®à 
  89.         ;call draw_window
  90.         ret
  91.  
  92. ;input:
  93. ; ebx - property column
  94. ; edi - pointer to property editbox
  95. align 4
  96. get_obj_win_param:
  97.         pushad
  98.                 mov esi,ed_text
  99.                 stdcall get_obj_text_col, [foc_obj], ebx ;edx - ᬥ饭¨¥ ¤«ï ⥪áâ 
  100.                 stdcall get_obj_text_len_col, [foc_obj], ebx ;eax - ¤«¨­­  ¯®«ï
  101.                 cld
  102.                 mov edi,edx
  103.                 mov ecx,eax
  104.                 rep movsb
  105.         popad
  106.         ret
  107.  
  108. ;input:
  109. ;  obj - pointer to object
  110. ;  ind - column index
  111. ;output:
  112. ;  edx + offset
  113. ;  edx = 0 if not text
  114. align 4
  115. proc get_obj_text_col, obj:dword, ind:dword
  116.         mov edx,dword[obj]
  117.         add edx,4 ;goto text
  118. push ebx ecx
  119.         mov ecx,dword[ind]
  120.         cmp cx,0
  121.         je .end_fun
  122.  
  123.         mov ebx,dword[edx-4] ;¢ ebx ¯®¯ ¤ ¥â ª®¤ ®¡ê¥ªâ 
  124.  
  125.         push edi
  126.         call find_obj_in_opt ;¨é¥¬ áâàãªâãàã á ®¯æ¨ï¬¨ ®¡ê¥ªâ 
  127.  
  128.         add edi,obj_opt.Col-obj_opt
  129.         dec ecx
  130.         shl ecx,1 ;㬭®¦ ¥¬ ­  2
  131.         add edi,ecx ;+ ind*2
  132.         xor ecx,ecx
  133.         mov cx,word[edi] ;ecx - ᤨ£ ¤«ï ¨áª®¬®£® ¯®«ï
  134.         add edx,ecx
  135.  
  136.         cmp cx,0
  137.         jg @f
  138.                 mov edx,0 ;not text
  139.         @@:
  140.         cmp cx,MAX_LEN_OBJ_TXT
  141.         jl @f
  142.                 mov edx,0 ;not text
  143.         @@:
  144.  
  145.         pop edi
  146.         .end_fun:
  147. pop ecx ebx
  148.         ret
  149. endp
  150.  
  151. ;input:
  152. ;  obj - 㪠§ â¥«ì ­  ®¡ê¥ªâ
  153. ;  ind - ­®¬¥à ¯®«ï ¢­ãâਠ®¡ê¥ªâ 
  154. ;output:
  155. ;  eax - ¤«¨­­  ⥪á⮢®£® ¯®«ï ¢­ãâਠ®¡ê¥ªâ 
  156. align 4
  157. proc get_obj_text_len_col, obj:dword, ind:dword
  158.         xor eax,eax
  159. push ebx ecx edi
  160.         mov ecx,dword[ind]
  161.         mov eax,dword[obj]
  162.         mov ebx,dword[eax] ;¢ ebx ¯®¯ ¤ ¥â ª®¤ ®¡ê¥ªâ 
  163.         xor eax,eax
  164.  
  165.         call find_obj_in_opt ;¨é¥¬ áâàãªâãàã á ®¯æ¨ï¬¨ ®¡ê¥ªâ 
  166.  
  167.         add edi,obj_opt.Col-obj_opt
  168.         shl ecx,1 ;㬭®¦ ¥¬ ­  2
  169.         add edi,ecx ;+ ind*2
  170.  
  171.         mov ax,word[edi] ;eax - ᤨ£ ¤«ï á«¥¤ã饣® ¯®«ï
  172.         cmp ax,0
  173.         jg @f
  174.                 mov eax,MAX_LEN_OBJ_TXT ;¯®á«¥¤­¨¥ ¯®«ï ¤«ï 㤮¡á⢠ ª®¤¨àãîâáï 0,   ­¥ MAX_LEN_OBJ_TXT, ¨á¯à ¢«ï¥¬ á¨âã æ¨î
  175.         @@:
  176.         cmp dword[ind],0
  177.         je .end_fun ;¤«ï ¯¥à¢®£® ¯®«ï ᤨ£ = 0, ¯®â®¬ã ¢ áâàãªâãॠ®­ ­¥ åà ­¨âáï, â.ª. ¨§¢¥á⥭ § à ­¥¥
  178.         sub ax,word[edi-2] ;®â­¨¬ ¥¬ ᤨ£ ¤«ï ¨áª®¬®£® ¯®«ï, ¯®«ãç ¥¬ ¤«¨­­ã ¯®«ï
  179.  
  180.         cmp word[edi-2],0
  181.         jg @f
  182.                 mov eax,0 ;¯®«¥ ¯ãá⮥, ­¥ ¨á¯®«ì§ã¥âáï
  183.         @@:
  184.         cmp ax,MAX_LEN_OBJ_TXT
  185.         jl @f
  186.                 mov eax,0 ;not text
  187.         @@:
  188.  
  189.         .end_fun:
  190. pop edi ecx ebx
  191.         ret
  192. endp
  193.  
  194. align 4
  195. proc draw_obj_icon, o_type:dword,n_col:dword, coord_y:dword
  196.         pushad
  197.         xor ebx,ebx
  198.         mov ebx,dword[o_type]
  199.         call find_obj_in_opt
  200.  
  201.         add edi,obj_opt.img-obj_opt ;get index (+0)
  202.         mov ebx,[n_col]
  203.         shl ebx,1
  204.         add edi,ebx ;move index (+bh)
  205.         xor ecx,ecx
  206.         mov cx,[edi]
  207.  
  208.         cmp cx,0
  209.         jge @f
  210.                 jmp .end_fun ;error icon index
  211.         @@:
  212.  
  213.         mov ebx,bmp_icon
  214.         imul ecx,0x300
  215.         add ebx,ecx
  216.  
  217.         mov eax,7
  218.         mov ecx,0x100010 ;ecx - size:16*16
  219.         mov edx,3 ;®âáâ㯠®â «¥¢®£® ªà ï à ¬ª¨ ¤® ¨ª®­ª¨
  220.         shl edx,16
  221.         add edx,[coord_y]
  222.         int 0x40
  223.         .end_fun:
  224.         popad
  225.         ret
  226. endp
  227.  
  228. align 4
  229. proc draw_icon, ind:dword,coord_x:dword,coord_y:dword
  230.         pushad
  231.         mov ecx,[ind]
  232.         cmp ecx,0
  233.         jl .end_fun
  234.                 mov ebx,bmp_icon
  235.                 imul ecx,0x300
  236.                 add ebx,ecx
  237.  
  238.                 mov eax,7
  239.                 mov ecx,0x100010 ;ecx - size:16*16
  240.                 mov edx,[coord_x]
  241.                 shl edx,16
  242.                 add edx,[coord_y]
  243.                 int 0x40
  244.         .end_fun:
  245.         popad
  246.         ret
  247. endp
  248.  
  249. ;input
  250. ;  ebx = cod object
  251. ;output:
  252. ;  edi = pointer to option struct
  253. align 4
  254. find_obj_in_opt:
  255.         push ecx
  256.         xor ecx,ecx ;find 'ebx' in options
  257.         mov edi,obj_opt
  258.         @@:
  259.                 cmp ebx,dword[edi] ;find
  260.                 je @f
  261.                 inc ecx
  262.                 cmp ecx,MAX_OBJ_TYPES
  263.                 je @f ;not find
  264.                 add edi,sizeof.ObjOpt
  265.                 jmp @b
  266.         @@:
  267.         pop ecx
  268.         ret
  269.  
  270.  
  271. obj_find_last dd 0 ;㪠§ â¥«ì ­  ¯®á«¥¤­¨© 㤠筮 ­ ©¤¥­­ë© ®¡ê¥ªâ,
  272.         ;­ã¦¥­ ¤«ï ã᪮७¨ï ¯®á«¥¤ã饣® ¯®¨áª 
  273.  
  274. ;¢ë室:
  275. ;eax - 㪠§ â¥«ì ­  áâàãªâãàã ­ ©¤¥­­®£® ®¡ê¥ªâ 
  276. align 4
  277. proc find_obj_in_file, o_type:dword
  278. push ebx esi
  279.         mov ebx,[o_type]
  280.         stdcall dword[tl_node_poi_get_info], 0,tree2
  281.         pop esi
  282.  
  283.         @@:
  284.                 cmp esi,0
  285.                 je .find_no
  286.  
  287.                 stdcall dword[tl_node_poi_get_data], esi,tree2
  288.                 pop eax ;¯®«ãç ¥¬ ¤ ­­ë¥ 㧫 
  289.                 cmp eax,0
  290.                 je .find_no
  291.  
  292.                 cmp dword[eax],ebx ;ᬮâਬ ®¯¨á ­ «¨ ¨áª®¬ë© ®¡ê¥ªâ ¢ 㧫¥
  293.                 je .find_yes
  294.  
  295.                 stdcall dword[tl_node_poi_get_next_info], esi,tree2
  296.                 pop esi ;¯¥à¥å®¤¨¬ ª á«¥¤ã饬ã 㧫ã
  297.  
  298.                 jmp @b
  299.  
  300.         .find_yes:
  301.                 mov dword[obj_find_last],esi
  302.                 jmp @f
  303.         .find_no:
  304.                 mov dword[obj_find_last],0
  305.                 xor eax,eax
  306.         @@:
  307. pop esi ebx
  308.         ret
  309. endp
  310.  
  311. ;¢ë室:
  312. ;eax - 㪠§ â¥«ì ­  áâàãªâãàã ­ ©¤¥­­®£® ®¡ê¥ªâ 
  313. align 4
  314. proc find_obj_in_file_next, o_type:dword
  315. push ebx esi
  316.         cmp dword[obj_find_last],0
  317.         je .find_no
  318.  
  319.         mov ebx,dword[o_type]
  320.  
  321.         stdcall dword[tl_node_poi_get_next_info], dword[obj_find_last],tree2
  322.         pop esi ;¯¥à¥å®¤¨¬ ª á«¥¤ã饬ã 㧫ã
  323.  
  324.         @@:
  325.                 cmp esi,0
  326.                 je .find_no
  327.  
  328.                 stdcall dword[tl_node_poi_get_data], esi,tree2
  329.                 pop eax ;¯®«ãç ¥¬ ¤ ­­ë¥ 㧫 
  330.                 cmp eax,0
  331.                 je .find_no
  332.  
  333.                 cmp dword[eax],ebx ;ᬮâਬ ®¯¨á ­ «¨ ¨áª®¬ë© ®¡ê¥ªâ ¢ 㧫¥
  334.                 je .find_yes
  335.  
  336.                 stdcall dword[tl_node_poi_get_next_info], esi, tree2
  337.                 pop esi ;¯¥à¥å®¤¨¬ ª á«¥¤ã饬ã 㧫ã
  338.  
  339.                 jmp @b
  340.  
  341.         .find_yes:
  342.                 mov dword[obj_find_last],esi
  343.                 jmp @f
  344.         .find_no:
  345.                 mov dword[obj_find_last],0
  346.                 xor eax,eax
  347.         @@:
  348. pop esi ebx
  349.         ret
  350. endp
  351.  
  352. align 4
  353. but_show_constructor:
  354.         mov byte[show_mode],0
  355.         stdcall [buf2d_draw], buf_fon
  356.         ret
  357.  
  358. align 4
  359. but_show_code:
  360.         mov byte[show_mode],1
  361.         stdcall [ted_draw], tedit0
  362.         ret
  363.  
  364. ;input:
  365. ; buf - 㪠§ â¥«ì ­  áâபã, ç¨á«® ¤®«¦­® ¡ëâì ¢ 10 ¨«¨ 16 à¨ç­®¬ ¢¨¤¥
  366. ;output:
  367. ; eax - ç¨á«®
  368. align 4
  369. proc conv_str_to_int, buf:dword
  370.         xor eax,eax
  371.         push ebx esi
  372.         xor ebx,ebx
  373.         mov esi,[buf]
  374.         cmp word[esi],'0x'
  375.         je .load_digit_16
  376.  
  377.         .load_digit_10: ;áç¨â뢠­¨¥ 10-â¨ç­ëå æ¨äà
  378.                 mov bl,byte[esi]
  379.                 cmp bl,'0'
  380.                 jl @f
  381.                 cmp bl,'9'
  382.                 jg @f
  383.                         sub bl,'0'
  384.                         imul eax,10
  385.                         add eax,ebx
  386.                         inc esi
  387.                         jmp .load_digit_10
  388.         jmp @f
  389.  
  390.         .load_digit_16: ;áç¨â뢠­¨¥ 16-à¨ç­ëå æ¨äà
  391.                 add esi,2
  392.         .cycle_16:
  393.                 mov bl,byte[esi]
  394.                 cmp bl,'0'
  395.                 jl @f
  396.                 cmp bl,'f'
  397.                 jg @f
  398.                 cmp bl,'9'
  399.                 jle .us1
  400.                         cmp bl,'A'
  401.                         jl @f ;®âᥨ¢ ¥¬ ᨬ¢®«ë >'9' ¨ <'A'
  402.                 .us1: ;á®áâ ¢­®¥ ãá«®¢¨¥
  403.                 cmp bl,'F'
  404.                 jle .us2
  405.                         cmp bl,'a'
  406.                         jl @f ;®âᥨ¢ ¥¬ ᨬ¢®«ë >'F' ¨ <'a'
  407.                         sub bl,32 ;¯¥à¥¢®¤¨¬ ᨬ¢®«ë ¢ ¢¥àå­¨© ॣ¨áâà, ¤«ï ã¯à®é¥­¨ï ¨å ¯®á«¥¤ã饩 ®¡à ¡®âª¨
  408.                 .us2: ;á®áâ ¢­®¥ ãá«®¢¨¥
  409.                         sub bl,'0'
  410.                         cmp bl,9
  411.                         jle .cor1
  412.                                 sub bl,7 ;convert 'A' to '10'
  413.                         .cor1:
  414.                         shl eax,4
  415.                         add eax,ebx
  416.                         inc esi
  417.                         jmp .cycle_16
  418.         @@:
  419.  
  420.         pop esi ebx
  421.         ret
  422. endp
  423.