Subversion Repositories Kolibri OS

Rev

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

Rev Author Line No. Line
648 andrew_pro 1
 
2
3
 
4
;******************craete EditBox*********************
5
;****************************************************
6
;IN
7
;pointer to parend
8
;pointer to EditBox's structure
9
;OUT
10
;pointer to initialized control
11
align 4
12
13
 
14
15
 
706 andrew_pro 16
      push ecx
17
      push edx
18
      push esi
19
      push edi
20
      push ebp
21
648 andrew_pro 22
 
706 andrew_pro 23
      mov eax,[esp+24+8]
24
25
 
648 andrew_pro 26
27
 
28
      call craete_control
29
30
 
31
      mov [eax],dword edit_box
32
33
 
34
      mov esi,[PointerToStructureForEditBox]
35
      mov edi,eax
36
      add edi,control_header_size
37
      rep movsb
38
39
 
40
41
 
42
      mov ecx,[ebx+4]   ;x
43
      mov edx,[ebx+8]   ;y
44
      mov esi,[ebx]     ;size x
45
      mov edi,[ebx+70]  ;size y
46
      add ecx,border_width
47
      add edx,[skin_height]
48
      ;copy information to control
49
      mov [eax+24],ecx
50
      mov [eax+28],edx
51
      mov [eax+32],esi
52
      mov [eax+36],edi
53
54
 
706 andrew_pro 55
 
56
      pop edi
57
      pop esi
58
      pop edx
59
      pop ecx
60
      pop ebx
61
62
 
648 andrew_pro 63
64
 
65
;******************Draw EditBox**********************
66
;****************************************************
67
;include 'editbox_mac.inc'
68
;IN
69
;pointer to control of EditBox
70
;message
71
;OUT
72
;not returned value
73
align 4
74
75
 
76
77
 
78
      ;;;;;;;;;;;;
79
      ;Structure from libGui асоциация структур
80
      ;;;;;;;;;;;;
81
82
 
83
      mov eax,[esp+8]
84
85
 
86
      mov esi,[esp+4]
87
      mov [PointerForEditBox],esi
88
89
 
90
      add esi,control_header_size
91
      mov edi,dword EditBox
92
      mov ecx,eb_control_data_size
93
      rep movsb
94
95
 
96
      ;Structure from libGui асоциация структур
97
      ;;;;;;;;;;;;
98
      srt_ed_libgui
99
100
 
101
      ;load coordinats and size from control
102
      mov eax,[PointerForEditBox]
103
      mov ebx,[eax+24]           ;x
104
      mov ecx,[eax+28]           ;y
105
      mov edx,[eax+32]           ;size x
106
      mov esi,[eax+36]           ;size y
107
      ;set current coordinats and sizes in EeditBox
108
      mov [EditBox.ed_left],ebx
109
      mov [EditBox.ed_top],ecx
110
      mov [EditBox.ed_width],edx
111
      mov [EditBox.ed_height],esi
112
      pop eax
113
114
 
115
116
 
117
      jne .no_redraw_all_edit_box
118
119
 
120
 
121
       .draw_bg_cursor_text:
122
123
 
124
125
 
126
127
 
128
       .draw_cursor_text:
129
130
 
131
       je       @f
132
       call     .draw_cursor
133
     @@:
134
       call     .draw_text
135
136
 
137
      .no_redraw_all_edit_box:
138
139
 
140
 
141
142
 
143
      jne .no_keys_edit_box
144
145
 
146
       shl ebx,8
147
       mov eax,ebx
148
149
 
150
        je      .editbox_exit;exit_edit_box;@b
151
152
 
153
154
 
155
        ;--- проверяем, что нажато --------------------------------
156
        ;----------------------------------------------------------
157
158
 
159
160
 
161
        ;Заглушка на обработку клавиш вверх и вниз т.е. при
162
        ;обнаружении этих кодов происходит выход из обработчика
163
        ;;;;;;;;;;;;;;;;;;;;;;;;;;;;
164
165
 
166
        use_key_no_process   up,down,esc
167
168
 
169
170
 
171
        ;Проверка установлен ли флаг при котором нужно выводить
172
        ;только цифры в нужном боксе если такой необходимости нет
173
        ;нужно закоментировать макрос
174
        ;;;;;;;;;;;;;;;;;;;;;;;;;;;;
175
176
 
177
178
 
179
        ;проверка на shift был ли нажат
180
        ;;;;;;;;;;;;;;;;;;;;;;;;;;;;
181
182
 
183
184
 
185
        ; проверяем, находится ли курсор в конце + дальнейшая обработка
186
        ;;;;;;;;;;;;;;;;;;;;;;;;;;;;
187
188
 
189
190
 
191
        ;Обработка клавиш insert,delete.backspase,home,end,left,right
192
        ;;;;;;;;;;;;;;;;;;;;;;;;;;;;
193
194
 
195
196
 
197
 
198
199
 
675 andrew_pro 200
      je exit_edit_box
201
202
 
648 andrew_pro 203
204
 
205
      jne .editbox_exit
206
207
 
208
        mov edi,[eax+8]
209
        mov ecx,[eax+12]
210
        mov [EditBox.mouseX],esi
211
        mov [EditBox.mouseY],edi
212
        mov [ButtonsOfMouse],ecx
213
214
 
215
216
 
217
        jnz     .mouse_left_button
218
        and     word [EditBox.ed_flags],ed_mouse_on_off
219
        jmp     .editbox_exit
220
221
 
222
223
 
224
        shl eax,16
225
226
 
227
        ;Функция обработки  мышки получение координат и проверка их + выделения
228
        ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
229
230
 
231
232
 
233
        ;Общие функции обработки
234
        ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
235
236
 
237
238
 
239
        ;Функции для работы с key
240
        ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
241
242
 
243
244
 
245
        ;Функции для работы с mouse
246
        ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
247
248
 
249
250
 
251
        ;Общий выход из editbox для всех функций и пост обработчиков
252
        ;;;;;;;;;;;;;;;;;;;;;;;;;;
253
254
 
255
256
 
257
258
 
259
      mov esi,dword EditBox
260
      mov edi,[PointerForEditBox]
261
      add edi,control_header_size
262
      mov ecx,eb_control_data_size
263
      rep movsb
264
265
 
266