Subversion Repositories Kolibri OS

Rev

Rev 259 | Rev 297 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
258 mikedld 1
button:
2
	mcall	17
3
	cmp	al,0
4
	jne	still
5
	shr	eax,8
6
 
7
	cmp	[bot_mode],0
8
	je	@f
9
	mov	ebx,eax
10
	mov	al,3
11
	call	[bot_dlg_handler]
12
	jmp	still
13
 
14
    @@: mov	esi,accel_table2
15
  .acc: cmp	eax,[esi]
16
	jne	@f
17
	call	dword[esi+4]
18
	jmp	still.skip_write
19
    @@: add	esi,8
20
	cmp	byte[esi],0
21
	jne	.acc
22
 
267 mikedld 23
	cmp	eax,[tab_bar.Buttons.First]
24
	jb	@f
25
	cmp	eax,[tab_bar.Buttons.Last]
26
	ja	@f
27
 
28
	;// TAB CONTROL BUTTONS
29
 
30
	add	eax,-1000
31
	imul	ebp,eax,sizeof.TABITEM
32
	add	ebp,[tab_bar.Items]
33
	cmp	ebp,[tab_bar.Current.Ptr]
34
	je	@f
35
	call	set_cur_tab
36
	call	align_editor_in_tab
37
	call	draw_editor
38
	call	draw_statusbar
39
	call	draw_tabctl
40
 
41
    @@:
258 mikedld 42
	jmp	still.skip_write
43
 
267 mikedld 44
  btn.vscroll_up:
45
	dec	[cur_editor.TopLeft.Y] ;! [top_line]
258 mikedld 46
	jns	@f
267 mikedld 47
	inc	[cur_editor.TopLeft.Y] ;! [top_line]
259 mikedld 48
	ret
258 mikedld 49
    @@: call	check_inv_all.skip_check
50
	ret
51
 
267 mikedld 52
  btn.vscroll_down:
53
	inc	[cur_editor.TopLeft.Y] ;! [top_line]
54
	mov	eax,[cur_editor.Lines.Count] ;! eax,[lines]
258 mikedld 55
	sub	eax,[lines.scr]
267 mikedld 56
	cmp	eax,[cur_editor.TopLeft.Y] ;! eax,[top_line]
258 mikedld 57
	jge	@f
267 mikedld 58
	dec	[cur_editor.TopLeft.Y] ;! [top_line]
259 mikedld 59
	ret
258 mikedld 60
    @@: call	check_inv_all.skip_check
61
	ret
62
 
267 mikedld 63
  btn.hscroll_up:
64
	dec	[cur_editor.TopLeft.X] ;! [left_col]
258 mikedld 65
	jns	@f
267 mikedld 66
	inc	[cur_editor.TopLeft.X] ;! [left_col]
258 mikedld 67
	ret;jmp     still.skip_write
68
    @@: call	check_inv_all.skip_check
69
	ret
70
 
267 mikedld 71
  btn.hscroll_down:
72
	inc	[cur_editor.TopLeft.X] ;! [left_col]
73
	mov	eax,[cur_editor.Columns.Count] ;! eax,[columns]
258 mikedld 74
	sub	eax,[columns.scr]
267 mikedld 75
	cmp	eax,[cur_editor.TopLeft.X] ;! eax,[left_col]
258 mikedld 76
	jge	@f
267 mikedld 77
	dec	[cur_editor.TopLeft.X] ;! [left_col]
259 mikedld 78
	ret
258 mikedld 79
    @@: call	check_inv_all.skip_check
80
	ret
81
 
267 mikedld 82
  btn.tabctl_right:
83
	call	get_hidden_tabitems_number
84
	or	eax,eax
85
	jz	@f
86
	inc	[tab_bar.Items.Left]
87
	call	draw_tabctl
88
    @@: ret
89
  btn.tabctl_left:
90
	dec	[tab_bar.Items.Left]
91
	jns	@f
92
	inc	[tab_bar.Items.Left]
93
    @@: call	draw_tabctl
94
	ret
95
 
258 mikedld 96
  btn.search:
97
  key.f3:
98
	call	search
99
	jc	@f
100
	call	check_inv_all
101
    @@: ret
102
 
103
 
104
func search
105
	cld
267 mikedld 106
	mov	ecx,[cur_editor.Caret.Y] ;! ecx,[pos.y]
258 mikedld 107
	mov	edx,ecx
108
	call	get_line_offset
109
	cmp	word[esi],0
110
	je	.exit
111
	call	get_real_length
112
	add	esi,4
113
	or	eax,eax
114
	jz	.end_line.2
115
	mov	ecx,eax
267 mikedld 116
	sub	ecx,[cur_editor.Caret.X] ;! ecx,[pos.x]
258 mikedld 117
	push	esi
267 mikedld 118
	add	esi,[cur_editor.Caret.X] ;! esi,[pos.x]
258 mikedld 119
	jmp	@f
120
 
121
  .next_line:
122
	push	esi
123
    @@: sub	ecx,[s_search.size]
124
	inc	ecx
125
 
126
  .next_char:
127
	dec	ecx
128
	js	.end_line
129
	xor	edi,edi
130
 
131
  .next_ok:
132
	movzx	eax,byte[edi+esi]
133
	movzx	ebx,byte[edi+s_search]
134
 
135
	cmp	al,$61
136
	jb	@f
137
	add	al,[eax+add_table-$61]
138
    @@: cmp	bl,$61
139
	jb	@f
140
	add	bl,[ebx+add_table-$61]
141
    @@:
142
	cmp	al,bl
143
	je	@f
144
 
145
	inc	esi
146
	jmp	.next_char
147
    @@:
148
	inc	edi
149
	cmp	edi,[s_search.size]
150
	jne	.next_ok
151
 
152
  .found:
153
	add	esp,4
267 mikedld 154
	mov	[cur_editor.Caret.Y],edx ;! [pos.y],edx
155
	mov	[cur_editor.SelStart.Y],edx ;! [sel.y],edx
258 mikedld 156
	mov	ecx,edx
157
	lea	eax,[esi-4]
158
	call	get_line_offset
159
	sub	eax,esi
267 mikedld 160
	mov	[cur_editor.SelStart.X],eax ;! [sel.x],eax
258 mikedld 161
	add	eax,[s_search.size]
267 mikedld 162
	mov	[cur_editor.Caret.X],eax ;! [pos.x],eax
258 mikedld 163
	mov	[s_status],0
164
	clc
165
	ret
166
 
167
  .end_line:
168
	pop	esi
169
  .end_line.2:
170
	movzx	eax,word[esi-4]
171
	add	esi,eax;[esi-4]
172
	inc	edx
173
	call	get_real_length
174
	mov	ecx,eax
175
	lodsd
176
	or	eax,eax
177
	jnz	.next_line
178
  .exit:
179
	mov	[s_status],s_text_not_found
180
	stc
181
	ret
182
endf
183
 
184
  btn.compile:
185
  key.ctrl_f9:
259 mikedld 186
	mov	bl,0
258 mikedld 187
	call	start_fasm
259 mikedld 188
	ret
258 mikedld 189
  btn.compile_run:
190
  key.f9:
259 mikedld 191
	mov	bl,1
258 mikedld 192
	call	start_fasm
259 mikedld 193
	ret
258 mikedld 194
  btn.debug_board:
195
	call	open_debug_board
259 mikedld 196
	ret
258 mikedld 197
  btn.sysfuncs_txt:
198
	call	open_sysfuncs_txt
259 mikedld 199
	ret
258 mikedld 200
 
201
  btn.load_file:
202
  key.ctrl_l:
203
	call	load_file
204
	jnc	@f
205
	ret
206
    @@:
259 mikedld 207
 
258 mikedld 208
	xor	eax,eax
267 mikedld 209
	mov	[cur_editor.TopLeft.Y],eax ;! [top_line],eax
210
	mov	[cur_editor.TopLeft.X],eax ;! [left_col],eax
211
	mov	[cur_editor.Caret.X],eax ;! [pos.x],eax
212
	mov	[cur_editor.Caret.Y],eax ;! [pos.y],eax
213
	mov	[cur_editor.SelStart.X],eax ;! [sel.x],eax
214
	mov	[cur_editor.SelStart.Y],eax ;! [sel.y],eax
258 mikedld 215
 
267 mikedld 216
	mov	[cur_editor.Modified],al ;! [modified],al
258 mikedld 217
 
218
; enable color syntax for ASM and INC files:
267 mikedld 219
	mov	[cur_editor.AsmMode],al ;! [asm_mode],al
258 mikedld 220
 
267 mikedld 221
;       mov     eax,[f_info.length]
222
;       add     eax,f_info.path
223
;       mov     byte[eax],0
224
	lea	ebx,[cur_editor.FilePath]
225
	mov	eax,ebx
226
	call	strlen
227
	mov	ecx,dword[ebx+eax-3]
228
	or	ecx,0x202020
229
	cmp	ecx,'asm'
258 mikedld 230
	jne	@f
267 mikedld 231
	inc	[cur_editor.AsmMode] ;! [asm_mode]
258 mikedld 232
	jmp	.nocol
267 mikedld 233
    @@: cmp	ecx,'inc'
258 mikedld 234
	jne	.nocol
267 mikedld 235
	inc	[cur_editor.AsmMode] ;! [asm_mode]
258 mikedld 236
    .nocol:
237
 
238
  update_caption:
267 mikedld 239
	lea	esi,[cur_editor.FilePath] ;! mov     esi,f_info.path
258 mikedld 240
	mov	edi,s_title
259 mikedld 241
 
242
    @@: lodsb
243
	cmp	al,0
244
	je	@f
245
	stosb
246
	jmp	@b
258 mikedld 247
    @@:
248
	;cld
259 mikedld 249
	;mov     ecx,[f_info.length]
250
	;jecxz   @f
251
	;rep     movsb
258 mikedld 252
 
253
	mov	dword[edi],' - '
254
	add	edi,3
255
    @@: mov	esi,htext
256
	mov	ecx,htext.size
259 mikedld 257
	cld
258 mikedld 258
	rep	movsb
259
 
260
	mov	al,0
261
	stosb
262
 
259 mikedld 263
	mcall	71,1,s_title
264
 
258 mikedld 265
	clc
259 mikedld 266
	ret
258 mikedld 267
 
268
  btn.close_main_window:
269
  key.alt_x:
270
	mov	esi,self_path
271
	mov	byte[esi+PATHL-1],0
272
	mov	edi,f_info.path
273
	cld
274
    @@: lodsb
275
	stosb
276
	or	al,al
277
	jnz	@b
278
 
279
	mov	[f_info70+0],2
280
	mov	[f_info70+4],0
281
	mov	[f_info70+8],0
282
	mov	[f_info70+12],TINYPAD_END
283
	mov	[f_info70+16],0
284
	mov	byte[f_info70+20],0
285
	mov	[f_info70+21],f_info.path
286
	mcall	70,f_info70
287
 
288
  .close:
289
	mov	[main_closed],1
290
	mcall	-1