Subversion Repositories Kolibri OS

Rev

Rev 1439 | Rev 1581 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 1439 Rev 1510
Line 52... Line 52...
52
 
52
 
53
include	'lang.inc'
53
include	'lang.inc'
54
include '../../../macros.inc'
54
include '../../../macros.inc'
55
include	'../../libraries/box_lib/trunk/box_lib.mac'
55
include	'../../libraries/box_lib/trunk/box_lib.mac'
56
include	'../../libraries/box_lib/load_lib.mac'
-
 
Line 57... Line 56...
57
include	'../../libraries/box_lib/asm/trunk/opendial.mac'
56
include	'../../libraries/box_lib/load_lib.mac'
58
 
-
 
Line 59... Line 57...
59
@use_library
57
 
Line 60... Line 58...
60
use_OpenDialog
58
@use_library
61
 
59
 
Line 92... Line 90...
92
	name	rd 1
90
	name	rd 1
93
ends
91
ends
Line 94... Line 92...
94
 
92
 
95
START:
93
START:
-
 
94
	mcall	68,11
-
 
95
 
-
 
96
load_libraries l_libs_start,end_l_libs
96
	mcall	68,11
97
 
97
;OpenDialog	initialisation
98
;OpenDialog	initialisation
-
 
99
	push    dword OpenDialog_data
Line 98... Line 100...
98
init_OpenDialog	OpenDialog_data
100
	call    [OpenDialog_Init]
99
 
101
 
100
	mov	edi,filename_area
102
	mov	edi,filename_area
101
	mov	esi,start_temp_file_name
103
	mov	esi,start_temp_file_name
Line 105... Line 107...
105
	lodsb
107
	lodsb
106
	stosb
108
	stosb
107
	test	eax,eax
109
	test	eax,eax
108
	jnz	@b
110
	jnz	@b
Line 109... Line -...
109
 
-
 
110
	load_library	boxlib_name,cur_dir_path,buf_cmd_lin,system_path,\
-
 
111
	err_message_found_lib,head_f_l,myimport,err_message_import,head_f_i
-
 
112
 
111
 
Line 113... Line 112...
113
	mcall	40,0x27
112
	mcall	40,0x27
114
 
113
 
115
	mcall	68,12,32*1024	;áâà ­¨ç­ë© ¡ãä¥à
114
	mcall	68,12,32*1024	;áâà ­¨ç­ë© ¡ãä¥à
Line 1656... Line 1655...
1656
 
1655
 
1657
.threat_stack:	times	16	dd	0
1656
.threat_stack:	times	16	dd	0
Line 1658... Line 1657...
1658
;-------------------------------------------------
1657
;-------------------------------------------------
1659
 
-
 
1660
open_file:
-
 
1661
	mov	dword [ed_box_data],1
-
 
1662
	mov	dword [ed_box_data+4],edit1
-
 
1663
	call	draw_ed_box	;à¨á㥬 editbox
-
 
1664
	;à §¬¥à ä ©« ?
1658
 
1665
.0:
1659
open_file:
1666
	mov	[func_70.func_n],5
1660
	mov	[func_70.func_n],5
1667
	mov	[func_70.param1],0
1661
	mov	[func_70.param1],0
1668
	mov	[func_70.param2],0
1662
	mov	[func_70.param2],0
Line 1758... Line 1752...
1758
 
1752
 
1759
	jmp	redraw_all
1753
	jmp	redraw_all
1760
;-------------------------------------------------------------------------------
1754
;-------------------------------------------------------------------------------
1761
open_dialog_save:
1755
open_dialog_save:
-
 
1756
	mov	[OpenDialog_data.type],1	; Save
1762
	mov	[OpenDialog_data.type],1	; Save
1757
 
-
 
1758
	push    dword OpenDialog_data
-
 
1759
	call    [OpenDialog_Start]
1763
	start_OpenDialog	OpenDialog_data
1760
 
1764
	cmp	[OpenDialog_data.status],2	; OpenDialog does not start
1761
;	cmp	[OpenDialog_data.status],2	; OpenDialog does not start
1765
;	je	.sysxtree	; some kind of alternative, instead OpenDialog
1762
;;	je	.sysxtree	; some kind of alternative, instead OpenDialog
1766
	je	save_file
1763
;	je	save_file
1767
	cmp	[OpenDialog_data.status],1
1764
	cmp	[OpenDialog_data.status],1
1768
	jne	still
1765
	jne	still
1769
	mov	esi,fname_buf
1766
	mov	esi,fname_buf
1770
	mov	edi,file_name
1767
	mov	edi,file_name
Line 1777... Line 1774...
1777
@@:
1774
@@:
1778
	mov	byte [edi],0
1775
	mov	byte [edi],0
1779
	sub	esi,path
1776
	sub	esi,path
1780
	mov	[edit1.size],esi
1777
	mov	[edit1.size],esi
1781
	mov	[edit1.pos],esi
1778
	mov	[edit1.pos],esi
1782
	jmp	save_file.1
1779
;	jmp	save_file
1783
;-------------------------------------------------------------------------------
1780
;-------------------------------------------------------------------------------
1784
save_file:	;á®å࠭塞 ä ©«
1781
save_file:	;á®å࠭塞 ä ©«
1785
	mov	dword [ed_box_data],1
-
 
1786
	mov	dword [ed_box_data+4],edit1
-
 
1787
	call	draw_ed_box
-
 
1788
.1:
-
 
1789
	mov	[func_70.func_n],2
1782
	mov	[func_70.func_n],2
1790
	mov	[func_70.param1],0
1783
	mov	[func_70.param1],0
1791
	mov	[func_70.param2],0
1784
	mov	[func_70.param2],0
1792
	push	[file_size]
1785
	push	[file_size]
1793
	pop	[func_70.param3]
1786
	pop	[func_70.param3]
Line 2757... Line 2750...
2757
	jmp	red
2750
	jmp	red
Line 2758... Line 2751...
2758
 
2751
 
2759
;---------------------------------------------------------------------
2752
;---------------------------------------------------------------------
2760
open_dialog:
2753
open_dialog:
-
 
2754
	mov	[OpenDialog_data.type],0	; Open
2761
	mov	[OpenDialog_data.type],0	; Open
2755
 
-
 
2756
	push    dword OpenDialog_data
-
 
2757
	call    [OpenDialog_Start]
2762
	start_OpenDialog	OpenDialog_data
2758
 
2763
	cmp	[OpenDialog_data.status],2	; OpenDialog does not start
2759
;	cmp	[OpenDialog_data.status],2	; OpenDialog does not start
2764
	je	.sysxtree	; some kind of alternative, instead OpenDialog
2760
;	je	.sysxtree	; some kind of alternative, instead OpenDialog
2765
	cmp	[OpenDialog_data.status],1
2761
	cmp	[OpenDialog_data.status],1
2766
	jne	still
2762
	jne	still
2767
	mov	esi,fname_buf
-
 
2768
	jmp	.load
-
 
2769
.sysxtree:
-
 
2770
	call	opendialog
-
 
2771
	jc	still
-
 
2772
	mov	esi,path
2763
	mov	esi,fname_buf
2773
.load:
2764
.load:
2774
	mov	edi,file_name
2765
	mov	edi,file_name
2775
	cld
2766
	cld
2776
@@:
2767
@@:
Line 2781... Line 2772...
2781
@@:
2772
@@:
2782
	mov	byte [edi],0
2773
	mov	byte [edi],0
2783
	sub	esi,path
2774
	sub	esi,path
2784
	mov	[edit1.size],esi
2775
	mov	[edit1.size],esi
2785
	mov	[edit1.pos],esi
2776
	mov	[edit1.pos],esi
2786
	jmp	open_file.0
-
 
2787
;---------------------------------------------------------------------
-
 
2788
;##################################
-
 
2789
opendialog:
-
 
2790
;
-
 
2791
; STEP 1 Run SYSXTREE with parametrs MYPID 4 bytes in dec,
-
 
2792
; 1 byte space, 1 byte type of dialog (O - Open ,S - Save)
-
 
2793
;
-
 
2794
	mov	edi,path
-
 
2795
	xor	eax,eax
-
 
2796
	mov	ecx,(1024+16)/4
-
 
2797
	rep	stosd
-
 
2798
 
-
 
2799
	mov	[dlg_pid_get],0
-
 
2800
 
-
 
2801
; Get my PID in dec format 4 bytes
-
 
2802
	mov	eax,9
-
 
2803
	mov	ebx,procinfo
-
 
2804
	or	ecx,-1
-
 
2805
	mcall
-
 
2806
 
-
 
2807
; convert eax bin to param dec
-
 
2808
	mov	eax,dword [procinfo+30]	;offset of myPID
-
 
2809
	mov	edi,param+4-1	;offset to 4 bytes
-
 
2810
	mov	ecx,4
-
 
2811
	mov	ebx,10
-
 
2812
.new_d:
-
 
2813
	xor	edx,edx
-
 
2814
	div	ebx
-
 
2815
	add	dl,'0'
-
 
2816
	mov	[edi],dl
-
 
2817
	dec	edi
-
 
2818
	loop	.new_d
-
 
2819
 
-
 
2820
; wirite 1 byte space to param
-
 
2821
	mov	[param+4],byte 32	;Space for next parametr
-
 
2822
; and 1 byte type of dialog to param
-
 
2823
	mov	[param+5],byte 'O'	;Get Open dialog (Use 'S' for Save dialog)
-
 
2824
 
-
 
2825
;
-
 
2826
; STEP2 prepare IPC area for get messages
-
 
2827
;
-
 
2828
 
-
 
2829
; prepare IPC area
-
 
2830
	mov	[path],dword 0
-
 
2831
	mov	[path+4],dword 8
-
 
2832
 
-
 
2833
; define IPC memory
-
 
2834
	mov	eax,60
-
 
2835
	mov	ebx,1		; define IPC
-
 
2836
	mov	ecx,path	; offset of area
-
 
2837
	mov	edx,1024+16	; size
-
 
2838
	mcall
-
 
2839
 
-
 
2840
; change wanted events list 7-bit IPC event
-
 
2841
	mov	eax,40
-
 
2842
	mov	ebx,01000111b
-
 
2843
;	cmp	[image],0
-
 
2844
;	jnz	@f
-
 
2845
;	mov	bl,01000110b
-
 
2846
;@@:
-
 
2847
	mcall
-
 
2848
 
-
 
2849
;
-
 
2850
; STEP 3 run SYSTEM XTREE with parameters
-
 
2851
;
-
 
2852
	mov	eax,70
-
 
2853
	mov	ebx,run_fileinfo
-
 
2854
	mcall
-
 
2855
	bt	eax,31
-
 
2856
	jnc	@f
-
 
2857
	mcall	40,0x27
-
 
2858
	add	esp,4
-
 
2859
	jmp	open_file
2777
	jmp	open_file
2860
@@:
-
 
2861
	mov	[get_loops],0
-
 
2862
.getmesloop:
-
 
2863
	mov	eax,23
-
 
2864
	mov	ebx,50	;0.5 sec
-
 
2865
	mcall
-
 
2866
	dec	eax
-
 
2867
	jz	.mred
-
 
2868
	dec	eax
-
 
2869
	jz	.mkey
-
 
2870
	dec	eax
-
 
2871
	jz	.mbutton
-
 
2872
	cmp	al,	7-3
-
 
2873
	jz	.mgetmes
-
 
2874
; Get number of procces
-
 
2875
	mov	ebx,procinfo
-
 
2876
	mov	ecx,-1
-
 
2877
	mov	eax,9
-
 
2878
	mcall
-
 
2879
	mov	ebp,eax
-
 
2880
 
-
 
2881
.loox:
-
 
2882
	mov	eax,9
-
 
2883
	mov	ebx,procinfo
-
 
2884
	mov	ecx,ebp
-
 
2885
	mcall
-
 
2886
	mov	eax,[DLGPID]
-
 
2887
	cmp	[procinfo+30],eax	;IF Dialog find
-
 
2888
	je	.dlg_is_work	;jmp to dlg_is_work
-
 
2889
	dec	ebp
-
 
2890
	jnz	.loox
-
 
2891
 
-
 
2892
	jmp	.erroff
-
 
2893
 
-
 
2894
.dlg_is_work:
-
 
2895
	cmp	[procinfo+50],word 9	;If slot state 9 - dialog is terminated
2778
;---------------------------------------------------------------------
2896
	je	.erroff	;TESTODP2 terminated too
-
 
2897
 
-
 
2898
	cmp	[dlg_pid_get],dword 1
-
 
2899
	je	.getmesloop
-
 
2900
	inc	[get_loops]
-
 
2901
	cmp	[get_loops],4	;2 sec if DLG_PID not get TESTOP2 terminated
-
 
2902
	jae	.erroff
-
 
2903
	jmp	.getmesloop
-
 
2904
 
-
 
2905
.mred:
-
 
2906
;	cmp	[image],	0
-
 
2907
;	jz	.getmesloop
-
 
2908
;	call	redraw_all
-
 
2909
	call	draw_window_1
-
 
2910
	jmp	.getmesloop
-
 
2911
.mkey:
-
 
2912
	mov	eax,2
-
 
2913
	mcall	;	read (eax=2)
-
 
2914
	jmp	.getmesloop
-
 
2915
.mbutton:
-
 
2916
	mov	eax,17	; get id
-
 
2917
	mcall
-
 
2918
	cmp	ah,1	; button id=1 ?
-
 
2919
	jne	.getmesloop
-
 
2920
	mov	eax,-1	; close this program
-
 
2921
	mcall
-
 
2922
.mgetmes:
-
 
2923
 
-
 
2924
; If dlg_pid_get then second message get jmp to still
-
 
2925
	cmp	[dlg_pid_get],dword 1
-
 
2926
	je	.ready
-
 
2927
 
-
 
2928
; First message is number of PID SYSXTREE dialog
-
 
2929
 
-
 
2930
; convert PID dec to PID bin
-
 
2931
	movzx	eax,byte [path+16]
-
 
2932
	sub	eax,48
-
 
2933
	imul	eax,10
-
 
2934
	movzx	ebx,byte [path+16+1]
-
 
2935
	add	eax,ebx
-
 
2936
	sub	eax,48
-
 
2937
	imul	eax,10
-
 
2938
	movzx	ebx,byte [path+16+2]
-
 
2939
	add	eax,ebx
-
 
2940
	sub	eax,48
-
 
2941
	imul	eax,10
-
 
2942
	movzx	ebx,byte [path+16+3]
-
 
2943
	add	eax,ebx
-
 
2944
	sub	eax,48
-
 
2945
	mov	[DLGPID],eax
-
 
2946
 
-
 
2947
; Claear and prepare IPC area for next message
-
 
2948
	mov	[path],dword 0
-
 
2949
	mov	[path+4],dword 8
-
 
2950
	mov	[path+8],dword 0
-
 
2951
	mov	[path+12],dword 0
-
 
2952
	mov	[path+16],dword 0
-
 
2953
 
-
 
2954
; Set dlg_pid_get for get next message
-
 
2955
	mov	[dlg_pid_get],dword 1
-
 
2956
;	cmp	[image],0
-
 
2957
;	jz	.getmesloop
-
 
2958
;	call	redraw_all
-
 
2959
	call	draw_window_1
-
 
2960
	jmp	.getmesloop
-
 
2961
 
-
 
2962
.ready:
-
 
2963
;
-
 
2964
; The second message get
-
 
2965
; Second message is 100 bytes path to SAVE/OPEN file
-
 
2966
; shl path string on 16 bytes
-
 
2967
;
-
 
2968
	mov	esi,path+16
-
 
2969
	mov	edi,path
-
 
2970
	mov	ecx,1024/4
-
 
2971
	rep	movsd
-
 
2972
	mov	[edi],byte 0
-
 
2973
 
-
 
2974
.openoff:
-
 
2975
	mcall	40,0x27
-
 
2976
	clc
-
 
2977
	ret
-
 
2978
 
-
 
2979
.erroff:
-
 
2980
	mcall	40,0x27
-
 
2981
	stc
-
 
2982
	ret
-
 
2983
;##################################
-
 
Line 2984... Line 2779...
2984
 
2779
 
Line 2985... Line 2780...
2985
;	DATA	AREA
2780
;	DATA	AREA
2986
 
2781
 
2987
 
2782
 
2988
;---------------------------------------------------------
2783
;---------------------------------------------------------
2989
;----------------------- DATA AREA------------------------
2784
;----------------------- DATA AREA------------------------
-
 
2785
;---------------------------------------------------------
-
 
2786
align 4
-
 
2787
ProcLib_import:
-
 
2788
OpenDialog_Init		dd aOpenDialog_Init
-
 
2789
OpenDialog_Start	dd aOpenDialog_Start
-
 
2790
;OpenDialog__Version	dd aOpenDialog_Version
-
 
2791
        dd      0
-
 
2792
        dd      0
-
 
2793
aOpenDialog_Init	db 'OpenDialog_init',0
-
 
2794
aOpenDialog_Start	db 'OpenDialog_start',0
-
 
2795
;aOpenDialog_Version	db 'Version_OpenDialog',0
2990
;---------------------------------------------------------
2796
;---------------------------------------------------------------------
2991
align	4
2797
align	4
2992
myimport:
2798
Box_lib_import:
2993
edit_box_draw		dd aEdit_box_draw
2799
edit_box_draw		dd aEdit_box_draw
Line 3278... Line 3084...
3278
.e11:
3084
.e11:
3279
.21	db 'ASCII'
3085
.21	db 'ASCII'
3280
.e21:
3086
.e21:
Line 3281... Line 3087...
3281
 
3087
 
3282
 
3088
 
Line 3283... Line 3089...
3283
system_path	db '/sys/lib/'
3089
system_dir_Boxlib			db '/sys/lib/box_lib.obj',0
3284
boxlib_name	db 'box_lib.obj',0
3090
system_dir_ProcLib			db '/sys/lib/proc_lib.obj',0
3285
 
3091
 
-
 
3092
head_f_i:
-
 
3093
head_f_l	db 'error',0
3286
head_f_i:
3094
err_message_found_lib1		db 'box_lib.obj - Not found!',0
-
 
3095
err_message_found_lib2		db 'proc_lib.obj - Not found!',0
Line 3287... Line 3096...
3287
head_f_l	db 'error',0
3096
 
Line 3288... Line 3097...
3288
err_message_found_lib	db 'box_lib.obj was not found',0
3097
err_message_import1			db 'box_lib.obj - Wrong import!',0
3289
err_message_import	db 'box_lib.obj was not imported',0
3098
err_message_import2			db 'proc_lib.obj - Wrong import!',0
Line 3407... Line 3216...
3407
;##########################	
3216
;##########################	
Line 3408... Line 3217...
3408
 
3217
 
3409
 
3218
 
-
 
3219
title	db	_title
-
 
3220
;---------------------------------------------------------------------
-
 
3221
l_libs_start:
-
 
3222
;	load_library	boxlib_name,cur_dir_path,buf_cmd_lin,system_path,\
-
 
3223
;	err_message_found_lib,head_f_l,myimport,err_message_import,head_f_i
-
 
3224
 
-
 
3225
library01  l_libs system_dir_Boxlib+9, cur_dir_path, buf_cmd_lin, system_dir_Boxlib, \
-
 
3226
err_message_found_lib1, head_f_l, Box_lib_import, err_message_import1, head_f_i
-
 
3227
 
-
 
3228
library02  l_libs system_dir_ProcLib+9, cur_dir_path, buf_cmd_lin, system_dir_ProcLib, \
-
 
3229
err_message_found_lib2, head_f_l, ProcLib_import, err_message_import2, head_f_i
-
 
3230
 
3410
title	db	_title
3231
end_l_libs:
3411
;---------------------------------------------------------------------
3232
;---------------------------------------------------------------------
3412
OpenDialog_data:
3233
OpenDialog_data:
3413
.type			dd 0
3234
.type			dd 0
3414
.procinfo		dd procinfo	;+4
3235
.procinfo		dd procinfo	;+4