Subversion Repositories Kolibri OS

Rev

Rev 3358 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 3358 Rev 4601
Line 6... Line 6...
6
macro use_editbox_draw
6
macro use_editbox_draw
7
{
7
{
8
edit_box:
8
edit_box:
9
.draw:
9
.draw:
10
        pushad
10
        pushad
-
 
11
.draw_1:	
11
;--- à¨á㥬 à ¬ªã ---
12
;--- à¨á㥬 à ¬ªã ---
12
        mov     edi,dword [esp+36]
13
        mov     edi,dword [esp+36]
13
        call    .draw_border            ; ”ã­ªæ¨ï áâ ¡¨«ì­ 
14
        call    .draw_border            ; ”ã­ªæ¨ï áâ ¡¨«ì­ 
14
.draw_bg_cursor_text:
15
.draw_bg_cursor_text:
15
;--- ¨§¬¥­ï¥¬ ᬥ饭¨¥, ¥á«¨ ­ ¤® ---
16
;--- ¨§¬¥­ï¥¬ ᬥ饭¨¥, ¥á«¨ ­ ¤® ---
Line 66... Line 67...
66
@@:
67
@@:
67
	pop	ebx
68
	pop	ebx
68
	pop	eax
69
	pop	eax
69
;--------------------------------------
70
;--------------------------------------
70
;à®¢¥àª  ­ ¦ â shift ?
71
;à®¢¥àª  ­ ¦ â shift ?
71
        call    edit_box_key.check_shift
72
        call    edit_box_key.check_shift_ctrl_alt
72
;----------------------------------------------------------
73
;----------------------------------------------------------
73
;--- ¯à®¢¥à塞, çâ® ­ ¦ â® --------------------------------
74
;--- ¯à®¢¥à塞, çâ® ­ ¦ â® --------------------------------
74
;----------------------------------------------------------
75
;----------------------------------------------------------
75
        cmp     ah,8
76
        cmp     ah,8
76
        jz      edit_box_key.backspace
77
        jz      edit_box_key.backspace
Line 84... Line 85...
84
        jz      edit_box_key.home
85
        jz      edit_box_key.home
85
        cmp     ah,181
86
        cmp     ah,181
86
        jz      edit_box_key.end
87
        jz      edit_box_key.end
87
        cmp     ah,185  ;insert
88
        cmp     ah,185  ;insert
88
        jz      edit_box_key.insert
89
        jz      edit_box_key.insert
-
 
90
; ª®¬¡¨­ æ¨¨ Ctrl + ª« ¢¨è 
-
 
91
        test    word ed_flags,ed_ctrl_on
-
 
92
        jz     	@f
-
 
93
; ¯à®¢¥àª  ᪠­ª®¤ 
-
 
94
        ror     eax,8
-
 
95
        cmp     ah,46 ; Ctrl + C
-
 
96
        je      edit_box_key.ctrl_c
-
 
97
        cmp     ah,47 ; Ctrl + V
-
 
98
        je      edit_box_key.ctrl_v
-
 
99
	rol     eax,8
-
 
100
@@:
89
;;;;;;;;;;;;;;;;;;;;;;;;;;;;
101
;;;;;;;;;;;;;;;;;;;;;;;;;;;;
90
;‡ £«ã誠 ­  ®¡à ¡®âªã ª« ¢¨è ¢¢¥àå ¨ ¢­¨§ â.¥. ¯à¨ ®¡­ à㦥­¨¨ íâ¨å ª®¤®¢ ¯à®¨á室¨â ¢ë室 ¨§ ®¡à ¡®â稪 
102
;‡ £«ã誠 ­  ®¡à ¡®âªã ª« ¢¨è ¢¢¥àå ¨ ¢­¨§ â.¥. ¯à¨ ®¡­ à㦥­¨¨ íâ¨å ª®¤®¢ ¯à®¨á室¨â ¢ë室 ¨§ ®¡à ¡®â稪 
91
;;;;;;;;;;;;;;;;;;;;;;;;;;;;
103
;;;;;;;;;;;;;;;;;;;;;;;;;;;;
92
use_key_no_process   up,down,esc,enter,tab,numl,capsl,scrolll
104
use_key_no_process   up,down,esc,enter,tab,numl,capsl,scrolll
93
;--- ­ ¦ â  ¤àã£ ï ª« ¢¨è  ---
105
;--- ­ ¦ â  ¤àã£ ï ª« ¢¨è  ---
Line 777... Line 789...
777
        call    edit_box.draw_bg_eax
789
        call    edit_box.draw_bg_eax
778
        ret
790
        ret
779
;;;;;;;;;;;;;;;;;;
791
;;;;;;;;;;;;;;;;;;
780
;;à®¢¥àª  ­ ¦ â «¨ shift
792
;;à®¢¥àª  ­ ¦ â «¨ shift
781
;;;;;;;;;;;;;;;;;;
793
;;;;;;;;;;;;;;;;;;
782
edit_box_key.check_shift:
794
edit_box_key.check_shift_ctrl_alt:
783
pusha   ;á®åà ­¨¬ ¢á¥ ॣ¨áâàë
795
pusha   ;á®åà ­¨¬ ¢á¥ ॣ¨áâàë
784
        mcall   66,3
796
        mcall   66,3
785
        test    al,0x03
797
        test    al,11b
-
 
798
        je      @f
-
 
799
        or      word ed_flags,ed_shift   ;ãáâ ­®¢¨¬ ä« £ Shift
-
 
800
@@:
-
 
801
        and     word ed_flags,ed_ctrl_off ; ®ç¨á⨬ ä« £ Ctrl
-
 
802
	test    al,1100b
-
 
803
        je      @f
-
 
804
        or      word ed_flags,ed_ctrl_on   ;ãáâ ­®¢¨¬ ä« £ Ctrl
-
 
805
@@:
-
 
806
        and     word ed_flags,ed_alt_off ; ®ç¨á⨬ ä« £ Alt
-
 
807
	test    al,110000b
786
        je      @f
808
        je      @f
787
        or      word ed_flags,ed_shift   ;ãáâ ­®¢¨¬ ä« £
809
        or      word ed_flags,ed_alt_on   ;ãáâ ­®¢¨¬ ä« £ Alt
788
@@:edit_ex
810
@@:edit_ex
789
}
811
}
Line 790... Line 812...
790
 
812
 
791
macro use_key_no_process  up,down,esc,enter,tab,numl,capsl,scrolll
813
macro use_key_no_process  up,down,esc,enter,tab,numl,capsl,scrolll
Line 1050... Line 1072...
1050
        call    edit_box_key.sh_first_sh
1072
        call    edit_box_key.sh_first_sh
1051
        mov     eax,ed_size
1073
        mov     eax,ed_size
1052
        mov     ed_pos,eax
1074
        mov     ed_pos,eax
1053
        call    edit_box_key.sh_home_end
1075
        call    edit_box_key.sh_home_end
1054
        jmp     edit_box.draw_cursor_text
1076
        jmp     edit_box.draw_cursor_text
-
 
1077
;-----------------------------------------------------------------------------
-
 
1078
edit_box_key.ctrl_c:
-
 
1079
; add memory area
-
 
1080
	mov	ecx,ed_size
-
 
1081
	add	ecx,3*4
-
 
1082
	mcall	68,12
-
 
1083
; building the clipboard slot header
-
 
1084
	xor	ecx,ecx
-
 
1085
	mov	[eax+4],ecx ; type 'text'
-
 
1086
	inc	ecx
-
 
1087
	mov	[eax+8],ecx ; cp866 text encoding
-
 
1088
	mov	ecx,ed_size
-
 
1089
	add	ecx,3*4
-
 
1090
	mov	[eax],ecx
-
 
1091
	sub	ecx,3*4
-
 
1092
; copy data
-
 
1093
	mov	esi,ed_text
-
 
1094
	push	edi
-
 
1095
	mov	edi,eax
-
 
1096
	add	edi,3*4
-
 
1097
	cld
-
 
1098
	rep	movsb
-
 
1099
	pop	edi
-
 
1100
; put slot to the kernel clipboard
-
 
1101
	mov	edx,eax
-
 
1102
	mov	ecx,[edx]
-
 
1103
	push	eax
-
 
1104
	mcall	54,2
-
 
1105
	pop	ecx
-
 
1106
; remove unnecessary memory area
-
 
1107
	mcall	68,13
-
 
1108
;--------------------------------------
-
 
1109
.exit:
-
 
1110
        jmp     edit_box.editbox_exit
-
 
1111
;-----------------------------------------------------------------------------
-
 
1112
edit_box_key.ctrl_v:
-
 
1113
	mcall	54,0
-
 
1114
; no slots of clipboard ?
-
 
1115
	test	eax,eax
-
 
1116
	jz	.exit
-
 
1117
; main list area not found ?	
-
 
1118
	inc	eax
-
 
1119
	test	eax,eax
-
 
1120
	jz	.exit
-
 
1121
 
-
 
1122
	sub	eax,2
-
 
1123
	mov	ecx,eax
-
 
1124
	mcall	54,1
-
 
1125
; main list area not found ?
-
 
1126
	inc	eax
-
 
1127
	test	eax,eax
-
 
1128
	jz	.exit
-
 
1129
; error ?
-
 
1130
	sub	eax,2
-
 
1131
	test	eax,eax
-
 
1132
	jz	.exit
-
 
1133
 
-
 
1134
	inc	eax
-
 
1135
; check contents of container
-
 
1136
	mov	ebx,[eax+4]
-
 
1137
; check for text
-
 
1138
	test	ebx,ebx
-
 
1139
	jnz	.no_valid_text
-
 
1140
	
-
 
1141
	mov	ebx,[eax+8]
-
 
1142
; check for cp866
-
 
1143
	cmp	bl,1
-
 
1144
	jnz	.no_valid_text
-
 
1145
	
-
 
1146
	mov	ecx,[eax]
-
 
1147
	sub	ecx,3*4
-
 
1148
	cmp	ecx,ed_max
-
 
1149
	jb	@f
-
 
1150
	
-
 
1151
	mov	ecx,ed_max
-
 
1152
@@:
-
 
1153
	mov	esi,eax
-
 
1154
	add	esi,3*4
-
 
1155
	mov	ed_size,ecx
-
 
1156
	mov	ed_pos,ecx
-
 
1157
	push	eax edi
-
 
1158
	mov	edi,ed_text
-
 
1159
	cld
-
 
1160
@@:
-
 
1161
	lodsb
-
 
1162
	cmp	al,0x0d	; EOS (end of string)
-
 
1163
	je	.replace	
-
 
1164
 
-
 
1165
	cmp	al,0x0a ; EOS (end of string)
-
 
1166
	jne	.continue
-
 
1167
.replace:
-
 
1168
	mov	al,0x20 ; space
-
 
1169
.continue:	
-
 
1170
	stosb
-
 
1171
	dec	ecx
-
 
1172
	jnz	@b
-
 
1173
;	rep	movsb
-
 
1174
	pop	edi eax
-
 
1175
;--------------------------------------	
-
 
1176
.no_valid_text:
-
 
1177
; remove unnecessary memory area
-
 
1178
	mov	ecx,eax
-
 
1179
	mcall	68,13
-
 
1180
;--------------------------------------
-
 
1181
.exit:
-
 
1182
        jmp     edit_box.draw_1
1055
}
1183
}
Line 1056... Line 1184...
1056
 
1184
 
1057
macro use_mouse_func
1185
macro use_mouse_func
1058
{
1186
{