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, |
6 | ; comments: uses edit_box by Maxxxx32, |
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 --->--->--->--->--->--->--->---> |