Subversion Repositories Kolibri OS

Rev

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

  1. ;
  2. ; ¢ í⮬ ä ©«¥ ᮡ࠭ë ä㭪樨 ­ã¦­ë¥ ¤«ï ᮧ¤ ­¨ï ¨
  3. ; à ¡®âë ®ª­  á ª®®à¤¨­ â ¬¨
  4. ;
  5.  
  6. prop_wnd_width equ 350 ;è¨à¨­  ®ª­  ᮠ᢮©á⢠¬¨ ®¡ê¥ªâ 
  7. SIZE_ONE_FLOAT equ 14
  8. MAX_OBJECT_SIZE equ (4+SIZE_ONE_FLOAT*3+1)
  9.  
  10. prop_wnd_run db 0 ;¯¥à¥¬¥­­ ï á«¥¤ïé ï §  ⥬ çâ®-¡ë ­¥ § ¯ã᪠âì ¡®«ìè¥ 1-£® ®ª­  ᮠ᢮©á⢠¬¨ ®¤­®¢à¥¬¥­­®
  11.  
  12. txt_q db '?',0
  13. txt_space:
  14.         db SIZE_ONE_FLOAT dup(' ')
  15. .end:
  16.         db 0
  17.  
  18. obj_point: ;¤®¡ ¢«ï¥¬ë© ®¡ê¥ªâ
  19.         dd 0   ;㪠§ â¥«ì
  20. .text:
  21.         rb MAX_OBJECT_SIZE
  22.  
  23.  
  24.  
  25. ;¤ ­®¥ ®ª­® (¯à®æ¥áá) ¢ë§ë¢ ¥âìáï ä㭪樥© but_wnd_coords
  26. align 4
  27. prop_start:
  28. pushad
  29.         mcall 40,0x27 ;¬ áª  ®¦¨¤ ¥¬ëå ᮡë⨩
  30.         inc byte[prop_wnd_run]
  31.  
  32.         stdcall [tl_node_get_data],tree1
  33.         pop ebx
  34.         xor edx,edx
  35.         mov dword[capt_p],txt_q
  36.         cmp ebx,0
  37.         je .no_points
  38.                 mov ebx,dword[ebx] ;¯®«ãç ¥¬ §­ ç¥­¨¥ ᤢ¨£  ¢ë¡à ­­®£® ¡«®ª 
  39.                 add ebx,dword[open_file_lif]
  40.  
  41.                 cmp word[ebx],CHUNK_VERTLIST
  42.                 jne @f
  43.                         movzx edx,word[ebx+6] ;ª®««¨ç¥á⢮ â®ç¥ª
  44.                         add ebx,8
  45.                         mov dword[capt_p],txt_4110
  46.                         jmp .no_points
  47.                 @@:
  48.                 cmp word[ebx],0xb013
  49.                 jne @f
  50.                         inc edx
  51.                         add ebx,6
  52.                         mov dword[capt_p],txt_b013
  53.                         jmp .no_points
  54.                 @@:
  55.                 cmp word[ebx],0xb014
  56.                 jne @f
  57.                         mov edx,2
  58.                         add ebx,6
  59.                         mov dword[capt_p],txt_b014
  60.                         ;jmp .no_points
  61.                 @@:
  62.         .no_points:
  63.  
  64.         ;­ áâனª  ᯨ᪠ ®¡ê¥ªâ®¢
  65.         mov dword[tree3.info_max_count],2
  66.         add dword[tree3.info_max_count],edx ;áâ ¢¨¬ ç¨á«® 㧫®¢, à ¢­®¥ ª®««¨ç¥áâ¢ã â®ç¥ª (+2 ­  ­ ç «® ¨ ª®­¥æ ᯨ᪠)
  67.         stdcall dword[tl_data_init], tree3
  68.         mov eax,dword[icon_tl_sys]
  69.         mov dword[tree3.data_img_sys],eax
  70.         mov eax,dword[icon_toolbar]
  71.         mov dword[tree3.data_img],eax
  72.  
  73.         cmp edx,0
  74.         je .no_object
  75.                 mov word[NumberSymbolsAD],5
  76.                 finit
  77.                 .new_point:
  78.                         mov dword[obj_point],ebx
  79.                         mov dword[obj_point.text],0
  80.                         cld
  81.                         mov ecx,3
  82.                         @@:
  83.                                 fld dword[ebx]
  84.                                 fstp qword[Data_Double]
  85.                                 call DoubleFloat_to_String
  86.                                 add ebx,4
  87.                                 stdcall str_len, Data_String
  88.                                 mov esi,txt_space
  89.                                 add esi,eax
  90.                                 cmp esi,txt_space.end
  91.                                 jl .normal_size
  92.                                         mov esi,txt_space.end-1 ;¬¨­¨¬ã¬ 1 ¯à®¡¥« ­ã¦­® ¤®¡ ¢¨âì, çâ®-¡ë æ¨äàë ­¥ ᫨¯ «¨áì
  93.                                 .normal_size:
  94.                                 stdcall str_cat, obj_point.text,esi
  95.                                 stdcall str_cat, obj_point.text,Data_String
  96.                                 loop @b
  97.                         stdcall dword[tl_node_add], obj_point, (ID_ICON_DATA shl 16), tree3
  98.                         stdcall dword[tl_cur_next], tree3
  99.                         dec edx
  100.                         cmp edx,0
  101.                         jg .new_point
  102.                         stdcall dword[tl_cur_beg], tree3
  103.         .no_object:
  104.         edit_boxes_set_sys_color edit1,editboxes_end,sc ;ãáâ ­®¢ª  á¨á⥬­ëå 梥⮢
  105.         stdcall [edit_box_set_text], edit1, txt_q
  106.         stdcall [edit_box_set_text], edit2, txt_q
  107.         stdcall [edit_box_set_text], edit3, txt_q
  108. popad
  109.  
  110. align 4
  111. prop_red_win:
  112. pushad
  113.         mcall 12,1
  114.  
  115.         xor eax,eax
  116.         mov edi,dword[capt_p] ;children window caption
  117.         mov bx,word[procinfo.box.left]
  118.         add bx,word[buf_0.l]
  119.         shl ebx,16
  120.         mov bx,prop_wnd_width
  121.         mov cx,word[procinfo.box.top]
  122.         add cx,word[buf_0.t]
  123.         shl ecx,16
  124.         mov cx,250
  125.         mov edx,0xffffd0
  126.         or  edx,0x33000000
  127.         int 0x40
  128.  
  129.         mov eax,8
  130.         mov ebx,(5 shl 16)+20
  131.         mov ecx,(195 shl 16)+20
  132.         mov edx,3
  133.         mov esi,[sc.work_button]
  134.         int 0x40
  135.  
  136.         mov ebx,(30 shl 16)+20
  137.         mov ecx,(195 shl 16)+20
  138.         mov edx,4
  139.         int 0x40
  140.  
  141.         mov eax,7
  142.         mov ebx,[image_data_toolbar]
  143.         add ebx,4*IMAGE_TOOLBAR_ICON_SIZE
  144.         mov ecx,(16 shl 16)+16
  145.         mov edx,(7 shl 16)+197 ;load
  146.         int 0x40
  147.  
  148.         sub ebx,IMAGE_TOOLBAR_ICON_SIZE
  149.         mov edx,(32 shl 16)+197 ;save
  150.         int 0x40
  151.  
  152.         mov dword[w_scr_t3.all_redraw],1
  153.         stdcall [scrollbar_ver_draw],dword w_scr_t3
  154.         stdcall [tl_draw], tree3
  155.         stdcall [edit_box_draw], edit1
  156.         stdcall [edit_box_draw], edit2
  157.         stdcall [edit_box_draw], edit3
  158.         mcall 12,2
  159. popad
  160.  
  161. ;­¥ ®âà뢠âì íâã äã­ªæ¨î ®â ¯à¥¤ë¤ã饩
  162. align 4
  163. prop_still:
  164.         pushad
  165.         mcall 10
  166.  
  167.         cmp al,1 ;¨§¬. ¯®«®¦¥­¨¥ ®ª­ 
  168.         jz prop_red_win
  169.         cmp al,2
  170.         jne @f
  171.                 call prop_key
  172.         @@:
  173.         cmp al,3
  174.         jz prop_button
  175.         cmp al,6
  176.         jne @f
  177.                 call prop_mouse
  178.         @@:
  179.         popad
  180.         jmp prop_still
  181.  
  182. align 4
  183. prop_key:
  184. push eax
  185.         mcall 2
  186.         stdcall [edit_box_key], edit1
  187.         stdcall [edit_box_key], edit2
  188.         stdcall [edit_box_key], edit3
  189.         stdcall [tl_key], tree3
  190. pop eax
  191.         ret
  192.  
  193. align 4
  194. prop_mouse:
  195.         ;push ecx edi
  196.         stdcall [tl_mouse], tree3
  197.         stdcall [edit_box_mouse], edit1
  198.         stdcall [edit_box_mouse], edit2
  199.         stdcall [edit_box_mouse], edit3
  200.         ;pop edi ecx
  201.         ret
  202.  
  203. align 4
  204. prop_button:
  205.         mcall 17 ;¯®«ãç¨âì ª®¤ ­ ¦ â®© ª­®¯ª¨
  206.  
  207.         cmp ah,3
  208.         jne @f
  209.                 ;§ £à㧪  ª®®à¤¨­ â ¢ editbox-ë
  210.                 push ebx
  211.                 stdcall [tl_node_get_data],tree3
  212.                 pop ebx
  213.                 cmp ebx,0
  214.                 je .no_select_0
  215.                         mov ebx,[ebx]
  216.                         mov word[NumberSymbolsAD],8
  217.                         finit
  218.                         fld dword[ebx]
  219.                         fstp qword[Data_Double]
  220.                         call DoubleFloat_to_String
  221.                         stdcall [edit_box_set_text], edit1, Data_String
  222.                         fld dword[ebx+4]
  223.                         fstp qword[Data_Double]
  224.                         call DoubleFloat_to_String
  225.                         stdcall [edit_box_set_text], edit2, Data_String
  226.                         fld dword[ebx+8]
  227.                         fstp qword[Data_Double]
  228.                         call DoubleFloat_to_String
  229.                         stdcall [edit_box_set_text], edit3, Data_String
  230.                         stdcall [edit_box_draw], edit1
  231.                         stdcall [edit_box_draw], edit2
  232.                         stdcall [edit_box_draw], edit3
  233.                 .no_select_0:
  234.                 pop ebx
  235.         @@:
  236.         cmp ah,4
  237.         jne @f
  238.                 push ebx ecx esi edi
  239.                 stdcall [tl_node_get_data],tree3
  240.                 pop ebx
  241.                 cmp ebx,0
  242.                 je .no_select_1
  243.                         mov ebx,[ebx]
  244.                         finit
  245.  
  246.                         mov esi,string1
  247.                         mov edi,Data_String
  248.                         cld
  249.                         mov ecx,32
  250.                         rep movsb
  251.                         call String_to_DoubleFloat
  252.                         fld  qword[Data_Double] ;áç¨â뢠¥¬ ª ª double
  253.                         fstp dword[ebx] ;á®å࠭塞 ª ª float
  254.  
  255.                         mov esi,string2
  256.                         mov edi,Data_String
  257.                         cld
  258.                         mov ecx,32
  259.                         rep movsb
  260.                         call String_to_DoubleFloat
  261.                         fld  qword[Data_Double] ;áç¨â뢠¥¬ ª ª double
  262.                         fstp dword[ebx+4] ;á®å࠭塞 ª ª float
  263.  
  264.                         mov esi,string3
  265.                         mov edi,Data_String
  266.                         cld
  267.                         mov ecx,32
  268.                         rep movsb
  269.                         call String_to_DoubleFloat
  270.                         fld  qword[Data_Double] ;áç¨â뢠¥¬ ª ª double
  271.                         fstp dword[ebx+8] ;á®å࠭塞 ª ª float
  272.  
  273.                         ;®¡­®¢«¥­¨¥ ¨§¬¥­¥­­®£® 㧫  ¢ ᯨ᪥ tree3 ¨ £« ¢­®£® ®ª­  (¯® â ©¬¥àã)
  274.                         mov word[NumberSymbolsAD],5
  275.                         mov dword[obj_point],ebx
  276.                         mov dword[obj_point.text],0
  277.                         cld
  278.                         mov ecx,3
  279.                         .coord:
  280.                                 fld dword[ebx]
  281.                                 fstp qword[Data_Double]
  282.                                 call DoubleFloat_to_String
  283.                                 add ebx,4
  284.                                 stdcall str_len, Data_String
  285.                                 mov esi,txt_space
  286.                                 add esi,eax
  287.                                 cmp esi,txt_space.end
  288.                                 jl .normal_size
  289.                                         mov esi,txt_space.end-1 ;¬¨­¨¬ã¬ 1 ¯à®¡¥« ­ã¦­® ¤®¡ ¢¨âì, çâ®-¡ë æ¨äàë ­¥ ᫨¯ «¨áì
  290.                                 .normal_size:
  291.                                 stdcall str_cat, obj_point.text,esi
  292.                                 stdcall str_cat, obj_point.text,Data_String
  293.                                 loop .coord
  294.                         stdcall dword[tl_node_set_data], obj_point, tree3
  295.                         stdcall dword[tl_draw], tree3
  296.                         mov byte[can_save],1 ;¤«ï ¯®ª §  ª­®¯ª¨ '‘®åà ­¨âì'
  297.                         mov dword[offs_last_timer],0 ;¤«ï ®¡­®¢«¥­¨ï ¡«®ª  ¢ â ©¬¥à¥
  298.                 .no_select_1:
  299.                 pop edi esi ecx ebx
  300.         @@:
  301.  
  302.         cmp ah,1
  303.         jne prop_still
  304. .exit:
  305.         mov dword[tree3.data_img],0 ;ç¨á⨬ 㪠§ â¥«¨ ­  ¨ª®­ª¨ çâ®-¡ë ¨å ­¥ 㤠«¨« ¤¥áâàãªâ®à
  306.         mov dword[tree3.data_img_sys],0 ;â. ª. ®­¨ ¥é¥ ¨á¯®«ì§ãîâìáï ¢ ¤à㣨å í«¥¬¥­â å
  307.         stdcall dword[tl_data_clear], tree3
  308.         mov byte[prop_wnd_run],0 ;®¡­ã«ï¥¬ áç¥â稪 ®ª®­
  309.         mcall -1 ;¢ë室 ¨§ ¯à®£à ¬¬ë
  310.  
  311. capt_p dd 0
  312.  
  313. ;¤¥à¥¢® á ®¡ê¥ªâ ¬¨ ¢ ¯®«ì§®¢ â¥«ì᪮¬ ä ©«¥
  314. tree3 tree_list MAX_OBJECT_SIZE,3,\
  315.         tl_key_no_edit+tl_list_box_mode,\
  316.         16,16, 0xffffff,0xb0d0ff,0xd000ff, 5,30,300,160, 16, 4,0, el_focus,\
  317.         w_scr_t3,0
  318.  
  319. edit1 edit_box 80,  70, 200, 0xffffff, 0xff, 0x80ff, 0, 0x8000, 34, string1, mouse_dd, 0
  320. edit2 edit_box 80, 154, 200, 0xffffff, 0xff, 0x80ff, 0, 0x8000, 34, string2, mouse_dd, 0
  321. edit3 edit_box 80, 238, 200, 0xffffff, 0xff, 0x80ff, 0, 0x8000, 34, string3, mouse_dd, 0
  322. editboxes_end:
  323.  
  324. string1 rb 34
  325. string2 rb 34
  326. string3 rb 34
  327.  
  328. align 4
  329. w_scr_t3:
  330. .size_x     dw 16 ;+0
  331. rb 2+2+2
  332. .btn_high   dd 15 ;+8
  333. .type       dd 1  ;+12
  334. .max_area   dd 100  ;+16
  335. rb 4+4
  336. .bckg_col   dd 0xeeeeee ;+28
  337. .frnt_col   dd 0xbbddff ;+32
  338. .line_col   dd 0  ;+36
  339. rb 4+2+2
  340. .run_x:
  341. rb 2+2+2+2+4+4+4+4+4+4
  342. .all_redraw dd 0 ;+80
  343. .ar_offset  dd 1 ;+84
  344.  
  345.