forked from KolibriOS/kolibrios
Heed
1) Use OpenDialog calls of Proc_Lib 2) Removed old code for invoke Sysxtree git-svn-id: svn://kolibrios.org@1510 a494cfbc-eb01-0410-851d-a64ba20cac60
This commit is contained in:
parent
1deef2d452
commit
bc6fbbb6e8
@ -54,10 +54,8 @@ include 'lang.inc'
|
|||||||
include '../../../macros.inc'
|
include '../../../macros.inc'
|
||||||
include '../../libraries/box_lib/trunk/box_lib.mac'
|
include '../../libraries/box_lib/trunk/box_lib.mac'
|
||||||
include '../../libraries/box_lib/load_lib.mac'
|
include '../../libraries/box_lib/load_lib.mac'
|
||||||
include '../../libraries/box_lib/asm/trunk/opendial.mac'
|
|
||||||
|
|
||||||
@use_library
|
@use_library
|
||||||
use_OpenDialog
|
|
||||||
|
|
||||||
times 16 dd 0
|
times 16 dd 0
|
||||||
|
|
||||||
@ -94,8 +92,12 @@ ends
|
|||||||
|
|
||||||
START:
|
START:
|
||||||
mcall 68,11
|
mcall 68,11
|
||||||
|
|
||||||
|
load_libraries l_libs_start,end_l_libs
|
||||||
|
|
||||||
;OpenDialog initialisation
|
;OpenDialog initialisation
|
||||||
init_OpenDialog OpenDialog_data
|
push dword OpenDialog_data
|
||||||
|
call [OpenDialog_Init]
|
||||||
|
|
||||||
mov edi,filename_area
|
mov edi,filename_area
|
||||||
mov esi,start_temp_file_name
|
mov esi,start_temp_file_name
|
||||||
@ -107,9 +109,6 @@ init_OpenDialog OpenDialog_data
|
|||||||
test eax,eax
|
test eax,eax
|
||||||
jnz @b
|
jnz @b
|
||||||
|
|
||||||
load_library boxlib_name,cur_dir_path,buf_cmd_lin,system_path,\
|
|
||||||
err_message_found_lib,head_f_l,myimport,err_message_import,head_f_i
|
|
||||||
|
|
||||||
mcall 40,0x27
|
mcall 40,0x27
|
||||||
|
|
||||||
mcall 68,12,32*1024 ;áâà ¨çë© ¡ãä¥à
|
mcall 68,12,32*1024 ;áâà ¨çë© ¡ãä¥à
|
||||||
@ -1658,11 +1657,6 @@ create_help_window:
|
|||||||
;-------------------------------------------------
|
;-------------------------------------------------
|
||||||
|
|
||||||
open_file:
|
open_file:
|
||||||
mov dword [ed_box_data],1
|
|
||||||
mov dword [ed_box_data+4],edit1
|
|
||||||
call draw_ed_box ;à¨á㥬 editbox
|
|
||||||
;à §¬¥à ä ©« ?
|
|
||||||
.0:
|
|
||||||
mov [func_70.func_n],5
|
mov [func_70.func_n],5
|
||||||
mov [func_70.param1],0
|
mov [func_70.param1],0
|
||||||
mov [func_70.param2],0
|
mov [func_70.param2],0
|
||||||
@ -1760,10 +1754,13 @@ open_file:
|
|||||||
;-------------------------------------------------------------------------------
|
;-------------------------------------------------------------------------------
|
||||||
open_dialog_save:
|
open_dialog_save:
|
||||||
mov [OpenDialog_data.type],1 ; Save
|
mov [OpenDialog_data.type],1 ; Save
|
||||||
start_OpenDialog OpenDialog_data
|
|
||||||
cmp [OpenDialog_data.status],2 ; OpenDialog does not start
|
push dword OpenDialog_data
|
||||||
; je .sysxtree ; some kind of alternative, instead OpenDialog
|
call [OpenDialog_Start]
|
||||||
je save_file
|
|
||||||
|
; cmp [OpenDialog_data.status],2 ; OpenDialog does not start
|
||||||
|
;; je .sysxtree ; some kind of alternative, instead OpenDialog
|
||||||
|
; je save_file
|
||||||
cmp [OpenDialog_data.status],1
|
cmp [OpenDialog_data.status],1
|
||||||
jne still
|
jne still
|
||||||
mov esi,fname_buf
|
mov esi,fname_buf
|
||||||
@ -1779,13 +1776,9 @@ open_dialog_save:
|
|||||||
sub esi,path
|
sub esi,path
|
||||||
mov [edit1.size],esi
|
mov [edit1.size],esi
|
||||||
mov [edit1.pos],esi
|
mov [edit1.pos],esi
|
||||||
jmp save_file.1
|
; jmp save_file
|
||||||
;-------------------------------------------------------------------------------
|
;-------------------------------------------------------------------------------
|
||||||
save_file: ;á®åà 塞 ä ©«
|
save_file: ;á®åà 塞 ä ©«
|
||||||
mov dword [ed_box_data],1
|
|
||||||
mov dword [ed_box_data+4],edit1
|
|
||||||
call draw_ed_box
|
|
||||||
.1:
|
|
||||||
mov [func_70.func_n],2
|
mov [func_70.func_n],2
|
||||||
mov [func_70.param1],0
|
mov [func_70.param1],0
|
||||||
mov [func_70.param2],0
|
mov [func_70.param2],0
|
||||||
@ -2759,17 +2752,15 @@ Ctrl_X:
|
|||||||
;---------------------------------------------------------------------
|
;---------------------------------------------------------------------
|
||||||
open_dialog:
|
open_dialog:
|
||||||
mov [OpenDialog_data.type],0 ; Open
|
mov [OpenDialog_data.type],0 ; Open
|
||||||
start_OpenDialog OpenDialog_data
|
|
||||||
cmp [OpenDialog_data.status],2 ; OpenDialog does not start
|
push dword OpenDialog_data
|
||||||
je .sysxtree ; some kind of alternative, instead OpenDialog
|
call [OpenDialog_Start]
|
||||||
|
|
||||||
|
; cmp [OpenDialog_data.status],2 ; OpenDialog does not start
|
||||||
|
; je .sysxtree ; some kind of alternative, instead OpenDialog
|
||||||
cmp [OpenDialog_data.status],1
|
cmp [OpenDialog_data.status],1
|
||||||
jne still
|
jne still
|
||||||
mov esi,fname_buf
|
mov esi,fname_buf
|
||||||
jmp .load
|
|
||||||
.sysxtree:
|
|
||||||
call opendialog
|
|
||||||
jc still
|
|
||||||
mov esi,path
|
|
||||||
.load:
|
.load:
|
||||||
mov edi,file_name
|
mov edi,file_name
|
||||||
cld
|
cld
|
||||||
@ -2783,204 +2774,8 @@ open_dialog:
|
|||||||
sub esi,path
|
sub esi,path
|
||||||
mov [edit1.size],esi
|
mov [edit1.size],esi
|
||||||
mov [edit1.pos],esi
|
mov [edit1.pos],esi
|
||||||
jmp open_file.0
|
|
||||||
;---------------------------------------------------------------------
|
|
||||||
;##################################
|
|
||||||
opendialog:
|
|
||||||
;
|
|
||||||
; STEP 1 Run SYSXTREE with parametrs MYPID 4 bytes in dec,
|
|
||||||
; 1 byte space, 1 byte type of dialog (O - Open ,S - Save)
|
|
||||||
;
|
|
||||||
mov edi,path
|
|
||||||
xor eax,eax
|
|
||||||
mov ecx,(1024+16)/4
|
|
||||||
rep stosd
|
|
||||||
|
|
||||||
mov [dlg_pid_get],0
|
|
||||||
|
|
||||||
; Get my PID in dec format 4 bytes
|
|
||||||
mov eax,9
|
|
||||||
mov ebx,procinfo
|
|
||||||
or ecx,-1
|
|
||||||
mcall
|
|
||||||
|
|
||||||
; convert eax bin to param dec
|
|
||||||
mov eax,dword [procinfo+30] ;offset of myPID
|
|
||||||
mov edi,param+4-1 ;offset to 4 bytes
|
|
||||||
mov ecx,4
|
|
||||||
mov ebx,10
|
|
||||||
.new_d:
|
|
||||||
xor edx,edx
|
|
||||||
div ebx
|
|
||||||
add dl,'0'
|
|
||||||
mov [edi],dl
|
|
||||||
dec edi
|
|
||||||
loop .new_d
|
|
||||||
|
|
||||||
; wirite 1 byte space to param
|
|
||||||
mov [param+4],byte 32 ;Space for next parametr
|
|
||||||
; and 1 byte type of dialog to param
|
|
||||||
mov [param+5],byte 'O' ;Get Open dialog (Use 'S' for Save dialog)
|
|
||||||
|
|
||||||
;
|
|
||||||
; STEP2 prepare IPC area for get messages
|
|
||||||
;
|
|
||||||
|
|
||||||
; prepare IPC area
|
|
||||||
mov [path],dword 0
|
|
||||||
mov [path+4],dword 8
|
|
||||||
|
|
||||||
; define IPC memory
|
|
||||||
mov eax,60
|
|
||||||
mov ebx,1 ; define IPC
|
|
||||||
mov ecx,path ; offset of area
|
|
||||||
mov edx,1024+16 ; size
|
|
||||||
mcall
|
|
||||||
|
|
||||||
; change wanted events list 7-bit IPC event
|
|
||||||
mov eax,40
|
|
||||||
mov ebx,01000111b
|
|
||||||
; cmp [image],0
|
|
||||||
; jnz @f
|
|
||||||
; mov bl,01000110b
|
|
||||||
;@@:
|
|
||||||
mcall
|
|
||||||
|
|
||||||
;
|
|
||||||
; STEP 3 run SYSTEM XTREE with parameters
|
|
||||||
;
|
|
||||||
mov eax,70
|
|
||||||
mov ebx,run_fileinfo
|
|
||||||
mcall
|
|
||||||
bt eax,31
|
|
||||||
jnc @f
|
|
||||||
mcall 40,0x27
|
|
||||||
add esp,4
|
|
||||||
jmp open_file
|
jmp open_file
|
||||||
@@:
|
;---------------------------------------------------------------------
|
||||||
mov [get_loops],0
|
|
||||||
.getmesloop:
|
|
||||||
mov eax,23
|
|
||||||
mov ebx,50 ;0.5 sec
|
|
||||||
mcall
|
|
||||||
dec eax
|
|
||||||
jz .mred
|
|
||||||
dec eax
|
|
||||||
jz .mkey
|
|
||||||
dec eax
|
|
||||||
jz .mbutton
|
|
||||||
cmp al, 7-3
|
|
||||||
jz .mgetmes
|
|
||||||
; Get number of procces
|
|
||||||
mov ebx,procinfo
|
|
||||||
mov ecx,-1
|
|
||||||
mov eax,9
|
|
||||||
mcall
|
|
||||||
mov ebp,eax
|
|
||||||
|
|
||||||
.loox:
|
|
||||||
mov eax,9
|
|
||||||
mov ebx,procinfo
|
|
||||||
mov ecx,ebp
|
|
||||||
mcall
|
|
||||||
mov eax,[DLGPID]
|
|
||||||
cmp [procinfo+30],eax ;IF Dialog find
|
|
||||||
je .dlg_is_work ;jmp to dlg_is_work
|
|
||||||
dec ebp
|
|
||||||
jnz .loox
|
|
||||||
|
|
||||||
jmp .erroff
|
|
||||||
|
|
||||||
.dlg_is_work:
|
|
||||||
cmp [procinfo+50],word 9 ;If slot state 9 - dialog is terminated
|
|
||||||
je .erroff ;TESTODP2 terminated too
|
|
||||||
|
|
||||||
cmp [dlg_pid_get],dword 1
|
|
||||||
je .getmesloop
|
|
||||||
inc [get_loops]
|
|
||||||
cmp [get_loops],4 ;2 sec if DLG_PID not get TESTOP2 terminated
|
|
||||||
jae .erroff
|
|
||||||
jmp .getmesloop
|
|
||||||
|
|
||||||
.mred:
|
|
||||||
; cmp [image], 0
|
|
||||||
; jz .getmesloop
|
|
||||||
; call redraw_all
|
|
||||||
call draw_window_1
|
|
||||||
jmp .getmesloop
|
|
||||||
.mkey:
|
|
||||||
mov eax,2
|
|
||||||
mcall ; read (eax=2)
|
|
||||||
jmp .getmesloop
|
|
||||||
.mbutton:
|
|
||||||
mov eax,17 ; get id
|
|
||||||
mcall
|
|
||||||
cmp ah,1 ; button id=1 ?
|
|
||||||
jne .getmesloop
|
|
||||||
mov eax,-1 ; close this program
|
|
||||||
mcall
|
|
||||||
.mgetmes:
|
|
||||||
|
|
||||||
; If dlg_pid_get then second message get jmp to still
|
|
||||||
cmp [dlg_pid_get],dword 1
|
|
||||||
je .ready
|
|
||||||
|
|
||||||
; First message is number of PID SYSXTREE dialog
|
|
||||||
|
|
||||||
; convert PID dec to PID bin
|
|
||||||
movzx eax,byte [path+16]
|
|
||||||
sub eax,48
|
|
||||||
imul eax,10
|
|
||||||
movzx ebx,byte [path+16+1]
|
|
||||||
add eax,ebx
|
|
||||||
sub eax,48
|
|
||||||
imul eax,10
|
|
||||||
movzx ebx,byte [path+16+2]
|
|
||||||
add eax,ebx
|
|
||||||
sub eax,48
|
|
||||||
imul eax,10
|
|
||||||
movzx ebx,byte [path+16+3]
|
|
||||||
add eax,ebx
|
|
||||||
sub eax,48
|
|
||||||
mov [DLGPID],eax
|
|
||||||
|
|
||||||
; Claear and prepare IPC area for next message
|
|
||||||
mov [path],dword 0
|
|
||||||
mov [path+4],dword 8
|
|
||||||
mov [path+8],dword 0
|
|
||||||
mov [path+12],dword 0
|
|
||||||
mov [path+16],dword 0
|
|
||||||
|
|
||||||
; Set dlg_pid_get for get next message
|
|
||||||
mov [dlg_pid_get],dword 1
|
|
||||||
; cmp [image],0
|
|
||||||
; jz .getmesloop
|
|
||||||
; call redraw_all
|
|
||||||
call draw_window_1
|
|
||||||
jmp .getmesloop
|
|
||||||
|
|
||||||
.ready:
|
|
||||||
;
|
|
||||||
; The second message get
|
|
||||||
; Second message is 100 bytes path to SAVE/OPEN file
|
|
||||||
; shl path string on 16 bytes
|
|
||||||
;
|
|
||||||
mov esi,path+16
|
|
||||||
mov edi,path
|
|
||||||
mov ecx,1024/4
|
|
||||||
rep movsd
|
|
||||||
mov [edi],byte 0
|
|
||||||
|
|
||||||
.openoff:
|
|
||||||
mcall 40,0x27
|
|
||||||
clc
|
|
||||||
ret
|
|
||||||
|
|
||||||
.erroff:
|
|
||||||
mcall 40,0x27
|
|
||||||
stc
|
|
||||||
ret
|
|
||||||
;##################################
|
|
||||||
|
|
||||||
; DATA AREA
|
; DATA AREA
|
||||||
|
|
||||||
@ -2988,8 +2783,19 @@ opendialog:
|
|||||||
;---------------------------------------------------------
|
;---------------------------------------------------------
|
||||||
;----------------------- DATA AREA------------------------
|
;----------------------- DATA AREA------------------------
|
||||||
;---------------------------------------------------------
|
;---------------------------------------------------------
|
||||||
|
align 4
|
||||||
|
ProcLib_import:
|
||||||
|
OpenDialog_Init dd aOpenDialog_Init
|
||||||
|
OpenDialog_Start dd aOpenDialog_Start
|
||||||
|
;OpenDialog__Version dd aOpenDialog_Version
|
||||||
|
dd 0
|
||||||
|
dd 0
|
||||||
|
aOpenDialog_Init db 'OpenDialog_init',0
|
||||||
|
aOpenDialog_Start db 'OpenDialog_start',0
|
||||||
|
;aOpenDialog_Version db 'Version_OpenDialog',0
|
||||||
|
;---------------------------------------------------------------------
|
||||||
align 4
|
align 4
|
||||||
myimport:
|
Box_lib_import:
|
||||||
edit_box_draw dd aEdit_box_draw
|
edit_box_draw dd aEdit_box_draw
|
||||||
edit_box_key dd aEdit_box_key
|
edit_box_key dd aEdit_box_key
|
||||||
edit_box_mouse dd aEdit_box_mouse
|
edit_box_mouse dd aEdit_box_mouse
|
||||||
@ -3280,13 +3086,16 @@ op_text2:
|
|||||||
.e21:
|
.e21:
|
||||||
|
|
||||||
|
|
||||||
system_path db '/sys/lib/'
|
system_dir_Boxlib db '/sys/lib/box_lib.obj',0
|
||||||
boxlib_name db 'box_lib.obj',0
|
system_dir_ProcLib db '/sys/lib/proc_lib.obj',0
|
||||||
|
|
||||||
head_f_i:
|
head_f_i:
|
||||||
head_f_l db 'error',0
|
head_f_l db 'error',0
|
||||||
err_message_found_lib db 'box_lib.obj was not found',0
|
err_message_found_lib1 db 'box_lib.obj - Not found!',0
|
||||||
err_message_import db 'box_lib.obj was not imported',0
|
err_message_found_lib2 db 'proc_lib.obj - Not found!',0
|
||||||
|
|
||||||
|
err_message_import1 db 'box_lib.obj - Wrong import!',0
|
||||||
|
err_message_import2 db 'proc_lib.obj - Wrong import!',0
|
||||||
|
|
||||||
sel_text db "From to",0
|
sel_text db "From to",0
|
||||||
|
|
||||||
@ -3409,6 +3218,18 @@ directory_ptr dd 0
|
|||||||
|
|
||||||
title db _title
|
title db _title
|
||||||
;---------------------------------------------------------------------
|
;---------------------------------------------------------------------
|
||||||
|
l_libs_start:
|
||||||
|
; load_library boxlib_name,cur_dir_path,buf_cmd_lin,system_path,\
|
||||||
|
; err_message_found_lib,head_f_l,myimport,err_message_import,head_f_i
|
||||||
|
|
||||||
|
library01 l_libs system_dir_Boxlib+9, cur_dir_path, buf_cmd_lin, system_dir_Boxlib, \
|
||||||
|
err_message_found_lib1, head_f_l, Box_lib_import, err_message_import1, head_f_i
|
||||||
|
|
||||||
|
library02 l_libs system_dir_ProcLib+9, cur_dir_path, buf_cmd_lin, system_dir_ProcLib, \
|
||||||
|
err_message_found_lib2, head_f_l, ProcLib_import, err_message_import2, head_f_i
|
||||||
|
|
||||||
|
end_l_libs:
|
||||||
|
;---------------------------------------------------------------------
|
||||||
OpenDialog_data:
|
OpenDialog_data:
|
||||||
.type dd 0
|
.type dd 0
|
||||||
.procinfo dd procinfo ;+4
|
.procinfo dd procinfo ;+4
|
||||||
|
Loading…
Reference in New Issue
Block a user