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< |