Subversion Repositories Kolibri OS

Rev

Rev 7473 | Rev 7483 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
7471 theonlymir 1
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
2
; Formatting Disk Utility ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
3
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
4
; Compile with FASM
7476 theonlymir 5
; FORMAT ver. Oct 18, 2018
7471 theonlymir 6
 
7
; Copyright (c) 2018, Efremenkov Sergey aka TheOnlyMirage
8
; All rights reserved.
9
; Redistribution and use in source and binary forms, with or without modification,
10
; are permitted provided that the following conditions are met:
11
;    * Redistributions of source code must retain the above copyright notice, this
12
;    list of conditions and the following disclaimer.
13
;    * Redistributions in binary form must reproduce the above copyright  notice,
14
;    this list of conditions and the following disclaimer in the documentation and/or
15
;    other materials provided with the distribution.
16
;    * Neither the name of the  nor the names of its contributors may
17
;    be used to endorse or promote products derived from this software without
18
;    specific prior written permission.
19
 
20
; THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,
21
; INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
22
; PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
23
; HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
24
; OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
25
; SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
26
; --------------------------------------------------------------------------------------
27
format binary as ""
28
 
29
use32
30
org 0
31
 
32
db 'MENUET01'
33
dd 1
34
dd START
35
dd I_END
36
dd MEM
37
dd STACKTOP
38
dd 0, 0
39
 
7473 theonlymir 40
KMENUITEM_NORMAL equ 0
41
KMENUITEM_SUBMENU equ 1
42
KMENUITEM_SEPARATOR equ 2
43
 
7471 theonlymir 44
include 'lang.inc'
45
include '../../macros.inc'
46
include '../../proc32.inc'
47
include '../../dll.inc'
7476 theonlymir 48
include '../../develop/libraries/box_lib/trunk/box_lib.mac' ;for uses checkBox and editBox
49
include '../../develop/libraries/box_lib/load_lib.mac'
7471 theonlymir 50
@use_library
51
 
52
START:
7476 theonlymir 53
   mcall 48,3,sc,sizeof.system_colors ;get system colors
7471 theonlymir 54
 
55
   stdcall dll.Load, @IMPORT
56
   or      eax, eax
57
   jnz     exit
58
 
7476 theonlymir 59
   load_libraries l_libs_start,load_lib_end
60
   stdcall [OpenDialog_Init],OpenDialog_data
7471 theonlymir 61
 
7476 theonlymir 62
   ;set mask for events:
63
   ;сообщение о перерисовке,нажата кнопка, определённая ранее, событие от мыши (что-то случилось - нажатие на кнопку мыши или перемещение; сбрасывается при прочтении)
64
   mcall 40, 0x27
7471 theonlymir 65
 
66
   mov ecx,[sc.work_text]
67
   and ecx, 0x9FFFFFFF
68
   or  ecx,0x90000000
7476 theonlymir 69
 
70
   call initBuf
71
 
7471 theonlymir 72
   mov dword[editLU.text_color], ecx
73
   mov dword[editRU.text_color], ecx
74
   mov dword[editMBR.text_color], ecx
75
 
76
   invoke init_checkbox, ch1
77
   invoke init_checkbox, ch2
78
 
7476 theonlymir 79
   stdcall [kmenu_init], sc
80
   stdcall [ksubmenu_new]
81
   mov [kmFS], eax
7473 theonlymir 82
 
7476 theonlymir 83
   stdcall [kmenuitem_new], KMENUITEM_NORMAL, kmNone, 110
84
   stdcall [ksubmenu_add], [kmFS], eax
85
   stdcall [kmenuitem_new], KMENUITEM_NORMAL, kmFat16, 111
86
   stdcall [ksubmenu_add], [kmFS], eax
87
   stdcall [kmenuitem_new], KMENUITEM_NORMAL, kmFat32, 112
88
   stdcall [ksubmenu_add], [kmFS], eax
89
   stdcall [kmenuitem_new], KMENUITEM_NORMAL, kmNTFS, 113
90
   stdcall [ksubmenu_add], [kmFS], eax
91
   stdcall [kmenuitem_new], KMENUITEM_NORMAL, kmExt2, 114
92
   stdcall [ksubmenu_add], [kmFS], eax
93
   mov byte[kmID], 0
7473 theonlymir 94
 
7476 theonlymir 95
   stdcall [kmenuitem_new], KMENUITEM_SUBMENU, kmFat16, [kmFS]
7473 theonlymir 96
 
97
 
7476 theonlymir 98
   stdcall [ksubmenu_new]
99
   mov [kmUnit], eax
100
   stdcall [kmenuitem_new], KMENUITEM_NORMAL, unittext.0, 120
101
   stdcall [ksubmenu_add], [kmUnit], eax
102
   stdcall [kmenuitem_new], KMENUITEM_NORMAL, unittext.1, 121
103
   stdcall [ksubmenu_add], [kmUnit], eax
104
   stdcall [kmenuitem_new], KMENUITEM_NORMAL, unittext.2, 122
105
   stdcall [ksubmenu_add], [kmUnit], eax
106
   stdcall [kmenuitem_new], KMENUITEM_NORMAL, unittext.3, 123
107
   stdcall [ksubmenu_add], [kmUnit], eax
108
   stdcall [kmenuitem_new], KMENUITEM_NORMAL, unittext.4, 124
109
   stdcall [ksubmenu_add], [kmUnit], eax
110
   stdcall [kmenuitem_new], KMENUITEM_NORMAL, unittext.5, 125
111
   stdcall [ksubmenu_add], [kmUnit], eax
112
   stdcall [kmenuitem_new], KMENUITEM_NORMAL, unittext.6, 126
113
   stdcall [ksubmenu_add], [kmUnit], eax
114
   stdcall [kmenuitem_new], KMENUITEM_NORMAL, unittext.7, 127
115
   stdcall [ksubmenu_add], [kmUnit], eax
116
   mov byte[kmUnitID], 0
117
   stdcall [kmenuitem_new], KMENUITEM_SUBMENU, unittext.0, [kmUnit]
7471 theonlymir 118
 
7476 theonlymir 119
   call  draw_window
120
 
7471 theonlymir 121
event_wait:
7476 theonlymir 122
   mcall 10
7471 theonlymir 123
 
7476 theonlymir 124
   cmp     eax, 1       ; Event redraw
125
   je      redraw
7471 theonlymir 126
 
7476 theonlymir 127
   cmp     eax, 2       ; Event key in buffer ?
128
   je      key
7471 theonlymir 129
 
7476 theonlymir 130
   cmp     eax, 3       ; Event button in buffer ?
131
   je      button
7471 theonlymir 132
 
7476 theonlymir 133
   cmp     eax, 6       ; Event mouse in buffer ?
134
   je      mouse
7471 theonlymir 135
 
7476 theonlymir 136
   jmp  event_wait
7471 theonlymir 137
 
138
 
7476 theonlymir 139
redraw:
140
   call    draw_window
141
   jmp     event_wait
7473 theonlymir 142
 
7471 theonlymir 143
key:
7476 theonlymir 144
   mcall 2
145
   invoke  edit_box_key, editLU
146
   invoke  edit_box_key, editRU
147
   invoke  edit_box_key, editMBR
148
   jmp     event_wait
7471 theonlymir 149
 
150
button:
7473 theonlymir 151
    mcall 17
7471 theonlymir 152
 
7476 theonlymir 153
    cmp ah, 1         ;Close button
154
    jne @f
7471 theonlymir 155
exit:
7473 theonlymir 156
    mcall -1
7476 theonlymir 157
@@:
7473 theonlymir 158
   cmp ah, 2          ;Format button
7476 theonlymir 159
   jne @f
7473 theonlymir 160
   call butFormat
161
   jmp event_wait
7476 theonlymir 162
@@:
7473 theonlymir 163
   cmp ah, 3          ;Brouse button
164
   jne @f
165
   call butBrouse
166
   jmp event_wait
167
@@:
168
   cmp ah, 4          ;Select FS button
169
   jne @f
170
   call butSelectFS
171
   jmp event_wait
172
@@:
7476 theonlymir 173
   cmp ah, 5          ;Select unit size button
174
   jne @f
175
   call butUnit
176
   jmp event_wait
177
@@:
7473 theonlymir 178
   cmp ah, 110        ;kmenu list FS
179
   jb @f
180
   cmp ah, 114
181
   ja @f
182
   sub ah, 110
183
   mov byte[kmID], ah
7476 theonlymir 184
   jmp redraw
7473 theonlymir 185
@@:
7476 theonlymir 186
   cmp ah, 120        ;kmenu Unit Size
187
   jb @f
188
   cmp ah, 127
189
   ja @f
190
   sub ah, 120
191
   mov byte[kmUnitID], ah
192
   jmp redraw
193
@@:
7473 theonlymir 194
   jmp event_wait
7471 theonlymir 195
 
7476 theonlymir 196
mouse:
197
   invoke check_box_mouse, ch1  ;проверка чек бокса
198
   invoke check_box_mouse, ch2
7473 theonlymir 199
 
7476 theonlymir 200
   invoke  edit_box_mouse, editLU   ;проверка событий мыши для editBox'ов
201
   invoke  edit_box_mouse, editRU
202
   invoke  edit_box_mouse, editMBR
203
 
204
   stdcall [kmainmenu_dispatch_cursorevent], [kmFS]
205
   jmp event_wait
206
 
7473 theonlymir 207
butBrouse:
7471 theonlymir 208
   call but_open_dlg
209
   ret
7473 theonlymir 210
 
211
butFormat:
7471 theonlymir 212
   ret
213
 
7473 theonlymir 214
butSelectFS:
215
   push eax ebx ecx
216
   mcall 9, pi, -1 ;get window coord
7471 theonlymir 217
 
7473 theonlymir 218
   mov eax, dword[pi+34]
219
   add eax, Otstup
220
   mov word[coord.x], ax
221
 
222
   mov eax, dword[pi+38]
223
   add eax, 129
224
   mov word[coord.y], ax
225
 
226
   stdcall [ksubmenu_draw], [kmFS], coord
227
   pop ecx ebx eax
228
   ret
229
 
7476 theonlymir 230
butUnit:
231
   push eax ebx ecx
232
   mcall 9, pi, -1
7473 theonlymir 233
 
7476 theonlymir 234
   mov eax, dword[pi+34]
235
   add eax, Otstup+80+30+delta
236
   mov word[coordUnit.x], ax
7473 theonlymir 237
 
7476 theonlymir 238
   mov eax, dword[pi+38]
239
   add eax, 129
240
   mov word[coordUnit.y], ax
241
 
242
   stdcall [ksubmenu_draw], [kmUnit], coordUnit
243
   pop ecx ebx eax
244
   ret
245
 
7471 theonlymir 246
delta = 50
7473 theonlymir 247
dy = 15 + 40
248
warning_title: db 'Warning!',0
249
draw_warningWindow:
250
   ret
251
 
7471 theonlymir 252
draw_window:
253
   mcall  12, 1
254
 
255
        mov     eax, 0                  ; function 0 : define and draw window
256
        mov     ebx, 100 * 65536 + (290+delta)  ; [x start] *65536 + [x size]
257
        mov     ecx, 100 * 65536 + (310+dy)  ; [y start] *65536 + [y size]
7476 theonlymir 258
        mov     edx,[sc.work]    ;0x14FFFFFF
259
        add     edx, 0x14000000         ; color of work area RRGGBB
7471 theonlymir 260
                                        ; 0x02000000 = window type 4 (fixed size, skinned window)
261
        mov     esi, 0x808899ff         ; color of grab bar  RRGGBB
262
                                        ; 0x80000000 = color glide
263
        mov     edi, title
264
        mcall
265
 
266
 
267
        mov ebx, (290+delta-Otstup-130)*65536+130
268
        mov ecx, (270+dy)*65536+(20+3)
7476 theonlymir 269
        mov edx, 0x00000002
270
        mov esi, 0xAABBCC
7471 theonlymir 271
        mcall 8
272
 
273
        mov ebx, (290+delta-Otstup-50-2)*65536+(50+2)
274
        mov ecx, (210+dy)*65536+21 ;14
7476 theonlymir 275
        mov edx, 0x00000003
276
        mov esi, 0xAABBCC
7471 theonlymir 277
        mcall 8
278
 
7473 theonlymir 279
        ;button select FS
280
        mov ebx, Otstup*65536+120
281
        mov ecx, (110)*65536+(21)
282
        mov edx, 0x00000004
7476 theonlymir 283
        mov esi, 0xFFFFFF
7473 theonlymir 284
        mcall 8
285
 
7476 theonlymir 286
        ;button select unit size
287
        mov ebx, (Otstup+80+30+delta)*65536+120
288
        mov ecx, (110)*65536+(21)
289
        mov edx, 0x00000005
290
        mov esi, 0xFFFFFF
291
        mcall 8
292
 
7471 theonlymir 293
       invoke check_box_draw, ch1  ;рисование чекбоксов
294
       invoke check_box_draw, ch2
295
 
296
       invoke  edit_box_draw, editMBR     ;рисование edit box'ов
297
       invoke  edit_box_draw, editLU
298
       invoke  edit_box_draw, editRU
299
 
300
        call draw_super_text
301
 
7476 theonlymir 302
 
303
        mov     ecx,[sc.work]
304
        mov     dword [frame_data.font_backgr_color],ecx
305
        push    dword frame_data
306
        invoke  frame_draw
307
 
308
        mov     ecx,[sc.work]
309
        mov     dword [frame_data2.font_backgr_color],ecx
310
        push    dword frame_data2
311
        invoke  frame_draw
312
 
7471 theonlymir 313
        mcall 12, 2
314
        ret
315
 
316
 
317
 
318
Otstup = 30
319
 
320
;цвет 0x224466 заменён 0x90000000 и в финале на 0
321
ch1 check_box2 Otstup shl 16 + 12, (170+dy) shl 16 + 12, 6, 0xFFFFFFFF, 0xAABBCC, 0, ch_text.1, 100b ; 110b = ch_flag_en and ch_flag_middl
322
ch2 check_box2 Otstup shl 16 + 12, (190+dy) shl 16 + 12, 6, 0xFFFFFFFF, 0xAABBCC, 0, ch_text.2, 100b
323
 
7473 theonlymir 324
 
325
browse db '...', 0
326
 
7476 theonlymir 327
if lang eq ru  ;RU language
7471 theonlymir 328
 
329
title   db  "Formatting Disk Utility", 0
330
 
7476 theonlymir 331
ch_text:       ;text for CheckBoxs
7471 theonlymir 332
.1 db 'Џ®«­®Ґ Ё ¤®«Ј®Ґ д®а¬ вЁа®ў ­ЁҐ',0
333
.2 db '‘®§¤ вм § Ја㧮з­л© ¤ЁбЄ, § ЇЁбм MBR:',0
334
 
335
text:
336
  .volume db 'ЊҐвЄ  ⮬ :', 0
337
  .fs     db '” ©«®ў п бЁб⥬ :', 0
7476 theonlymir 338
  .disk   db 'Ќ Є®ЇЁвҐ«м:', 0 ;'…¬Є®бвм:', 0
7471 theonlymir 339
  .unit   db 'ђ §¬Ґа Є« бвҐа :', 0
340
  .option db 'Џ а ¬Ґвал:', 0
341
  .format db '”®а¬ вЁа®ў вм', 0
342
 
343
head_f_i:
7476 theonlymir 344
  head_f_l  db '‘Ёб⥬­ п ®иЁЎЄ ',0
345
  err_message_found_lib0 db 'ЌҐ ­ ©¤Ґ­  ЎЁЎ«Ё®вҐЄ  ',39,'proc_lib.obj',39,0
346
  err_message_import0 db 'ЋиЁЎЄ  ЇаЁ Ё¬Ї®а⥠ЎЁЎ«Ё®вҐЄЁ ',39,'proc_lib.obj',39,0
347
  err_message_found_lib1 db 'ЌҐ ­ ©¤Ґ­  ЎЁЎ«Ё®вҐЄ  ',39,'kmenu.obj',39,0
348
  err_message_import1 db 'ЋиЁЎЄ  ЇаЁ Ё¬Ї®а⥠ЎЁЎ«Ё®вҐЄЁ ',39,'kmenu',39,0
7471 theonlymir 349
 
7476 theonlymir 350
else           ;EN language
7471 theonlymir 351
 
352
title   db  "Formatting Disk Utility", 0
353
 
7476 theonlymir 354
ch_text:
7471 theonlymir 355
.1 db 'Full and long disk formatting',0
356
.2 db 'Create startup disk, write MBR:',0
357
 
358
text:
359
  .volume db 'Volume Label:', 0
360
  .fs     db 'File System:', 0
7476 theonlymir 361
  .disk   db 'Storage device:', 0 ;'Capacity:', 0
7471 theonlymir 362
  .unit   db 'Allocation unit size:', 0
363
  .option db 'Options:', 0
364
  .format db 'Format', 0
365
 
366
head_f_i:
367
  head_f_l  db 'System error',0
368
  err_message_found_lib0 db 'Could not find library ',39,'proc_lib.obj',39,0
369
  err_message_import0 db 'Error importing library ',39,'proc_lib.obj',39,0
370
  err_message_found_lib1 db 'Could not find library ',39,'kmenu.obj',39,0
371
  err_message_import1 db 'Error importing library ',39,'kmenu',39,0
372
 
373
end if
374
 
375
 
376
draw_super_text:
377
   push eax ebx ecx edx edi esi
378
   mov     ebx, Otstup * 65536 + 49-6    ; draw info text with function 4 (x, y)
379
   mov     ecx, 0x90000000 ;0x90224466 ;0x224466
380
   mov eax, text.volume
381
   mov     edx, eax
382
   mov     esi, 13
383
   mcall 4
384
 
385
   mov     ebx, Otstup * 65536 + 99-6
386
   mov     edx, text.fs
387
   mov     esi, 12
388
   mcall 4
389
 
390
   mov     ebx, (Otstup+80+30+delta) * 65536 + 99-6
391
   mov     edx, text.unit
392
   mov     esi, 21
393
   mcall 4
394
 
395
   mov     ebx, (Otstup+80+30+delta) * 65536 + 49-6
396
   mov     edx, text.disk
397
   mov     esi, 9
398
   mcall 4
399
 
7476 theonlymir 400
;   mov     ebx, Otstup * 65536 + (151-6+dy)
401
;   mov     edx, text.option
402
;   mov     esi, 8
403
;   mcall 4
404
 
405
   mov     ebx, (Otstup+80+30+delta +5) * 65536 + (110+3)
406
   mov dl, byte[kmUnitID]
407
   cmp dl, 0
408
   jne @f
409
   mov     edx, unittext.0
410
   jmp .printUnit
411
@@:
412
   cmp dl, 1
413
   jne @f
414
   mov     edx, unittext.1
415
   jmp .printUnit
416
@@:
417
   cmp dl, 2
418
   jne @f
419
   mov     edx, unittext.2
420
   jmp .printUnit
421
@@:
422
   cmp dl, 3
423
   jne @f
424
   mov     edx, unittext.3
425
   jmp .printUnit
426
@@:
427
   cmp dl, 4
428
   jne @f
429
   mov     edx, unittext.4
430
   jmp .printUnit
431
@@:
432
   cmp dl, 5
433
   jne @f
434
   mov     edx, unittext.5
435
   jmp .printUnit
436
@@:
437
   cmp dl, 6
438
   jne @f
439
   mov     edx, unittext.6
440
   jmp .printUnit
441
@@:
442
   cmp dl, 7
443
   jne @f
444
   mov     edx, unittext.7
445
   jmp .printUnit
446
@@:
447
   mov byte[kmUnitID], 0
448
   mov     edx, unittext.0
449
.printUnit:
7471 theonlymir 450
   mcall 4
451
 
7473 theonlymir 452
   mov     ebx, (Otstup+5) * 65536 + (110+3)
453
   mov dl, byte[kmID]
454
   cmp dl, 0
455
   jne @f
456
   mov     edx, kmNone
457
   jmp .printFS
458
@@:
459
   cmp dl, 1
460
   jne @f
461
   mov     edx, kmFat16
462
   jmp .printFS
463
@@:
464
   cmp dl, 2
465
   jne @f
466
   mov     edx, kmFat32
467
   jmp .printFS
468
@@:
469
   cmp dl, 3
470
   jne @f
471
   mov     edx, kmNTFS
472
   jmp .printFS
473
@@:
474
   cmp dl, 4
475
   jne @f
476
   mov     edx, kmExt2
477
   jmp .printFS
478
@@:
479
   mov byte[kmID], 0
480
   mov     edx, kmNone
481
.printFS:
482
   ;mov     esi, 8
483
   mcall 4
484
 
7471 theonlymir 485
   ;buttons text
486
   mov     ebx, (290+delta-Otstup-130+10+2) * 65536 + (277-3+dy)
7473 theonlymir 487
   mov     ecx, 0x90FFFFFF
7471 theonlymir 488
   mov eax, text.format
489
   mov     edx, eax
490
   mov     esi, 6
491
   mcall 4
492
 
7473 theonlymir 493
   mov     ebx, (290+delta-Otstup-52+6+8) * 65536 + (213+dy)
7471 theonlymir 494
   ;mov     ecx, 0xFFFFFF
7473 theonlymir 495
   mov eax, browse ;text.browse
7471 theonlymir 496
   mov     edx, eax
497
   mov     esi, 6
498
   mcall 4
499
 
500
   pop esi edi edx ecx ebx eax
501
   ret
502
 
7476 theonlymir 503
unittext:
504
  .0 db '512 bytes', 0
505
  .1 db '1024 bytes', 0
506
  .2 db '2048 bytes', 0
507
  .3 db '4096 bytes', 0
508
  .4 db '8192 bytes', 0
509
  .5 db '16 Kb', 0
510
  .6 db '32 Kb', 0
511
  .7 db '64 Kb', 0
512
 
7471 theonlymir 513
Buf:
514
  .1 db 'NONAME18',0,0
7476 theonlymir 515
  ;.2 db 'FAT',0,0 ;100 dup(0)
7471 theonlymir 516
  .3 db 'hd0 [FAT32: 4Gb]',0,0 ;100 dup(0)
7476 theonlymir 517
  ;.4 db '4096',0,0 ;100 dup(0)
518
  .5 rb 512 ;db '/rd/1/format/fat32mbr.bin', 0, 0
7471 theonlymir 519
 
7476 theonlymir 520
initBuf:
521
   push eax ecx
522
   ;buf.1 - label
523
   mov dword[Buf.1], 'NONA'
524
   mov dword[Buf.1+4], 'ME18'
525
   mov word[Buf.1+8], 0
7471 theonlymir 526
 
7476 theonlymir 527
   ;buf.5 - full name for file mbr
528
   mov eax, Buf.5
529
   mov ecx, 512/4
530
@@:
531
   mov dword[eax], 4
532
   add eax, 4
533
   dec ecx
534
   cmp ecx, 0
535
   je @f
536
   jmp @b
537
@@:
7471 theonlymir 538
 
7476 theonlymir 539
   pop ecx eax
540
   ret
7471 theonlymir 541
 
7476 theonlymir 542
 
543
 
7471 theonlymir 544
copyPath:
545
   push eax ebx ecx edx ;copy file name path
7476 theonlymir 546
        mov eax, openfile_path
7471 theonlymir 547
        mov ebx, Buf.5
548
        mov ecx, 0
549
      @@:
550
        mov dl, byte[eax]
551
        cmp dl, 0
552
        je @f
553
        mov byte[ebx], dl
554
        inc eax
555
        inc ebx
556
        inc ecx
557
        jmp @b
558
      @@:
559
        mov byte[ebx], 0
560
        mov dword[editMBR.size], ecx
561
        mov dword[editMBR.pos], ecx
562
   pop edx ecx ebx eax
563
   ret
564
 
565
align 4
566
but_open_dlg:
567
        pushad
568
        copy_path open_dialog_name,communication_area_default_path,file_name,0
569
        mov [OpenDialog_data.type],0
570
        stdcall[OpenDialog_Start], OpenDialog_data
571
        cmp [OpenDialog_data.status],2
572
        je @f
573
        cmp [OpenDialog_data.status],0 ;пользователь нажал Cancel?
574
        je .end_open
575
                ;код при удачном открытии диалога
576
                ;...
577
                call copyPath
578
                jmp .end_open
579
        @@:
580
                ;код при не удачном открытии диалога
581
                ;...
582
        .end_open:
583
        popad
584
        ret
585
 
586
;данные для диалога открытия файлов
587
align 4
588
OpenDialog_data:
589
.type                   dd 0 ;0 - открыть, 1 - сохранить, 2 - выбрать директорию
590
.procinfo               dd procinfo
591
.com_area_name          dd communication_area_name ;+8
592
.com_area               dd 0           ;+12
593
.opendir_path           dd plugin_path ;+16
594
.dir_default_path       dd default_dir ;+20
595
.start_path             dd file_name   ;+24 путь к диалогу открытия файлов
596
.draw_window            dd draw_window ;+28
597
.status                 dd 0           ;+32
598
.openfile_path          dd openfile_path ;+36 путь к открываемому файлу
599
.filename_area          dd filename_area ;+40
600
.filter_area            dd Filter
601
.x:
602
.x_size                 dw 420 ;+48 ; Window X size
603
.x_start                dw 10  ;+50 ; Window X position
604
.y:
605
.y_size                 dw 320 ;+52 ; Window y size
606
.y_start                dw 10  ;+54 ; Window Y position
607
 
608
default_dir db '/rd/1',0 ;директория по умолчанию
609
communication_area_name: db 'FFFFFFFF_open_dialog',0
610
open_dialog_name:  db 'opendial',0
611
communication_area_default_path: db '/rd/1/File managers/',0
612
 
613
Filter:
614
dd Filter.end - Filter.1
615
.1:
616
;db 'BIN',0
617
.end:
618
db 0
619
 
620
 
7476 theonlymir 621
align 16
622
@IMPORT:
623
library box_lib, 'box_lib.obj'
624
 
625
import  box_lib,\
626
        edit_box_draw,          'edit_box',\
627
        edit_box_key,           'edit_box_key',\
628
        edit_box_mouse,         'edit_box_mouse',\
629
        init_checkbox,          'init_checkbox2',\
630
        check_box_draw,         'check_box_draw2',\
631
        check_box_mouse,        'check_box_mouse2',\
632
        option_box_draw,        'option_box_draw',\
633
        option_box_mouse,       'option_box_mouse',\
634
        frame_draw,             'frame_draw'
635
 
7471 theonlymir 636
align 4
637
import_libkmenu:
638
        kmenu_init      dd akmenu_init
639
        kmainmenu_draw  dd akmainmenu_draw
640
        kmainmenu_dispatch_cursorevent dd akmainmenu_dispatch_cursorevent
641
        ksubmenu_new    dd aksubmenu_new
642
        ksubmenu_delete dd aksubmenu_delete
643
        ksubmenu_draw   dd aksubmenu_draw
644
        ksubmenu_add    dd aksubmenu_add
645
        kmenuitem_new   dd akmenuitem_new
646
        kmenuitem_delete dd akmenuitem_delete
647
        kmenuitem_draw  dd akmenuitem_draw
648
dd 0,0
649
        akmenu_init     db 'kmenu_init',0
650
        akmainmenu_draw db 'kmainmenu_draw',0
651
        akmainmenu_dispatch_cursorevent db 'kmainmenu_dispatch_cursorevent',0
652
        aksubmenu_new   db 'ksubmenu_new',0
653
        aksubmenu_delete db 'ksubmenu_delete',0
654
        aksubmenu_draw  db 'ksubmenu_draw',0
655
        aksubmenu_add   db 'ksubmenu_add',0
656
        akmenuitem_new  db 'kmenuitem_new',0
657
        akmenuitem_delete db 'kmenuitem_delete',0
658
        akmenuitem_draw  db 'kmenuitem_draw',0
659
 
660
align 4
661
proclib_import:
662
        OpenDialog_Init dd aOpenDialog_Init
663
        OpenDialog_Start dd aOpenDialog_Start
664
dd 0,0
665
        aOpenDialog_Init db 'OpenDialog_init',0
666
        aOpenDialog_Start db 'OpenDialog_start',0
667
 
668
system_dir0 db '/sys/lib/'
669
lib0_name db 'proc_lib.obj',0
670
lib1_name db 'kmenu.obj',0
671
 
7476 theonlymir 672
 
673
frame_data:
674
.type                   dd 0 ;+0
675
.x:
676
.x_size                 dw 290+delta-2*(Otstup-10) ;+4
677
.x_start                dw Otstup-10 ;+6
678
.y:
679
.y_size                 dw 80+20 ;+8
680
.y_start                dw 151-6+dy ;+10
681
.ext_fr_col             dd 0x888888 ;+12
682
.int_fr_col             dd 0xffffff ;+16
683
.draw_text_flag         dd 1 ;+20
684
.text_pointer           dd text.option ;+24
685
.text_position          dd 0 ;+28
686
.font_number            dd 1;0 ;+32
687
.font_size_y            dd 9 ;+36
688
.font_color             dd 0x000000 ;+40
689
.font_backgr_color      dd 0xFFFFFF ;dddddd ;+44
690
 
691
frame_data2:
692
.type                   dd 0
693
.x:
694
.x_size                 dw 290+delta-2*(Otstup-10)
695
.x_start                dw Otstup-10
696
.y:
697
.y_size                 dw 110
698
.y_start                dw Otstup+5
699
.ext_fr_col             dd 0x888888
700
.int_fr_col             dd 0xffffff
701
.draw_text_flag         dd 0;1
702
.text_pointer           dd 0 ;text.option
703
.text_position          dd 0
704
.font_number            dd 0
705
.font_size_y            dd 9
706
.font_color             dd 0x0
707
.font_backgr_color      dd 0xdddddd
708
 
7471 theonlymir 709
;symbolDownArrow db 25,0
710
 
7473 theonlymir 711
kmNone: db 'None', 0  ;only MBR or ZeroDestroy
712
;kmFat12: db 'FAT12', 0
713
kmFat16: db 'FAT16', 0
714
kmFat32: db 'FAT32', 0
715
;kmExtFat: db 'EXTFAT', 0
716
kmNTFS: db 'NTFS', 0
717
kmExt2: db 'EXT2', 0
718
;kmExt3: db 'EXT3', 0
719
;kmExt4: db 'EXT4', 0
720
;kmXFS: db 'XFS', 0
721
 
7471 theonlymir 722
l_libs_start:
723
    lib0 l_libs lib0_name, sys_path, file_name, system_dir0, err_message_found_lib0, head_f_l, proclib_import,err_message_import0, head_f_i
724
    lib1 l_libs lib1_name, sys_path, file_name, system_dir0, err_message_found_lib1, head_f_l, import_libkmenu,err_message_import1,head_f_i
725
load_lib_end:
726
 
727
;размеры: 80 и 120
728
editLU edit_box 120,Otstup,60,0xffffff,0x6a9480,0,0xAABBCC,0,8,Buf.1, mouse_dd, 0,8,8
729
editRU edit_box 120,Otstup+80+30+delta,60,0xffffff,0x6a9480,0,0xAABBCC,0,16,Buf.3, mouse_dd, 0,16,16
7476 theonlymir 730
editMBR edit_box 290+delta-Otstup-52-Otstup-20,Otstup+20,210+dy,0xffffff,0x6a9480,0,0xAABBCC,0,255,Buf.5, mouse_dd, 0,0,0 ;25,25
7471 theonlymir 731
 
732
data_of_code dd 0
733
 
734
sc  system_colors
735
mouse_dd  rd 1
736
 
7473 theonlymir 737
coord:
738
  .x: rw 1
739
  .y: rw 1
740
 
7476 theonlymir 741
coordUnit:
742
  .x: rw 1
743
  .y: rw 1
744
 
745
kmUnitID: rd 1
746
kmUnit: rd 1
747
 
7473 theonlymir 748
kmID: rb 1 ;номер выбранного пункта
749
kmFS: rd 1
750
mbr: rb 512
751
 
7471 theonlymir 752
sys_path:      rb 4096
753
file_name:     rb 4096
754
plugin_path:   rb 4096
755
openfile_path: rb 4096
756
filename_area: rb 256
757
rb 1024
758
procinfo process_information
7473 theonlymir 759
pi rb 1024
7471 theonlymir 760
 
761
I_END:
7476 theonlymir 762
        rb 256
763
align 4
7471 theonlymir 764
STACKTOP:
765
MEM: