Subversion Repositories Kolibri OS

Rev

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

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