Subversion Repositories Kolibri OS

Rev

Rev 1792 | Blame | Compare with Previous | Last modification | View Log | Download | RSS feed

  1. ; SEE YOU File FAQ.txt and HISTORY. Good Like!
  2. ;;;;;;;;;;;;;;;;;;
  3. include 'editbox.mac'    ;¬ ªà®á ª®â®àë© ¤®«¦¥­ ®¡«¥£ç¨âì ¦¨§­ì :) ᯥ樠«ì­® ¤«ï editbox
  4. ;;;;;;;;;;;;;;;;;;
  5. macro use_edit_box procinfo,scr_h,scr_w
  6. {
  7. edit_box:
  8. ed_width        equ [edi]               ;è¨à¨­  ª®¬¯®­¥­â 
  9. ed_left         equ [edi+4]             ;¯®«®¦¥­¨¥ ¯® ®á¨ å
  10. ed_top          equ [edi+8]             ;¯®«®¦¥­¨¥ ¯® ®á¨ ã
  11. ed_color        equ [edi+12]            ;梥â ä®­  ª®¬¯®­¥­â 
  12. shift_color     equ [edi+16]            ;=0x6a9480
  13. ed_focus_border_color   equ [edi+20]    ;梥â à ¬ª¨ ª®¬¯®­¥­â 
  14. ed_blur_border_color    equ [edi+24]    ;梥⠭¥  ªâ¨¢­®£® ª®¬¯®­¥­â 
  15. ed_text_color   equ [edi+28]            ;梥â ⥪áâ 
  16. ed_max          equ [edi+32]                    ;ª®«-¢® ᨬ¢®«®¢ ª®â®àë¥ ¬®¦­® ¬ ªá¨¬ «ì­® ¢¢¥áâ¨
  17. ed_text         equ [edi+36]                    ;㪠§ â¥«ì ­  ¡ãä¥à
  18. ed_flags        equ [edi+40]            ;ä« £¨
  19. ed_size equ [edi+42]                    ;ª®«-¢® ᨬ¢®«®¢
  20. ed_pos  equ [edi+46]                    ;¯®§¨æ¨ï ªãàá®à 
  21. ed_offset       equ [edi+50]            ;ᬥ饭¨¥
  22. cl_curs_x       equ [edi+54]            ;¯à¥¤ë¤ã饥 ª®®à¤¨­ â  ªãàá®à  ¯® å
  23. cl_curs_y       equ [edi+58]            ;¯à¥¤ë¤ã饥 ª®®à¤¨­ â  ªãàá®à  ¯® ã
  24. ed_shift_pos    equ [edi+62]            ;¯®«®¦¥­¨¥ ªãàá®à 
  25. ed_shift_pos_old equ [edi+66]           ;áâ à®¥ ¯®«®¦¥­¨¥ ªãàá®à 
  26. ;==========================================================
  27. ;=== ¯à®æ¥¤ãà  ¯à®à¨á®¢ª¨ =================================
  28. ;==========================================================
  29. .draw:
  30. pusha
  31. ;--- à¨á㥬 à ¬ªã ---
  32.         call    .draw_border            ; ”ã­ªæ¨ï áâ ¡¨«ì­ 
  33. .draw_bg_cursor_text:
  34. ;--- ¨§¬¥­ï¥¬ ᬥ饭¨¥, ¥á«¨ ­ ¤® ---
  35.         call    .check_offset           ;¢ëç¨á«¥­¨¥ ¯®§¨æ¨¨ ªãàá®à  áâ ¡¨«ì­ 
  36. ;--- à¨á㥬 ¢­ãâ७­îî ®¡« áâì ---
  37.         call    .draw_bg                ;­ à¨á®¢ âì ¯àאַ㣮«ì­¨ª à ¡®ç¥© ®¡« áâ¨
  38. ;---- à¨á㥬 ¢ë¤¥«¥­¨¥, ¯® shift ¥á«¨ ¥áâì
  39.         call    .draw_shift
  40. .draw_cursor_text:
  41. ;--- à¨á㥬 ªãàá®à ---
  42.         ;--- ¬®¦¥â ¥£® ­¥ ­ ¤® à¨á®¢ âì ----
  43.         test    word ed_flags,ed_focus
  44.         je     @f
  45.         call    .draw_cursor
  46. @@:
  47.         call    .draw_text
  48. ;;;;;;;;;;;;;;;;;;;;;;;;;;
  49. ;Ž¡é¨© ¢ë室 ¨§ editbox ¤«ï ¢á¥å ä㭪権 ¨ ¯®áâ ®¡à ¡®â稪®¢
  50. ;;;;;;;;;;;;;;;;;;;;;;;;;;
  51. .editbox_exit:
  52. edit_ex
  53. ;==========================================================
  54. ;=== ®¡à ¡®âª  ª« ¢¨ âãàë =================================
  55. ;==========================================================
  56. .key:
  57. pusha
  58.         test    word ed_flags,ed_focus ; ¥á«¨ ­¥ ¢ 䮪ãá¥, ¢ë室¨¬
  59.         je      .editbox_exit
  60.         test    word ed_flags,ed_mouse_on
  61.         jne     .editbox_exit
  62.  
  63. ;à®¢¥àª  ­ ¦ â shift ?
  64.         call    .check_shift
  65. ;----------------------------------------------------------
  66. ;--- ¯à®¢¥à塞, çâ® ­ ¦ â® --------------------------------
  67. ;----------------------------------------------------------
  68. use_key_process  backspase,delete,left,right,home,end,insert
  69. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  70. ;‡ £«ã誠 ­  ®¡à ¡®âªã ª« ¢¨è ¢¢¥àå ¨ ¢­¨§ â.¥. ¯à¨ ®¡­ à㦥­¨¨ íâ¨å ª®¤®¢ ¯à®¨á室¨â ¢ë室 ¨§ ®¡à ¡®â稪 
  71. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;    
  72. use_key_no_process   up,down,esc
  73. ;--- ­ ¦ â  ¤àã£ ï ª« ¢¨è  ---
  74. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  75. ;à®¢¥àª  ãáâ ­®¢«¥­ «¨ ä« £ ¯à¨ ª®â®à®¬ ­ã¦­® ¢ë¢®¤¨âì ⮫쪮 æ¨äàë ¢ ­ã¦­®¬ ¡®ªá¥ ¥á«¨ â ª®©­¥®¡å®¤¨¬®á⨠­¥â ­ã¦­® § ª®¬¥­â¨à®¢ âì ¬ ªà®á
  76. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  77. use_key_figures_only
  78. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  79. ;¯à®¢¥àª  ­  shift ¡ë« «¨ ­ ¦ â
  80. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  81. are_key_shift_press
  82. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  83. ; ¯à®¢¥à塞, ­ å®¤¨âáï «¨ ªãàá®à ¢ ª®­æ¥ + ¤ «ì­¥©è ï ®¡à ¡®âª 
  84. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  85. are_key_cur_end
  86. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  87. ;Ž¡à ¡®âª  ª« ¢¨è insert,delete.backspase,home,end,left,right
  88. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  89. use_work_key
  90. ;==========================================================
  91. ;=== ®¡à ¡®âª  ¬ëè¨ =======================================
  92. ;==========================================================
  93. .mouse:
  94. pusha
  95. ;debug
  96. ;----------------------------------------------------------
  97. ;--- ¯®«ãç ¥¬ á®áâ®ï­¨¥ ª­®¯®ª ¬ëè¨ -----------------------
  98. ;----------------------------------------------------------    
  99.         mcall   37,2
  100. ;----------------------------------------------------------
  101. ;--- ¯à®¢¥à塞 á®áâ®ï­¨¥ ----------------------------------
  102. ;----------------------------------------------------------
  103.         test    eax,1              
  104.         jnz     .mouse_left_button
  105.         and     word ed_flags,ed_mouse_on_off
  106.         xor     ebx,ebx
  107.         mov     dword [mouse_flag],ebx
  108.         jmp     .editbox_exit
  109. .mouse_left_button:
  110. ;----------------------------------------------------------
  111. ;--- ¡«®ª¨à®¢ª  ®â 䮪ãá¨à®¢ª¨ ¢ ¤àã£¨å ¡®ªá å ¯à¨ ¯®¯ ¤ ­¨¨ ­  ­¨å ªãàá®à 
  112. ;----------------------------------------------------------
  113.         mov     eax,dword [mouse_flag]
  114.         test    eax,eax
  115.         jz      @f
  116.         cmp     eax,edi
  117.         je      @f
  118.         jmp     ._blur
  119. ;----------------------------------------------------------
  120. ;--- ¯®«ãç ¥¬ ª®®à¤¨­ âë ¬ëè¨ ®â­®á¨â¥«ì­® 0 â.¥ ¢á¥© ®¡« á⨠íªà ­ 
  121. ;----------------------------------------------------------
  122. @@:     mcall   37,0
  123. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  124. ;”ã­ªæ¨ï ®¡à ¡®âª¨  ¬ë誨 ¯®«ã祭¨¥ ª®®à¤¨­ â ¨ ¯à®¢¥àª  ¨å + ¢ë¤¥«¥­¨ï
  125. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  126. use_work_mause scr_h,scr_w
  127. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  128. ;Ž¡é¨¥ ä㭪樨 ®¡à ¡®âª¨
  129. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  130. use_general_func
  131. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  132. ;”㭪樨 ¤«ï à ¡®âë á key
  133. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  134. use_key_func
  135. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  136. ;”㭪樨 ¤«ï à ¡®âë á mouse
  137. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  138. use_mouse_func scr_w
  139. }
  140. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  141. ;Bit mask from editbox
  142. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  143. ed_figure_only= 1000000000000000b   ;®¤­¨ ᨬ¢®«ë
  144. ed_always_focus= 100000000000000b
  145. ed_focus=                     10b   ;䮪ãá ¯à¨«®¦¥­¨ï
  146. ed_shift_on=                1000b   ;¥á«¨ ­¥ ãáâ ­®¢«¥­ -§­ ç¨â ¢¯¥à¢ë¥ ­ ¦ â shift,¥á«¨ ¡ë« ãáâ ­®¢«¥­, §­ ç¨â ¬ë 㦥 çâ® - â® ¤¥« «¨ 㤥ন¢ ï shift
  147. ed_shift_on_off=1111111111110111b
  148. ed_shift=                    100b   ;¢ª«îç ¥âáï ¯à¨ ­ ¦ â¨¨ ­  shift â.¥. ¥á«¨ ­ ¦¨¬ î
  149. ed_shift_off=   1111111111111011b
  150. ed_shift_bac=              10000b   ;¡¨â ¤«ï ®ç¨á⪨ ¢ë¤¥«¥­®£® shift â.¥. ¯à¨ ãáâ ­®¢ª¥ £®¢®à¨â çâ® ¥áâì ¢ë¤¥«¥­¨¥
  151. ed_shift_bac_cl=1111111111101111b   ;®ç¨á⪠ ¯à¨ 㤠«¥­¨¨ ¢ë¤¥«¥­¨ï
  152. ed_shift_cl=    1111111111100011b
  153. ed_shift_mcl=   1111111111111011b
  154. ed_left_fl=               100000b
  155. ed_right_fl=    1111111111011111b
  156. ed_offset_fl=            1000000b
  157. ed_offset_cl=   1111111110111111b
  158. ed_insert=              10000000b
  159. ed_insert_cl=   1111111101111111b
  160. ed_mouse_on =          100000000b
  161. ed_mous_adn_b=         100011000b
  162. ed_mouse_on_off=1111111011111111b
  163. ed_height=14 ; ¢ëá®â 
  164. macro draw_edit_boxes start,_end,use_f9,procinfo
  165. {
  166. if use_f9 eq
  167. else
  168.         mcall   9,procinfo,-1
  169. end if
  170.         mov     edi,start
  171.         mov     ecx,((_end-start)/ed_struc_size)
  172. @@:
  173.         call    edit_box.draw
  174.         add     edi,ed_struc_size
  175.         loop    @b
  176. }
  177.  
  178. macro mouse_edit_boxes start,_end
  179. {
  180.         mov     edi,start
  181.         mov     ecx,((_end-start)/ed_struc_size)
  182. @@:
  183.         call    edit_box.mouse
  184.         add     edi,ed_struc_size
  185.         loop    @b
  186. }
  187.  
  188. macro key_edit_boxes start,end
  189. {
  190.         mov     edi,start
  191.         mov     ecx,((end-start)/ed_struc_size)
  192. @@:
  193.         call    edit_box.key
  194.         add     edi,ed_struc_size
  195.         loop    @b
  196. }
  197. ed_struc_size=70
  198. struc  edit_box width,left,top,color,shift_color,focus_border_color,\
  199.        blur_border_color,text_color,max,text,flags,size,pos
  200. {
  201. .width dd width
  202. .left dd left
  203. .top dd top
  204. .color dd color
  205. .shift_color dd shift_color
  206. .focus_border_color dd focus_border_color
  207. .blur_border_color dd blur_border_color
  208. .text_color dd text_color
  209. .max dd max
  210. .text dd text
  211. .flags dw flags+0
  212. .size dd size+0
  213. .pos dd pos+0
  214. .offset dd 0
  215. .cl_curs_x dd 0
  216. .cl_curs_y dd 0
  217. .shift   dd 0
  218. .shift_old   dd 0
  219. }
  220.  
  221.  
  222. macro edit_boxes_set_sys_color start,end,color_table
  223. {
  224.         mov     edi,start
  225.         mov     ecx,((end-start)/ed_struc_size)
  226.         mov     esi,color_table
  227. @@:
  228.         mov     eax,[esi+36]
  229.         mov     ebx,[esi+20]
  230.         mov     ed_focus_border_color,eax
  231.         shr     bh,1
  232.         shr     bl,1
  233.         shr     ah,1
  234.         shr     al,1
  235.         add     ah,bh
  236.         add     al,bl
  237.         ror     eax,16
  238.         ror     ebx,16
  239.         shr     bl,1
  240.         shr     al,1
  241.         add     al,bl
  242.         ror     eax,16
  243.         mov     ed_blur_border_color,eax
  244.         add     edi,ed_struc_size
  245.         loop    @b
  246. }
  247.  
  248. macro draw_edit_box ed_ptr,use_f9,procinfo
  249. {
  250. if use_f9 eq
  251. else
  252.         mcall   9,procinfo,-1
  253. end if
  254.         mov     edi,ed_ptr
  255.         call    edit_box.draw
  256. }
  257.  
  258. macro mouse_edit_box ed_ptr
  259. {
  260.         mov     edi,ed_ptr
  261.         call    edit_box.mouse
  262. }
  263.  
  264. macro key_edit_box ed_ptr
  265. {
  266.         mov     edi,ed_ptr
  267.         call    edit_box.key
  268. }
  269. macro default_box ed_ptr
  270. {
  271. pusha
  272. ;       xor     eax,eax
  273. ;       mov     ed_shift_pos,eax
  274. ;       mov     ed_shift_pos_old,eax
  275.         and     word ed_flags,ed_shift_cl
  276. ;       mov     ed_offset,eax
  277. popa
  278. }