Rev 6705 | Rev 6965 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 6705 | Rev 6788 | ||
---|---|---|---|
Line 1... | Line -... | ||
1 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
- | |
2 | ;Basic macros for use editbox ; |
1 | macro use_key_no_process up,down,esc,enter,tab,numl,capsl,scrolll |
3 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
- | |
4 | - | ||
5 | macro use_editbox_draw |
- | |
6 | { |
2 | { |
- | 3 | if up eq |
|
- | 4 | else |
|
- | 5 | cmp ah,177 |
|
- | 6 | jz edit_box.editbox_exit |
|
- | 7 | end if |
|
- | 8 | if down eq |
|
- | 9 | else |
|
- | 10 | cmp ah,178 |
|
- | 11 | jz edit_box.editbox_exit |
|
- | 12 | end if |
|
- | 13 | if esc eq |
|
- | 14 | else |
|
- | 15 | cmp ah,27 ;ESC - ª« ¢¨è )) |
|
- | 16 | jz edit_box.editbox_exit |
|
- | 17 | end if |
|
- | 18 | if enter eq |
|
- | 19 | else |
|
- | 20 | cmp ah,13 ;ENTER - ª« ¢¨è )) |
|
- | 21 | jz edit_box.editbox_exit |
|
- | 22 | end if |
|
- | 23 | if tab eq |
|
- | 24 | else |
|
- | 25 | cmp ah,9 ;TAB - ª« ¢¨è )) |
|
- | 26 | jz edit_box.editbox_exit |
|
- | 27 | end if |
|
- | 28 | if numl eq |
|
- | 29 | else |
|
- | 30 | cmp ah,4 ;Num Lock - ª« ¢¨è )) |
|
- | 31 | jz edit_box.editbox_exit |
|
- | 32 | end if |
|
- | 33 | if capsl eq |
|
- | 34 | else |
|
- | 35 | cmp ah,2 ;Caps Lock - ª« ¢¨è )) |
|
- | 36 | jz edit_box.editbox_exit |
|
- | 37 | end if |
|
- | 38 | if scrolll eq |
|
- | 39 | else |
|
- | 40 | cmp ah,1 ;Scroll Lock - ª« ¢¨è )) |
|
- | 41 | jz edit_box.editbox_exit |
|
- | 42 | end if |
|
- | 43 | } |
|
- | 44 | ||
- | 45 | ||
- | 46 | align 16 |
|
7 | edit_box: |
47 | edit_box: |
8 | .draw: |
48 | .draw: |
9 | pushad |
49 | pushad |
10 | mov edi,[esp+36] |
50 | mov edi,[esp+36] |
11 | and dword ed_text_color,17FFFFFFh |
51 | and dword ed_text_color,17FFFFFFh |
Line 42... | Line 82... | ||
42 | ;¡é¨© ¢ë室 ¨§ editbox ¤«ï ¢á¥å äãªæ¨© ¨ ¯®áâ ®¡à ¡®â稪®¢;; |
82 | ;¡é¨© ¢ë室 ¨§ editbox ¤«ï ¢á¥å äãªæ¨© ¨ ¯®áâ ®¡à ¡®â稪®¢;; |
43 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
83 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
44 | .editbox_exit: |
84 | .editbox_exit: |
45 | popad |
85 | popad |
46 | ret 4 |
86 | ret 4 |
47 | } |
- | |
Line 48... | Line -... | ||
48 | - | ||
49 | macro use_editbox_key |
- | |
50 | { |
87 | |
51 | ;========================================================== |
88 | ;========================================================== |
52 | ;=== ®¡à ¡®âª ª« ¢¨ âãàë ================================= |
89 | ;=== ®¡à ¡®âª ª« ¢¨ âãàë ================================= |
- | 90 | ;========================================================== |
|
53 | ;========================================================== |
91 | align 16 |
54 | edit_box_key: |
92 | edit_box_key: |
55 | pushad |
93 | pushad |
56 | mov edi,[esp+36] |
94 | mov edi,[esp+36] |
57 | test word ed_flags,ed_focus ; ¥á«¨ ¥ ¢ 䮪ãá¥, ¢ë室¨¬ |
95 | test word ed_flags,ed_focus ; ¥á«¨ ¥ ¢ 䮪ãá¥, ¢ë室¨¬ |
Line 61... | Line 99... | ||
61 | ;-------------------------------------- |
99 | ;-------------------------------------- |
62 | ; this code for Win-keys, works with |
100 | ; this code for Win-keys, works with |
63 | ; kernel SVN r.3356 or later |
101 | ; kernel SVN r.3356 or later |
64 | push eax |
102 | push eax |
65 | push ebx |
103 | push ebx |
66 | mcall 66,3 |
104 | mcall SF_KEYBOARD,SSF_GET_CONTROL_KEYS |
67 | test ax,0x200 ; LWin |
105 | test ax,0x200 ; LWin |
68 | jnz .win_key_pressed |
106 | jnz .win_key_pressed |
69 | test ax,0x400 ; RWin |
107 | test ax,0x400 ; RWin |
70 | jz @f |
108 | jz @f |
71 | .win_key_pressed: |
109 | .win_key_pressed: |
Line 112... | Line 150... | ||
112 | use_key_no_process up,down,esc,enter,tab,numl,capsl,scrolll |
150 | use_key_no_process up,down,esc,enter,tab,numl,capsl,scrolll |
113 | ;--- ¦ â ¤àã£ ï ª« ¢¨è --- |
151 | ;--- ¦ â ¤àã£ ï ª« ¢¨è --- |
114 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
152 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
115 | ;஢¥àª ãáâ ®¢«¥ «¨ ä« £ ¯à¨ ª®â®à®¬ 㦮 ¢ë¢®¤¨âì ⮫쪮 æ¨äàë ¢ 㦮¬ ¡®ªá¥, ¥á«¨ â ª®© ¥®¡å®¤¨¬®á⨠¥â, 㦮 § ª®¬¥â¨à®¢ âì ¬ ªà®á |
153 | ;஢¥àª ãáâ ®¢«¥ «¨ ä« £ ¯à¨ ª®â®à®¬ 㦮 ¢ë¢®¤¨âì ⮫쪮 æ¨äàë ¢ 㦮¬ ¡®ªá¥, ¥á«¨ â ª®© ¥®¡å®¤¨¬®á⨠¥â, 㦮 § ª®¬¥â¨à®¢ âì ¬ ªà®á |
116 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
154 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
- | 155 | test word ed_flags,ed_figure_only ; ⮫쪮 æ¨äàë? |
|
117 | use_key_figures_only |
156 | jz @f |
- | 157 | cmp ah,'0' |
|
- | 158 | jb edit_box.editbox_exit |
|
- | 159 | cmp ah,'9' |
|
- | 160 | ja edit_box.editbox_exit |
|
- | 161 | @@: |
|
- | 162 | ||
118 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
163 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
119 | ;¯à®¢¥àª shift, ¡ë« «¨ ¦ â |
164 | ;¯à®¢¥àª shift, ¡ë« «¨ ¦ â |
120 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
165 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
- | 166 | test word ed_flags,ed_shift_on |
|
- | 167 | je @f |
|
- | 168 | ; edx = ed_size, ecx = ed_pos |
|
- | 169 | push eax |
|
- | 170 | mov edx,ed_size |
|
- | 171 | mov ecx, ed_pos |
|
- | 172 | pusha |
|
121 | are_key_shift_press |
173 | ; clear input area |
- | 174 | mov ebp,ed_color |
|
- | 175 | movzx ebx, word ed_shift_pos |
|
- | 176 | call edit_box_key.sh_cl_ |
|
- | 177 | mov ebp,ed_size |
|
- | 178 | call edit_box_key.clear_bg |
|
- | 179 | popa |
|
- | 180 | call edit_box_key.del_char |
|
- | 181 | mov ebx,ed_size |
|
- | 182 | sub bx,ed_shift_pos |
|
- | 183 | mov ed_size,ebx |
|
- | 184 | pop eax |
|
- | 185 | @@: |
|
- | 186 | ||
122 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
187 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
123 | ; ¯à®¢¥à塞, 室¨âáï «¨ ªãàá®à ¢ ª®æ¥ + ¤ «ì¥©è ï ®¡à ¡®âª |
188 | ; ¯à®¢¥à塞, 室¨âáï «¨ ªãàá®à ¢ ª®æ¥ + ¤ «ì¥©è ï ®¡à ¡®âª |
124 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
189 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
- | 190 | mov ecx,ed_size |
|
- | 191 | mov edx, ed_max |
|
- | 192 | test word ed_flags,ed_insert |
|
- | 193 | jne @f |
|
- | 194 | cmp ecx,edx |
|
- | 195 | jae edit_box.editbox_exit |
|
- | 196 | @@: mov ebx, ed_pos |
|
- | 197 | cmp ebx,edx |
|
- | 198 | jnl edit_box.editbox_exit |
|
- | 199 | mov ecx,ed_size |
|
- | 200 | push edi eax |
|
- | 201 | mov ebp,edi |
|
- | 202 | mov esi,ed_text |
|
- | 203 | add esi,ecx |
|
- | 204 | mov edi,esi |
|
- | 205 | cmp ecx,ebx |
|
- | 206 | je edit_box_key.In_k |
|
- | 207 | test dword bp_flags,ed_insert |
|
- | 208 | jne edit_box_key.ins_v |
|
- | 209 | pusha |
|
- | 210 | mov edi,ebp |
|
- | 211 | mov ebp,ed_size |
|
- | 212 | call edit_box_key.clear_bg |
|
- | 213 | popa |
|
- | 214 | sub ecx,ebx |
|
- | 215 | inc edi |
|
- | 216 | std |
|
- | 217 | inc ecx |
|
- | 218 | @@: |
|
- | 219 | lodsb |
|
- | 220 | stosb |
|
- | 221 | loop @b |
|
125 | are_key_cur_end |
222 | edit_box_key.In_k: |
- | 223 | cld |
|
- | 224 | pop eax |
|
- | 225 | mov al,ah |
|
- | 226 | stosb |
|
- | 227 | pop edi |
|
- | 228 | inc dword ed_size |
|
- | 229 | inc dword ed_pos |
|
- | 230 | call edit_box_key.draw_all2 |
|
- | 231 | jmp edit_box_key.shift |
|
- | 232 | ||
126 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
233 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
127 | ;¡à ¡®âª ª« ¢¨è insert,delete.backspace,home,end,left,right |
234 | ;¡à ¡®âª ª« ¢¨è insert,delete.backspace,home,end,left,right |
128 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
235 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
- | 236 | edit_box_key.insert: |
|
- | 237 | test word ed_flags,ed_insert |
|
- | 238 | je @f |
|
- | 239 | and word ed_flags,ed_insert_cl |
|
- | 240 | jmp edit_box.editbox_exit |
|
- | 241 | ||
- | 242 | @@: or word ed_flags,ed_insert |
|
- | 243 | jmp edit_box.editbox_exit |
|
- | 244 | ||
- | 245 | edit_box_key.ins_v: |
|
- | 246 | dec dword bp_size |
|
- | 247 | sub esi,ecx |
|
- | 248 | add esi,ebx |
|
- | 249 | mov edi,esi |
|
- | 250 | pusha |
|
- | 251 | mov edi,ebp |
|
- | 252 | mov ebp,ed_pos |
|
- | 253 | call edit_box_key.clear_bg |
|
- | 254 | popa |
|
- | 255 | jmp edit_box_key.In_k |
|
- | 256 | ||
- | 257 | edit_box_key.delete: |
|
- | 258 | mov edx,ed_size |
|
- | 259 | mov ecx,ed_pos |
|
- | 260 | cmp edx,ecx |
|
- | 261 | jg edit_box_key.bac_del |
|
- | 262 | test word ed_flags,ed_shift_on |
|
- | 263 | jne edit_box_key.del_bac |
|
- | 264 | popad |
|
- | 265 | ret 4 |
|
- | 266 | ||
- | 267 | edit_box_key.bac_del: |
|
- | 268 | call edit_box_key.del_char |
|
- | 269 | jmp edit_box_key.draw_all |
|
- | 270 | ||
- | 271 | edit_box_key.backspace: |
|
- | 272 | test word ed_flags,ed_shift_on |
|
- | 273 | jne edit_box_key.delete |
|
- | 274 | mov ecx,ed_pos |
|
- | 275 | test ecx,ecx |
|
- | 276 | jnz edit_box_key.del_bac |
|
- | 277 | popad |
|
- | 278 | ret 4 |
|
- | 279 | ||
- | 280 | edit_box_key.del_bac: |
|
- | 281 | mov edx,ed_size |
|
- | 282 | cmp edx,ecx ;if ed_pos=ed_size |
|
- | 283 | je @f |
|
- | 284 | dec ecx |
|
- | 285 | call edit_box_key.del_char |
|
- | 286 | @@: test word ed_flags,ed_shift_on |
|
- | 287 | jne edit_box_key.bac_del |
|
- | 288 | dec dword ed_pos |
|
- | 289 | edit_box_key.draw_all: |
|
- | 290 | push edit_box_key.shift |
|
- | 291 | test word ed_flags,ed_shift_on |
|
- | 292 | je @f |
|
- | 293 | movzx eax, word ed_shift_pos |
|
- | 294 | mov ebx,ed_size |
|
- | 295 | sub ebx,eax |
|
- | 296 | mov ed_size,ebx |
|
- | 297 | mov ebp,ed_color |
|
- | 298 | call edit_box.clear_cursor |
|
- | 299 | call edit_box.check_offset |
|
- | 300 | jmp edit_box.draw_bg |
|
- | 301 | ||
- | 302 | @@: dec dword ed_size |
|
- | 303 | edit_box_key.draw_all2: |
|
- | 304 | and word ed_flags,ed_shift_cl |
|
- | 305 | mov ebp,ed_color |
|
- | 306 | call edit_box.clear_cursor |
|
- | 307 | call edit_box.check_offset |
|
- | 308 | mov ebp,ed_size |
|
- | 309 | jmp edit_box_key.clear_bg |
|
- | 310 | ||
- | 311 | ;--- ¦ â ª« ¢¨è left --- |
|
- | 312 | edit_box_key.left: |
|
- | 313 | mov ebx,ed_pos |
|
- | 314 | test ebx,ebx |
|
- | 315 | jz edit_box_key.sh_st_of |
|
- | 316 | or word ed_flags,ed_left_fl |
|
- | 317 | call edit_box_key.sh_first_sh |
|
- | 318 | dec dword ed_pos |
|
- | 319 | call edit_box.draw_bg |
|
- | 320 | call edit_box.draw_shift |
|
- | 321 | call edit_box_key.sh_enable |
|
- | 322 | jmp edit_box.draw_cursor_text |
|
- | 323 | ||
- | 324 | ;--- ¦ â ª« ¢¨è right --- |
|
- | 325 | edit_box_key.right: |
|
- | 326 | mov ebx,ed_pos |
|
- | 327 | cmp ebx,ed_size |
|
- | 328 | je edit_box_key.sh_st_of |
|
- | 329 | and word ed_flags,ed_right_fl |
|
- | 330 | call edit_box_key.sh_first_sh |
|
- | 331 | inc dword ed_pos |
|
- | 332 | call edit_box.draw_bg |
|
- | 333 | call edit_box.draw_shift |
|
- | 334 | call edit_box_key.sh_enable |
|
- | 335 | jmp edit_box.draw_cursor_text |
|
- | 336 | ||
- | 337 | edit_box_key.home: |
|
- | 338 | mov ebx,ed_pos |
|
- | 339 | test ebx,ebx |
|
- | 340 | jz edit_box_key.sh_st_of |
|
- | 341 | call edit_box_key.sh_first_sh |
|
- | 342 | xor eax,eax |
|
- | 343 | mov ed_pos,eax |
|
- | 344 | call edit_box.draw_bg |
|
- | 345 | call edit_box.draw_shift |
|
- | 346 | call edit_box_key.sh_home_end |
|
- | 347 | jmp edit_box.draw_cursor_text |
|
- | 348 | ||
- | 349 | ;--- ¦ â ª« ¢¨è end --- |
|
129 | use_work_key |
350 | edit_box_key.end: |
- | 351 | mov ebx,ed_pos |
|
- | 352 | cmp ebx,ed_size |
|
- | 353 | je edit_box_key.sh_st_of |
|
- | 354 | call edit_box_key.sh_first_sh |
|
- | 355 | mov eax,ed_size |
|
- | 356 | mov ed_pos,eax |
|
- | 357 | call edit_box.draw_bg |
|
- | 358 | call edit_box.draw_shift |
|
- | 359 | call edit_box_key.sh_home_end |
|
- | 360 | jmp edit_box.draw_cursor_text |
|
130 | } |
361 | |
- | 362 | edit_box_key.ctrl_c: |
|
- | 363 | ; add memory area |
|
- | 364 | mov ecx,ed_size |
|
- | 365 | add ecx,3*4 |
|
- | 366 | mcall SF_SYS_MISC,SSF_MEM_ALLOC |
|
- | 367 | ; building the clipboard slot header |
|
- | 368 | xor ecx,ecx |
|
- | 369 | mov [eax+4],ecx ; type 'text' |
|
- | 370 | inc ecx |
|
- | 371 | mov [eax+8],ecx ; cp866 text encoding |
|
- | 372 | mov ecx,ed_size |
|
- | 373 | add ecx,3*4 |
|
- | 374 | mov [eax],ecx |
|
- | 375 | sub ecx,3*4 |
|
- | 376 | ; copy data |
|
- | 377 | mov esi,ed_text |
|
- | 378 | push edi |
|
- | 379 | mov edi,eax |
|
- | 380 | add edi,3*4 |
|
- | 381 | cld |
|
- | 382 | rep movsb |
|
- | 383 | pop edi |
|
- | 384 | ; put slot to the kernel clipboard |
|
- | 385 | mov edx,eax |
|
- | 386 | mov ecx,[edx] |
|
- | 387 | push eax |
|
- | 388 | mcall SF_CLIPBOARD,SSF_WRITE_CB |
|
- | 389 | pop ecx |
|
- | 390 | ; remove unnecessary memory area |
|
- | 391 | mcall SF_SYS_MISC,SSF_MEM_FREE |
|
- | 392 | .exit: |
|
- | 393 | jmp edit_box.editbox_exit |
|
- | 394 | ||
- | 395 | edit_box_key.ctrl_v: |
|
- | 396 | mcall SF_CLIPBOARD,SSF_GET_SLOT_COUNT |
|
- | 397 | ; no slots of clipboard ? |
|
- | 398 | test eax,eax |
|
- | 399 | jz .exit |
|
- | 400 | ; main list area not found ? |
|
- | 401 | inc eax |
|
- | 402 | test eax,eax |
|
- | 403 | jz .exit |
|
- | 404 | sub eax,2 |
|
- | 405 | mov ecx,eax |
|
- | 406 | mcall SF_CLIPBOARD,SSF_READ_CB |
|
- | 407 | ; main list area not found ? |
|
- | 408 | inc eax |
|
- | 409 | test eax,eax |
|
- | 410 | jz .exit |
|
- | 411 | ; error ? |
|
- | 412 | sub eax,2 |
|
- | 413 | test eax,eax |
|
- | 414 | jz .exit |
|
- | 415 | inc eax |
|
- | 416 | ; check contents of container |
|
- | 417 | mov ebx,[eax+4] |
|
- | 418 | ; check for text |
|
- | 419 | test ebx,ebx |
|
- | 420 | jnz .no_valid_text |
|
- | 421 | mov ebx,[eax+8] |
|
- | 422 | ; check for cp866 |
|
- | 423 | cmp bl,1 |
|
- | 424 | jnz .no_valid_text |
|
- | 425 | mov ecx,[eax] |
|
- | 426 | sub ecx,3*4 |
|
- | 427 | cmp ecx,ed_max |
|
- | 428 | jb @f |
|
- | 429 | mov ecx,ed_max |
|
- | 430 | @@: |
|
- | 431 | mov esi,eax |
|
- | 432 | add esi,3*4 |
|
- | 433 | mov ed_size,ecx |
|
- | 434 | mov ed_pos,ecx |
|
- | 435 | push eax edi |
|
- | 436 | mov edi,ed_text |
|
- | 437 | cld |
|
- | 438 | @@: |
|
- | 439 | lodsb |
|
- | 440 | cmp al,0x0d ; EOS (end of string) |
|
- | 441 | je .replace |
|
- | 442 | cmp al,0x0a ; EOS (end of string) |
|
- | 443 | jne .continue |
|
- | 444 | .replace: |
|
- | 445 | mov al,0x20 ; space |
|
- | 446 | .continue: |
|
- | 447 | stosb |
|
- | 448 | dec ecx |
|
- | 449 | jnz @b |
|
- | 450 | pop edi eax |
|
- | 451 | .no_valid_text: |
|
- | 452 | ; remove unnecessary memory area |
|
- | 453 | mov ecx,eax |
|
- | 454 | mcall SF_SYS_MISC,SSF_MEM_FREE |
|
- | 455 | .exit: |
|
- | 456 | jmp edit_box.draw_bg_cursor_text |
|
Line 131... | Line -... | ||
131 | - | ||
132 | macro use_editbox_mouse |
- | |
133 | { |
457 | |
134 | ;========================================================== |
458 | ;========================================================== |
135 | ;=== ®¡à ¡®âª ¬ëè¨ ======================================= |
459 | ;=== ®¡à ¡®âª ¬ëè¨ ======================================= |
136 | ;========================================================== |
460 | ;========================================================== |
- | 461 | ;save for stdcall ebx,esi,edi,ebp |
|
137 | ;save for stdcall ebx,esi,edi,ebp |
462 | align 16 |
138 | edit_box_mouse: |
463 | edit_box_mouse: |
139 | pushad |
464 | pushad |
140 | mov edi,[esp+36] |
465 | mov edi,[esp+36] |
141 | test word ed_flags,ed_disabled |
466 | test word ed_flags,ed_disabled |
142 | jnz edit_box.editbox_exit |
467 | jnz edit_box.editbox_exit |
143 | ;debug |
468 | |
144 | ;---------------------------------------------------------- |
469 | ;---------------------------------------------------------- |
145 | ;--- ¯®«ãç ¥¬ á®áâ®ï¨¥ ª®¯®ª ¬ëè¨ ----------------------- |
470 | ;--- ¯®«ãç ¥¬ á®áâ®ï¨¥ ª®¯®ª ¬ëè¨ ----------------------- |
146 | ;---------------------------------------------------------- |
471 | ;---------------------------------------------------------- |
147 | mcall 37,2 |
472 | mcall SF_MOUSE_GET,SSF_BUTTON |
148 | ;---------------------------------------------------------- |
473 | ;---------------------------------------------------------- |
149 | ;--- ¯à®¢¥à塞 á®áâ®ï¨¥ ---------------------------------- |
474 | ;--- ¯à®¢¥à塞 á®áâ®ï¨¥ ---------------------------------- |
150 | ;---------------------------------------------------------- |
475 | ;---------------------------------------------------------- |
151 | test eax,1 |
476 | test eax,1 |
Line 169... | Line 494... | ||
169 | je @f |
494 | je @f |
170 | jmp edit_box_mouse._blur |
495 | jmp edit_box_mouse._blur |
171 | ;---------------------------------------------------------- |
496 | ;---------------------------------------------------------- |
172 | ;--- ¯®«ãç ¥¬ ª®®à¤¨ âë ¬ëè¨ ®â®á¨â¥«ì® 0 â.¥ ¢á¥© ®¡« á⨠íªà |
497 | ;--- ¯®«ãç ¥¬ ª®®à¤¨ âë ¬ëè¨ ®â®á¨â¥«ì® 0 â.¥ ¢á¥© ®¡« á⨠íªà |
173 | ;---------------------------------------------------------- |
498 | ;---------------------------------------------------------- |
- | 499 | @@: |
|
174 | @@: mcall 37,1 |
500 | mcall SF_MOUSE_GET,SSF_WINDOW_POSITION |
175 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
501 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
176 | ;ãªæ¨ï ®¡à ¡®âª¨ ¬ë誨 ¯®«ã票¥ ª®®à¤¨ â ¨ ¯à®¢¥àª ¨å + ¢ë¤¥«¥¨ï |
502 | ;ãªæ¨ï ®¡à ¡®âª¨ ¬ë誨 ¯®«ã票¥ ª®®à¤¨ â ¨ ¯à®¢¥àª ¨å + ¢ë¤¥«¥¨ï |
177 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
503 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
- | 504 | ; ¥ 㤥ন¢ ¥¬ «¨ ¬ë ª« ¢¨èã ¬ë誨, ¯¥à¥¬¥é ï ªãàá®à? |
|
- | 505 | test word ed_flags,ed_mouse_on |
|
- | 506 | jne edit_box_mouse.mouse_wigwag |
|
- | 507 | ; ¯à®¢¥à塞, ¯®¯ ¤ ¥â «¨ ªãàá®à ¢ edit box |
|
- | 508 | mov ebx,ed_top |
|
- | 509 | cmp ax,bx |
|
- | 510 | jl edit_box_mouse._blur |
|
- | 511 | add ebx,ed_height |
|
- | 512 | cmp ax,bx |
|
- | 513 | jg edit_box_mouse._blur |
|
- | 514 | shr eax,16 |
|
- | 515 | mov ebx,ed_left |
|
- | 516 | cmp ax,bx |
|
- | 517 | jl edit_box_mouse._blur |
|
- | 518 | add ebx,ed_width |
|
- | 519 | cmp ax,bx |
|
- | 520 | jg edit_box_mouse._blur |
|
- | 521 | ; ¨§¬¥ï¥¬ ¯®§¨æ¨î ªãàá®à |
|
- | 522 | push eax |
|
- | 523 | mov ebp,ed_color |
|
- | 524 | call edit_box.clear_cursor |
|
- | 525 | pop eax |
|
- | 526 | edit_box_mouse._mvpos: |
|
- | 527 | xor edx,edx |
|
- | 528 | sub eax,ed_left |
|
- | 529 | div word ed_char_width |
|
- | 530 | add eax,ed_offset |
|
- | 531 | cmp eax,ed_size |
|
- | 532 | jna edit_box_mouse._mshift |
|
- | 533 | mov eax,ed_size |
|
- | 534 | edit_box_mouse._mshift: |
|
- | 535 | ; ᥪæ¨ï ®¡à ¡®âª¨ shift ¨ ¢ë¤¥«¥¨ï ¯® shift |
|
- | 536 | test word ed_flags,ed_shift_bac |
|
- | 537 | je @f |
|
- | 538 | mov ebp,ed_color |
|
- | 539 | movzx ebx, word ed_shift_pos |
|
- | 540 | push eax |
|
- | 541 | call edit_box_key.sh_cl_ |
|
- | 542 | and word ed_flags,ed_shift_bac_cl |
|
- | 543 | pop eax |
|
- | 544 | @@: |
|
- | 545 | test word ed_flags,ed_mouse_on |
|
- | 546 | jne @f |
|
- | 547 | mov ed_shift_pos,ax |
|
- | 548 | or word ed_flags,ed_mouse_on |
|
- | 549 | mov ed_pos,eax |
|
- | 550 | mov ebx,ed_mouse_variable |
|
- | 551 | push edi |
|
- | 552 | pop dword [ebx] |
|
- | 553 | bts word ed_flags,1 |
|
- | 554 | call edit_box.draw_bg |
|
- | 555 | jmp edit_box_mouse.m_sh |
|
- | 556 | ||
- | 557 | @@: cmp ax,ed_shift_pos |
|
- | 558 | je edit_box.editbox_exit |
|
- | 559 | mov ed_pos,eax |
|
- | 560 | call edit_box.draw_bg |
|
- | 561 | mov ebp,shift_color |
|
- | 562 | movzx ebx, word ed_shift_pos |
|
- | 563 | call edit_box_key.sh_cl_ |
|
- | 564 | or word ed_flags,ed_mous_adn_b |
|
- | 565 | edit_box_mouse.m_sh: |
|
- | 566 | call edit_box.draw_text |
|
- | 567 | call edit_box.draw_cursor |
|
- | 568 | ; ¯à®æ¥¤ãà ãáâ ®¢ª¨ 䮪ãá |
|
- | 569 | jmp edit_box_mouse.drc |
|
- | 570 | ||
- | 571 | edit_box_mouse._blur: |
|
- | 572 | test word ed_flags,ed_always_focus |
|
- | 573 | jne edit_box.editbox_exit |
|
- | 574 | btr word ed_flags,1 ; ¥á«¨ ¥ ¢ 䮪ãá¥, ¢ë室¨¬ |
|
- | 575 | jnc edit_box.editbox_exit |
|
- | 576 | mov ebp,ed_color |
|
- | 577 | call edit_box.clear_cursor |
|
178 | use_work_mouse |
578 | edit_box_mouse.drc: |
- | 579 | call edit_box.draw_border |
|
- | 580 | jmp edit_box.editbox_exit |
|
- | 581 | ||
179 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
582 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
180 | ;¡é¨¥ äãªæ¨¨ ®¡à ¡®âª¨ |
583 | ;¡é¨¥ äãªæ¨¨ ®¡à ¡®âª¨ |
181 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
- | |
182 | use_general_func |
- | |
183 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
- | |
184 | ;ãªæ¨¨ ¤«ï à ¡®âë á key |
- | |
185 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
- | |
186 | use_key_func |
- | |
187 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
- | |
188 | ;ãªæ¨¨ ¤«ï à ¡®âë á mouse |
- | |
189 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
- | |
190 | use_mouse_func |
- | |
191 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
- | |
192 | ;Bit mask from editbox |
- | |
193 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
- | |
194 | } |
- | |
195 | - | ||
196 | ;+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
- | |
197 | ;¨¦¥ à ᯮ«®¦¥ë äãªæ¨¨ ª®â®à묨 ॠ«¨§ã¥âáï ¢¥áì «£®à¨â¬ |
- | |
198 | ;+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
- | |
199 | ; ªà®á ¤«ï ¢ë¢®¤ ®á®¢ëå äãªæ¨© ª®â®àë¥ ¨á¯®«ì§ãîâáï ¡®ªá®¬ |
- | |
200 | macro use_general_func |
- | |
201 | { |
- | |
202 | ;debug_func |
- | |
203 | ;---------------------------------------------------------- |
584 | ;---------------------------------------------------------- |
204 | ;--- ¯à®æ¥¤ãà ¯à®à¨á®¢ª¨ ¢ë¤¥«¥®© ç á⨠---------------- |
585 | ;--- ¯à®æ¥¤ãà ¯à®à¨á®¢ª¨ ¢ë¤¥«¥®© ç á⨠---------------- |
205 | ;---------------------------------------------------------- |
586 | ;---------------------------------------------------------- |
206 | edit_box.draw_shift: |
587 | edit_box.draw_shift: |
207 | test word ed_flags,ed_shift_bac ;ãáâ ®¢ª ä« £ , ¢ë¤¥«¥®© ®¡« á⨠|
588 | test word ed_flags,ed_shift_bac ;ãáâ ®¢ª ä« £ , ¢ë¤¥«¥®© ®¡« á⨠|
Line 221... | Line 602... | ||
221 | jae @f |
602 | jae @f |
222 | mov esi,eax |
603 | mov esi,eax |
223 | @@: |
604 | @@: |
224 | test esi,esi |
605 | test esi,esi |
225 | jz @f |
606 | jz @f |
226 | mov eax,4 |
607 | mov eax,SF_DRAW_TEXT |
227 | mov ebx,ed_left |
608 | mov ebx,ed_left |
228 | add ebx,2 |
609 | add ebx,2 |
229 | shl ebx,16 |
610 | shl ebx,16 |
230 | add ebx,ed_top |
611 | add ebx,ed_top |
231 | add ebx,3 |
612 | add ebx,3 |
Line 268... | Line 649... | ||
268 | edit_box.draw_bg_eax: |
649 | edit_box.draw_bg_eax: |
269 | mov ecx,ed_top |
650 | mov ecx,ed_top |
270 | inc ecx |
651 | inc ecx |
271 | shl ecx,16 |
652 | shl ecx,16 |
272 | add ecx,ed_height |
653 | add ecx,ed_height |
273 | mcall 13 |
654 | mcall SF_DRAW_RECT |
274 | ret |
655 | ret |
Line 275... | Line 656... | ||
275 | 656 | ||
276 | ;---------------------------------------------------------- |
657 | ;---------------------------------------------------------- |
277 | ;--- ¯à®æ¥¤ãà ¯®«ãç¥¨ï ª®«¨ç¥á⢠ᨬ¢®«®¢ ¢ ⥪ã饩 è¨à¨¥ ª®¬¯®¥â |
658 | ;--- ¯à®æ¥¤ãà ¯®«ãç¥¨ï ª®«¨ç¥á⢠ᨬ¢®«®¢ ¢ ⥪ã饩 è¨à¨¥ ª®¬¯®¥â |
Line 312... | Line 693... | ||
312 | mov eax, ecx |
693 | mov eax, ecx |
313 | shl ecx, 16 |
694 | shl ecx, 16 |
314 | or ecx, eax |
695 | or ecx, eax |
315 | add ecx, ed_height |
696 | add ecx, ed_height |
316 | sub ecx, 3 |
697 | sub ecx, 3 |
317 | mcall 38 |
698 | mcall SF_DRAW_LINE |
318 | ret |
699 | ret |
Line 319... | Line 700... | ||
319 | 700 | ||
320 | ;---------------------------------------------------------- |
701 | ;---------------------------------------------------------- |
321 | ;--- ¯à®æ¥¤ãà à¨á®¢ ¨ï à ¬ª¨ ---------------------------- |
702 | ;--- ¯à®æ¥¤ãà à¨á®¢ ¨ï à ¬ª¨ ---------------------------- |
Line 333... | Line 714... | ||
333 | add ebx,ed_width |
714 | add ebx,ed_width |
334 | mov ecx,ed_top |
715 | mov ecx,ed_top |
335 | mov esi,ecx |
716 | mov esi,ecx |
336 | shl ecx,16 |
717 | shl ecx,16 |
337 | add ecx,esi |
718 | add ecx,esi |
338 | mcall 38 ; top |
719 | mcall SF_DRAW_LINE ; top |
339 | mov esi,ecx |
720 | mov esi,ecx |
340 | inc ecx |
721 | inc ecx |
341 | add ecx,ed_height |
722 | add ecx,ed_height |
342 | mov ebp,ecx |
723 | mov ebp,ecx |
343 | shl ecx,16 |
724 | shl ecx,16 |
Line 408... | Line 789... | ||
408 | call edit_box.draw_bg |
789 | call edit_box.draw_bg |
409 | and word ed_flags,ed_offset_cl |
790 | and word ed_flags,ed_offset_cl |
410 | popad |
791 | popad |
411 | ret |
792 | ret |
Line -... | Line 793... | ||
- | 793 | ||
412 | 794 | align 4 |
|
413 | proc edit_box_set_text, edit:dword, text:dword |
795 | proc edit_box_set_text, edit:dword, text:dword |
414 | pushad |
796 | pushad |
415 | mov edi,[edit] |
797 | mov edi,[edit] |
416 | mov ecx,ed_max |
798 | mov ecx,ed_max |
Line 431... | Line 813... | ||
431 | repne movsb |
813 | repne movsb |
432 | mov byte[edi],0 |
814 | mov byte[edi],0 |
433 | popad |
815 | popad |
434 | ret |
816 | ret |
435 | endp |
817 | endp |
436 | } |
- | |
Line -... | Line 818... | ||
- | 818 | ||
- | 819 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
|
437 | 820 | ;ãªæ¨¨ ¤«ï à ¡®âë á key |
|
438 | macro use_key_func |
821 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
439 | { |
822 | |
440 | ;¡à ¡®âª Shift ¤«ï áïâ¨ï ¢ë¤¥«¥¨ï ¥¨§¢¥á⮩ ®¡« á⨠|
823 | ;¡à ¡®âª Shift ¤«ï áïâ¨ï ¢ë¤¥«¥¨ï ¥¨§¢¥á⮩ ®¡« á⨠|
441 | edit_box_key.shift: |
824 | edit_box_key.shift: |
442 | call edit_box.draw_bg |
825 | call edit_box.draw_bg |
443 | test word ed_flags,ed_shift |
826 | test word ed_flags,ed_shift |
Line 761... | Line 1144... | ||
761 | ;;;;;;;;;;;;;;;;;; |
1144 | ;;;;;;;;;;;;;;;;;; |
762 | ;;஢¥àª ¦ â «¨ shift |
1145 | ;;஢¥àª ¦ â «¨ shift |
763 | ;;;;;;;;;;;;;;;;;; |
1146 | ;;;;;;;;;;;;;;;;;; |
764 | edit_box_key.check_shift_ctrl_alt: |
1147 | edit_box_key.check_shift_ctrl_alt: |
765 | pusha |
1148 | pusha |
766 | mcall 66,3 |
1149 | mcall SF_KEYBOARD,SSF_GET_CONTROL_KEYS |
767 | test al,11b |
1150 | test al,11b |
768 | je @f |
1151 | je @f |
769 | or word ed_flags,ed_shift ;ãáâ ®¢¨¬ ä« £ Shift |
1152 | or word ed_flags,ed_shift ;ãáâ ®¢¨¬ ä« £ Shift |
770 | @@: |
1153 | @@: |
771 | and word ed_flags,ed_ctrl_off ; ®ç¨á⨬ ä« £ Ctrl |
1154 | and word ed_flags,ed_ctrl_off ; ®ç¨á⨬ ä« £ Ctrl |
Line 778... | Line 1161... | ||
778 | je @f |
1161 | je @f |
779 | or word ed_flags,ed_alt_on ;ãáâ ®¢¨¬ ä« £ Alt |
1162 | or word ed_flags,ed_alt_on ;ãáâ ®¢¨¬ ä« £ Alt |
780 | @@: |
1163 | @@: |
781 | popad |
1164 | popad |
782 | ret |
1165 | ret |
783 | } |
- | |
784 | - | ||
785 | macro use_key_no_process up,down,esc,enter,tab,numl,capsl,scrolll |
- | |
786 | { |
- | |
787 | if up eq |
- | |
788 | else |
- | |
789 | cmp ah,177 |
- | |
790 | jz edit_box.editbox_exit |
- | |
791 | end if |
- | |
792 | if down eq |
- | |
793 | else |
- | |
794 | cmp ah,178 |
- | |
795 | jz edit_box.editbox_exit |
- | |
796 | end if |
- | |
797 | if esc eq |
- | |
798 | else |
- | |
799 | cmp ah,27 ;ESC - ª« ¢¨è )) |
- | |
800 | jz edit_box.editbox_exit |
- | |
801 | end if |
- | |
802 | if enter eq |
- | |
803 | else |
- | |
804 | cmp ah,13 ;ENTER - ª« ¢¨è )) |
- | |
805 | jz edit_box.editbox_exit |
- | |
806 | end if |
- | |
807 | if tab eq |
- | |
808 | else |
- | |
809 | cmp ah,9 ;TAB - ª« ¢¨è )) |
- | |
810 | jz edit_box.editbox_exit |
- | |
811 | end if |
- | |
812 | if numl eq |
- | |
813 | else |
- | |
814 | cmp ah,4 ;Num Lock - ª« ¢¨è )) |
- | |
815 | jz edit_box.editbox_exit |
- | |
816 | end if |
- | |
817 | if capsl eq |
- | |
818 | else |
- | |
819 | cmp ah,2 ;Caps Lock - ª« ¢¨è )) |
- | |
820 | jz edit_box.editbox_exit |
- | |
821 | end if |
- | |
822 | if scrolll eq |
- | |
823 | else |
- | |
824 | cmp ah,1 ;Scroll Lock - ª« ¢¨è )) |
- | |
825 | jz edit_box.editbox_exit |
- | |
826 | end if |
- | |
827 | } |
- | |
828 | - | ||
829 | macro use_key_figures_only |
- | |
830 | { |
- | |
831 | test word ed_flags,ed_figure_only ; ⮫쪮 æ¨äàë? |
- | |
832 | jz @f |
- | |
833 | cmp ah,'0' |
- | |
834 | jb edit_box.editbox_exit |
- | |
835 | cmp ah,'9' |
- | |
836 | ja edit_box.editbox_exit |
- | |
837 | @@: |
- | |
838 | } |
- | |
839 | - | ||
840 | macro are_key_shift_press |
- | |
841 | { |
- | |
842 | test word ed_flags,ed_shift_on |
- | |
843 | je @f |
- | |
844 | ; edx = ed_size, ecx = ed_pos |
- | |
845 | push eax |
- | |
846 | mov edx,ed_size |
- | |
847 | mov ecx, ed_pos |
- | |
848 | pusha |
- | |
849 | ; clear input area |
- | |
850 | mov ebp,ed_color |
- | |
851 | movzx ebx, word ed_shift_pos |
- | |
852 | call edit_box_key.sh_cl_ |
- | |
853 | mov ebp,ed_size |
- | |
854 | call edit_box_key.clear_bg |
- | |
855 | popa |
- | |
856 | call edit_box_key.del_char |
- | |
857 | mov ebx,ed_size |
- | |
858 | sub bx,ed_shift_pos |
- | |
859 | mov ed_size,ebx |
- | |
860 | pop eax |
- | |
861 | @@: |
- | |
862 | } |
- | |
863 | - | ||
864 | macro are_key_cur_end |
- | |
865 | { |
- | |
866 | mov ecx,ed_size |
- | |
867 | mov edx, ed_max |
- | |
868 | test word ed_flags,ed_insert |
- | |
869 | jne @f |
- | |
870 | cmp ecx,edx |
- | |
871 | jae edit_box.editbox_exit |
- | |
872 | @@: mov ebx, ed_pos |
- | |
873 | cmp ebx,edx |
- | |
874 | jnl edit_box.editbox_exit |
- | |
875 | mov ecx,ed_size |
- | |
876 | push edi eax |
- | |
877 | mov ebp,edi |
- | |
878 | mov esi,ed_text |
- | |
879 | add esi,ecx |
- | |
880 | mov edi,esi |
- | |
881 | cmp ecx,ebx |
- | |
882 | je edit_box_key.In_k |
- | |
883 | test dword bp_flags,ed_insert |
- | |
884 | jne edit_box_key.ins_v |
- | |
885 | pusha |
- | |
886 | mov edi,ebp |
- | |
887 | mov ebp,ed_size |
- | |
888 | call edit_box_key.clear_bg |
- | |
889 | popa |
- | |
890 | sub ecx,ebx |
- | |
891 | inc edi |
- | |
892 | std |
- | |
893 | inc ecx |
- | |
894 | @@: |
- | |
895 | lodsb |
- | |
896 | stosb |
- | |
897 | loop @b |
- | |
898 | edit_box_key.In_k: |
- | |
899 | cld |
- | |
900 | pop eax |
- | |
901 | mov al,ah |
- | |
902 | stosb |
- | |
903 | pop edi |
- | |
904 | inc dword ed_size |
- | |
905 | inc dword ed_pos |
- | |
906 | call edit_box_key.draw_all2 |
- | |
907 | jmp edit_box_key.shift |
- | |
908 | } |
- | |
909 | - | ||
910 | macro use_work_key |
- | |
911 | { |
- | |
912 | edit_box_key.insert: |
- | |
913 | test word ed_flags,ed_insert |
- | |
914 | je @f |
- | |
915 | and word ed_flags,ed_insert_cl |
- | |
916 | jmp edit_box.editbox_exit |
- | |
917 | - | ||
918 | @@: or word ed_flags,ed_insert |
- | |
919 | jmp edit_box.editbox_exit |
- | |
920 | - | ||
921 | edit_box_key.ins_v: |
- | |
922 | dec dword bp_size |
- | |
923 | sub esi,ecx |
- | |
924 | add esi,ebx |
- | |
925 | mov edi,esi |
- | |
926 | pusha |
- | |
927 | mov edi,ebp |
- | |
928 | mov ebp,ed_pos |
- | |
929 | call edit_box_key.clear_bg |
- | |
930 | popa |
- | |
931 | jmp edit_box_key.In_k |
- | |
932 | - | ||
933 | edit_box_key.delete: |
- | |
934 | mov edx,ed_size |
- | |
935 | mov ecx,ed_pos |
- | |
936 | cmp edx,ecx |
- | |
937 | jg edit_box_key.bac_del |
- | |
938 | test word ed_flags,ed_shift_on |
- | |
939 | jne edit_box_key.del_bac |
- | |
940 | popad |
- | |
941 | ret 4 |
- | |
942 | - | ||
943 | edit_box_key.bac_del: |
- | |
944 | call edit_box_key.del_char |
- | |
945 | jmp edit_box_key.draw_all |
- | |
946 | - | ||
947 | edit_box_key.backspace: |
- | |
948 | test word ed_flags,ed_shift_on |
- | |
949 | jne edit_box_key.delete |
- | |
950 | mov ecx,ed_pos |
- | |
951 | test ecx,ecx |
- | |
952 | jnz edit_box_key.del_bac |
- | |
953 | popad |
- | |
954 | ret 4 |
- | |
955 | - | ||
956 | edit_box_key.del_bac: |
- | |
957 | mov edx,ed_size |
- | |
958 | cmp edx,ecx ;if ed_pos=ed_size |
- | |
959 | je @f |
- | |
960 | dec ecx |
- | |
961 | call edit_box_key.del_char |
- | |
962 | @@: test word ed_flags,ed_shift_on |
- | |
963 | jne edit_box_key.bac_del |
- | |
964 | dec dword ed_pos |
- | |
965 | edit_box_key.draw_all: |
- | |
966 | push edit_box_key.shift |
- | |
967 | test word ed_flags,ed_shift_on |
- | |
968 | je @f |
- | |
969 | movzx eax, word ed_shift_pos |
- | |
970 | mov ebx,ed_size |
- | |
971 | sub ebx,eax |
- | |
972 | mov ed_size,ebx |
- | |
973 | mov ebp,ed_color |
- | |
974 | call edit_box.clear_cursor |
- | |
975 | call edit_box.check_offset |
- | |
976 | jmp edit_box.draw_bg |
- | |
977 | - | ||
978 | @@: dec dword ed_size |
- | |
979 | edit_box_key.draw_all2: |
- | |
980 | and word ed_flags,ed_shift_cl |
- | |
981 | mov ebp,ed_color |
- | |
982 | call edit_box.clear_cursor |
- | |
983 | call edit_box.check_offset |
- | |
984 | mov ebp,ed_size |
- | |
985 | jmp edit_box_key.clear_bg |
- | |
986 | - | ||
987 | ;--- ¦ â ª« ¢¨è left --- |
- | |
988 | edit_box_key.left: |
- | |
989 | mov ebx,ed_pos |
- | |
990 | test ebx,ebx |
- | |
991 | jz edit_box_key.sh_st_of |
- | |
992 | or word ed_flags,ed_left_fl |
- | |
993 | call edit_box_key.sh_first_sh |
- | |
994 | dec dword ed_pos |
- | |
995 | call edit_box.draw_bg |
- | |
996 | call edit_box.draw_shift |
- | |
997 | call edit_box_key.sh_enable |
- | |
998 | jmp edit_box.draw_cursor_text |
- | |
999 | - | ||
1000 | ;--- ¦ â ª« ¢¨è right --- |
- | |
1001 | edit_box_key.right: |
- | |
1002 | mov ebx,ed_pos |
- | |
1003 | cmp ebx,ed_size |
- | |
1004 | je edit_box_key.sh_st_of |
- | |
1005 | and word ed_flags,ed_right_fl |
- | |
1006 | call edit_box_key.sh_first_sh |
- | |
1007 | inc dword ed_pos |
- | |
1008 | call edit_box.draw_bg |
- | |
1009 | call edit_box.draw_shift |
- | |
1010 | call edit_box_key.sh_enable |
- | |
1011 | jmp edit_box.draw_cursor_text |
- | |
1012 | - | ||
1013 | edit_box_key.home: |
- | |
1014 | mov ebx,ed_pos |
- | |
1015 | test ebx,ebx |
- | |
1016 | jz edit_box_key.sh_st_of |
- | |
1017 | call edit_box_key.sh_first_sh |
- | |
1018 | xor eax,eax |
- | |
1019 | mov ed_pos,eax |
- | |
1020 | call edit_box.draw_bg |
- | |
1021 | call edit_box.draw_shift |
- | |
1022 | call edit_box_key.sh_home_end |
- | |
1023 | jmp edit_box.draw_cursor_text |
- | |
Line 1024... | Line -... | ||
1024 | - | ||
1025 | ;--- ¦ â ª« ¢¨è end --- |
- | |
1026 | edit_box_key.end: |
- | |
1027 | mov ebx,ed_pos |
- | |
1028 | cmp ebx,ed_size |
- | |
1029 | je edit_box_key.sh_st_of |
- | |
1030 | call edit_box_key.sh_first_sh |
- | |
1031 | mov eax,ed_size |
- | |
1032 | mov ed_pos,eax |
- | |
1033 | call edit_box.draw_bg |
- | |
1034 | call edit_box.draw_shift |
- | |
1035 | call edit_box_key.sh_home_end |
- | |
1036 | jmp edit_box.draw_cursor_text |
- | |
1037 | - | ||
1038 | edit_box_key.ctrl_c: |
- | |
1039 | ; add memory area |
- | |
1040 | mov ecx,ed_size |
- | |
1041 | add ecx,3*4 |
- | |
1042 | mcall 68,12 |
- | |
1043 | ; building the clipboard slot header |
- | |
1044 | xor ecx,ecx |
- | |
1045 | mov [eax+4],ecx ; type 'text' |
- | |
1046 | inc ecx |
- | |
1047 | mov [eax+8],ecx ; cp866 text encoding |
- | |
1048 | mov ecx,ed_size |
- | |
1049 | add ecx,3*4 |
- | |
1050 | mov [eax],ecx |
- | |
1051 | sub ecx,3*4 |
- | |
1052 | ; copy data |
- | |
1053 | mov esi,ed_text |
- | |
1054 | push edi |
- | |
1055 | mov edi,eax |
- | |
1056 | add edi,3*4 |
- | |
1057 | cld |
- | |
1058 | rep movsb |
- | |
1059 | pop edi |
- | |
1060 | ; put slot to the kernel clipboard |
- | |
1061 | mov edx,eax |
- | |
1062 | mov ecx,[edx] |
- | |
1063 | push eax |
- | |
1064 | mcall 54,2 |
- | |
1065 | pop ecx |
1166 | |
1066 | ; remove unnecessary memory area |
- | |
1067 | mcall 68,13 |
- | |
1068 | .exit: |
- | |
1069 | jmp edit_box.editbox_exit |
- | |
1070 | - | ||
1071 | edit_box_key.ctrl_v: |
- | |
1072 | mcall 54,0 |
- | |
1073 | ; no slots of clipboard ? |
- | |
1074 | test eax,eax |
- | |
1075 | jz .exit |
- | |
1076 | ; main list area not found ? |
- | |
1077 | inc eax |
- | |
1078 | test eax,eax |
- | |
1079 | jz .exit |
- | |
1080 | sub eax,2 |
- | |
1081 | mov ecx,eax |
- | |
1082 | mcall 54,1 |
- | |
1083 | ; main list area not found ? |
- | |
1084 | inc eax |
- | |
1085 | test eax,eax |
- | |
1086 | jz .exit |
- | |
1087 | ; error ? |
- | |
1088 | sub eax,2 |
- | |
1089 | test eax,eax |
- | |
1090 | jz .exit |
- | |
1091 | inc eax |
- | |
1092 | ; check contents of container |
- | |
1093 | mov ebx,[eax+4] |
- | |
1094 | ; check for text |
- | |
1095 | test ebx,ebx |
- | |
1096 | jnz .no_valid_text |
- | |
1097 | mov ebx,[eax+8] |
- | |
1098 | ; check for cp866 |
- | |
1099 | cmp bl,1 |
- | |
1100 | jnz .no_valid_text |
- | |
1101 | mov ecx,[eax] |
- | |
1102 | sub ecx,3*4 |
- | |
1103 | cmp ecx,ed_max |
- | |
1104 | jb @f |
- | |
1105 | mov ecx,ed_max |
- | |
1106 | @@: |
- | |
1107 | mov esi,eax |
- | |
1108 | add esi,3*4 |
- | |
1109 | mov ed_size,ecx |
- | |
1110 | mov ed_pos,ecx |
- | |
1111 | push eax edi |
- | |
1112 | mov edi,ed_text |
- | |
1113 | cld |
- | |
1114 | @@: |
- | |
1115 | lodsb |
- | |
1116 | cmp al,0x0d ; EOS (end of string) |
- | |
1117 | je .replace |
1167 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
1118 | cmp al,0x0a ; EOS (end of string) |
- | |
1119 | jne .continue |
- | |
1120 | .replace: |
1168 | ;ãªæ¨¨ ¤«ï à ¡®âë á mouse |
1121 | mov al,0x20 ; space |
- | |
1122 | .continue: |
- | |
1123 | stosb |
- | |
1124 | dec ecx |
- | |
1125 | jnz @b |
- | |
1126 | pop edi eax |
- | |
1127 | .no_valid_text: |
- | |
1128 | ; remove unnecessary memory area |
- | |
1129 | mov ecx,eax |
- | |
1130 | mcall 68,13 |
- | |
1131 | .exit: |
- | |
1132 | jmp edit_box.draw_bg_cursor_text |
- | |
1133 | } |
- | |
1134 | - | ||
1135 | macro use_mouse_func |
- | |
1136 | { |
1169 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
1137 | edit_box_mouse.mouse_wigwag: |
1170 | edit_box_mouse.mouse_wigwag: |
1138 | push eax |
1171 | push eax |
1139 | call edit_box.draw_bg |
1172 | call edit_box.draw_bg |
1140 | call edit_box.draw_shift |
1173 | call edit_box.draw_shift |
Line 1212... | Line 1245... | ||
1212 | mov ebp,shift_color |
1245 | mov ebp,shift_color |
1213 | push eax |
1246 | push eax |
1214 | call edit_box_key.sh_cl_ |
1247 | call edit_box_key.sh_cl_ |
1215 | pop eax |
1248 | pop eax |
1216 | jmp edit_box_mouse.mdraw |
1249 | jmp edit_box_mouse.mdraw |
1217 | } |
- | |
1218 | - | ||
1219 | macro use_work_mouse |
- | |
1220 | ; ¥ 㤥ন¢ ¥¬ «¨ ¬ë ª« ¢¨èã ¬ë誨, ¯¥à¥¬¥é ï ªãàá®à? |
- | |
1221 | { |
- | |
1222 | test word ed_flags,ed_mouse_on |
- | |
1223 | jne edit_box_mouse.mouse_wigwag |
- | |
1224 | ; ¯à®¢¥à塞, ¯®¯ ¤ ¥â «¨ ªãàá®à ¢ edit box |
- | |
1225 | mov ebx,ed_top |
- | |
1226 | cmp ax,bx |
- | |
1227 | jl edit_box_mouse._blur |
- | |
1228 | add ebx,ed_height |
- | |
1229 | cmp ax,bx |
- | |
1230 | jg edit_box_mouse._blur |
- | |
1231 | shr eax,16 |
- | |
1232 | mov ebx,ed_left |
- | |
1233 | cmp ax,bx |
- | |
1234 | jl edit_box_mouse._blur |
- | |
1235 | add ebx,ed_width |
- | |
1236 | cmp ax,bx |
- | |
1237 | jg edit_box_mouse._blur |
- | |
1238 | ; ¨§¬¥ï¥¬ ¯®§¨æ¨î ªãàá®à |
- | |
1239 | push eax |
- | |
1240 | mov ebp,ed_color |
- | |
1241 | call edit_box.clear_cursor |
- | |
1242 | pop eax |
- | |
1243 | edit_box_mouse._mvpos: |
- | |
1244 | xor edx,edx |
- | |
1245 | sub eax,ed_left |
- | |
1246 | div word ed_char_width |
- | |
1247 | add eax,ed_offset |
- | |
1248 | cmp eax,ed_size |
- | |
1249 | jna edit_box_mouse._mshift |
- | |
1250 | mov eax,ed_size |
- | |
1251 | edit_box_mouse._mshift: |
- | |
1252 | ; ᥪæ¨ï ®¡à ¡®âª¨ shift ¨ ¢ë¤¥«¥¨ï ¯® shift |
- | |
1253 | test word ed_flags,ed_shift_bac |
- | |
1254 | je @f |
- | |
1255 | mov ebp,ed_color |
- | |
1256 | movzx ebx, word ed_shift_pos |
- | |
1257 | push eax |
- | |
1258 | call edit_box_key.sh_cl_ |
- | |
1259 | and word ed_flags,ed_shift_bac_cl |
- | |
1260 | pop eax |
- | |
1261 | @@: |
- | |
1262 | test word ed_flags,ed_mouse_on |
- | |
1263 | jne @f |
- | |
1264 | mov ed_shift_pos,ax |
- | |
1265 | or word ed_flags,ed_mouse_on |
- | |
1266 | mov ed_pos,eax |
- | |
1267 | mov ebx,ed_mouse_variable |
- | |
1268 | push edi |
- | |
1269 | pop dword [ebx] |
- | |
1270 | bts word ed_flags,1 |
- | |
1271 | call edit_box.draw_bg |
- | |
1272 | jmp edit_box_mouse.m_sh |
- | |
1273 | - | ||
1274 | @@: cmp ax,ed_shift_pos |
- | |
1275 | je edit_box.editbox_exit |
- | |
1276 | mov ed_pos,eax |
- | |
1277 | call edit_box.draw_bg |
- | |
1278 | mov ebp,shift_color |
- | |
1279 | movzx ebx, word ed_shift_pos |
- | |
1280 | call edit_box_key.sh_cl_ |
- | |
1281 | or word ed_flags,ed_mous_adn_b |
- | |
1282 | edit_box_mouse.m_sh: |
- | |
1283 | call edit_box.draw_text |
- | |
1284 | call edit_box.draw_cursor |
- | |
1285 | ; ¯à®æ¥¤ãà ãáâ ®¢ª¨ 䮪ãá |
- | |
1286 | jmp edit_box_mouse.drc |
- | |
Line 1287... | Line -... | ||
1287 | - | ||
1288 | edit_box_mouse._blur: |
- | |
1289 | test word ed_flags,ed_always_focus |
- | |
1290 | jne edit_box.editbox_exit |
- | |
1291 | btr word ed_flags,1 ; ¥á«¨ ¥ ¢ 䮪ãá¥, ¢ë室¨¬ |
- | |
1292 | jnc edit_box.editbox_exit |
- | |
1293 | mov ebp,ed_color |
- | |
1294 | call edit_box.clear_cursor |
- | |
1295 | edit_box_mouse.drc: |
- | |
1296 | call edit_box.draw_border |
- | |
1297 | jmp edit_box.editbox_exit |
- | |
1298 | } |
- | |
1299 | - | ||
1300 | macro debug |
- | |
1301 | { |
- | |
1302 | ;----------- ®â« ¤ª |
- | |
1303 | pushad |
- | |
1304 | mov eax,dword [ed_buffer.2] |
- | |
1305 | mov edi,ed_buffer.3 |
- | |
1306 | call .str |
- | |
1307 | ;à¨á®¢ ¨¥ ä® |
- | |
1308 | mov eax,13 |
- | |
1309 | mov ebx,178*65536+70 |
- | |
1310 | mov ecx,28*65536+10 |
- | |
1311 | xor edx,edx |
- | |
1312 | int 0x40 |
- | |
1313 | ;¢ë¢®¤ § 票ï íªà |
- | |
1314 | mov eax,4 |
- | |
1315 | mov ebx,180*65536+30 |
- | |
1316 | mov ecx,0x10DDBBCC |
- | |
1317 | mov edx,ed_buffer.3 |
- | |
1318 | mov esi,8 |
- | |
1319 | int 0x40 |
- | |
1320 | popad |
- | |
1321 | ;----------- ®â« ¤ª |
- | |
1322 | } |
- | |
1323 | macro debug_func |
- | |
1324 | { |
- | |
1325 | .str: |
- | |
1326 | mov ecx,0x0a ;§ ¤ ¥âáï á¨á⥬ áç¨á«¥¨ï, ¨§¬¥ïîâáï ॣ¨áâàë ebx,eax,ecx,edx, ¢å®¤ë¥ ¯ à ¬¥âàë eax - ç¨á«® |
- | |
1327 | ;¯¥à¥¢®¤ ç¨á« ¢ ASCII áâபã, ¢å®¤ë¥ ¤ ë¥ ecx=á¨á⥬ áç¨á«¥¨ï, edi ¤à¥á ªã¤ ¡ã¤¥¬ § ¯¨áë¢ âì áâபã, ¯à¨ç¥¬ ª®¥æ ¯¥à¥¬¥®© |
- | |
1328 | cmp eax,ecx ;áà ¢¨âì, ¥á«¨ ¢ eax ¬¥ìè¥, 祬 ¢ ecx, â® ¯¥à¥©â¨ @@-1 â.¥. pop eax |
- | |
1329 | jb @f |
- | |
1330 | xor edx,edx ;®ç¨áâ¨âì edx |
- | |
1331 | div ecx ;à §¤¥«¨âì - ®áâ ⮪ ¢ edx |
- | |
1332 | push edx ;¯®«®¦¨âì ¢ á⥪ |
- | |
1333 | ;dec edi ;ᬥ饨¥ ¥®¡å®¤¨¬®¥ ¤«ï § ¯¨á¨ á ª®æ áâப¨ |
- | |
1334 | call .str ;¯¥à¥©â¨ á ¬ã ᥡï â.¥. ¢ë§¢ âì á ¬ã á¥¡ï ¨ â ª ¤® ⮣® ¬®¬¥â , ¯®ª ¢ eax ¥ á⠥⠬¥ìè¥ ç¥¬ ¢ ecx |
- | |
1335 | pop eax |
- | |
1336 | @@: ;cmp al,10 ;¯à®¢¥à¨âì ¥ ¬¥ìè¥ «¨ § 票¥ ¢ al, 祬 10 (¤«ï á¨á⥬ë áç¨á«¥¨ï 10 ¤ ï ª®¬ ¤ - «¨è ï)) |
- | |
1337 | ;sbb al,$69 ;- ç¥áâ®, ¤ ï ¨áâàãªæ¨ï ¬¥ï § áâ ¢«ï¥â § ¤ã¬ âìáï â.¥. ï ¥ § î ª ª íâ® à ¡®â ¥â |
- | |
1338 | ;das ;¯®á«¥ ¤ ®© ª®¬ ¤ë ª ª ¡ë ¯à®¨á室¨â 㬥ì襨¥ al 66h (¢ ª¨£¥ ¯¨á ® ¤à㣮¥) |
- | |
1339 | or al,0x30 ;¤ ï ª®¬ ¤ ª®à®ç¥, 祬 ¤¢¥ ¢ëè¥ |
- | |
1340 | stosb ;§ ¯¨á âì í«¥¬¥â ¨§ ॣ¨áâà al ¢ ï祩ªã ¯ ¬ï⨠es:edi |
- | |
1341 | - | ||
1342 | ret ;¢¥àãâìáï ®ç¥ì ¨â¥à¥áë© å®¤, â.ª. ¯®ª ¢ á⥪¥ åà ¨âáï ª®«-¢® ¢ë§®¢®¢, â® á⮫쪮 à § ¬ë ¨ ¡ã¤¥¬ ¢ë§ë¢ âìáï |
- | |
Line 1343... | Line 1250... | ||
1343 | } |
1250 |