Subversion Repositories Kolibri OS

Rev

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

Rev Author Line No. Line
4036 GerdtR 1
;иногда неверно определяется ширина менюшки
2
 
4146 GerdtR 3
ICONS_DAT	equ '/rd/1/icons.dat'
4
ICON_STRIP	equ '/rd/1/iconstrp.png'
5
ICON_SIZE	equ 68
6
IMG_SIZE	equ 32
7
TEXT_BOTTOM_Y	equ 14
8
IMAGE_TOP_Y	equ 10	  ;>=1
9
ALIGN_SIZE	equ 68
10
NAME_LENGTH	equ 11
11
MIN_NO_MOVING	equ 8
12
			   ;для диалога создания/редактирования
13
ICONSX		equ 20
14
ICONSY		equ 80
3853 GerdtR 15
ICONS_DRAW_COUNTW equ 10  ;количество иконок в ширину
16
ICONS_DRAW_COUNTH equ 2   ;количество иконок в высоту
4146 GerdtR 17
SPCW		equ 3	  ;пробел между иконками по горизонтали
18
SPCH		equ 3
3853 GerdtR 19
END_ICONS_AREAW equ ICONSX+(IMG_SIZE+SPCW)*ICONS_DRAW_COUNTW-SPCW
20
END_ICONS_AREAH equ ICONSY+(IMG_SIZE+SPCH)*ICONS_DRAW_COUNTH-SPCH
21
 
22
 
23
 
4146 GerdtR 24
SizeData	equ bufStdIco+32
25
BegData 	equ fiStdIco.point
3853 GerdtR 26
;------------------------------------------------------------------------------
4146 GerdtR 27
	use32
28
	org 0x0
29
	db 'MENUET01'	; 8 byte id
30
	dd 0x01 	; header version
31
	dd START	; start of code
32
	dd I_END	; size of image
33
	dd ENDMEM	; memory for app
34
	dd stack_main	; esp
35
	dd 0		; boot parameters
36
	dd 0		; path
3853 GerdtR 37
;------------------------------------------------------------------------------
38
include 'lang.inc'
39
include '../../macros.inc'
40
include '../../proc32.inc'
41
include '../../develop/libraries/box_lib/trunk/box_lib.mac'
42
include '../../dll.inc'
4003 GerdtR 43
;include '../../debug.inc'
3853 GerdtR 44
 
45
;------------------------------------------------------------------------------
4146 GerdtR 46
START:		; start of execution
47
	mcall	68,11
48
	stdcall dll.Load,IMPORTS
49
	test	eax,eax
50
	jnz	ErrLoadLibs
3853 GerdtR 51
 
52
; unpack deflate
4146 GerdtR 53
	mov	eax,[unpack_DeflateUnpack2]
54
	mov	[deflate_unpack],eax
3853 GerdtR 55
;---------------------------------------------------------------------
56
; get size of file ICONSTRP.PNG
4146 GerdtR 57
	mcall	70,fiStdIco
58
	test	eax,eax
59
	jnz	ErrorStrp
3853 GerdtR 60
; get memory for ICONSTRP.PNG
4146 GerdtR 61
	mov	ecx,dword[bufStdIco+32]
62
	mov	[fiStdIco.size],ecx
63
	mov	[img_size],ecx
64
	mcall	68,12
65
	mov	[fiStdIco.point],eax
66
	mov	[image_file],eax
3853 GerdtR 67
; load ICONSTRP.PNG
4146 GerdtR 68
	mov	dword[fiStdIco],0
69
	mcall	70,fiStdIco
70
	test	eax,eax
71
	jnz	close
3853 GerdtR 72
; convert PNG to RAW
4146 GerdtR 73
	xor	eax,eax
74
	mov	[return_code],eax
3853 GerdtR 75
;int3
76
 
4146 GerdtR 77
	push	image_file
78
	call	[cnv_png_import.Start]
3853 GerdtR 79
 
4146 GerdtR 80
	mov	eax,[raw_pointer]
81
	mov	ebx,[eax+32]
82
	mov	[strip_file_size],ebx
83
	mov	eax,[eax+28]
84
	add	eax,[raw_pointer]
85
	mov	[strip_file],eax
3853 GerdtR 86
; back memory to system
4146 GerdtR 87
	mcall	68,13,[fiStdIco.point]
3853 GerdtR 88
 
4146 GerdtR 89
	mov	eax,[raw_pointer]
90
	mov	eax,[eax+8]
91
	shr	eax,5
92
	mov	[icon_count],eax
3853 GerdtR 93
 
4146 GerdtR 94
	and	eax,0x7
95
	mov	[cur_band_compensation],eax
3853 GerdtR 96
 
97
;########## загружаем данные иконок в память ##########################
98
 
4146 GerdtR 99
	mcall	70,fiIni		     ;выделяем память, достаточной для хранения ini файла. Её точно хватит для хранения данных об иконках
100
	test	eax,eax
101
	jnz	ErrorIni
3853 GerdtR 102
 
4146 GerdtR 103
	cmp	dword[bufIni+32],0
104
	je	ErrorIni
105
	mcall	68,12,dword[bufIni+32]
106
	mov	dword[BegData],eax
107
	jmp	NoErrIni
3853 GerdtR 108
 
109
  ErrorIni:
4146 GerdtR 110
	mcall	70,fiRunProg
111
	mcall	-1
3853 GerdtR 112
 
113
  NoErrIni:
4146 GerdtR 114
	m2m	[PIcoDB],[BegData]
3853 GerdtR 115
 
4146 GerdtR 116
	stdcall [ini_enum_sections],IconIni,LoadIconsData
3853 GerdtR 117
;int3
4146 GerdtR 118
	mov	eax,dword[PIcoDB]
119
	sub	eax,[BegData]
120
	mov	dword[SizeData],eax
121
	mov	eax,[BegData]
122
	cmp	eax,[PIcoDB]
123
	jne	@f
124
	mov	dword[eax],0
125
	mov	dword[SizeData],0
3853 GerdtR 126
   @@:
127
;######################################################################
128
 
4146 GerdtR 129
	call	FillIconsOffs		       ;заполняет MaxNumIcon,IconsOffs
3853 GerdtR 130
 
4146 GerdtR 131
	mcall	40,0100000b		       ;нужны только события мыши, перерисовка иконок будет в другом потоке
3853 GerdtR 132
 
4146 GerdtR 133
	mov	eax,[icon_count]
134
	mov	bl,ICONS_DRAW_COUNTH
135
	div	bl
136
	test	ah,ah
137
	jz	@f
138
	inc	al
3853 GerdtR 139
     @@:
4146 GerdtR 140
	and	eax,0FFh
141
	mov	[sbIcons.max_area],eax
3853 GerdtR 142
 
4146 GerdtR 143
	mcall	51,1,BGRedrawThread,stack_bredraw	;запускаем поток перерисовки иконок
144
	stdcall [OpenDialog_Init],OpenDialog_data
3853 GerdtR 145
 
146
messages:
4146 GerdtR 147
	mcall	10
148
	sub	eax,6
149
	jz	MSGMouse
3853 GerdtR 150
 
4146 GerdtR 151
	jmp	messages
3853 GerdtR 152
 
153
 
154
MSGMouse:
4146 GerdtR 155
	mcall	37,0	;GetMousePos
156
	xor	ebx,ebx
157
	mov	bx,ax
158
	shr	eax,16
159
	mov	ecx,ebx
160
	mov	ebx,eax
3853 GerdtR 161
 
4146 GerdtR 162
	mcall	34
163
	cmp	eax,1
164
	jne	messages
3853 GerdtR 165
 
4146 GerdtR 166
	cmp	[RButtonActiv],1
167
	je	messages
3853 GerdtR 168
 
4146 GerdtR 169
	mov	[MouseY],ecx
170
	mov	[MouseX],ebx
3853 GerdtR 171
 
172
 
4146 GerdtR 173
	mcall	37,2
174
	test	al,001b
175
	jnz	LButtonPress
176
	test	al,010b
177
	jnz	RButtonPress
178
	jmp	messages
3853 GerdtR 179
 
180
ErrLoadLibs:
4146 GerdtR 181
	;dps     'Не удалось загрузить необходимые библиотеки'
182
	;debug_newline
183
	jmp	close
3853 GerdtR 184
ErrorStrp:
4146 GerdtR 185
	;dps     'Ошибка открытия iconstrp.png'
186
	;debug_newline
3853 GerdtR 187
close:
4146 GerdtR 188
	mcall	-1
3853 GerdtR 189
 
190
LButtonPress:
4146 GerdtR 191
	stdcall GetNumIcon,[MouseX],[MouseY],-1
3853 GerdtR 192
;int3
4146 GerdtR 193
	cmp	eax,-1
194
	jnz	@f
3853 GerdtR 195
 
196
    WaitLB1:
4146 GerdtR 197
	mcall	37,2
198
	test	al,001b
199
	jz	messages
200
	;Yield
201
	mcall	5,1
202
	jmp	WaitLB1
3853 GerdtR 203
 
204
 
205
     @@:
4146 GerdtR 206
	push	eax
207
	stdcall DrawIcon,eax,1
3853 GerdtR 208
   WaitLB: