Subversion Repositories Kolibri OS

Rev

Rev 280 | Rev 617 | Go to most recent revision | Only display areas with differences | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed

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