forked from KolibriOS/kolibrios
c1c36c0b6a
1) New logic of switching windows (turnoff/restore) 2) New logic of button "clear desktop". 3) Win+D (restore/clear desktop), Win+R (start RUN application). 4) Using the library LibINI to set the parameters. 5) New style of panel. 6) Start application Menu with boot options. 7) Two versions of the location of the panel - the bottom of the desktop and on top of the desktop. git-svn-id: svn://kolibrios.org@2619 a494cfbc-eb01-0410-851d-a64ba20cac60
422 lines
7.6 KiB
PHP
422 lines
7.6 KiB
PHP
;------------------------------------------------------------------------------
|
|
align 4
|
|
draw_tray: ; draw cpu usage, time, date etc.
|
|
pusha
|
|
; cmp [tray_enable],dword 1
|
|
; jne no_setup
|
|
|
|
call draw_tray_buttons
|
|
call draw_time_skin
|
|
call draw_time
|
|
|
|
mov [draw_flag_certainly],1
|
|
call draw_flag ; language
|
|
|
|
call draw_list_button
|
|
;--------------------------------------
|
|
;align 4
|
|
;no_setup:
|
|
popa
|
|
ret
|
|
;------------------------------------------------------------------------------
|
|
draw_tray_buttons:
|
|
mov [offset_x_tray],0
|
|
|
|
cmp [minimize_right],dword 0
|
|
je @f
|
|
|
|
add [offset_x_tray],MR_SIZE
|
|
;--------------------------------------
|
|
align 4
|
|
@@:
|
|
mov ecx,3 shl 16
|
|
add ecx,[height]
|
|
sub cx,6
|
|
mov esi,[wcolor]
|
|
mov eax,8
|
|
;--------------------------------------
|
|
cmp [clock_enable],dword 0
|
|
je @f
|
|
|
|
add [offset_x_tray],CLOCK_SIZE
|
|
|
|
mov ebx,[max_x]
|
|
sub ebx,[offset_x_tray]
|
|
shl ebx,16
|
|
add ebx,CLOCK_SIZE-2
|
|
mov [pos_x_clock],ebx
|
|
mcall ,,,0x40000000+2 ; time/date button
|
|
;--------------------------------------
|
|
align 4
|
|
@@:
|
|
cmp [cpu_usage_enable],dword 0
|
|
je @f
|
|
|
|
add [offset_x_tray],CPU_USAGE_SIZE
|
|
|
|
mov ebx,[max_x]
|
|
sub ebx,[offset_x_tray]
|
|
shl ebx,16
|
|
add ebx,CPU_USAGE_SIZE-2
|
|
mov [pos_x_cpu_usage],ebx
|
|
mcall ,,,0x40000000+18 ;button 18 - sysmeter_name (GMON)
|
|
;--------------------------------------
|
|
align 4
|
|
@@:
|
|
cmp [chlang_enable],dword 0
|
|
je @f
|
|
|
|
add [offset_x_tray],CHLANG_SIZE
|
|
|
|
mov ebx,[max_x]
|
|
sub ebx,[offset_x_tray]
|
|
shl ebx,16
|
|
add ebx,CHLANG_SIZE-2
|
|
mov [pos_x_cpu_chlang],ebx
|
|
mcall ,,,0x40000000+16 ;button 16 - chang language
|
|
;--------------------------------------
|
|
align 4
|
|
@@:
|
|
cmp [page_list_enable],dword 0
|
|
je @f
|
|
|
|
add [offset_x_tray],PAGE_LIST_SIZE
|
|
|
|
mov ebx,[max_x]
|
|
sub ebx,[offset_x_tray]
|
|
shl ebx,16
|
|
add ebx,10
|
|
mov [pos_x_page_list],ebx
|
|
mcall ,,,0x40000000+22 ;button 22 - page list decrease
|
|
|
|
add ebx,24 shl 16
|
|
|
|
mcall ,,,0x40000000+21 ;button 21 - page list decrease
|
|
;--------------------------------------
|
|
align 4
|
|
@@:
|
|
ret
|
|
;------------------------------------------------------------------------------
|
|
draw_time_skin:
|
|
cmp [clock_enable],dword 0
|
|
je .exit
|
|
|
|
|
|
mov ebx,[pos_x_clock]
|
|
call calculate_button_y_coordinate_and_size
|
|
|
|
mov edx,[Clock_color] ;time_bgr_color
|
|
mov esi,[wcolor]
|
|
call draw_appl_button
|
|
;--------------------------------------
|
|
align 4
|
|
.exit:
|
|
ret
|
|
;------------------------------------------------------------------------------
|
|
draw_time:
|
|
cmp [clock_enable],dword 0
|
|
je .exit
|
|
|
|
mcall 3
|
|
cmp eax,[ptime]
|
|
jz .exit
|
|
|
|
mov [ptime],eax
|
|
;--------------------------------------
|
|
; draw hours and minutes
|
|
movzx ebx,al
|
|
shr eax,8
|
|
movzx ecx,al
|
|
shr eax,8
|
|
movzx edx,al
|
|
; ebx ecx edx h m s
|
|
push ebx
|
|
push ecx
|
|
|
|
mov ebx,[pos_x_clock]
|
|
call calculate_button_y_coordinate_and_size
|
|
movzx eax,cx
|
|
shr eax,1
|
|
sub eax,4
|
|
shr ecx,16
|
|
add eax,ecx
|
|
mov bx,ax
|
|
|
|
add ebx,18 shl 16
|
|
|
|
mov ecx,[bte]
|
|
mov edx,[esp] ; __:_X
|
|
and edx,15
|
|
add ebx,10*65536
|
|
add edx,text
|
|
mcall 4,,0x40ffffff,,1,[Clock_color] ;time_bgr_color
|
|
|
|
pop edx ; __:X_
|
|
shr edx,4
|
|
and edx,15
|
|
sub ebx,6*65536
|
|
add edx,text
|
|
mcall
|
|
|
|
mov edx,[esp] ; _X:__
|
|
and edx,15
|
|
sub ebx,11*65536
|
|
add edx,text
|
|
mcall
|
|
|
|
pop edx ; X_:__
|
|
shr edx,4
|
|
and edx,15
|
|
sub ebx,6*65536
|
|
add edx,text
|
|
mcall
|
|
;--------------------------------------
|
|
; draw seconds
|
|
mov ebx,[pos_x_clock]
|
|
call calculate_button_y_coordinate_and_size
|
|
movzx eax,cx
|
|
shr eax,1
|
|
sub eax,4
|
|
shr ecx,16
|
|
add eax,ecx
|
|
mov bx,ax
|
|
|
|
add ebx,17 shl 16
|
|
|
|
mcall 3
|
|
|
|
mov ecx,eax
|
|
shr ecx,16
|
|
and ecx,1
|
|
mov edx,[bte]
|
|
sub edx,[Clock_color] ;time_bgr_color;[wcolor]
|
|
imul ecx,edx
|
|
add ecx,[Clock_color] ;time_bgr_color;[wcolor]
|
|
|
|
mcall 4,,,sec,1
|
|
|
|
call draw_cpu_usage
|
|
;--------------------------------------
|
|
align 4
|
|
.exit:
|
|
ret
|
|
;------------------------------------------------------------------------------
|
|
align 4
|
|
draw_list_button:
|
|
cmp [page_list_enable],dword 0
|
|
je .exit
|
|
; draw page list button "skin"
|
|
mov ebx,[pos_x_page_list]
|
|
mov bx,10
|
|
|
|
mov ecx,3 shl 16
|
|
add ecx,[height]
|
|
sub cx,6
|
|
|
|
xor edx,edx
|
|
; mcall 13
|
|
|
|
mov edx,[PageList_color] ;0xffffff
|
|
mov esi,[wcolor]
|
|
call draw_appl_button
|
|
|
|
add ebx,24 shl 16 ; 18 shl 16
|
|
; mcall
|
|
|
|
mov edx,[PageList_color] ;0xffffff
|
|
mov esi,[wcolor]
|
|
call draw_appl_button
|
|
|
|
; sub ebx,23 shl 16 ; 19 shl 16
|
|
; sub bx,2
|
|
|
|
; add ecx,1 shl 16
|
|
; sub ecx,2
|
|
; mcall ,,,0xffffff
|
|
|
|
; add ebx,24 shl 16
|
|
; mcall
|
|
;--------------------------------------
|
|
; draw page list button text <>
|
|
mov ebx,[pos_x_page_list]
|
|
add ebx,2 shl 16
|
|
mov eax,[height]
|
|
shr eax,1
|
|
sub eax,4
|
|
mov bx,ax
|
|
xor ecx,ecx
|
|
mcall 4,,,page_a1,5
|
|
|
|
add ebx,1 shl 16
|
|
mcall
|
|
;--------------------------------------
|
|
; draw page list number
|
|
mov edx,ebx
|
|
add edx,9 shl 16
|
|
mcall 47,0x20000,[page_list],,0xffffff
|
|
.exit:
|
|
ret
|
|
;------------------------------------------------------------------------------
|
|
align 4
|
|
draw_cpu_usage:
|
|
cmp [cpu_usage_enable],dword 0
|
|
je .exit
|
|
|
|
pushad
|
|
mov eax,[height]
|
|
sub eax,[button_top_offset]
|
|
sub eax,[button_bottom_offset]
|
|
sub eax,2
|
|
|
|
mov [ysi],eax ;12
|
|
mcall 18,5 ; TSC / SEC
|
|
|
|
shr eax,20
|
|
push eax
|
|
mcall 18,4 ; IDLE / SEC
|
|
|
|
shr eax,20
|
|
xor edx,edx
|
|
imul eax,[ysi]
|
|
cdq
|
|
pop ebx
|
|
inc ebx
|
|
div ebx
|
|
cmp eax,[ysi]
|
|
jng .no_bug
|
|
|
|
mov eax,[ysi]
|
|
;--------------------------------------
|
|
align 4
|
|
.no_bug:
|
|
push eax
|
|
|
|
mov ebx,[pos_x_cpu_usage]
|
|
mov ecx,[button_top_offset]
|
|
shl ecx,16
|
|
add ecx,[ysi]
|
|
add ecx,2
|
|
|
|
mov edx,[CpuUsageBckgr_color] ;0xdd2222
|
|
mov esi,[wcolor]
|
|
call draw_appl_button
|
|
|
|
pop eax
|
|
|
|
; mov ecx,4 shl 16
|
|
mov ecx,[button_top_offset]
|
|
inc ecx
|
|
shl ecx,16
|
|
add ecx,eax
|
|
|
|
|
|
add ebx,1 shl 16
|
|
sub ebx,2
|
|
|
|
mcall 13,,,[CpuUsage_color] ;0x44aa44
|
|
|
|
popad
|
|
.exit:
|
|
ret
|
|
;------------------------------------------------------------------------------
|
|
align 4
|
|
; eax = number (1 or 2)
|
|
; ebx = language id
|
|
draw_flag:
|
|
cmp [chlang_enable],dword 0
|
|
je .exit
|
|
|
|
cmp [draw_flag_certainly],0
|
|
je .exit
|
|
|
|
pusha
|
|
;--------------------------------------
|
|
; get and draw keyboard layout
|
|
mcall 26,2,9
|
|
|
|
mov ebx,eax
|
|
|
|
; mov eax,2
|
|
mov [type_lang],al
|
|
; eax = 2 BIG
|
|
; eax = 1 small
|
|
mov edx,ebx
|
|
|
|
pushad
|
|
mov ebx,[pos_x_cpu_chlang]
|
|
call calculate_button_y_coordinate_and_size
|
|
|
|
; cmp [type_lang],1
|
|
; je .label_1
|
|
|
|
mov edx,[ChangeLang_color] ;time_bgr_color ;0xff ;[wcolor]
|
|
; jmp .label_2
|
|
;--------------------------------------
|
|
;align 4
|
|
;.label_1:
|
|
; mov edx,0x7700
|
|
;--------------------------------------
|
|
;align 4
|
|
;.label_2:
|
|
mov esi,[wcolor]
|
|
call draw_appl_button
|
|
|
|
popad
|
|
|
|
mov ebx,[pos_x_cpu_chlang]
|
|
mov ax,bx
|
|
shr eax,1
|
|
shl eax,16
|
|
add ebx,eax
|
|
sub ebx,6 shl 16
|
|
|
|
call calculate_button_y_coordinate_and_size
|
|
movzx eax,cx
|
|
shr eax,1
|
|
sub eax,4
|
|
shr ecx,16
|
|
add eax,ecx
|
|
mov bx,ax
|
|
|
|
mov ecx,[bte] ; color
|
|
|
|
if caps_lock_check
|
|
; make flag_text 'enfigerufretua' or 'ENFIGERUFRETUA' depending on CapsLock state.
|
|
call flag_text_setup
|
|
end if
|
|
dec edx
|
|
shl edx,1
|
|
add edx,flag_text
|
|
mcall 4,,,,2
|
|
popa
|
|
mov [draw_flag_certainly],0
|
|
.exit:
|
|
ret
|
|
;------------------------------------------------------------------------------
|
|
align 4
|
|
if caps_lock_check
|
|
flag_text_setup:
|
|
pusha
|
|
mcall 66,3
|
|
mov edi, flag_text
|
|
mov esi, flag_text_caps_off
|
|
test eax, 0x40
|
|
jz @f
|
|
|
|
add esi, 14
|
|
;--------------------------------------
|
|
align 4
|
|
@@:
|
|
mov ecx, 14
|
|
rep movsb
|
|
|
|
popa
|
|
ret
|
|
|
|
;flag_text_caps_off db 'enfigerufretua'
|
|
flag_text_caps_off:
|
|
db 'EnFiGeRuFrEtUa'
|
|
db 'ENFIGERUFRETUA'
|
|
end if
|
|
;------------------------------------------------------------------------------
|