Subversion Repositories Kolibri OS

Rev

Rev 7577 | Rev 7583 | Go to most recent revision | Only display areas with differences | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 7577 Rev 7579
1
; ¬ ªà®á ¤«ï á¨á⥬­®© ¡¨¡«¨®â¥ª¨ box_lib.obj
1
; ¬ ªà®á ¤«ï á¨á⥬­®© ¡¨¡«¨®â¥ª¨ box_lib.obj
2
; í«¥¬¥­â TextEditor ¤«ï Kolibri OS
2
; í«¥¬¥­â TextEditor ¤«ï Kolibri OS
3
; ä ©« ¯®á«¥¤­¨© à § ¨§¬¥­ï«áï 21.10.2018 IgorA
3
; ä ©« ¯®á«¥¤­¨© à § ¨§¬¥­ï«áï 29.01.2019 IgorA
4
; ­  ª®¤ ¯à¨¬¥­¥­  GPL2 «¨æ¥­§¨ï
4
; ­  ª®¤ ¯à¨¬¥­¥­  GPL2 «¨æ¥­§¨ï
5
 
5
 
6
;input:
6
;input:
7
; edi = pointer to tedit struct
7
; edi = pointer to tedit struct
8
; reg = index
8
; reg = index
9
;output:
9
;output:
10
; reg = pointer to 'tex' struct
10
; reg = pointer to 'tex' struct
11
macro ConvertIndexToPointer reg {
11
macro ConvertIndexToPointer reg {
12
	imul reg,sizeof.symbol
12
	imul reg,sizeof.symbol
13
	add reg,ted_tex
13
	add reg,ted_tex
14
}
14
}
15
 
15
 
16
;--- out_reg = ted_key_words_data[ind_reg].Text[0] ---
16
;--- out_reg = ted_key_words_data[ind_reg].Text[0] ---
17
macro ColToIndexOffset ind_reg,out_reg {
17
macro ColToIndexOffset ind_reg,out_reg {
18
	mov out_reg,ind_reg
18
	mov out_reg,ind_reg
19
	imul out_reg,sizeof.TexColViv
19
	imul out_reg,sizeof.TexColViv
20
	add out_reg,ted_key_words_data
20
	add out_reg,ted_key_words_data
21
}
21
}
22
 
-
 
23
TED_PANEL_NULL	 equ 0 ;­¥â ®âªàë⮩ ¯ ­¥«¨
-
 
24
TED_PANEL_FIND	 equ 1 ;¯ ­¥«ì ¯®¨áª 
-
 
25
TED_PANEL_SYNTAX equ 2 ;¯ ­¥«ì ¢ë¡®à  ä ©«®¢ ¯®¤á¢¥âª¨
-
 
26
TED_PANEL_REPLACE equ 3 ;¯ ­¥«ì § ¬¥­ë
-
 
27
TED_PANEL_WIDTH  equ 150 ;è¨à¨­  ¯ ­¥«¨
-
 
28
 
22
 
29
TED_LINES_IN_NEW_FILE equ 30 ;ç¨á«® áâப ¢ ­®¢®¬ ä ©«¥
23
TED_LINES_IN_NEW_FILE equ 30 ;ç¨á«® áâப ¢ ­®¢®¬ ä ©«¥
30
MAX_COLOR_WORD_LEN equ 40
24
MAX_COLOR_WORD_LEN equ 40
31
;------------------------------------------------------------------------------
25
;------------------------------------------------------------------------------
32
struct TexSelect
26
struct TexSelect
33
	x0 dd ?
27
	x0 dd ?
34
	y0 dd ?
28
	y0 dd ?
35
	x1 dd ?
29
	x1 dd ?
36
	y1 dd ?
30
	y1 dd ?
37
ends
31
ends
38
 
32
 
39
struct TexColViv
33
struct TexColViv
40
	Text  rb MAX_COLOR_WORD_LEN ; á«®¢® ¤«ï ¯®¤á¢¥âª¨
34
	Text  rb MAX_COLOR_WORD_LEN ; á«®¢® ¤«ï ¯®¤á¢¥âª¨
41
	f1    dd 0 ; á¯à ¢ª  ¯® á«®¢ã
35
	f1    dd 0 ; á¯à ¢ª  ¯® á«®¢ã
42
	flags db ? ; f1+4 ä« £¨ ¨á¯®«ì§ã¥¬ë¥ ¯à¨ ¢ë¤¥«¥­¨¨
36
	flags db ? ; f1+4 ä« £¨ ¨á¯®«ì§ã¥¬ë¥ ¯à¨ ¢ë¤¥«¥­¨¨
43
	endc  db ? ; f1+5 ᨬ¢®« ª®­æ  ¢ë¤¥«¥­¨ï (¨á¯®«ì§ã¥âáï ¯à¨ flags&4)
37
	endc  db ? ; f1+5 ᨬ¢®« ª®­æ  ¢ë¤¥«¥­¨ï (¨á¯®«ì§ã¥âáï ¯à¨ flags&4)
44
	escc  db ? ; f1+6 íªà ­¨àãî騩 ᨬ¢®« (¨á¯®«ì§ã¥âáï ¯à¨ flags&4)
38
	escc  db ? ; f1+6 íªà ­¨àãî騩 ᨬ¢®« (¨á¯®«ì§ã¥âáï ¯à¨ flags&4)
45
	color db ? ; f1+7 ­®¬¥à 梥â 
39
	color db ? ; f1+7 ­®¬¥à 梥â 
46
ends
40
ends
47
 
41
 
48
struct symbol
42
struct symbol
49
	c db ?    ;  +0 ᨬ¢®«
43
	c db ?    ;  +0 ᨬ¢®«
50
	col db ?  ;  +1 梥â
44
	col db ?  ;  +1 梥â
51
	perv dd ? ;  +2
45
	perv dd ? ;  +2
52
	next dd ? ;  +6 㪠§ â¥«¨
46
	next dd ? ;  +6 㪠§ â¥«¨
53
	tc dd ?   ; +10 ¢à¥¬. ᮧ¤ ­¨ï
47
	tc dd ?   ; +10 ¢à¥¬. ᮧ¤ ­¨ï
54
	td dd ?   ; +14 ¢à¥¬. 㤠«¥­¨ï
48
	td dd ?   ; +14 ¢à¥¬. 㤠«¥­¨ï
55
ends
49
ends
56
;------------------------------------------------------------------------------
50
;------------------------------------------------------------------------------
57
 
51
 
58
ted_symbol_space db 32 ;ascii ª®¤ ¯à®¡¥« , ¨­®£¤  ¡ë¢ ¥â ­ã¦¥­ ¢ ª®¤¥
52
ted_symbol_space db 32 ;ascii ª®¤ ¯à®¡¥« , ¨­®£¤  ¡ë¢ ¥â ­ã¦¥­ ¢ ª®¤¥
59
ted_symbol_tab db 26 ;ascii ª®¤ áâ५ª¨ ¢¯à ¢®, ¨á¯®«ì§ã¥âáï ¤«ï à¨á®¢ ­¨ï â ¡ã«ï樨 ¢ ०¨¬¥ ¯®ª §  ­¥¢¨¤¨¬ëå ᨬ¢®«®¢
53
ted_symbol_tab db 26 ;ascii ª®¤ áâ५ª¨ ¢¯à ¢®, ¨á¯®«ì§ã¥âáï ¤«ï à¨á®¢ ­¨ï â ¡ã«ï樨 ¢ ०¨¬¥ ¯®ª §  ­¥¢¨¤¨¬ëå ᨬ¢®«®¢
60
 
54
 
61
if lang eq ru
55
if lang eq ru
62
 
56
 
63
txtRow db '‘âப ',0
57
txtRow db '‘âப ',0
64
txtCol db '‡­ ª',0
58
txtCol db '‡­ ª',0
65
txtOtm db 'Žâ¬¥­ë',0
59
txtOtm db 'Žâ¬¥­ë',0
66
txtBuf db 'ãä¥à:',0
60
txtBuf db 'ãä¥à:',0
67
 
61
 
68
else
62
else
69
 
63
 
70
txtRow db 'Rows',0
64
txtRow db 'Rows',0
71
txtCol db 'Cols',0
65
txtCol db 'Cols',0
72
txtOtm db 'Undo',0
66
txtOtm db 'Undo',0
73
txtBuf db 'Buffer:',0
67
txtBuf db 'Buffer:',0
74
 
68
 
75
end if
69
end if
76
 
70
 
77
;EvChar - â ¡«¨æ  ¤«ï 䨫ìâ஢ ­¨ï ¤®¡ ¢«ï¥¬ëå ᨬ¢®«®¢, çâ®-¡ë ­¥ ¯®¯ «¨ «¨è­¨¥ §­ ª¨
71
;EvChar - â ¡«¨æ  ¤«ï 䨫ìâ஢ ­¨ï ¤®¡ ¢«ï¥¬ëå ᨬ¢®«®¢, çâ®-¡ë ­¥ ¯®¯ «¨ «¨è­¨¥ §­ ª¨
78
align 16
72
align 16
79
EvChar db 0,0,0,0,0,0,0,0,0,1,0,0,0,1,0,0
73
EvChar db 0,0,0,0,0,0,0,0,0,1,0,0,0,1,0,0
80
    db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
74
    db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
81
    db 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
75
    db 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
82
    db 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
76
    db 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
83
    db 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
77
    db 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
84
    db 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
78
    db 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
85
    db 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
79
    db 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
86
    db 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0
80
    db 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0
87
    db 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
81
    db 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
88
    db 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
82
    db 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
89
    db 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
83
    db 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
90
    db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
84
    db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
91
    db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
85
    db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
92
    db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
86
    db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
93
    db 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
87
    db 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
94
    db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
88
    db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
95
 
89
 
96
KM_SHIFT equ 0x00010000
90
KM_SHIFT equ 0x00010000
97
KM_CTRL equ 0x00020000
91
KM_CTRL equ 0x00020000
98
KM_ALT equ 0x00040000
92
KM_ALT equ 0x00040000
99
KM_NUMLOCK equ 0x00080000
93
KM_NUMLOCK equ 0x00080000
100
 
94
 
101
; KEY CODES
95
; KEY CODES
102
KEY_F1 equ 0x0000003B
96
KEY_F1 equ 0x0000003B
103
KEY_F2 equ 0x0000003C
97
KEY_F2 equ 0x0000003C
104
KEY_F3 equ 0x0000003D
98
KEY_F3 equ 0x0000003D
105
 
99
 
106
 
100
 
107
 
101
 
108
align 16
102
align 16
109
proc ted_init uses eax ecx edi, edit:dword
103
proc ted_init uses eax ecx edi, edit:dword
110
	mov edi,[edit]
104
	mov edi,[edit]
111
 
105
 
112
	mov ecx,sizeof.symbol
106
	mov ecx,sizeof.symbol
113
	imul ecx,ted_max_chars
107
	imul ecx,ted_max_chars
114
	invoke mem.alloc,ecx ;¢ë¤¥«ï¥¬ ¯ ¬ïâì
108
	invoke mem.alloc,ecx ;¢ë¤¥«ï¥¬ ¯ ¬ïâì
115
	mov ted_tex,eax
109
	mov ted_tex,eax
116
	mov ted_tex_1,eax
110
	mov ted_tex_1,eax
117
	add ted_tex_1,sizeof.symbol
111
	add ted_tex_1,sizeof.symbol
118
	add eax,ecx
112
	add eax,ecx
119
	mov ted_tex_end,eax
113
	mov ted_tex_end,eax
120
 
114
 
121
	stdcall ted_clear, edi,1
115
	stdcall ted_clear, edi,1
122
 
116
 
123
;-------------------------------------------------
117
;-------------------------------------------------
124
	mov ecx,1024 ;1024 - ¤«ï ¬ áᨢ  ted_arr_key_pos
118
	mov ecx,1024 ;1024 - ¤«ï ¬ áᨢ  ted_arr_key_pos
125
	add ecx,ted_syntax_file_size
119
	add ecx,ted_syntax_file_size
126
	invoke mem.alloc,ecx
120
	invoke mem.alloc,ecx
127
	mov ted_arr_key_pos,eax
121
	mov ted_arr_key_pos,eax
128
	add eax,1024
122
	add eax,1024
129
	mov ted_syntax_file,eax
123
	mov ted_syntax_file,eax
130
 
124
 
131
	stdcall ted_init_scroll_bars,edi,3
125
	stdcall ted_init_scroll_bars,edi,3
132
	ret
126
	ret
133
endp
127
endp
134
 
128
 
135
MIN_W_SCRL_ARE equ 3 ;¬¨­¨¬ «ì­ ï ®â®¡à ¦ ¥¬ ï ®¡« áâì ¤«ï ¢¥àâ. áªà®««¨­£ 
129
MIN_W_SCRL_ARE equ 3 ;¬¨­¨¬ «ì­ ï ®â®¡à ¦ ¥¬ ï ®¡« áâì ¤«ï ¢¥àâ. áªà®««¨­£ 
136
MIN_H_SCRL_ARE equ 3 ;¬¨­¨¬ «ì­ ï ®â®¡à ¦ ¥¬ ï ®¡« áâì ¤«ï £®à¨§. áªà®««¨­£ 
130
MIN_H_SCRL_ARE equ 3 ;¬¨­¨¬ «ì­ ï ®â®¡à ¦ ¥¬ ï ®¡« áâì ¤«ï £®à¨§. áªà®««¨­£ 
137
;input:
131
;input:
138
; opt = 1 - ¬¥­ïâì 梥â áªà®««¨­£®¢, 2 - ¨§¬¥­¨«¨áì à §¬¥àë ®ª­ ,
132
; opt = 1 - ¬¥­ïâì 梥â áªà®««¨­£®¢, 2 - ¨§¬¥­¨«¨áì à §¬¥àë ®ª­ ,
139
;  4 - ¨§¬¥­¨«¨áì à §¬¥àë ¤®ªã¬¥­â 
133
;  4 - ¨§¬¥­¨«¨áì à §¬¥àë ¤®ªã¬¥­â 
140
align 16
134
align 16
141
proc ted_init_scroll_bars, edit:dword, opt:dword
135
proc ted_init_scroll_bars, edit:dword, opt:dword
142
	pushad
136
	pushad
143
	mov edi,[edit]
137
	mov edi,[edit]
144
	mov esi,ted_scr_w
138
	mov esi,ted_scr_w
145
	mov ebx,ted_scr_h
139
	mov ebx,ted_scr_h
146
	bt dword[opt],0
140
	bt dword[opt],0
147
	jae @f
141
	jae @f
148
		mov ecx,ted_color_wnd_work
142
		mov ecx,ted_color_wnd_work
149
		mov dword[esi+sb_offs_bckg_col],ecx
143
		mov dword[esi+sb_offs_bckg_col],ecx
150
		mov dword[ebx+sb_offs_bckg_col],ecx
144
		mov dword[ebx+sb_offs_bckg_col],ecx
151
		mov ecx,ted_color_wnd_capt
145
		mov ecx,ted_color_wnd_capt
152
		mov dword[esi+sb_offs_frnt_col],ecx
146
		mov dword[esi+sb_offs_frnt_col],ecx
153
		mov dword[ebx+sb_offs_frnt_col],ecx
147
		mov dword[ebx+sb_offs_frnt_col],ecx
154
		mov ecx,ted_color_wnd_bord
148
		mov ecx,ted_color_wnd_bord
155
		mov dword[esi+sb_offs_line_col],ecx
149
		mov dword[esi+sb_offs_line_col],ecx
156
		mov dword[ebx+sb_offs_line_col],ecx
150
		mov dword[ebx+sb_offs_line_col],ecx
157
	@@:
151
	@@:
158
	bt dword[opt],2 ; ¨§¬¥­¨«¨áì à §¬¥àë ¤®ªã¬¥­â  ?
152
	bt dword[opt],2 ; ¨§¬¥­¨«¨áì à §¬¥àë ¤®ªã¬¥­â  ?
159
	jae .doc_resize
153
	jae .doc_resize
160
		call ted_get_num_lines
154
		call ted_get_num_lines
161
		cmp eax,TED_LINES_IN_NEW_FILE
155
		cmp eax,TED_LINES_IN_NEW_FILE
162
		jge @f
156
		jge @f
163
			mov eax,TED_LINES_IN_NEW_FILE
157
			mov eax,TED_LINES_IN_NEW_FILE
164
		@@:
158
		@@:
165
		mov dword[esi+sb_offs_max_area],eax
159
		mov dword[esi+sb_offs_max_area],eax
166
	.doc_resize:
160
	.doc_resize:
167
	bt dword[opt],1 ; ¨§¬¥­¨«¨áì à §¬¥àë ®ª­  ?
161
	bt dword[opt],1 ; ¨§¬¥­¨«¨áì à §¬¥àë ®ª­  ?
168
	jae .no_size
162
	jae .no_size
169
			mov edx,ted_wnd_l
163
			mov edx,ted_wnd_l
170
			add edx,ted_rec_l
164
			add edx,ted_rec_l
171
			mov word[ebx+sb_offs_start_x],dx ;¢ëáâ ¢«ï¥¬ «¥¢ë© ®âáâ㯠£®à¨§. áªà®««¨­£ 
165
			mov word[ebx+sb_offs_start_x],dx ;¢ëáâ ¢«ï¥¬ «¥¢ë© ®âáâ㯠£®à¨§. áªà®««¨­£ 
172
			mov eax,ted_wnd_h ;calculate lines in page
166
			mov eax,ted_wnd_h ;calculate lines in page
173
			mov edx,ted_wnd_t
167
			mov edx,ted_wnd_t
174
			add edx,eax
168
			add edx,eax
175
			mov word[ebx+sb_offs_start_y],dx ;¢ëáâ ¢«ï¥¬ ¢¥àå­¨© ®âáâ㯠£®à¨§. áªà®««¨­£ 
169
			mov word[ebx+sb_offs_start_y],dx ;¢ëáâ ¢«ï¥¬ ¢¥àå­¨© ®âáâ㯠£®à¨§. áªà®««¨­£ 
176
		sub eax,ted_rec_t
170
		sub eax,ted_rec_t
177
		xor edx,edx
171
		xor edx,edx
178
		mov ecx,ted_rec_h
172
		mov ecx,ted_rec_h
179
		div ecx
173
		div ecx
180
		cmp eax,MIN_W_SCRL_ARE
174
		cmp eax,MIN_W_SCRL_ARE
181
		jg @f
175
		jg @f
182
			mov eax,MIN_W_SCRL_ARE
176
			mov eax,MIN_W_SCRL_ARE
183
		@@:
177
		@@:
184
		mov dword[esi+sb_offs_cur_area],eax
178
		mov dword[esi+sb_offs_cur_area],eax
185
 
179
 
186
		mov eax,ted_wnd_w ;calculate cols in page
180
		mov eax,ted_wnd_w ;calculate cols in page
187
			mov edx,ted_wnd_l ;«¥¢ë© ®âáâ㯠®ª­ 
181
			mov edx,ted_wnd_l ;«¥¢ë© ®âáâ㯠®ª­ 
188
			add edx,eax ;¤®¡ ¢«ï¥¬ è¨à¨­ã ®ª­ 
182
			add edx,eax ;¤®¡ ¢«ï¥¬ è¨à¨­ã ®ª­ 
189
			mov word[esi+sb_offs_start_x],dx ;¢ëáâ ¢«ï¥¬ «¥¢ë© ®âáâ㯠¢¥àâ. áªà®««¨­£ 
183
			mov word[esi+sb_offs_start_x],dx ;¢ëáâ ¢«ï¥¬ «¥¢ë© ®âáâ㯠¢¥àâ. áªà®««¨­£ 
190
			mov edx,ted_wnd_t
184
			mov edx,ted_wnd_t
191
			mov word[esi+sb_offs_start_y],dx ;¢ëáâ ¢«ï¥¬ ¢¥àå­¨© ®âáâ㯠¢¥àâ. áªà®««¨­£ 
185
			mov word[esi+sb_offs_start_y],dx ;¢ëáâ ¢«ï¥¬ ¢¥àå­¨© ®âáâ㯠¢¥àâ. áªà®««¨­£ 
192
			mov edx,ted_wnd_h
186
			mov edx,ted_wnd_h
193
			mov word[esi+sb_offs_size_y],dx ;¢ëáâ ¢«ï¥¬ ¢ëá®âã ¢¥àâ. áªà®««¨­£ 
187
			mov word[esi+sb_offs_size_y],dx ;¢ëáâ ¢«ï¥¬ ¢ëá®âã ¢¥àâ. áªà®««¨­£ 
194
		sub eax,ted_rec_l
188
		sub eax,ted_rec_l
195
			mov word[ebx+sb_offs_size_x],ax ;¢ëáâ ¢«ï¥¬ è¨à¨­ã £®à¨§. áªà®««¨­£ 
189
			mov word[ebx+sb_offs_size_x],ax ;¢ëáâ ¢«ï¥¬ è¨à¨­ã £®à¨§. áªà®««¨­£ 
196
		xor edx,edx
190
		xor edx,edx
197
		mov ecx,ted_rec_w
191
		mov ecx,ted_rec_w
198
		div ecx
192
		div ecx
199
		cmp eax,MIN_H_SCRL_ARE
193
		cmp eax,MIN_H_SCRL_ARE
200
		jg @f
194
		jg @f
201
			mov eax,MIN_H_SCRL_ARE<