Subversion Repositories Kolibri OS

Rev

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

Rev Author Line No. Line
178 heavyiron 1
;POP_WIDTH   = (popup_text.max_title+popup_text.max_accel+6)*6
2
POP_IHEIGHT = 16
3
;POP_HEIGHT  = popup_text.cnt_item*POP_IHEIGHT+popup_text.cnt_sep*4+4
4
 
5
popup_thread_start:
6
	mov	[popup_active],1
7
	mov	[pi_cur],0
8
	mov	ebp,[esp]
9
	mcall	14
10
	movzx	ebx,ax
11
	shr	eax,16
12
	movzx	ecx,[ebp+POPUP.x]
13
	add	cx,[ebp+POPUP.width]
14
	cmp	ecx,eax
15
	jle	@f
16
	mov	cx,[ebp+POPUP.width]
17
	sub	[ebp+POPUP.x],cx
18
    @@: movzx	ecx,[ebp+POPUP.y]
19
	add	cx,[ebp+POPUP.height]
20
	cmp	ecx,ebx
21
	jle	@f
22
	mov	cx,[ebp+POPUP.height]
23
	sub	[ebp+POPUP.y],cx
24
    @@: mcall	40,01100111b		; ipc mouse button key redraw
25
	cmp	[mi_cur],0
26
	jl	.2
27
	sub	esp,32-16
28
	push	0 0 8 0
29
	mcall	60,1,esp,32
30
  .2:	call	draw_popup_wnd
31
 
32
  still_popup:
33
	cmp	[main_closed],1
34
	je	close_popup
35
	mcall	10
36
	cmp	eax,1
37
	je	popup_thread_start.2
38
	cmp	eax,2
39
	je	key_popup
40
	cmp	eax,3
41
	je	button_popup
42
	cmp	eax,6
43
	je	mouse_popup
44
	cmp	eax,7
45
	jne	still_popup
46
 
47
	mov	ebp,[POPUP_STACK];-32+12+4]
48
	mov	dword[POPUP_STACK-32+4],8
49
	movzx	ebx,[ebp+POPUP.x]
50
	movzx	ecx,[ebp+POPUP.y]
51
	movzx	edx,[ebp+POPUP.width]
52
	movzx	esi,[ebp+POPUP.height]
53
	mcall	67
54
;       call    draw_popup_wnd
55
	jmp	still_popup
56
 
57
  mouse_popup:
58
	mov	ecx,mst2
59
	call	get_mouse_event
60
	cmp	al,MEV_LDOWN
61
	je	check_popup_click
62
	cmp	al,MEV_MOVE
63
	je	check_popup_move
64
 
65
	mcall	9,p_info2,-1
66
	cmp	ax,[p_info2.window_stack_position]
67
	jne	close_popup
68
 
69
	jmp	still_popup
70
 
71
  check_popup_click:
72
	mov	eax,[pi_cur]
73
	or	al,al
74
	js	close_popup
75
	jz	still_popup
76
	mov	ebx,[ebp+POPUP.actions]
77
	mov	[just_from_popup],1
78
	call	dword[ebx+eax*4-4];dword[popup_text.actions+eax*4-4]
79
	inc	[just_from_popup]
80
	jmp	close_popup
81
 
82
  check_popup_move:
83
	mov	eax,[pi_cur]
84
	call	get_active_popup_item
85
	cmp	eax,[pi_cur]
86
	je	still_popup
87
	call	draw_popup_wnd
88
	jmp	still_popup
89
 
90
  key_popup:
91
	mcall	;2
92
	cmp	ah,27
93
	jne	still_popup
94
 
95
  button_popup:
96
	mcall	17
97
 
98
  close_popup:
99
	mcall	18,3,[p_info.PID]
100
	mov	[popup_active],0
101
	mcall	-1
102
 
103
func draw_popup_wnd
104
	mcall	12,1
105
 
106
;       mcall   48,3,sc,sizeof.system_colors
107
;       call    calc_3d_colors
108
 
109
;        mov     ebx,[p_pos]
110
;        mov     ecx,[p_pos-2]
111
;        mov     bx,POP_WIDTH
112
;        mov     cx,POP_HEIGHT
113
	mov	ebx,dword[ebp+POPUP.x-2]
114
	mov	bx,[ebp+POPUP.width]
115
	mov	ecx,dword[ebp+POPUP.y-2]
116
	mov	cx,[ebp+POPUP.height]
117
	mcall	0,,,0x01000000,0x01000000
118
 
119
	movzx	ebx,bx
120
	movzx	ecx,cx
121
	pushd	0 0 ebx ecx ;POP_WIDTH POP_HEIGHT
122
	call	draw_3d_panel
123
 
124
	mov	[pi_sel],0
125
;        mcall   37,1
126
;        movsx   ebx,ax
127
;        sar     eax,16
128
;        mov     [c_pos.x],eax
129
;        mov     [c_pos.y],ebx
130
 
131
	mov	eax,4
132
	mpack	ebx,3*6,3
133
	mov	ecx,[sc.work_text]
134
	mov	edx,[ebp+POPUP.data];popup_text.data
135
    @@: inc	[pi_sel]
136
	inc	edx
137
	movzx	esi,byte[edx-1]
138
	cmp	byte[edx],'-'
139
	jne	.lp1
140
	pushad
141
	mov	ecx,ebx
142
	shl	ecx,16
143
	mov	cx,bx
144
	movzx	ebx,[ebp+POPUP.width]
145
	add	ebx,0x00010000-1
146
;       mpack   ebx,1,POP_WIDTH-1
147
	add	ecx,0x00010001
148
	mcall	38,,,[cl_3d_inset];0x006382BF;[sc.work_text]
149
	add	ecx,0x00010001
150
	mcall	,,,[cl_3d_outset];0x00FFFFFF
151
	popad
152
	add	ebx,4
153
	jmp	.lp2
154
  .lp1: mov	edi,[pi_sel]
155
	cmp	edi,[pi_cur]
156
	jne	.lp3
157
	test	byte[ebp+edi-1],0x01 ; byte[popup_text+edi-1],0x01
158
	jz	.lp3
159
	pushad
160
	movzx	ecx,bx
161
	shl	ecx,16
162
	mov	cl,POP_IHEIGHT-1
163
	movzx	ebx,[ebp+POPUP.width]
164
	add	ebx,0x00010000-1
165
;       mpack   ebx,1,POP_WIDTH-1
166
	mcall	13,,,[cl_3d_pushed];0x00A3B8CC
167
	rol	ecx,16
168
	mov	ax,cx
169
	rol	ecx,16
170
	mov	cx,ax
171
	mcall	38,,,[cl_3d_inset];0x006382BF
172
	add	ecx,(POP_IHEIGHT-1)*65536+POP_IHEIGHT-1
173
	mcall	,,,[cl_3d_outset];0x00FFFFFF
174
	popad
175
  .lp3: add	ebx,(POP_IHEIGHT-7)/2
176
 
177
	pushad
178
	test	byte[ebp+edi-1],0x02
179
	jz	.lp8
180
	movzx	ecx,bx
181
	shr	ebx,16
280 mikedld 182
	add	ebx,-11
183
	add	ecx,2
184
	mov	edx,[sc.work_text]
185
	call	draw_check
178 heavyiron 186
  .lp8: popad
187
 
188
	mov	ecx,[sc.work_text];0x00000000
189
	test	byte[ebp+edi-1],0x01 ; byte[popup_text+edi-1],0x01
190
	jnz	.lp5
191
	add	ebx,0x00010001
192
	mov	ecx,[cl_3d_outset]
193
	mcall
194
	sub	ebx,0x00010001
195
	mov	ecx,[cl_3d_inset]
196
	;mov     ecx,[sc.grab_text];0x007F7F7F
197
  .lp5: mcall
198
	push	ebx
199
	add	edx,esi
200
	inc	edx
201
	movzx	esi,byte[edx-1]
202
	add	ebx,[ebp+POPUP.acc_ofs] ; ((popup_text.max_title+2)*6-1)*65536
203
	cmp	edi,[pi_cur]
204
	je	.lp4
205
	mov	ecx,[cl_3d_inset];0x006382BF
206
  .lp4: test	byte[ebp+edi-1],0x01 ; byte[popup_text+edi-1],0x01
207
	jnz	.lp6
208
	add	ebx,0x00010001
209
	mov	ecx,[cl_3d_outset]
210
	mcall
211
	sub	ebx,0x00010001
212
	mov	ecx,[cl_3d_inset]
213
	;mov     ecx,[sc.grab_text];0x007F7F7F
214
  .lp6: mcall
215
	pop	ebx
216
	add	ebx,POP_IHEIGHT-(POP_IHEIGHT-7)/2
217
  .lp2: add	edx,esi
218
	cmp	byte[edx],0
219
	jne	@b
220
  .exit:
221
	mcall	12,2
222
	ret
223
endf
224
 
267 mikedld 225
func setup_main_menu_popup
226
	mov	ebx,[p_info.box.left]
227
	add	ebx,[p_info.client_box.left]
228
    @@: dec	ecx
229
	jz	@f
230
	add	edx,8+1
231
	movzx	esi,byte[edx-1]
232
	add	edx,esi
233
	jmp	@b
234
    @@: movzx	ecx,word[edx+2]
235
	add	ebx,ecx
236
 
237
	mov	[eax+POPUP.x],bx
238
	mov	ebx,[p_info.box.top]
239
	add	ebx,[p_info.client_box.top]
240
	add	ebx,ATOPH-1
241
	mov	[eax+POPUP.y],bx
242
	mov	[POPUP_STACK],eax
243
	ret
244
endf
245
 
246
onshow:
247
 
248
  .file:
249
	or	byte[mm.File+3],0x01
250
	cmp	[f_info.length],0
251
	jne	@f
252
	and	byte[mm.File+3],0xFE
253
    @@: ret
254
 
255
  .edit:
256
	or	byte[mm.Edit+2],0x01
257
	cmp	[copy_size],0
258
	jne	@f
259
	and	byte[mm.Edit+2],0xFE
260
    @@: or	dword[mm.Edit+0],0x01000101
261
	cmp	[sel.selected],0
262
	jne	@f
263
	and	dword[mm.Edit+0],0xFEFFFEFE
264
    @@: ret
265
 
266
  .search:
267
	mov	byte[mm.Search+0],0
268
	ret
269
  .run:
270
	ret
271
  .recode:
272
	ret
273
  .options:
274
	mov	word[mm.Options+0],0
275
	mov	byte[mm.Options+5],0
276
	or	byte[mm.Options+2],0x02
277
	test	[options],OPTS_SECURESEL
278
	jnz	@f
279
	and	byte[mm.Options+2],0xFD
280
    @@: or	byte[mm.Options+3],0x02
281
	test	[options],OPTS_AUTOBRACES
282
	jnz	@f
283
	and	byte[mm.Options+3],0xFD
284
    @@: or	byte[mm.Options+4],0x02
285
	test	[options],OPTS_AUTOINDENT
286
	jnz	@f
287
	and	byte[mm.Options+4],0xFD
288
    @@: or	byte[mm.Options+6],0x02
289
	test	[options],OPTS_OPTIMSAVE
290
	jnz	@f
291
	and	byte[mm.Options+6],0xFD
292
    @@: or	byte[mm.Options+8],0x02
293
	test	[options],OPTS_LINENUMS
294
	jnz	@f
295
	and	byte[mm.Options+8],0xFD
296
    @@: ret
297
 
178 heavyiron 298
pi_sel	 dd ?
299
pi_cur	 dd ?
300
p_pos	 dd ?
301
popup_active db 0