Subversion Repositories Kolibri OS

Rev

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