Subversion Repositories Kolibri OS

Rev

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

Rev Author Line No. Line
1219 mario79 1
;*****************************************************************************
1101 Lrz 2
; Example for Box_lib: scrollbar, menubar, dinamic_button
1219 mario79 3
; Copyright (c) 2009, Marat Zakiyanov aka Mario79, aka Mario
1101 Lrz 4
; All rights reserved.
5
;
6
; Redistribution and use in source and binary forms, with or without
7
; modification, are permitted provided that the following conditions are met:
1219 mario79 8
;	 * Redistributions of source code must retain the above copyright
9
;	   notice, this list of conditions and the following disclaimer.
10
;	 * Redistributions in binary form must reproduce the above copyright
11
;	   notice, this list of conditions and the following disclaimer in the
12
;	   documentation and/or other materials provided with the distribution.
13
;	 * Neither the name of the  nor the
14
;	   names of its contributors may be used to endorse or promote products
15
;	   derived from this software without specific prior written permission.
1101 Lrz 16
;
1219 mario79 17
; THIS SOFTWARE IS PROVIDED BY Marat Zakiyanov ''AS IS'' AND ANY
1101 Lrz 18
; EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
19
; WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
20
; DISCLAIMED. IN NO EVENT SHALL  BE LIABLE FOR ANY
21
; DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
22
; (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
23
; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
24
; ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
25
; (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
26
; SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
1219 mario79 27
;******************************************************************************
1101 Lrz 28
; import_boxlib procedure written by 
29
;---------------------------------------------------------------------
30
 
1435 mario79 31
	use32
32
	org 0x0
1101 Lrz 33
 
1435 mario79 34
	db 'MENUET01'
35
	dd 0x01
36
	dd START
37
	dd IM_END
38
	dd I_END
39
	dd stacktop
40
	dd 0x0
41
	dd path
1101 Lrz 42
 
43
include '../../../../../macros.inc'
1108 Lrz 44
include '../../load_lib.mac'
1219 mario79 45
;include 'macros.inc'
46
;include 'load_lib.mac'
1435 mario79 47
@use_library
1585 mario79 48
 
1101 Lrz 49
;---------------------------------------------------------------------
1435 mario79 50
;--- Start of program ----------------------------------------------
1101 Lrz 51
;---------------------------------------------------------------------
52
START:
1435 mario79 53
	mcall	68,11
54
	mcall	66,1,1
55
	mcall	40,0x27
56
;---------------------------------------------------------------------
1219 mario79 57
 
1435 mario79 58
load_libraries	l_libs_start,end_l_libs
1101 Lrz 59
 
1435 mario79 60
	test	eax,eax
61
	jnz	button.exit
1101 Lrz 62
 
1219 mario79 63
; unpack deflate
1435 mario79 64
	mov	eax,[unpack_DeflateUnpack2]
65
	mov	[deflate_unpack],eax
1101 Lrz 66
 
1435 mario79 67
; OpenDialog initialisation
1585 mario79 68
	push    dword OpenDialog_data
69
	call    [OpenDialog_Init]
1101 Lrz 70
 
1435 mario79 71
	mov	edi,filename_area
72
	mov	esi,start_temp_file_name
73
	xor	eax,eax
74
	cld
75
@@:
76
	lodsb
77
	stosb
78
	test	eax,eax
79
	jnz	@b
80
 
81
 
82
;	mov	ebx,icons_file_name
83
;	mov	esi,path
84
;	mov	edi,file_name
1101 Lrz 85
 
1435 mario79 86
	copy_path	icons_file_name,path,library_path,0
87
 
88
	mcall	70,fileinfo
1219 mario79 89
 
1435 mario79 90
	mov	[fileinfo+0],dword 0
1101 Lrz 91
 
1435 mario79 92
	mov	ecx,[file_info+32]
93
	mov	[fileinfo+12],ecx
94
	mov	[img_size],ecx
95
 
1101 Lrz 96
 
1435 mario79 97
	mcall	68,12
1101 Lrz 98
 
99
 
1435 mario79 100
	mov	[fileinfo+16],eax
101
	mov	[image_file],eax
1101 Lrz 102
 
103
 
1435 mario79 104
	mcall	70,fileinfo
105
 
106
	xor	eax,eax
107
	mov	[return_code],eax
1953 mario79 108
;	mov	eax,image_file
109
	push	image_file
1219 mario79 110
	call	[cnv_png_import.Start]
1435 mario79 111
 
112
	mov	ecx,[image_file]
113
	mcall	68,13,
114
 
115
	cmp	[return_code],dword 0
116
	jne	button.exit
117
 
118
	mov	ebx,[raw_pointer]
119
	mov	eax,[ebx+4]
120
; set of button size
121
	mov	[dinamic_button_data_1.size_x],ax
122
	mov	[dinamic_button_data_1.size_y],ax
123
	mov	[dinamic_button_data_2.size_x],ax
124
	mov	[dinamic_button_data_2.size_y],ax
125
	mov	eax,[ebx+12]
126
; set of RAW resolution to pixel
127
	mov	[dinamic_button_data_1.resolution_raw],eax
128
	mov	[dinamic_button_data_2.resolution_raw],eax
129
	mov	eax,[ebx+20]
130
	add	eax,ebx
131
; set RAW palette, use else resolution 8bit or less
132
	mov	[dinamic_button_data_1.palette_raw],eax
133
	mov	[dinamic_button_data_2.palette_raw],eax
134
	mov	eax,[ebx+28]
135
	add	eax,ebx
136
; set RAW area for passive button
137
	mov	[dinamic_button_data_1.passive_raw],eax
138
	mov	[dinamic_button_data_2.passive_raw],eax
139
	mov	ecx,[ebx+4]
140
	imul	ecx,[ebx+4]
141
	imul	ecx,[ebx+12]
142
	shr	ecx,3
143
	add	eax,ecx
144
; set RAW area for active button
145
	mov	[dinamic_button_data_1.active_raw],eax
146
	mov	[dinamic_button_data_2.active_raw],eax
147
	add	eax,ecx
148
; RAW area for click button
149
	mov	[dinamic_button_data_1.click_raw],eax
150
	mov	[dinamic_button_data_2.click_raw],eax
151
;---------------------------------------------------------------------
1101 Lrz 152
red:
1435 mario79 153
	call	draw_window
1101 Lrz 154
still:
1435 mario79 155
	mcall	10
1101 Lrz 156
 
1435 mario79 157
	cmp	eax,1
158
	je	red
159
	cmp	eax,2
160
	je	key
161
	cmp	eax,3
162
	je	button
163
	cmp	eax,6
164
	je	mouse
165
	jmp	still
1101 Lrz 166
;---------------------------------------------------------------------
1435 mario79 167
	key:
168
	mcall	2
169
	jmp	still
1101 Lrz 170
;---------------------------------------------------------------------
1435 mario79 171
	button:
172
	mcall	17
173
	cmp	ah,1
174
	jne	still
175
	.exit:
176
	mcall	-1
1101 Lrz 177
;---------------------------------------------------------------------
178
mouse:
179
;-----------------------------------------------
1435 mario79 180
	cmp	[scroll_bar_data_horizontal.delta2],0
181
	jne	.horizontal
1101 Lrz 182
.vertical:
1435 mario79 183
	mov	eax,[scroll_bar_data_vertical.max_area]
184
	cmp	eax,[scroll_bar_data_vertical.cur_area]
185
	jbe	.horizontal
1101 Lrz 186
; mouse event for Vertical ScrollBar
1435 mario79 187
	push	dword scroll_bar_data_vertical
188
	call	[scrollbar_ver_mouse]
189
	mov	eax,scroll_bar_data_vertical.redraw
190
	xor	ebx,ebx
191
	cmp	[eax],ebx
192
	je	@f
193
	mov	[eax],ebx
194
	jmp	.draw_cube
1101 Lrz 195
@@:
1435 mario79 196
	cmp	[scroll_bar_data_vertical.delta2],0
197
	jne	still
1101 Lrz 198
.horizontal:
1435 mario79 199
	mov	eax,[scroll_bar_data_horizontal.max_area]
200
	cmp	eax,[scroll_bar_data_horizontal.cur_area]
201
	jbe	.other
1101 Lrz 202
; mouse event for Horizontal ScrollBar
1435 mario79 203
	push	dword scroll_bar_data_horizontal
204
	call	[scrollbar_hor_mouse]
205
	mov	eax,scroll_bar_data_horizontal.redraw
206
	xor	ebx,ebx
207
	cmp	[eax],ebx
208
	je	.other
209
	mov	[eax],ebx
1101 Lrz 210
.draw_cube:
1435 mario79 211
	call	draw_cube
212
	jmp	still
1101 Lrz 213
.other:
1435 mario79 214
	cmp	[scroll_bar_data_vertical.delta2],0
215
	jne	still
216
	cmp	[scroll_bar_data_horizontal.delta2],0
217
	jne	still
1101 Lrz 218
;-----------------------------------------------
219
.menu_bar_1:
1435 mario79 220
	call	.set_mouse_flag
1101 Lrz 221
@@:
222
; mouse event for Menu 1
1435 mario79 223
	push	dword menu_data_1
224
	call	[menu_bar_mouse]
225
	cmp	[menu_data_1.click],dword 1
226
	jne	.menu_bar_2
227
	cmp	[menu_data_1.cursor_out],dword 0
228
	jne	analyse_out_menu_1
229
	jmp	.menu_bar_1
1101 Lrz 230
;--------------------------------------------
231
.menu_bar_2:
232
; mouse event for Menu 2
1435 mario79 233
	push	dword menu_data_2
234
	call	[menu_bar_mouse]
235
	cmp	[menu_data_2.click],dword 1
236
	jne	.mouse_dinamic_button
237
	cmp	[menu_data_2.cursor_out],dword 0
238
	jne	analyse_out_menu_2
239
	jmp	.menu_bar_1
1101 Lrz 240
;--------------------------------------------
241
.mouse_dinamic_button:
242
; mouse event for Dinamic Button 1
1435 mario79 243
	push	dword dinamic_button_data_1
244
	call	[dinamic_button_mouse]
245
	mov	eax,dinamic_button_data_1.click
246
	cmp	[eax],dword 1
247
	jne	@f
248
	mov	[eax],dword 0
249
	jmp	about
1101 Lrz 250
@@:
251
; mouse event for Dinamic Button 2
1435 mario79 252
	push	dword dinamic_button_data_2
253
	call	[dinamic_button_mouse]
254
	mov	eax,dinamic_button_data_2.click
255
	cmp	[eax],dword 1
256
	jne	still	;@f
257
	mov	[eax],dword 0
258
	jmp	button.exit
1101 Lrz 259
;---------------------------------------------------------------------
1435 mario79 260
.set_mouse_flag:
261
	xor	eax,eax
262
	inc	eax
263
	mov	[menu_data_1.get_mouse_flag],eax
264
	mov	[menu_data_2.get_mouse_flag],eax
265
	ret
1101 Lrz 266
;---------------------------------------------------------------------
267
analyse_out_menu_1:
268
; analyse result of Menu 1
1219 mario79 269
	mov	eax,[menu_data_1.cursor_out]
270
	cmp	eax,dword 1
1417 mario79 271
	je	OpenDialog_start_0
272
	cmp	eax,dword 2
273
	je	OpenDialog_start_1
274
	cmp	eax,dword 3
275
	je	OpenDialog_start_2
1435 mario79 276
	cmp	eax,dword 4
277
	je	button.exit
278
	jmp	still
279
;---------------------------------------------------------------------
1101 Lrz 280
analyse_out_menu_2:
281
; analyse result of Menu 2
1435 mario79 282
	cmp	[menu_data_2.cursor_out],dword 2
283
	je	about
284
	jmp	still
1101 Lrz 285
;---------------------------------------------------------------------
1435 mario79 286
	about:
287
	mcall	51,1,thread3,thread
288
	jmp	still
1101 Lrz 289
;---------------------------------------------------------------------
1417 mario79 290
OpenDialog_start_0:
291
	mov	[OpenDialog_data.type],0
292
	jmp	OpenDialog_start
293
OpenDialog_start_1:
294
	mov	[OpenDialog_data.type],1
295
	jmp	OpenDialog_start
296
OpenDialog_start_2:
297
	mov	[OpenDialog_data.type],2
1219 mario79 298
OpenDialog_start:
299
;	mov	ebx,open_dialog_name
300
;	mov	esi,path
301
;	mov	edi,library_path
302
;	call	copy_file_path
303
 
1953 mario79 304
;	copy_path	open_dialog_name,path,library_path,0
1219 mario79 305
 
1585 mario79 306
	push    dword OpenDialog_data
307
	call    [OpenDialog_Start]
1219 mario79 308
 
1435 mario79 309
	cmp	[OpenDialog_data.status],2	; OpenDialog does not start
310
	je	still	; some kind of alternative, instead OpenDialog
1219 mario79 311
	cmp	[OpenDialog_data.status],1
1435 mario79 312
	jne	still	; OpenDialog user say cancel
313
; copy path
314
; prepare path - PathShow
315
	push	dword PathShow_data_1
316
	call	[PathShow_prepare]
1433 mario79 317
 
1219 mario79 318
	call	draw_window
1435 mario79 319
	jmp	still	; OpenDialog user selected the target file
320
;	[OpenDialog_data.openfile_pach] pointer of area the target file
1219 mario79 321
;---------------------------------------------------------------------
322
;---------------------------------------------------------------------
1101 Lrz 323
draw_window:
1435 mario79 324
	mcall	12,1
325
	mcall	0,<0,400>,<0,400>,0x03AABBCC,0x805080D0,0x005080D0
326
	mcall	71,1,header_1
1101 Lrz 327
;---------------------------------------------
328
; draw for Menu 1
1435 mario79 329
	push	dword menu_data_1
330
	call	[menu_bar_draw]
1101 Lrz 331
; draw for Menu 2
1435 mario79 332
	push	dword menu_data_2
333
	call	[menu_bar_draw]
1101 Lrz 334
;---------------------------------------------
1435 mario79 335
; draw for Dinamic Button	1
336
	push	dword dinamic_button_data_1
337
	call	[dinamic_button_draw]
1101 Lrz 338
; draw for Dinamic Button 2
1435 mario79 339
	push	dword dinamic_button_data_2
340
	call	[dinamic_button_draw]
1101 Lrz 341
;---------------------------------------------
1219 mario79 342
	mcall	13,<170,200>,<25,15>,0xffffb0
1433 mario79 343
;	mov	bx,28
344
;	add	ebx,2 shl 16
345
;	mcall	4,,0xC0000000,text_work_area,,0xffffb0
346
; draw for PathShow
1435 mario79 347
	push	dword PathShow_data_1
348
	call	[PathShow_draw]
1219 mario79 349
;---------------------------------------------
1101 Lrz 350
; set all_redraw flag for draw all ScrollBar
351
; In some cases it is necessity to draw only the area
1435 mario79 352
; of moving of a "runner", for acceleration of output -
1101 Lrz 353
; in this case the flag needs to be reset to 0 (zero).
1435 mario79 354
	xor	eax,eax
355
	inc	eax
356
	mov	[scroll_bar_data_vertical.all_redraw],eax
357
	mov	[scroll_bar_data_horizontal.all_redraw],eax
358
 
1101 Lrz 359
; draw for Vertical ScrollBar
1435 mario79 360
	push	dword scroll_bar_data_vertical
361
	call	[scrollbar_ver_draw]
1101 Lrz 362
; draw for Horizontal ScrollBar
1435 mario79 363
	push	dword scroll_bar_data_horizontal
364
	call	[scrollbar_hor_draw]
365
; reset all_redraw flag
366
	xor	eax,eax
367
	mov	[scroll_bar_data_vertical.all_redraw],eax
368
	mov	[scroll_bar_data_horizontal.all_redraw],eax
1101 Lrz 369
;---------------------------------------------
1435 mario79 370
	call	draw_cube
371
	mcall	12,2
372
	ret
1101 Lrz 373
;---------------------------------------------------------------------
374
draw_cube:
1435 mario79 375
	mcall	13,<30,301>,<50,301>,0xafafaf
376
	mov	ecx,[scroll_bar_data_vertical.position]
377
	add	ecx,50
378
	shl	ecx,16
379
	mov	cx,30
380
	mov	ebx,[scroll_bar_data_horizontal.position]
381
	add	ebx,30
382
	shl	ebx,16
383
	mov	bx,30
384
	mcall	13,,,0x0
385
	ret
1219 mario79 386
;---------------------------------------------------------------------
1101 Lrz 387
include 'data.inc'
388
include 'w_about.inc'
1219 mario79 389
;---------------------------------------------------------------------
1101 Lrz 390
IM_END:
1435 mario79 391
	rb 1024
1101 Lrz 392
thread:
1219 mario79 393
;---------------------------------------------------------------------
1435 mario79 394
	rb 1024
1101 Lrz 395
stacktop:
1219 mario79 396
;---------------------------------------------------------------------
1101 Lrz 397
path:
1435 mario79 398
	rb 4096
1219 mario79 399
;---------------------------------------------------------------------
400
openfile_pach:
1435 mario79 401
	rb 4096
1219 mario79 402
;---------------------------------------------------------------------
1101 Lrz 403
file_name:
1219 mario79 404
library_path:
1435 mario79 405
	rb 4096
1219 mario79 406
;---------------------------------------------------------------------
407
plugin_pach:
1435 mario79 408
	rb 4096
1219 mario79 409
;---------------------------------------------------------------------
1433 mario79 410
text_work_area:
1435 mario79 411
	rb 4096
1433 mario79 412
;---------------------------------------------------------------------
1435 mario79 413
filename_area:
414
	rb 256
415
;---------------------------------------------------------------------
1101 Lrz 416
file_info:
1435 mario79 417
	rb 40
1219 mario79 418
;---------------------------------------------------------------------
419
procinfo:
1435 mario79 420
	rb 1024
1219 mario79 421
;---------------------------------------------------------------------
1101 Lrz 422
I_END:
423