Rev 3634 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed
Rev | Author | Line No. | Line |
---|---|---|---|
833 | Lrz | 1 | ; 24.07.2008 |
308 | Lrz | 2 | ; 01.02.07 - обновлён editbox |
3 | ; 31.01.07 - исправлена некорректная отрисовка при большом значении высоты скина |
||
4 | ; выравнивание снизу относительно рабочей области экрана |
||
5 | window_y=67 |
||
2675 | leency | 6 | window_x=400 |
493 | Lrz | 7 | ;--- другие макросы --- |
1110 | Lrz | 8 | include '../../../develop/libraries/box_lib/load_lib.mac' |
1373 | IgorA | 9 | include '../../../develop/libraries/box_lib/trunk/box_lib.mac' |
493 | Lrz | 10 | include 'txtbut.inc' |
11 | include '../../../macros.inc' |
||
12 | include 'run.mac' |
||
309 | heavyiron | 13 | include 'lang.inc' |
3634 | fedesco | 14 | use32 |
1069 | Lrz | 15 | org 0x0 |
16 | db 'MENUET01' |
||
17 | dd 0x1 |
||
18 | dd start |
||
19 | dd i_end |
||
20 | dd mem |
||
21 | dd mem |
||
22 | dd par |
||
23 | dd cur_dir_path |
||
24 | |||
25 | |||
26 | ; meos_app_start |
||
27 | ; use_edit_box |
||
28 | @use_library |
||
1373 | IgorA | 29 | use_txt_button |
1069 | Lrz | 30 | ; code |
31 | ;load system lib |
||
32 | align 4 |
||
33 | start: |
||
34 | sys_load_library library_name, cur_dir_path, library_path, system_path, \ |
||
35 | err_message_found_lib, head_f_l, myimport, err_message_import, head_f_i |
||
1373 | IgorA | 36 | cmp eax,-1 |
37 | jz close |
||
1069 | Lrz | 38 | |
1373 | IgorA | 39 | cmp [par],byte 0 |
40 | jne read_par |
||
3942 | mario79 | 41 | mcall 40,EVM_MOUSE+EVM_BUTTON+EVM_KEY+EVM_REDRAW+EVM_MOUSE_FILTER |
205 | heavyiron | 42 | red: |
1373 | IgorA | 43 | mcall 48,3,sc,40 |
44 | edit_boxes_set_sys_color input_fn,input_fn_end,sc |
||
45 | set_sys_colors_txt_button run_but,sc |
||
46 | push dword [sc.work_graph] |
||
47 | pop [input_fn.focus_border_color] |
||
48 | call draw_window |
||
3634 | fedesco | 49 | still: ;основной обработчик |
1373 | IgorA | 50 | mcall 10 ;Ожидать события |
51 | dec eax |
||
52 | jz red |
||
53 | dec eax |
||
54 | jz key |
||
55 | dec eax |
||
56 | jz button |
||
3634 | fedesco | 57 | ; mouse_edit_box input_fn |
1373 | IgorA | 58 | push dword input_fn |
59 | call [edit_box_mouse] |
||
1069 | Lrz | 60 | |
1373 | IgorA | 61 | jmp still ;если ничего из перечисленного то снова в цикл |
205 | heavyiron | 62 | key: |
1373 | IgorA | 63 | mcall 2 |
64 | cmp ah,13 |
||
65 | je run |
||
1069 | Lrz | 66 | ; key_edit_box input_fn |
1373 | IgorA | 67 | push dword input_fn |
68 | call [edit_box_key] |
||
1069 | Lrz | 69 | |
1373 | IgorA | 70 | jmp still |
205 | heavyiron | 71 | button: |
1373 | IgorA | 72 | mcall 17 |
73 | dec ah |
||
74 | jz close |
||
75 | dec ah |
||
76 | jz run |
||
77 | jmp still |
||
31 | halyavin | 78 | |
205 | heavyiron | 79 | read_par: |
1373 | IgorA | 80 | mov esi,par |
81 | mov edi,fn |
||
82 | mov ecx,256 |
||
83 | rep movsb |
||
205 | heavyiron | 84 | run: |
1373 | IgorA | 85 | xor eax,eax |
86 | mov edi,file_info.name |
||
87 | mov ecx,512 |
||
88 | rep stosb |
||
89 | mov edi,run_par |
||
90 | mov ecx,256 |
||
91 | rep stosb |
||
31 | halyavin | 92 | |
1373 | IgorA | 93 | mov esi,fn |
94 | mov edi,file_info.name |
||
95 | cmp [esi],byte '"' |
||
96 | je copy_fn_with_spaces |
||
205 | heavyiron | 97 | copy_fn: |
1373 | IgorA | 98 | cmp [esi],byte ' ' |
99 | je .stop |
||
100 | cmp [esi],byte 0 |
||
101 | je .stop |
||
102 | mov al,[esi] |
||
103 | mov [edi],al |
||
104 | inc esi |
||
105 | inc edi |
||
106 | jmp copy_fn |
||
205 | heavyiron | 107 | .stop: |
31 | halyavin | 108 | |
1373 | IgorA | 109 | jmp copy_par |
31 | halyavin | 110 | |
205 | heavyiron | 111 | copy_fn_with_spaces: |
1373 | IgorA | 112 | inc esi |
205 | heavyiron | 113 | @@: |
1373 | IgorA | 114 | cmp [esi],byte '"' |
115 | je .stop |
||
116 | cmp [esi],byte 0 |
||
117 | je .stop |
||
118 | mov al,[esi] |
||
119 | mov [edi],al |
||
120 | inc esi |
||
121 | inc edi |
||
122 | jmp @b |
||
205 | heavyiron | 123 | .stop: |
31 | halyavin | 124 | |
205 | heavyiron | 125 | copy_par: |
126 | @@: |
||
1373 | IgorA | 127 | inc esi |
128 | cmp [esi],byte ' ' |
||
129 | je @b |
||
130 | mov edi,run_par |
||
205 | heavyiron | 131 | @@: |
1373 | IgorA | 132 | cmp [esi],byte 0 |
133 | je .stop |
||
134 | mov al,[esi] |
||
135 | mov [edi],al |
||
136 | inc esi |
||
137 | inc edi |
||
138 | jmp @b |
||
205 | heavyiron | 139 | .stop: |
1373 | IgorA | 140 | mcall 70,file_info |
31 | halyavin | 141 | |
1373 | IgorA | 142 | cmp eax,0 |
143 | jl error |
||
144 | mov [status],run_ok |
||
145 | call draw_status |
||
146 | jmp still |
||
205 | heavyiron | 147 | close: |
1373 | IgorA | 148 | mcall -1 |
31 | halyavin | 149 | |
205 | heavyiron | 150 | error: |
1373 | IgorA | 151 | neg eax |
152 | cmp_err 3,bad_file_sys |
||
153 | cmp_err 5,file_not_find |
||
154 | cmp_err 9,bad_fat_table |
||
155 | cmp_err 10,acces_denyied |
||
156 | cmp_err 11,device_error |
||
157 | cmp_err 30,out_of_memory |
||
158 | cmp_err 31,file_not_executable |
||
159 | cmp_err 32,many_processes |
||
31 | halyavin | 160 | |
1373 | IgorA | 161 | call draw_status |
162 | jmp still |
||
31 | halyavin | 163 | |
164 | draw_window: |
||
1373 | IgorA | 165 | mcall 48,5 |
166 | mov si,bx |
||
31 | halyavin | 167 | |
1373 | IgorA | 168 | mcall 12,1 |
169 | mcall 48,4 |
||
170 | mov dx,ax |
||
171 | mcall 14 |
||
172 | xor ecx,ecx |
||
173 | sub cx,window_y+2 |
||
174 | sub cx,dx |
||
175 | add cx,si |
||
176 | shl ecx,16 |
||
177 | mov cx,dx |
||
178 | add cx,window_y |
||
179 | shr eax,16 |
||
180 | mov bx,ax |
||
181 | sub bx,window_x |
||
182 | shl ebx,15 |
||
183 | mov bx,window_x |
||
184 | mov edx,[sc.work] |
||
185 | or edx,0x33000000 |
||
186 | xor esi,esi |
||
187 | mov edi,grab_text |
||
188 | mcall 0 |
||
31 | halyavin | 189 | |
1373 | IgorA | 190 | mcall 9,procinfo,-1 |
31 | halyavin | 191 | |
1373 | IgorA | 192 | mov eax,[procinfo.box.width] |
193 | sub eax,20 |
||
194 | mov [input_fn.width],eax |
||
195 | mov [run_but.width],ax |
||
31 | halyavin | 196 | |
1373 | IgorA | 197 | xor bx,bx |
198 | shl ebx,16 |
||
199 | mov bx,ax |
||
200 | add bx,10 |
||
201 | mov cx,45 |
||
202 | push cx |
||
203 | shl ecx,16 |
||
204 | pop cx |
||
205 | mov edx,[sc.work_graph] |
||
206 | mcall 38 |
||
1069 | Lrz | 207 | ; draw_edit_box input_fn |
1373 | IgorA | 208 | push dword input_fn |
209 | call [edit_box_draw] |
||
1069 | Lrz | 210 | |
1373 | IgorA | 211 | draw_txt_button run_but |
31 | halyavin | 212 | |
1373 | IgorA | 213 | call draw_status_text |
31 | halyavin | 214 | |
1373 | IgorA | 215 | mcall 12,2 |
31 | halyavin | 216 | ret |
217 | |||
205 | heavyiron | 218 | draw_status: |
1373 | IgorA | 219 | mov ebx,[procinfo.box.width] |
220 | sub bx,10 |
||
221 | mov ecx,(50)*65536+12 |
||
222 | mov edx,[sc.work] |
||
223 | mcall 13 |
||
205 | heavyiron | 224 | draw_status_text: |
1373 | IgorA | 225 | mov edx,[status] |
226 | xor esi,esi |
||
205 | heavyiron | 227 | @@: |
1373 | IgorA | 228 | cmp [edx+esi],byte 0 |
229 | je @f |
||
230 | inc esi |
||
231 | jmp @b |
||
205 | heavyiron | 232 | @@: |
1373 | IgorA | 233 | mov ecx,[sc.work_text] |
234 | mcall 4,5*65536+(50) |
||
31 | halyavin | 235 | ret |
236 | |||
308 | Lrz | 237 | run_but txt_button 0,5,15,25,2,0,0,run_but_text, |
1214 | Lrz | 238 | input_fn edit_box 0,5,5,0xffffff,0x6a9480,0,0xaaaaaa,0,511,fn,mouse_dd,ed_focus+ed_always_focus |
1069 | Lrz | 239 | ;mouse_flag: dd 0x0 |
1228 | Lrz | 240 | input_fn_end: |
309 | heavyiron | 241 | if lang eq ru |
3634 | fedesco | 242 | hello db 'Введите полный путь к файлу и нажмите Enter',0 |
243 | bad_file_sys db 'Неизвестная файловая система',0 ; 3 |
||
244 | file_not_find db 'Файл не найден',0 ; 5 |
||
245 | bad_fat_table db 'Таблица FAT разрушена',0 ; 9 |
||
246 | acces_denyied db 'Доступ запрещен',0 ; 10 |
||
247 | device_error db 'Ошибка устройства',0 ; 11 |
||
248 | out_of_memory db 'Недостаточно памяти',0 ; 30 |
||
249 | file_not_executable db 'Файл не является исполняемым',0 ; 31 |
||
250 | many_processes db 'Слишком много процессов',0 ; 32 |
||
251 | run_ok db 'Программа успешно запущена',0 |
||
252 | grab_text db 'Запуск программы',0 |
||
253 | run_but_text db 'ЗАПУСТИТЬ',0 |
||
254 | else if lang eq it |
||
255 | hello db 'Inserisci percorso completo al file e premi |
||
256 | bad_file_sys db 'Filesysrem sconosciuto',0 ; 3 |
||
257 | file_not_find db 'File non trovato',0 ; 5 |
||
258 | bad_fat_table db 'Tabella FAT corrotta',0 ; 9 |
||
259 | acces_denyied db 'Accesso negato',0 ; 10 |
||
260 | device_error db 'Device error',0 ; 11 |
||
261 | out_of_memory db 'Out of memory',0 ; 30 |
||
262 | file_not_executable db 'File non eseguibile',0 ; 31 |
||
263 | many_processes db 'Troppo processi',0 ; 32 |
||
264 | run_ok db 'Il programma eseguito correttamente',0 |
||
265 | grab_text db 'RUN',0 |
||
266 | run_but_text db 'Esegui',0 |
||
309 | heavyiron | 267 | else |
3634 | fedesco | 268 | hello db 'Enter full path to file and press |
269 | bad_file_sys db 'Unknown file system',0 ; 3 |
||
270 | file_not_find db 'File not found',0 ; 5 |
||
271 | bad_fat_table db 'FAT table corrupted',0 ; 9 |
||
272 | acces_denyied db 'Access denied',0 ; 10 |
||
273 | device_error db 'Device error',0 ; 11 |
||
274 | out_of_memory db 'Out of memory',0 ; 30 |
||
275 | file_not_executable db 'File is not executable',0 ; 31 |
||
276 | many_processes db 'Too many processes',0 ; 32 |
||
277 | run_ok db 'The program was started successfully',0 |
||
278 | grab_text db 'RUN',0 |
||
279 | run_but_text db 'RUN',0 |
||
309 | heavyiron | 280 | end if |
205 | heavyiron | 281 | status dd hello |
31 | halyavin | 282 | |
1069 | Lrz | 283 | ;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> |
284 | ;DATA данные |
||
285 | ;Всегда соблюдать последовательность в имени. |
||
1373 | IgorA | 286 | system_path db '/sys/lib/' |
287 | library_name db 'box_lib.obj',0 |
||
1069 | Lrz | 288 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
289 | |||
1373 | IgorA | 290 | if lang eq ru |
291 | err_message_found_lib db 'Ошибка при поиске box_lib.obj',0 |
||
1069 | Lrz | 292 | head_f_i: |
1373 | IgorA | 293 | head_f_l db 'Системная ошибка',0 |
294 | err_message_import db 'Ошибка при импорте box_lib.obj',0 |
||
295 | else |
||
296 | err_message_found_lib db 'Sorry I cannot load library box_lib.obj',0 |
||
297 | head_f_i: |
||
298 | head_f_l db 'System error',0 |
||
299 | err_message_import db 'Error on load import library box_lib.obj',0 |
||
300 | end if |
||
1069 | Lrz | 301 | |
3634 | fedesco | 302 | myimport: |
1069 | Lrz | 303 | |
1373 | IgorA | 304 | edit_box_draw dd aEdit_box_draw |
305 | edit_box_key dd aEdit_box_key |
||
306 | edit_box_mouse dd aEdit_box_mouse |
||
307 | version_ed dd aVersion_ed |
||
1069 | Lrz | 308 | |
1373 | IgorA | 309 | dd 0 |
310 | dd 0 |
||
1069 | Lrz | 311 | |
1373 | IgorA | 312 | aEdit_box_draw db 'edit_box',0 |
313 | aEdit_box_key db 'edit_box_key',0 |
||
1069 | Lrz | 314 | aEdit_box_mouse db 'edit_box_mouse',0 |
1373 | IgorA | 315 | aVersion_ed db 'version_ed',0 |
1069 | Lrz | 316 | |
317 | |||
318 | |||
319 | |||
205 | heavyiron | 320 | file_info: |
321 | .mode dd 7 |
||
322 | .flags dd 0 |
||
323 | .par dd run_par |
||
324 | dd 0,0 |
||
325 | .name rb 512 |
||
31 | halyavin | 326 | |
1228 | Lrz | 327 | flags rw 1 |
31 | halyavin | 328 | |
493 | Lrz | 329 | sc system_colors |
451 | heavyiron | 330 | |
493 | Lrz | 331 | procinfo process_information |
31 | halyavin | 332 | |
205 | heavyiron | 333 | run_par rb 256 |
334 | par rb 256 |
||
493 | Lrz | 335 | fn rb 512 |
1214 | Lrz | 336 | mouse_dd rd 1 |
1069 | Lrz | 337 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
1373 | IgorA | 338 | cur_dir_path rb 4096 |
339 | library_path rb 4096 |
||
1069 | Lrz | 340 | i_end: |
341 | rb 1024 |
||
342 | mem: |
||
343 | ;meos_app_end |
||
344 | ;udata |