Subversion Repositories Kolibri OS

Rev

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

Rev Author Line No. Line
1464 IgorA 1
struct FileInfoBlock
2
	Function dd ?
3
	Position dd ?
4
	Flags	 dd ?
5
	Count	 dd ?
6
	Buffer	 dd ?
7
		db ?
8
	FileName dd ?
1457 IgorA 9
ends
10
 
11
struct symbol
2125 IgorA 12
	c db ?    ; +0 символ
13
	col db ?  ; +1 цвет
14
	perv dd ? ; +2
15
	next dd ? ; +6 указатели
16
	tc dd ?   ;+10 врем. создания
17
	td dd ?   ;+14 врем. удаления
1457 IgorA 18
ends
19
 
20
 
2125 IgorA 21
hed db 'TextEditor 26.08.11',0 ;подпись окна
1457 IgorA 22
sc system_colors
23
 
24
fn_icon db 'te_icon.bmp',0
25
bmp_icon dd 0
1464 IgorA 26
run_file_70 FileInfoBlock
1457 IgorA 27
 
28
 
29
;input:
30
; al = код ошибки
1456 IgorA 31
align 4
1457 IgorA 32
ted_on_init_synt_err:
33
	mov byte[msgbox_3.err],al
34
	stdcall [mb_create],msgbox_3,thread ;message: Can-t open color options file!
35
	ret
36
 
37
 
38
align 4
39
ted_but_new_file:
40
  push eax ebx
41
  stdcall [ted_can_save], tedit0
1338 IgorA 42
  cmp al,1
43
  jne @f
1456 IgorA 44
    stdcall [mb_create],msgbox_2,thread ;message: save changes in file?
1338 IgorA 45
    ;mov eax,5
46
    ;mov ebx,50
47
    ;int 0x40
1456 IgorA 48
    stdcall [mb_setfunctions],msgbox_2_funct
1338 IgorA 49
    jmp .ret_f
50
  @@:
51
  call On_NewFile
52
  .ret_f:
53
  pop ebx eax
54
  ret
55
 
1456 IgorA 56
align 4
1338 IgorA 57
On_NewFile:
1457 IgorA 58
  stdcall [ted_clear], tedit0,1
1338 IgorA 59
  call draw_but_toolbar
1457 IgorA 60
  stdcall [ted_draw], tedit0
1338 IgorA 61
  ret
62
 
1456 IgorA 63
align 4
1338 IgorA 64
On_SaveAndNewFile:
1456 IgorA 65
  push edi
66
  mov edi, tedit0
67
 
1457 IgorA 68
  stdcall [ted_but_save_file],edi,run_file_70,[edit1.text]
1456 IgorA 69
  cmp ted_err_save,0
1338 IgorA 70
  jne @f
71
    call On_NewFile
72
  @@:
1456 IgorA 73
  pop edi
1338 IgorA 74
  ret
75
 
1457 IgorA 76
;description:
2102 IgorA 77
; функция открытия файла без окна сообщения
1456 IgorA 78
align 4
1457 IgorA 79
but_no_msg_OpenFile:
80
	push eax ebx
81
	stdcall [ted_open_file], tedit0,run_file_70,[edit1.text]
82
	call ted_messages_after_open_file
83
	pop ebx eax
84
	ret
1456 IgorA 85
 
1457 IgorA 86
;description:
87
; функция открытия файла с возможным окном сообщения (о возможности отменить открытие)
1456 IgorA 88
align 4
1457 IgorA 89
ted_but_open_file:
1467 IgorA 90
	pushad
91
 
1457 IgorA 92
	stdcall [ted_can_save], tedit0
93
	cmp al,1
94
	jne @f
95
		stdcall [mb_create],msgbox_5,thread ;message: save changes in file?
96
		stdcall [mb_setfunctions],msgbox_5_funct
97
		jmp .ret_f
98
	@@:
1467 IgorA 99
 
1468 IgorA 100
	copy_path open_dialog_name,communication_area_default_path,file_name,0
1467 IgorA 101
	mov [OpenDialog_data.type],0
1592 IgorA 102
	stdcall [OpenDialog_Start],OpenDialog_data
1467 IgorA 103
	cmp [OpenDialog_data.status],2
104
	jne @f
1468 IgorA 105
		stdcall mem_spac, msgbox_9.fdp,100
106
		mov esi,file_name
107
		call strlen
108
		cmp eax,100
109
		jle .no_crop
110
			mov eax,100
111
		.no_crop:
112
		stdcall mem_copy, esi,msgbox_9.fdp,eax
1467 IgorA 113
		stdcall [mb_create],msgbox_9,thread ;message: error run 'open file dialog'
114
		jmp .ret_f
115
	@@:
116
	mov esi,[OpenDialog_data.openfile_path]
117
	call strlen
118
	mov [edit1.size],eax
119
	mov [edit1.pos],eax
120
	stdcall [edit_box_draw], edit1
1457 IgorA 121
	stdcall [ted_open_file], tedit0,run_file_70,[edit1.text]
122
	call ted_messages_after_open_file
123
	.ret_f:
1467 IgorA 124
	popad
1457 IgorA 125
	ret
1338 IgorA 126
 
2102 IgorA 127
;description:
128
; копирование памяти
1468 IgorA 129
align 4
130
proc mem_copy, source:dword, destination:dword, len:dword
131
  push ecx esi edi
132
    cld
133
    mov esi, dword[source]
134
    mov edi, dword[destination]
135
    mov ecx, dword[len]
136
    rep movsb
137
  pop edi esi ecx
138
  ret
139
endp
140
 
2102 IgorA 141
;description:
142
; заполнение памяти пробелами
1468 IgorA 143
align 4
144
proc mem_spac, mem:dword, len:dword
145
  push eax ecx edi
146
    cld
147
    mov al,' '
148
    mov edi, dword[mem]
149
    mov ecx, dword[len]
150
    repne stosb
151
  pop edi ecx eax
152
  ret
153
endp
154
 
1457 IgorA 155
;input:
156
; eax = код ошибки
157
; ebx = колличество прочитанных байт
158
; edi = pointer to tedit struct
1456 IgorA 159
align 4
1457 IgorA 160
ted_messages_after_open_file:
161
	push ecx
162
	cmp eax,0
163
	je @f
164
	cmp eax,6
165
	je @f
166
		cmp ax,10
167
		jl .zifra_0_9
168
			mov al,'?'
169
			sub ax,48
170
		.zifra_0_9:
171
		add ax,48
1456 IgorA 172
 
1457 IgorA 173
		mov byte[msgbox_4.err],al
174
		stdcall [mb_create],msgbox_4,thread ;message: Can-t open text file!
175
		jmp .ret_f
176
	@@:
177
	cmp ebx,-1
178
	je .ret_f
179
		;if open file
180
		mov ecx,ted_max_chars
181
		sub ecx,2 ;ecx = максимальное число байт, для которых была выделена память
182
		cmp ebx,ecx
183
		jl .ret_f
184
			stdcall [mb_create],msgbox_1,thread
185
	.ret_f:
186
	pop ecx
187
	ret
1338 IgorA 188
 
1456 IgorA 189
align 4
1457 IgorA 190
ted_save_err_msg:
191
	mov byte[msgbox_6.err],al
192
	stdcall [mb_create],msgbox_6,thread ;message: Can-t save text file!
193
	ret
1456 IgorA 194
 
2102 IgorA 195
;description:
196
; функция нажатия на кнопку [Применить] в панели синтаксиса
1456 IgorA 197
align 4
198
proc ted_but_open_syntax, edit:dword
1457 IgorA 199
  push ebx edi
1456 IgorA 200
  mov edi,dword[edit]
201
 
1457 IgorA 202
  cmp ted_panel_id,TED_PANEL_SYNTAX
1338 IgorA 203
  jne @f
1456 IgorA 204
    stdcall dword[tl_node_get_data], tree1
1449 IgorA 205
    pop dword[fn_col_option]
1457 IgorA 206
	mov ebx,dword[fn_col_option]
207
	copy_path ebx,fn_syntax_dir,file_name_rez,0x0
208
	copy_path file_name_rez,sys_path,file_name,0x0
209
    stdcall [ted_init_syntax_file],edi,run_file_70,file_name
210
    call [ted_text_colored]
211
    stdcall [ted_draw],edi
1338 IgorA 212
  @@:
1457 IgorA 213
  pop edi ebx
1338 IgorA 214
  ret
1456 IgorA 215
endp
1338 IgorA 216
 
2102 IgorA 217
;description:
218
; вызов/скрытие панели поиска
1456 IgorA 219
align 4
2102 IgorA 220
proc ted_but_find
1456 IgorA 221
  push edi
1457 IgorA 222
  mov edi,tedit0
1456 IgorA 223
 
1457 IgorA 224
  cmp ted_panel_id,TED_PANEL_NULL
1338 IgorA 225
  je @f
1457 IgorA 226
    mov ted_panel_id,TED_PANEL_NULL
1449 IgorA 227
    mov ted_wnd_l,0
1338 IgorA 228
    jmp .e_if
229
  @@:
1457 IgorA 230
    mov ted_panel_id,TED_PANEL_FIND
231
    mov ted_wnd_l,TED_PANEL_WIDTH
1338 IgorA 232
  .e_if:
2125 IgorA 233
  call EvSize
1457 IgorA 234
  stdcall [ted_draw],edi
1449 IgorA 235
  pop edi
236
  ret
237
endp
1338 IgorA 238
 
1456 IgorA 239
align 4
1457 IgorA 240
ted_on_find_err:
241
	stdcall [mb_create],msgbox_7,thread ;message: Can not find text
242
	ret
243
 
2102 IgorA 244
;description:
245
; кнопка [Заменить] на панели
1457 IgorA 246
align 4
1338 IgorA 247
but_replace:
2102 IgorA 248
	; пока не сделано
249
	ret
1338 IgorA 250
 
2102 IgorA 251
;description:
252
; функция поиска информации в списке ключевых слов
1456 IgorA 253
align 4
1338 IgorA 254
but_find_key_w:
2102 IgorA 255
	; пока не сделано
256
	ret
1338 IgorA 257
 
2102 IgorA 258
;description:
259
; выделение/скрытие непечатаемых символов
1456 IgorA 260
align 4
261
proc but_sumb_invis, edit:dword
262
  push edi
263
  mov edi,dword[edit]
1338 IgorA 264
 
1456 IgorA 265
  xor ted_mode_invis,1
266
  call draw_but_toolbar
1457 IgorA 267
  stdcall [ted_draw],edi
1456 IgorA 268
  pop edi
269
  ret
270
endp
1338 IgorA 271
 
2102 IgorA 272
;description:
273
; выделение/скрытие ключевых слов
1456 IgorA 274
align 4
275
proc but_k_words_show, edit:dword
276
  push edi
277
  mov edi,dword[edit]
1338 IgorA 278
 
1456 IgorA 279
  xor ted_mode_color,1
280
  cmp ted_mode_color,0
281
  je @f
1457 IgorA 282
    call [ted_text_colored]
1456 IgorA 283
  @@:
1338 IgorA 284
  call draw_but_toolbar
1457 IgorA 285
  stdcall [ted_draw],edi
1456 IgorA 286
  pop edi
1338 IgorA 287
  ret
1456 IgorA 288
endp
1338 IgorA 289
 
2102 IgorA 290
;description:
291
; вызов/скрытие панели с файлами синтаксиса
1456 IgorA 292
align 4
1449 IgorA 293
proc but_synt_show, edit:dword
294
  push edi
295
  mov edi,[edit]
296
 
1457 IgorA 297
  cmp ted_panel_id,TED_PANEL_NULL
1338 IgorA 298
  je @f
1457 IgorA 299
    mov ted_panel_id,TED_PANEL_NULL
1449 IgorA 300
    mov ted_wnd_l,0
1338 IgorA 301
    jmp .e_if
302
  @@:
1457 IgorA 303
    mov ted_panel_id,TED_PANEL_SYNTAX
304
    mov ted_wnd_l,TED_PANEL_WIDTH
1338 IgorA 305
  .e_if:
2125 IgorA 306
  call EvSize
1457 IgorA 307
  stdcall [ted_draw],edi
1449 IgorA 308
  pop edi
309
  ret
310
endp