Format UI: add kmenu for Devices list, aligned button "Format"

git-svn-id: svn://kolibrios.org@7483 a494cfbc-eb01-0410-851d-a64ba20cac60
This commit is contained in:
theonlymirage 2018-10-18 23:38:37 +00:00
parent b33c079d84
commit 31a514faf0

View File

@ -2,7 +2,7 @@
; Formatting Disk Utility ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; Formatting Disk Utility ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; Compile with FASM ; Compile with FASM
; FORMAT ver. Oct 18, 2018 ; FORMAT ver. Oct 19, 2018
; Copyright (c) 2018, Efremenkov Sergey aka TheOnlyMirage ; Copyright (c) 2018, Efremenkov Sergey aka TheOnlyMirage
; All rights reserved. ; All rights reserved.
@ -69,8 +69,7 @@ START:
call initBuf call initBuf
mov dword[editLU.text_color], ecx mov dword[editLabel.text_color], ecx
mov dword[editRU.text_color], ecx
mov dword[editMBR.text_color], ecx mov dword[editMBR.text_color], ecx
invoke init_checkbox, ch1 invoke init_checkbox, ch1
@ -116,6 +115,8 @@ START:
mov byte[kmUnitID], 0 mov byte[kmUnitID], 0
stdcall [kmenuitem_new], KMENUITEM_SUBMENU, unittext.0, [kmUnit] stdcall [kmenuitem_new], KMENUITEM_SUBMENU, unittext.0, [kmUnit]
call getDeviceList
call draw_window call draw_window
event_wait: event_wait:
@ -142,8 +143,7 @@ redraw:
key: key:
mcall 2 mcall 2
invoke edit_box_key, editLU invoke edit_box_key, editLabel
invoke edit_box_key, editRU
invoke edit_box_key, editMBR invoke edit_box_key, editMBR
jmp event_wait jmp event_wait
@ -174,6 +174,11 @@ exit:
jne @f jne @f
call butUnit call butUnit
jmp event_wait jmp event_wait
@@:
cmp ah, 6 ;Select Device button
jne @f
call butDevice
jmp event_wait
@@: @@:
cmp ah, 110 ;kmenu list FS cmp ah, 110 ;kmenu list FS
jb @f jb @f
@ -190,6 +195,14 @@ exit:
sub ah, 120 sub ah, 120
mov byte[kmUnitID], ah mov byte[kmUnitID], ah
jmp redraw jmp redraw
@@:
cmp ah, 130 ;kmenu Device
jb @f
cmp ah, 250
ja @f
sub ah, 130
mov byte[kmDeviceID], ah
jmp redraw
@@: @@:
jmp event_wait jmp event_wait
@ -197,8 +210,7 @@ mouse:
invoke check_box_mouse, ch1 ;ïðîâåðêà ÷åê áîêñà invoke check_box_mouse, ch1 ;ïðîâåðêà ÷åê áîêñà
invoke check_box_mouse, ch2 invoke check_box_mouse, ch2
invoke edit_box_mouse, editLU ;ïðîâåðêà ñîáûòèé ìûøè äëÿ editBox'îâ invoke edit_box_mouse, editLabel ;ïðîâåðêà ñîáûòèé ìûøè äëÿ editBox'îâ
invoke edit_box_mouse, editRU
invoke edit_box_mouse, editMBR invoke edit_box_mouse, editMBR
stdcall [kmainmenu_dispatch_cursorevent], [kmFS] stdcall [kmainmenu_dispatch_cursorevent], [kmFS]
@ -243,6 +255,23 @@ butUnit:
pop ecx ebx eax pop ecx ebx eax
ret ret
butDevice:
push eax ebx ecx
mcall 9, pi, -1
mov eax, dword[pi+34]
add eax, Otstup+80+30+delta
mov word[coordDevice.x], ax
mov eax, dword[pi+38]
add eax, 79
mov word[coordDevice.y], ax
stdcall [ksubmenu_draw], [kmDevice], coordDevice
pop ecx ebx eax
ret
delta = 50 delta = 50
dy = 15 + 40 dy = 15 + 40
warning_title: db 'Warning!',0 warning_title: db 'Warning!',0
@ -264,7 +293,7 @@ draw_window:
mcall mcall
mov ebx, (290+delta-Otstup-130)*65536+130 mov ebx, (290+delta-Otstup-130+10)*65536+130
mov ecx, (270+dy)*65536+(20+3) mov ecx, (270+dy)*65536+(20+3)
mov edx, 0x00000002 mov edx, 0x00000002
mov esi, 0xAABBCC mov esi, 0xAABBCC
@ -290,14 +319,20 @@ draw_window:
mov esi, 0xFFFFFF mov esi, 0xFFFFFF
mcall 8 mcall 8
;button select device
mov ebx, (Otstup+80+30+delta)*65536+120
mov ecx, (60)*65536+(21)
mov edx, 0x00000006
mov esi, 0xFFFFFF
mcall 8
invoke check_box_draw, ch1 ;ðèñîâàíèå ÷åêáîêñîâ invoke check_box_draw, ch1 ;ðèñîâàíèå ÷åêáîêñîâ
invoke check_box_draw, ch2 invoke check_box_draw, ch2
invoke edit_box_draw, editMBR ;ðèñîâàíèå edit box'îâ invoke edit_box_draw, editMBR ;ðèñîâàíèå edit box'îâ
invoke edit_box_draw, editLU invoke edit_box_draw, editLabel
invoke edit_box_draw, editRU
call draw_super_text call draw_super_text
mov ecx,[sc.work] mov ecx,[sc.work]
@ -340,6 +375,16 @@ text:
.option db '<27> à ¬¥âàë:', 0 .option db '<27> à ¬¥âàë:', 0
.format db '”®à¬ â¨à®¢ âì', 0 .format db '”®à¬ â¨à®¢ âì', 0
unittext:
.0 db '512 ¡ ©â', 0
.1 db '1024 ¡ ©â', 0
.2 db '2048 ¡ ©â', 0
.3 db '4096 ¡ ©â', 0
.4 db '8192 ¡ ©â', 0
.5 db '16 Š¡', 0
.6 db '32 Š¡', 0
.7 db '64 Š¡', 0
head_f_i: head_f_i:
head_f_l db '‘¨á⥬­ ï ®è¨¡ª ',0 head_f_l db '‘¨á⥬­ ï ®è¨¡ª ',0
err_message_found_lib0 db '<27>¥ ­ ©¤¥­  ¡¨¡«¨®â¥ª  ',39,'proc_lib.obj',39,0 err_message_found_lib0 db '<27>¥ ­ ©¤¥­  ¡¨¡«¨®â¥ª  ',39,'proc_lib.obj',39,0
@ -363,6 +408,16 @@ text:
.option db 'Options:', 0 .option db 'Options:', 0
.format db 'Format', 0 .format db 'Format', 0
unittext:
.0 db '512 bytes', 0
.1 db '1024 bytes', 0
.2 db '2048 bytes', 0
.3 db '4096 bytes', 0
.4 db '8192 bytes', 0
.5 db '16 Kb', 0
.6 db '32 Kb', 0
.7 db '64 Kb', 0
head_f_i: head_f_i:
head_f_l db 'System error',0 head_f_l db 'System error',0
err_message_found_lib0 db 'Could not find library ',39,'proc_lib.obj',39,0 err_message_found_lib0 db 'Could not find library ',39,'proc_lib.obj',39,0
@ -373,6 +428,71 @@ head_f_i:
end if end if
root_path: db "/", 0
align 4
maxDeviceCount = 250-130
read_folder_struct:
.subfunction dd 1
.start dd 0 ;start block
.encoding dd 3 ;1-cp866, 2-UTF-16LE, 3-utf8
.count dd maxDeviceCount ;count blocks
.return dd 0 ;àäðåñ ïàìÿòè äëÿ ïîëó÷àåìîãî áëîêà ÁÄÂÊ ñ çàãîëîâêîì
.name db 0
.path_adr dd root_path
noneDevice: db '-', 0
;adrDevice: dd 0
getDeviceList:
push eax ebx ecx esi
stdcall [ksubmenu_new]
mov [kmDevice], eax
sizeBDVK = 560 ;304 ;
mcall 68, 11
mcall 68, 12, sizeBDVK*maxDeviceCount+32
mov dword[read_folder_struct.return], eax
mcall 70, read_folder_struct
cmp eax, 0
je .next
cmp eax, 6
je .next
jmp .none
.next:
mov eax, dword[read_folder_struct.return]
mov esi, deviceAdrStr
add eax, 32
mov ecx, 130
@@:
cmp ebx, 0
je @f
push eax ebx ecx
add eax, 40
;mov [adrDevice], eax
mov dword[esi], eax
stdcall [kmenuitem_new], KMENUITEM_NORMAL, [esi], ecx ; [adrDevice], ecx
stdcall [ksubmenu_add], [kmDevice], eax
pop ecx ebx eax
add esi, 4
inc ecx
dec ebx
add eax, sizeBDVK
cmp ecx, 250
ja @f
jmp @b
.none:
stdcall [kmenuitem_new], KMENUITEM_NORMAL, noneDevice, 130
mov dword[esi], noneDevice
stdcall [ksubmenu_add], [kmDevice], eax
@@:
mov byte[kmDeviceID], 0
stdcall [kmenuitem_new], KMENUITEM_SUBMENU, unittext.0, [kmDevice]
pop esi ecx ebx eax
ret
draw_super_text: draw_super_text:
push eax ebx ecx edx edi esi push eax ebx ecx edx edi esi
mov ebx, Otstup * 65536 + 49-6 ; draw info text with function 4 (x, y) mov ebx, Otstup * 65536 + 49-6 ; draw info text with function 4 (x, y)
@ -482,8 +602,17 @@ draw_super_text:
;mov esi, 8 ;mov esi, 8
mcall 4 mcall 4
;button device
mov ebx, (Otstup+80+30+delta +5) * 65536 + (60+3)
mov edx, dword[kmDeviceID]
shl edx, 2
add edx, deviceAdrStr
mov edx, dword[edx]
;call setCurrentDeviceInEDX
mcall 4
;buttons text ;buttons text
mov ebx, (290+delta-Otstup-130+10+2) * 65536 + (277-3+dy) mov ebx, (290+delta-Otstup-130+10+2+10) * 65536 + (277-3+dy)
mov ecx, 0x90FFFFFF mov ecx, 0x90FFFFFF
mov eax, text.format mov eax, text.format
mov edx, eax mov edx, eax
@ -500,21 +629,11 @@ draw_super_text:
pop esi edi edx ecx ebx eax pop esi edi edx ecx ebx eax
ret ret
unittext:
.0 db '512 bytes', 0
.1 db '1024 bytes', 0
.2 db '2048 bytes', 0
.3 db '4096 bytes', 0
.4 db '8192 bytes', 0
.5 db '16 Kb', 0
.6 db '32 Kb', 0
.7 db '64 Kb', 0
Buf: Buf:
.1 db 'NONAME18',0,0 .1 db 'NONAME18',0,0
;.2 db 'FAT',0,0 ;100 dup(0) ;.3 db 'hd0 [4Gb]',0,0 ;100 dup(0)
.3 db 'hd0 [FAT32: 4Gb]',0,0 ;100 dup(0)
;.4 db '4096',0,0 ;100 dup(0)
.5 rb 512 ;db '/rd/1/format/fat32mbr.bin', 0, 0 .5 rb 512 ;db '/rd/1/format/fat32mbr.bin', 0, 0
initBuf: initBuf:
@ -725,8 +844,8 @@ l_libs_start:
load_lib_end: load_lib_end:
;ðàçìåðû: 80 è 120 ;ðàçìåðû: 80 è 120
editLU edit_box 120,Otstup,60,0xffffff,0x6a9480,0,0xAABBCC,0,8,Buf.1, mouse_dd, 0,8,8 editLabel edit_box 120,Otstup,60,0xffffff,0x6a9480,0,0xAABBCC,0,8,Buf.1, mouse_dd, 0,8,8
editRU edit_box 120,Otstup+80+30+delta,60,0xffffff,0x6a9480,0,0xAABBCC,0,16,Buf.3, mouse_dd, 0,16,16 ;editRU edit_box 120,Otstup+80+30+delta,60,0xffffff,0x6a9480,0,0xAABBCC,0,16,Buf.3, mouse_dd, 0,16,16
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 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
data_of_code dd 0 data_of_code dd 0
@ -742,6 +861,13 @@ coordUnit:
.x: rw 1 .x: rw 1
.y: rw 1 .y: rw 1
coordDevice:
.x: rw 1
.y: rw 1
kmDeviceID: rd 1
kmDevice: rd 1
kmUnitID: rd 1 kmUnitID: rd 1
kmUnit: rd 1 kmUnit: rd 1
@ -758,6 +884,8 @@ rb 1024
procinfo process_information procinfo process_information
pi rb 1024 pi rb 1024
deviceAdrStr: rd maxDeviceCount
I_END: I_END:
rb 256 rb 256
align 4 align 4