forked from KolibriOS/kolibrios
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:
parent
b33c079d84
commit
31a514faf0
@ -2,7 +2,7 @@
|
||||
; Formatting Disk Utility ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
; Compile with FASM
|
||||
; FORMAT ver. Oct 18, 2018
|
||||
; FORMAT ver. Oct 19, 2018
|
||||
|
||||
; Copyright (c) 2018, Efremenkov Sergey aka TheOnlyMirage
|
||||
; All rights reserved.
|
||||
@ -69,8 +69,7 @@ START:
|
||||
|
||||
call initBuf
|
||||
|
||||
mov dword[editLU.text_color], ecx
|
||||
mov dword[editRU.text_color], ecx
|
||||
mov dword[editLabel.text_color], ecx
|
||||
mov dword[editMBR.text_color], ecx
|
||||
|
||||
invoke init_checkbox, ch1
|
||||
@ -116,6 +115,8 @@ START:
|
||||
mov byte[kmUnitID], 0
|
||||
stdcall [kmenuitem_new], KMENUITEM_SUBMENU, unittext.0, [kmUnit]
|
||||
|
||||
call getDeviceList
|
||||
|
||||
call draw_window
|
||||
|
||||
event_wait:
|
||||
@ -142,8 +143,7 @@ redraw:
|
||||
|
||||
key:
|
||||
mcall 2
|
||||
invoke edit_box_key, editLU
|
||||
invoke edit_box_key, editRU
|
||||
invoke edit_box_key, editLabel
|
||||
invoke edit_box_key, editMBR
|
||||
jmp event_wait
|
||||
|
||||
@ -174,6 +174,11 @@ exit:
|
||||
jne @f
|
||||
call butUnit
|
||||
jmp event_wait
|
||||
@@:
|
||||
cmp ah, 6 ;Select Device button
|
||||
jne @f
|
||||
call butDevice
|
||||
jmp event_wait
|
||||
@@:
|
||||
cmp ah, 110 ;kmenu list FS
|
||||
jb @f
|
||||
@ -190,6 +195,14 @@ exit:
|
||||
sub ah, 120
|
||||
mov byte[kmUnitID], ah
|
||||
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
|
||||
|
||||
@ -197,8 +210,7 @@ mouse:
|
||||
invoke check_box_mouse, ch1 ;ïðîâåðêà ÷åê áîêñà
|
||||
invoke check_box_mouse, ch2
|
||||
|
||||
invoke edit_box_mouse, editLU ;ïðîâåðêà ñîáûòèé ìûøè äëÿ editBox'îâ
|
||||
invoke edit_box_mouse, editRU
|
||||
invoke edit_box_mouse, editLabel ;ïðîâåðêà ñîáûòèé ìûøè äëÿ editBox'îâ
|
||||
invoke edit_box_mouse, editMBR
|
||||
|
||||
stdcall [kmainmenu_dispatch_cursorevent], [kmFS]
|
||||
@ -243,6 +255,23 @@ butUnit:
|
||||
pop ecx ebx eax
|
||||
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
|
||||
dy = 15 + 40
|
||||
warning_title: db 'Warning!',0
|
||||
@ -264,7 +293,7 @@ draw_window:
|
||||
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 edx, 0x00000002
|
||||
mov esi, 0xAABBCC
|
||||
@ -290,12 +319,18 @@ draw_window:
|
||||
mov esi, 0xFFFFFF
|
||||
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, ch2
|
||||
|
||||
invoke edit_box_draw, editMBR ;ðèñîâàíèå edit box'îâ
|
||||
invoke edit_box_draw, editLU
|
||||
invoke edit_box_draw, editRU
|
||||
invoke edit_box_draw, editLabel
|
||||
|
||||
call draw_super_text
|
||||
|
||||
@ -340,6 +375,16 @@ text:
|
||||
.option db '<27> à ¬¥âàë:', 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_l db '‘¨á⥬ ï ®è¨¡ª ',0
|
||||
err_message_found_lib0 db '<27>¥ ©¤¥ ¡¨¡«¨®â¥ª ',39,'proc_lib.obj',39,0
|
||||
@ -363,6 +408,16 @@ text:
|
||||
.option db 'Options:', 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_l db 'System error',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
|
||||
|
||||
|
||||
|
||||
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:
|
||||
push eax ebx ecx edx edi esi
|
||||
mov ebx, Otstup * 65536 + 49-6 ; draw info text with function 4 (x, y)
|
||||
@ -482,8 +602,17 @@ draw_super_text:
|
||||
;mov esi, 8
|
||||
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
|
||||
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 eax, text.format
|
||||
mov edx, eax
|
||||
@ -500,21 +629,11 @@ draw_super_text:
|
||||
pop esi edi edx ecx ebx eax
|
||||
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:
|
||||
.1 db 'NONAME18',0,0
|
||||
;.2 db 'FAT',0,0 ;100 dup(0)
|
||||
.3 db 'hd0 [FAT32: 4Gb]',0,0 ;100 dup(0)
|
||||
;.4 db '4096',0,0 ;100 dup(0)
|
||||
;.3 db 'hd0 [4Gb]',0,0 ;100 dup(0)
|
||||
.5 rb 512 ;db '/rd/1/format/fat32mbr.bin', 0, 0
|
||||
|
||||
initBuf:
|
||||
@ -725,8 +844,8 @@ l_libs_start:
|
||||
load_lib_end:
|
||||
|
||||
;ðàçìåðû: 80 è 120
|
||||
editLU 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
|
||||
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
|
||||
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
|
||||
@ -742,6 +861,13 @@ coordUnit:
|
||||
.x: rw 1
|
||||
.y: rw 1
|
||||
|
||||
coordDevice:
|
||||
.x: rw 1
|
||||
.y: rw 1
|
||||
|
||||
kmDeviceID: rd 1
|
||||
kmDevice: rd 1
|
||||
|
||||
kmUnitID: rd 1
|
||||
kmUnit: rd 1
|
||||
|
||||
@ -758,6 +884,8 @@ rb 1024
|
||||
procinfo process_information
|
||||
pi rb 1024
|
||||
|
||||
deviceAdrStr: rd maxDeviceCount
|
||||
|
||||
I_END:
|
||||
rb 256
|
||||
align 4
|
||||
|
Loading…
Reference in New Issue
Block a user