Subversion Repositories Kolibri OS

Rev

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