modify run, add new version editbox
git-svn-id: svn://kolibrios.org@493 a494cfbc-eb01-0410-851d-a64ba20cac60
This commit is contained in:
1 parent
a6764896b9
commit
ed1742523e
4 files changed
+187
-199
No files matched your search
+171
-192
@@ -4,237 +4,220 @@
|
||||
window_y=67
|
||||
;window_x=320
|
||||
window_x=640
|
||||
include 'macros.inc'
|
||||
;--- другие макросы ---
|
||||
include '../../../develop/examples/editbox/trunk/editbox.inc'
|
||||
;include 'editbox.inc'
|
||||
include 'txtbut.inc'
|
||||
include '../../../macros.inc'
|
||||
;include 'macros.inc'
|
||||
include 'run.mac'
|
||||
include 'lang.inc'
|
||||
meos_header par
|
||||
use_edit_box
|
||||
use_txt_button
|
||||
app_start
|
||||
cmp [par],byte 0
|
||||
jne read_par
|
||||
set_events_mask evm_mouse+evm_button+evm_key+evm_redraw
|
||||
meos_app_start
|
||||
use_edit_box procinfo,22,5
|
||||
use_txt_button
|
||||
code
|
||||
cmp [par],byte 0
|
||||
jne read_par
|
||||
mcall 40,EVM_MOUSE+EVM_BUTTON+EVM_KEY+EVM_REDRAW
|
||||
red:
|
||||
get_sys_colors sc
|
||||
set_sys_colors_txt_button run_but,sc
|
||||
push dword [sc.work_graph]
|
||||
pop [input_fn.focus_border_color]
|
||||
call draw_window
|
||||
mcall 48,3,sc,40
|
||||
set_sys_colors_txt_button run_but,sc
|
||||
push dword [sc.work_graph]
|
||||
pop [input_fn.focus_border_color]
|
||||
call draw_window
|
||||
still:
|
||||
wait_event red,key,button,mouse,,still
|
||||
mcall 10
|
||||
cmp al,0x1 ;если изменилось положение окна
|
||||
jz red
|
||||
cmp al,0x2 ;если нажата клавиша то перейти
|
||||
jz key
|
||||
cmp al,0x3 ;если нажата кнопка то перейти
|
||||
jz button
|
||||
mouse_edit_box input_fn
|
||||
jmp still ;если ничего из перечисленного то снова в цикл
|
||||
key:
|
||||
get_key
|
||||
cmp ah,13
|
||||
je run
|
||||
key_edit_box input_fn
|
||||
jmp still
|
||||
mcall 2
|
||||
cmp ah,13
|
||||
je run
|
||||
key_edit_box input_fn
|
||||
jmp still
|
||||
button:
|
||||
get_pressed_button
|
||||
dec ah
|
||||
jz close
|
||||
dec ah
|
||||
jz run
|
||||
jmp still
|
||||
mouse:
|
||||
mouse_edit_box input_fn
|
||||
jmp still
|
||||
mcall 17
|
||||
dec ah
|
||||
jz close
|
||||
dec ah
|
||||
jz run
|
||||
jmp still
|
||||
|
||||
read_par:
|
||||
mov esi,par
|
||||
mov edi,fn
|
||||
mov ecx,256
|
||||
rep movsb
|
||||
mov esi,par
|
||||
mov edi,fn
|
||||
mov ecx,256
|
||||
rep movsb
|
||||
run:
|
||||
xor eax,eax
|
||||
mov edi,file_info.name
|
||||
mov ecx,512
|
||||
rep stosb
|
||||
mov edi,run_par
|
||||
mov ecx,256
|
||||
rep stosb
|
||||
xor eax,eax
|
||||
mov edi,file_info.name
|
||||
mov ecx,512
|
||||
rep stosb
|
||||
mov edi,run_par
|
||||
mov ecx,256
|
||||
rep stosb
|
||||
|
||||
mov esi,fn
|
||||
mov edi,file_info.name
|
||||
cmp [esi],byte '"'
|
||||
je copy_fn_with_spaces
|
||||
mov esi,fn
|
||||
mov edi,file_info.name
|
||||
cmp [esi],byte '"'
|
||||
je copy_fn_with_spaces
|
||||
copy_fn:
|
||||
cmp [esi],byte ' '
|
||||
je .stop
|
||||
cmp [esi],byte 0
|
||||
je .stop
|
||||
mov al,[esi]
|
||||
mov [edi],al
|
||||
inc esi
|
||||
inc edi
|
||||
jmp copy_fn
|
||||
cmp [esi],byte ' '
|
||||
je .stop
|
||||
cmp [esi],byte 0
|
||||
je .stop
|
||||
mov al,[esi]
|
||||
mov [edi],al
|
||||
inc esi
|
||||
inc edi
|
||||
jmp copy_fn
|
||||
.stop:
|
||||
|
||||
jmp copy_par
|
||||
jmp copy_par
|
||||
|
||||
copy_fn_with_spaces:
|
||||
inc esi
|
||||
inc esi
|
||||
@@:
|
||||
cmp [esi],byte '"'
|
||||
je .stop
|
||||
cmp [esi],byte 0
|
||||
je .stop
|
||||
mov al,[esi]
|
||||
mov [edi],al
|
||||
inc esi
|
||||
inc edi
|
||||
jmp @b
|
||||
cmp [esi],byte '"'
|
||||
je .stop
|
||||
cmp [esi],byte 0
|
||||
je .stop
|
||||
mov al,[esi]
|
||||
mov [edi],al
|
||||
inc esi
|
||||
inc edi
|
||||
jmp @b
|
||||
.stop:
|
||||
|
||||
copy_par:
|
||||
@@:
|
||||
inc esi
|
||||
cmp [esi],byte ' '
|
||||
je @b
|
||||
mov edi,run_par
|
||||
inc esi
|
||||
cmp [esi],byte ' '
|
||||
je @b
|
||||
mov edi,run_par
|
||||
@@:
|
||||
cmp [esi],byte 0
|
||||
je .stop
|
||||
mov al,[esi]
|
||||
mov [edi],al
|
||||
inc esi
|
||||
inc edi
|
||||
jmp @b
|
||||
cmp [esi],byte 0
|
||||
je .stop
|
||||
mov al,[esi]
|
||||
mov [edi],al
|
||||
inc esi
|
||||
inc edi
|
||||
jmp @b
|
||||
.stop:
|
||||
mcall 70,file_info
|
||||
|
||||
mov eax,70
|
||||
mov ebx,file_info
|
||||
int 0x40
|
||||
|
||||
cmp eax,0
|
||||
jl error
|
||||
mov [status],run_ok
|
||||
call draw_status
|
||||
jmp still
|
||||
cmp eax,0
|
||||
jl error
|
||||
mov [status],run_ok
|
||||
call draw_status
|
||||
jmp still
|
||||
close:
|
||||
app_close
|
||||
mcall -1
|
||||
|
||||
error:
|
||||
neg eax
|
||||
cmp_err 3,bad_file_sys
|
||||
cmp_err 5,file_not_find
|
||||
cmp_err 9,bad_fat_table
|
||||
cmp_err 10,acces_denyied
|
||||
cmp_err 11,device_error
|
||||
cmp_err 30,out_of_memory
|
||||
cmp_err 31,file_not_executable
|
||||
cmp_err 32,many_processes
|
||||
|
||||
macro cmp_err code,text_ptr
|
||||
{
|
||||
cmp al,code
|
||||
jne @f
|
||||
mov [status],text_ptr
|
||||
@@:
|
||||
}
|
||||
neg eax
|
||||
|
||||
cmp_err 3,bad_file_sys
|
||||
|
||||
cmp_err 5,file_not_find
|
||||
|
||||
cmp_err 9,bad_fat_table
|
||||
|
||||
cmp_err 10,acces_denyied
|
||||
|
||||
cmp_err 11,device_error
|
||||
|
||||
cmp_err 30,out_of_memory
|
||||
|
||||
cmp_err 31,file_not_executable
|
||||
|
||||
cmp_err 32,many_processes
|
||||
|
||||
|
||||
call draw_status
|
||||
jmp still
|
||||
call draw_status
|
||||
jmp still
|
||||
|
||||
draw_window:
|
||||
push 48
|
||||
pop eax
|
||||
mov ebx,5
|
||||
int 0x40
|
||||
mov si,bx
|
||||
start_draw_window
|
||||
get_skin_height
|
||||
mov dx,ax
|
||||
get_screen_size
|
||||
xor ecx,ecx
|
||||
sub cx,window_y+2
|
||||
sub cx,dx
|
||||
add cx,si
|
||||
shl ecx,16
|
||||
mov cx,dx
|
||||
add cx,window_y
|
||||
shr eax,16
|
||||
mov bx,ax
|
||||
sub bx,window_x
|
||||
shl ebx,15
|
||||
mov bx,window_x
|
||||
mov edx,[sc.work]
|
||||
or edx,0x33000000
|
||||
xor eax,eax
|
||||
xor esi,esi
|
||||
mov edi,grab_text
|
||||
int 0x40
|
||||
mcall 48,5
|
||||
mov si,bx
|
||||
|
||||
get_procinfo app
|
||||
mcall 12,1
|
||||
mcall 48,4
|
||||
mov dx,ax
|
||||
mcall 14
|
||||
xor ecx,ecx
|
||||
sub cx,window_y+2
|
||||
sub cx,dx
|
||||
add cx,si
|
||||
shl ecx,16
|
||||
mov cx,dx
|
||||
add cx,window_y
|
||||
shr eax,16
|
||||
mov bx,ax
|
||||
sub bx,window_x
|
||||
shl ebx,15
|
||||
mov bx,window_x
|
||||
mov edx,[sc.work]
|
||||
or edx,0x33000000
|
||||
xor esi,esi
|
||||
mov edi,grab_text
|
||||
mcall 0
|
||||
|
||||
mov eax,[app.width]
|
||||
sub eax,20
|
||||
mov [input_fn.width],eax
|
||||
mov [run_but.width],ax
|
||||
mcall 9,procinfo,-1
|
||||
|
||||
xor bx,bx
|
||||
shl ebx,16
|
||||
mov bx,ax
|
||||
add bx,10
|
||||
mov cx,45
|
||||
push cx
|
||||
shl ecx,16
|
||||
pop cx
|
||||
mov edx,[sc.work_graph]
|
||||
mov eax,38
|
||||
int 0x40
|
||||
mov eax,[procinfo.box.width]
|
||||
sub eax,20
|
||||
mov [input_fn.width],eax
|
||||
mov [run_but.width],ax
|
||||
|
||||
draw_edit_box input_fn
|
||||
draw_txt_button run_but
|
||||
xor bx,bx
|
||||
shl ebx,16
|
||||
mov bx,ax
|
||||
add bx,10
|
||||
mov cx,45
|
||||
push cx
|
||||
shl ecx,16
|
||||
pop cx
|
||||
mov edx,[sc.work_graph]
|
||||
mcall 38
|
||||
draw_edit_box input_fn
|
||||
draw_txt_button run_but
|
||||
|
||||
call draw_status_text
|
||||
call draw_status_text
|
||||
|
||||
stop_draw_window
|
||||
mcall 12,2
|
||||
ret
|
||||
|
||||
draw_status:
|
||||
mov ebx,[app.width]
|
||||
sub bx,10
|
||||
mov ecx,(50)*65536+12
|
||||
mov edx,[sc.work]
|
||||
mov eax,13
|
||||
int 0x40
|
||||
mov ebx,[procinfo.box.width]
|
||||
sub bx,10
|
||||
mov ecx,(50)*65536+12
|
||||
mov edx,[sc.work]
|
||||
mcall 13
|
||||
draw_status_text:
|
||||
mov edx,[status]
|
||||
xor esi,esi
|
||||
mov edx,[status]
|
||||
xor esi,esi
|
||||
@@:
|
||||
cmp [edx+esi],byte 0
|
||||
je @f
|
||||
inc esi
|
||||
jmp @b
|
||||
cmp [edx+esi],byte 0
|
||||
je @f
|
||||
inc esi
|
||||
jmp @b
|
||||
@@:
|
||||
mov ebx,5*65536+(50)
|
||||
mov ecx,[sc.work_text]
|
||||
mov eax,4
|
||||
int 0x40
|
||||
mov ecx,[sc.work_text]
|
||||
mcall 4,5*65536+(50)
|
||||
ret
|
||||
|
||||
run_but txt_button 0,5,15,25,2,0,0,run_but_text,
|
||||
input_fn edit_box 0,5,5,0xffffff,0,0xaaaaaa,0,511,fn,ed_focus+\
|
||||
ed_always_focus
|
||||
input_fn edit_box 0,5,5,0xffffff,0x6a9480,0,0xaaaaaa,0,511,fn,ed_focus+ed_always_focus
|
||||
mouse_flag: dd 0x0
|
||||
|
||||
if lang eq ru
|
||||
hello db 'Введите полный путь к файлу и нажмите Enter',0
|
||||
bad_file_sys db 'Неизвестная файловая система',0 ; 3
|
||||
file_not_find db 'Файл не найден',0 ; 5
|
||||
bad_fat_table db 'Таблица FAT разрушена',0 ; 9
|
||||
acces_denyied db 'Доступ запрещен',0 ; 10
|
||||
device_error db 'Ошибка устройства',0 ; 11
|
||||
out_of_memory db 'Недостаточно памяти',0 ; 30
|
||||
file_not_find db 'Файл не найден',0 ; 5
|
||||
bad_fat_table db 'Таблица FAT разрушена',0 ; 9
|
||||
acces_denyied db 'Доступ запрещен',0 ; 10
|
||||
device_error db 'Ошибка устройства',0 ; 11
|
||||
out_of_memory db 'Недостаточно памяти',0 ; 30
|
||||
file_not_executable db 'Файл не является исполняемым',0 ; 31
|
||||
many_processes db 'Слишком много процессов',0 ; 32
|
||||
many_processes db 'Слишком много процессов',0 ; 32
|
||||
run_ok db 'Программа успешно запущена',0
|
||||
grab_text db 'ЗАПУСК ПРОГРАММЫ',0
|
||||
run_but_text db 'ЗАПУСТИТЬ',0
|
||||
@@ -252,9 +235,6 @@ run_ok db 'The program was started successfully',0
|
||||
grab_text db 'RUN',0
|
||||
run_but_text db 'RUN',0
|
||||
end if
|
||||
|
||||
mouse_flag: dd 0x0
|
||||
|
||||
status dd hello
|
||||
|
||||
file_info:
|
||||
@@ -266,13 +246,12 @@ dd 0,0
|
||||
|
||||
flags dw ?
|
||||
|
||||
structure_of_potock:
|
||||
rb 100
|
||||
sc system_colors
|
||||
|
||||
fn rb 512
|
||||
procinfo process_information
|
||||
|
||||
sc sys_color_table
|
||||
app procinfo
|
||||
run_par rb 256
|
||||
par rb 256
|
||||
app_end
|
||||
fn rb 512
|
||||
meos_app_end
|
||||
udata
|
||||
@@ -0,0 +1,7 @@
|
||||
macro cmp_err code,text_ptr
|
||||
{
|
||||
cmp al,code
|
||||
jne @f
|
||||
mov [status],text_ptr
|
||||
@@:
|
||||
}
|
||||
@@ -1,13 +1,15 @@
|
||||
MODIFY 15.05.2007 Kolibri team
|
||||
Добавленно поддержка макросов, из единой библиотеки макросов, модернизированный Editbox
|
||||
RUN - запускалка программ в КолибриОС через 70-ю функцию.
|
||||
|
||||
Запуск программ
|
||||
Запуск программ
|
||||
Введите полный путь к исполняемому файлу и нажмите кнопку "ЗАПУСТИТЬ" или
|
||||
клавишу Enter.
|
||||
Запуск программ с параметрами
|
||||
Запуск программ с параметрами
|
||||
Поставте пробел после пути к файлу и вводите параметры. Если в пути к файлу
|
||||
есть пробелы, его необходимо выделить кавычками (тогда пробелом разделять
|
||||
необязательно).
|
||||
Примеры
|
||||
Примеры
|
||||
/rd/1/tinypad /rd/1/menu.dat
|
||||
"/hd0/1/long name dir with spaces/tinypad" /rd/1/autorun.dat
|
||||
|
||||
@@ -15,5 +17,5 @@
|
||||
Имя файла или папки может содержать до 260 символов.
|
||||
Если произошла ошибка, она отобразится внизу.
|
||||
|
||||
Евтихов Максим (Maxxxx32)
|
||||
mailto:maxxxxm@mail.ru
|
||||
Евтихов Максим (Maxxxx32)
|
||||
mailto:maxxxxm@mail.ru
|
||||
@@ -12,7 +12,7 @@ pusha
|
||||
mov ecx,[edi+4] ;[but.height]
|
||||
mov edx,[edi+8];[but.id]
|
||||
mov esi,[edi+12];[but.color]
|
||||
int 0x40
|
||||
mcall
|
||||
;--- текст на ней ---
|
||||
; считаем количество символов
|
||||
mov edx,[edi+20]
|
||||
@@ -45,7 +45,7 @@ pusha
|
||||
; рисуем строку текста
|
||||
mov ecx,[edi+16] ;[but.text_color]
|
||||
shr eax,1
|
||||
int 0x40
|
||||
mcall
|
||||
popa
|
||||
ret
|
||||
}
|
||||
|
||||
Reference in new issue
Block a user