Subversion Repositories Kolibri OS

Rev

Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
7360 IgorA 1
;
2
; в этом файле собраны функции нужные для создания и
3
; работы окна с настройками
4
;
5
 
6
wnd_scale_width  equ 320 ;ширина окна с настройками
7
wnd_scale_height equ 150 ;высота окна с настройками
8
 
9
align 4
10
wnd_run_scale db 0 ;переменная следящая за тем что-бы не запускать больше 1-го окна со свойствами одновременно
11
 
12
;даное окно (процесс) вызываеться функцией but_wnd_coords
13
align 4
14
start_scale:
15
pushad
16
	mcall SF_SET_EVENTS_MASK,0x27 ;маска ожидаемых событий
17
	inc byte[wnd_run_scale]
18
 
19
	edit_boxes_set_sys_color edit3,editboxes_end_sc,sc ;установка системных цветов
20
	call get_scale
21
popad
22
	call red_win_scale
23
 
24
;не отрывать эту функцию от предыдущей
25
align 4
26
still_scale:
27
	pushad
28
 
29
	mcall SF_WAIT_EVENT_TIMEOUT,10
30
	or eax,eax
31
	jnz @f
32
		call timer_funct_scale
33
		jmp .end
34
	@@:
35
 
36
	cmp al,1 ;изм. положение окна
37
	jne @f
38
		call red_win_scale
39
		jmp .end
40
	@@:
41
	cmp al,2
42
	jne @f
43
		call key_scale
44
		jmp .end
45
	@@:
46
	cmp al,3
47
	jz button_scale
48
	cmp al,6
49
	jne @f
50
		call mouse_scale
51
	@@:
52
.end:
53
	popad
54
	jmp still_scale
55
 
56
align 4
57
red_win_scale:
58
pushad
59
	mcall SF_REDRAW,SSF_BEGIN_DRAW
60
 
61
	mcall SF_STYLE_SETTINGS,SSF_GET_SKIN_HEIGHT
62
	mov edi,capt_opt ;children window caption
63
	mov bx,word[procinfo.box.left]
64
	add bx,word[buf_0.l]
65
	add bx,5 ;ширина боковой рамки
66
	shl ebx,16
67
	mov bx,wnd_scale_width
68
	mov cx,word[procinfo.box.top]
69
	add cx,ax ;add skin height
70
	add cx,word[buf_0.t]
71
	shl ecx,16
72
	mov cx,wnd_scale_height
73
	mov edx,[sc.work]
74
	or  edx,0x33000000
75
	xor eax,eax
76
	int 0x40
77
 
78
	mov esi,[sc.work_button]
79
	;ebx = (l<:)+w, ecx = (t<:)+h
80
	mcall SF_DEFINE_BUTTON, (5 shl 16)+59, (95 shl 16)+20, 3
81
	mcall , (75 shl 16)+59, (95 shl 16)+20, 4
82
 
83
	mov ecx,[sc.work_text]
84
	bts ecx,31 ;рисуемая строка заканчивается нулём
85
	mcall SF_DRAW_TEXT, (5 shl 16)+15,, capt_sc
86
 
87
	mov ecx,[sc.work_button_text]
88
	bts ecx,31
89
	mcall , (9 shl 16)+101,, txt_but_cancel
90
	mov edx,txt_but_apply
91
	mcall ,(79 shl 16)+101
92
 
93
	stdcall [edit_box_draw], edit3
94
 
95
	mcall SF_REDRAW,SSF_END_DRAW
96
popad
97
	ret
98
 
99
align 4
100
proc key_scale uses eax ebx
101
	mcall SF_GET_KEY
102
 
103
	test word [edit3.flags],10b ;ed_focus
104
	je @f
105
		stdcall [edit_box_key], edit3
106
		;jmp .end
107
	@@:
108
 
109
	.end:
110
	ret
111
endp
112
 
113
align 4
114
mouse_scale:
115
	stdcall [edit_box_mouse], edit3
116
	ret
117
 
118
align 4
119
button_scale:
120
	mcall SF_GET_BUTTON
121
 
122
	cmp ah,3
123
	je .exit
124
	cmp ah,4
125
	jne .end_save
126
		push eax ecx edi esi
127
			finit
128
 
129
			mov esi,string3
130
			mov edi,Data_String
131
			cld
132
			mov ecx,8
133
			rep movsd
134
			call String_to_DoubleFloat
135
			fld  qword[Data_Double] ;считываем как double
136
			fstp qword[Scale1mm] ;сохраняем как double
137
 
138
		pop esi edi ecx eax
139
		jmp .exit
140
	.end_save:
141
 
142
	cmp ah,1
143
	jne still_scale.end
144
.exit:
145
	mov byte[wnd_run_scale],0 ;обнуляем счетчик окон
146
	mcall SF_TERMINATE_PROCESS ;выход из программы
147
 
148
align 4
149
get_scale:
150
	;загрузка координат в editbox-ы
151
	push eax
152
	mov word[NumberSymbolsAD],8
153
	finit
154
	fld qword[Scale1mm]
155
	fstp qword[Data_Double]
156
	call DoubleFloat_to_String
157
	call String_crop_0
158
	stdcall [edit_box_set_text], edit3, Data_String
159
	;stdcall [edit_box_draw], edit3
160
	pop eax
161
	ret
162
 
163
align 4
164
proc timer_funct_scale
165
	;просматриваем выделенную координату
166
	ret
167
endp
168
 
169
align 4
170
if lang eq ru
171
capt_opt db 'Настройки',0
172
capt_sc db 'Масштаб:',0
173
else
174
capt_opt db 'Options',0
175
capt_sc db 'Scale:',0
176
end if
177
 
178
edit3 edit_box 80, 54, 11, 0xffd0d0, 0xff, 0x80ff, 0, 0x8000, 34, string3, mouse_dd, 0
179
editboxes_end_sc:
180
 
181
string3 rb 34