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 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
; 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
|
||||||
|
Loading…
Reference in New Issue
Block a user