Subversion Repositories Kolibri OS

Rev

Rev 895 | Go to most recent revision | Only display areas with differences | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 895 Rev 3587
1
; <--- description --->
1
; <--- description --->
2
; compiler:     FASM
2
; compiler:     FASM
3
; name:         Clipboard test with GUI.
3
; name:         Clipboard test with GUI.
4
; version:      0.1
4
; version:      0.1
5
; author:       barsuk
5
; author:       barsuk
6
; comments: 	uses edit_box by Maxxxx32, (old static version)
6
; comments: 	uses edit_box by Maxxxx32, (old static version)
7
 
7
 
8
 
8
 
9
; <--- include all MeOS stuff --->
9
; <--- include all MeOS stuff --->
10
include "lang.inc"
10
include "lang.inc"
11
include "..\..\..\MACROS.INC"
11
include "..\..\..\macros.inc"
12
 
12
 
13
; <--- start of MenuetOS application --->
13
; <--- start of MenuetOS application --->
14
MEOS_APP_START
14
MEOS_APP_START
15
 
15
 
16
SEND_DELAY = 10
16
SEND_DELAY = 10
17
RECV_DELAY = 100
17
RECV_DELAY = 100
18
ATTEMPT = 5
18
ATTEMPT = 5
19
 
19
 
20
 
20
 
21
define DEBUG TRUE
21
define DEBUG TRUE
22
include "bdebug.inc"
22
include "bdebug.inc"
23
 
23
 
24
include "editbox.inc"
24
include "editbox.inc"
25
 
25
 
26
include "clip.inc"
26
include "clip.inc"
27
 
27
 
28
use_edit_box
28
use_edit_box
29
 
29
 
30
; <--- start of code --->
30
; <--- start of code --->
31
CODE
31
CODE
32
 
32
 
33
    call    clipboard_init
33
    call    clipboard_init
34
 
34
 
35
    call    draw_window            ; at first create and draw the window
35
    call    draw_window            ; at first create and draw the window
36
 
36
 
37
wait_event:                      ; main cycle
37
wait_event:                      ; main cycle
38
 
38
 
39
	mov	edi, input_box
39
	mov	edi, input_box
40
	call	edit_box.mouse
40
	call	edit_box.mouse
41
 
41
 
42
    mov     eax, 10
42
    mov     eax, 10
43
    int     0x40
43
    int     0x40
44
 
44
 
45
    cmp     eax, 1                 ;   if event == 1
45
    cmp     eax, 1                 ;   if event == 1
46
    je      redraw                 ;     jump to redraw handler
46
    je      redraw                 ;     jump to redraw handler
47
    cmp     eax, 2                 ;   else if event == 2
47
    cmp     eax, 2                 ;   else if event == 2
48
    je      key                    ;     jump to key handler
48
    je      key                    ;     jump to key handler
49
    cmp     eax, 3                 ;   else if event == 3
49
    cmp     eax, 3                 ;   else if event == 3
50
    je      button                 ;     jump to button handler
50
    je      button                 ;     jump to button handler
51
 
51
 
52
    jmp     wait_event             ;   else return to the start of main cycle
52
    jmp     wait_event             ;   else return to the start of main cycle
53
 
53
 
54
 
54
 
55
redraw:                          ; redraw event handler
55
redraw:                          ; redraw event handler
56
    call    draw_window
56
    call    draw_window
57
    jmp     wait_event
57
    jmp     wait_event
58
 
58
 
59
 
59
 
60
key:                             ; key event handler
60
key:                             ; key event handler
61
	mov     eax, 2                 ;   get key code
61
	mov     eax, 2                 ;   get key code
62
	int     0x40
62
	int     0x40
63
 
63
 
64
	cmp	ah, '0'
64
	cmp	ah, '0'
65
	jb	no_digit
65
	jb	no_digit
66
	cmp	ah, '9'
66
	cmp	ah, '9'
67
	ja	no_digit
67
	ja	no_digit
68
	sub	ah, '0'
68
	sub	ah, '0'
69
	mov	byte [format_id], ah
69
	mov	byte [format_id], ah
70
	call	draw_window
70
	call	draw_window
71
	jmp	wait_event
71
	jmp	wait_event
72
no_digit:
72
no_digit:
73
	
73
 
74
	mov	edi, input_box
74
	mov	edi, input_box
75
	call	edit_box.key
75
	call	edit_box.key
76
 
76
 
77
	jmp     wait_event
77
	jmp     wait_event
78
 
78
 
79
 
79
 
80
  button:                          ; button event handler
80
  button:                          ; button event handler
81
    mov     eax, 17                ;   get button identifier
81
    mov     eax, 17                ;   get button identifier
82
    int     0x40
82
    int     0x40
83
 
83
 
84
    cmp     ah, 1
84
    cmp     ah, 1
85
    jz      exit
85
    jz      exit
86
 
86
 
87
	cmp	ah, 5
87
	cmp	ah, 5
88
	jz	copy
88
	jz	copy
89
	cmp	ah, 6
89
	cmp	ah, 6
90
	jz	paste
90
	jz	paste
91
	jmp	wait_event
91
	jmp	wait_event
92
copy:
92
copy:
93
	mov	esi, input_text
93
	mov	esi, input_text
94
	mov	edi, buffer.data
94
	mov	edi, buffer.data
95
	mov	ecx, [buffer.size]
95
	mov	ecx, [buffer.size]
96
	rep	movsb			; copy text to buffer
96
	rep	movsb			; copy text to buffer
97
 
97
 
98
	mov	edi, input_box
98
	mov	edi, input_box
99
	mov	edx, [edi + 38]		; ed_size
99
	mov	edx, [edi + 38]		; ed_size
100
	xchg	edx, [buffer.size]
100
	xchg	edx, [buffer.size]
101
	movzx	eax, byte [format_id]
101
	movzx	eax, byte [format_id]
102
	mov	esi, buffer
102
	mov	esi, buffer
103
	call	clipboard_write
103
	call	clipboard_write
104
	xchg	edx, [buffer.size]
104
	xchg	edx, [buffer.size]
105
	jmp	wait_event
105
	jmp	wait_event
106
 
106
 
107
paste:
107
paste:
108
	mov	esi, buffer
108
	mov	esi, buffer
109
	movzx	eax, byte [format_id]
109
	movzx	eax, byte [format_id]
110
	mov	edx, 7
110
	mov	edx, 7
111
	call	clipboard_read
111
	call	clipboard_read
112
	
112
 
113
	or	eax, eax
113
	or	eax, eax
114
	jz	wait_event
114
	jz	wait_event
115
 
115
 
116
	cmp	eax, -1
116
	cmp	eax, -1
117
	jz	wait_event
117
	jz	wait_event
118
 
118
 
119
	or	edx, edx
119
	or	edx, edx
120
	jz	wait_event		; íâ® ¢á¥ ®è¨¡ª¨
120
	jz	wait_event		; íâ® ¢á¥ ®è¨¡ª¨
121
 
121
 
122
	mov	eax, input_box
122
	mov	eax, input_box
123
;print "input box"
123
;print "input box"
124
;dph1	[eax]
124
;dph1	[eax]
125
;dph1	[eax+4]
125
;dph1	[eax+4]
126
;dph1	[eax+8]
126
;dph1	[eax+8]
127
;dph1	[eax+12]
127
;dph1	[eax+12]
128
;dph1	[eax+16]
128
;dph1	[eax+16]
129
;dph1	[eax+20]
129
;dph1	[eax+20]
130
;dph1	[eax+24]
130
;dph1	[eax+24]
131
 
131
 
132
;;;;jmp	wait_event
132
;;;;jmp	wait_event
133
 
133
 
134
	mov	word [input_box + 36], ed_focus	; flags
134
	mov	word [input_box + 36], ed_focus	; flags
135
 
135
 
136
	mov	ecx, [input_box + 38]	; size
136
	mov	ecx, [input_box + 38]	; size
137
print "paste read ecx=size"
137
print "paste read ecx=size"
138
	jecxz	.noloop
138
	jecxz	.noloop
139
	mov	edi, input_box
139
	mov	edi, input_box
140
	mov	ah, 8		; backspace
140
	mov	ah, 8		; backspace
141
.loop:
141
.loop:
142
	call	edit_box.key
142
	call	edit_box.key
143
	dec	ecx
143
	dec	ecx
144
	jnz	.loop
144
	jnz	.loop
145
.noloop:
145
.noloop:
146
	mov	esi, buffer.data
146
	mov	esi, buffer.data
147
	mov	ecx, edx
147
	mov	ecx, edx
148
pregs
148
pregs
149
.loop2:
149
.loop2:
150
	mov	ah, [esi]
150
	mov	ah, [esi]
151
	cmp	ah, 0
151
	cmp	ah, 0
152
	jz	.done
152
	jz	.done
153
	call	edit_box.key	; ï ¡ë ᥡ¥ à㪨 ®â१ « §  â ª®¥
153
	call	edit_box.key	; ï ¡ë ᥡ¥ à㪨 ®â१ « §  â ª®¥
154
				; ­® çâ® ¤¥« âì, ¥á«¨ ¨­ ç¥ ­¥ ¯®«ãç ¥âáï?
154
				; ­® çâ® ¤¥« âì, ¥á«¨ ¨­ ç¥ ­¥ ¯®«ãç ¥âáï?
155
	inc	esi
155
	inc	esi
156
	dec	ecx
156
	dec	ecx
157
	jnz	.loop2
157
	jnz	.loop2
158
 
158
 
159
.done:
159
.done:
160
print "rest of data ecx"
160
print "rest of data ecx"
161
pregs
161
pregs
162
	call	draw_window
162
	call	draw_window
163
	jmp	wait_event
163
	jmp	wait_event
164
 
164
 
165
exit:
165
exit:
166
    or      eax, -1                ;   exit application
166
    or      eax, -1                ;   exit application
167
    int     0x40
167
    int     0x40
168
 
168
 
169
 
169
 
170
  draw_window:
170
  draw_window:
171
    mov     eax, 12                ; start drawing
171
    mov     eax, 12                ; start drawing
172
    mov     ebx, 1
172
    mov     ebx, 1
173
    int     0x40
173
    int     0x40
174
 
174
 
175
    mov     eax, 0                 ; create and draw the window
175
    mov     eax, 0                 ; create and draw the window
176
    mov     ebx, 100*65536+400     ;   (window_cx)*65536+(window_sx)
176
    mov     ebx, 100*65536+400     ;   (window_cx)*65536+(window_sx)
177
    mov     ecx, 100*65536+250     ;   (window_cy)*65536+(window_sy)
177
    mov     ecx, 100*65536+250     ;   (window_cy)*65536+(window_sy)
178
    mov     edx, 0x33ffffff        ;   work area color & window type 3
178
    mov     edx, 0x33ffffff        ;   work area color & window type 3
179
    mov	    edi, head
179
    mov	    edi, head
180
    int     0x40
180
    int     0x40
181
 
181
 
182
	mov	eax, 4
182
	mov	eax, 4
183
	mov	ebx, 10 shl 16 + 10
183
	mov	ebx, 10 shl 16 + 10
184
	mov	ecx, 0x80000000
184
	mov	ecx, 0x80000000
185
	mov	edx, text1
185
	mov	edx, text1
186
	int	0x40
186
	int	0x40
187
	mov	eax, 4
187
	mov	eax, 4
188
	mov	ebx, 10 shl 16 + 20
188
	mov	ebx, 10 shl 16 + 20
189
	mov	edx, text2
189
	mov	edx, text2
190
	int	0x40
190
	int	0x40
191
	mov	eax, 47
191
	mov	eax, 47
192
	mov	ebx, 0x00020000
192
	mov	ebx, 0x00020000
193
	movzx	ecx, byte [format_id]
193
	movzx	ecx, byte [format_id]
194
	mov	edx, 200 shl 16 + 20
194
	mov	edx, 200 shl 16 + 20
195
	mov	esi, 0
195
	mov	esi, 0
196
	int	0x40
196
	int	0x40
197
 
197
 
198
	mov	eax, 8
198
	mov	eax, 8
199
	mov	ebx, 10 shl 16 + 60
199
	mov	ebx, 10 shl 16 + 60
200
	mov	ecx, 40 shl 16 + 15
200
	mov	ecx, 40 shl 16 + 15
201
	mov	edx, 5
201
	mov	edx, 5
202
	mov	esi, 0xd72189
202
	mov	esi, 0xd72189
203
	int	0x40
203
	int	0x40
204
	mov	eax, 4
204
	mov	eax, 4
205
	mov	ebx, 12 shl 16 + 42
205
	mov	ebx, 12 shl 16 + 42
206
	mov	ecx, 0x80000000
206
	mov	ecx, 0x80000000
207
	mov	edx, button1
207
	mov	edx, button1
208
	int	0x40
208
	int	0x40
209
 
209
 
210
	mov	eax, 8
210
	mov	eax, 8
211
	mov	ebx, 80 shl 16 + 60
211
	mov	ebx, 80 shl 16 + 60
212
	mov	ecx, 40 shl 16 + 15
212
	mov	ecx, 40 shl 16 + 15
213
	mov	edx, 6
213
	mov	edx, 6
214
	mov	esi, 0xd72189
214
	mov	esi, 0xd72189
215
	int	0x40
215
	int	0x40
216
	mov	eax, 4
216
	mov	eax, 4
217
	mov	ebx, 82 shl 16 + 42
217
	mov	ebx, 82 shl 16 + 42
218
	mov	ecx, 0x80000000
218
	mov	ecx, 0x80000000
219
	mov	edx, button2
219
	mov	edx, button2
220
	int	0x40
220
	int	0x40
221
 
221
 
222
	mov	edi, input_box
222
	mov	edi, input_box
223
	call	edit_box.draw
223
	call	edit_box.draw
224
 
224
 
225
;	mov	eax, 4
225
;	mov	eax, 4
226
;	mov	ebx, 10 shl 16 + 90
226
;	mov	ebx, 10 shl 16 + 90
227
;	mov	ecx, 0
227
;	mov	ecx, 0
228
;	mov	edx, input_text
228
;	mov	edx, input_text
229
;	mov	esi, [input_box + 38]
229
;	mov	esi, [input_box + 38]
230
;	int	0x40
230
;	int	0x40
231
;	mov	eax, esi
231
;	mov	eax, esi
232
;print "eax = edit etxt len"
232
;print "eax = edit etxt len"
233
;pregs
233
;pregs
234
 
234
 
235
 
235
 
236
 
236
 
237
    mov     eax, 12                ; finish drawing
237
    mov     eax, 12                ; finish drawing
238
    mov     ebx, 2
238
    mov     ebx, 2
239
    int     0x40    	
239
    int     0x40
240
 
240
 
241
  ret
241
  ret
242
 
242
 
243
 
243
 
244
 
244
 
245
; <--- initialised data --->
245
; <--- initialised data --->
246
DATA
246
DATA
247
 
247
 
248
	format_id	db	1
248
	format_id	db	1
249
 
249
 
250
;	buffer		db	256 dup(0)
250
;	buffer		db	256 dup(0)
251
 
251
 
252
	CLIP_BUFFER	buffer, 256
252
	CLIP_BUFFER	buffer, 256
253
 
253
 
254
	input_text	db	256 dup(0)
254
	input_text	db	256 dup(0)
255
	input_box	edit_box 100,10,70,0xffffff,0,0x00aaaaaa,0,255,input_text
255
	input_box	edit_box 100,10,70,0xffffff,0,0x00aaaaaa,0,255,input_text
256
 
256
 
257
;	input_box	edit_box 100,10,70,0xffffff,0,0xaaaaaa,0,\
257
;	input_box	edit_box 100,10,70,0xffffff,0,0xaaaaaa,0,\
258
;			0xaaaaaa,0,255,input_text,ed_always_focus
258
;			0xaaaaaa,0,255,input_text,ed_always_focus
259
 
259
 
260
	head	db	"à¨¬¥à à ¡®âë á ¡ãä¥à®¬ ®¡¬¥­ ",0
260
	head	db	"à¨¬¥à à ¡®âë á ¡ãä¥à®¬ ®¡¬¥­ ",0
261
	text1	db	" ¦¨¬ ©â¥ æ¨äàë 0-9 ¤«ï ᬥ­ë id ä®à¬ â  ¤ ­­ëå",0
261
	text1	db	" ¦¨¬ ©â¥ æ¨äàë 0-9 ¤«ï ᬥ­ë id ä®à¬ â  ¤ ­­ëå",0
262
	text2	db	"‘¥©ç á ¢ë¡à ­ id ä®à¬ â  ¤ ­­ëå: ",0
262
	text2	db	"‘¥©ç á ¢ë¡à ­ id ä®à¬ â  ¤ ­­ëå: ",0
263
 
263
 
264
	button1	db	"Š®¯¨à®¢ âì",0
264
	button1	db	"Š®¯¨à®¢ âì",0
265
	button2	db	"‚áâ ¢¨âì",0
265
	button2	db	"‚áâ ¢¨âì",0
266
 
266
 
267
; <--- uninitialised data --->
267
; <--- uninitialised data --->
268
UDATA
268
UDATA
269
 
269
 
270
 
270
 
271
MEOS_APP_END
271
MEOS_APP_END
272
; <--- end of MenuetOS application --->
272
; <--- end of MenuetOS application --->