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
446 lines
8.8 KiB
PHP
446 lines
8.8 KiB
PHP
;------------------------------------------------------------------------------
|
|
; ***************************************************
|
|
; ********* WINDOW DEFINITIONS AND DRAW *************
|
|
; ***************************************************
|
|
align 4
|
|
draw_window:
|
|
pusha
|
|
mov [running_applications],-1
|
|
mcall 12,1
|
|
|
|
mcall 48,3,system_colours,10*4
|
|
|
|
mov eax, [system_colours+4*6]
|
|
sub eax, 0x101010
|
|
mov [wcolor], eax
|
|
|
|
mcall 14 ; get screen max x & max y
|
|
|
|
cmp [width],dword 0
|
|
je no_def_width
|
|
|
|
and eax,0xffff
|
|
mov ebx,[width]
|
|
shl ebx,16
|
|
add eax,ebx
|
|
;--------------------------------------
|
|
align 4
|
|
no_def_width:
|
|
mov ebx,eax
|
|
mov [screenxy],ebx
|
|
shr ebx,16
|
|
mov ecx,eax
|
|
|
|
cmp [place_attachment],1
|
|
je @f
|
|
|
|
xor ecx,ecx
|
|
mov cx,[height]
|
|
dec cx
|
|
jmp .attachment_selected
|
|
;--------------------------------------
|
|
align 4
|
|
@@:
|
|
sub ecx,[height]
|
|
inc ecx
|
|
shl ecx,16
|
|
mov cx,[height]
|
|
dec cx
|
|
;--------------------------------------
|
|
align 4
|
|
.attachment_selected:
|
|
xor eax,eax ; DEFINE AND DRAW WINDOW
|
|
mov edx, [wcolor]
|
|
or edx, 0x01000000 ; do not draw the window
|
|
mov esi, [wcolor]
|
|
or esi, 0x01000000 ; unmovable window
|
|
mov edi, [wcolor]
|
|
mov [panel_x_pos], ebx
|
|
mov [panel_y_pos], ecx ; Ïîêà ÷òî òàê.
|
|
mcall
|
|
|
|
movzx eax,word [screenxy+2]
|
|
mov [max_x],eax
|
|
|
|
call fill_window
|
|
call minimize_left_button
|
|
call minimize_right_button
|
|
call draw_menu_and_clean_desktop
|
|
mov [ptime],0
|
|
call draw_tray
|
|
call draw_application_buttons
|
|
|
|
mcall 12,2
|
|
popa
|
|
ret
|
|
;------------------------------------------------------------------------------
|
|
align 4
|
|
fill_window:
|
|
movzx ebx,word [screenxy+2]
|
|
xor ecx,ecx
|
|
mov edx,[wcolor]
|
|
; add edx,0x161616
|
|
mov eax,COLOR_CHANGE_MAGNITUDE_0
|
|
imul eax,dword [soften_height]
|
|
call subtract_color_change_magnitude
|
|
cmp [soften_up],dword 0
|
|
je no_su
|
|
;--------------------------------------
|
|
align 4
|
|
@@: ; debug.inc has macros with the same name
|
|
; sub edx,0x040404
|
|
mov eax,COLOR_CHANGE_MAGNITUDE_0
|
|
call add_color_change_magnitude
|
|
; draw soften_up - the width of 5 pixels
|
|
and edx,0x00FFFFFF
|
|
mcall 38
|
|
|
|
add ecx,1*65536+1
|
|
cmp cx,[soften_height] ;5
|
|
jb @r
|
|
;--------------------------------------
|
|
align 4
|
|
no_su:
|
|
cmp [soften_down],dword 0
|
|
je no_sd
|
|
; draw soften_down - the width of 5 pixels
|
|
pusha
|
|
mov esi,[soften_height]
|
|
mov ecx,[height]
|
|
dec ecx
|
|
shl ecx,16
|
|
add ecx,[height]
|
|
dec ecx
|
|
mov edx,[wcolor]
|
|
mov eax,COLOR_CHANGE_MAGNITUDE_0
|
|
imul eax,dword [soften_height]
|
|
call subtract_color_change_magnitude
|
|
@@:
|
|
mov eax,COLOR_CHANGE_MAGNITUDE_0
|
|
call add_color_change_magnitude
|
|
and edx,0x00FFFFFF
|
|
mcall 38
|
|
sub ecx,1*65536+1
|
|
dec esi
|
|
jnz @r
|
|
popa
|
|
;--------------------------------------
|
|
align 4
|
|
no_sd:
|
|
movzx ebx,word [screenxy+2]
|
|
xor ecx,ecx
|
|
cmp [soften_up],dword 0
|
|
je @f
|
|
|
|
add ecx,[soften_height]
|
|
rol ecx,16
|
|
add ecx,[soften_height]
|
|
;--------------------------------------
|
|
align 4
|
|
@@:
|
|
; mov esi,stripe
|
|
mov edx,[wcolor]
|
|
;--------------------------------------
|
|
align 4
|
|
newline3:
|
|
and edx,0x00FFFFFF
|
|
mov eax,[height]
|
|
cmp [soften_up],dword 0
|
|
je @f
|
|
|
|
sub eax,[soften_height]
|
|
;--------------------------------------
|
|
align 4
|
|
@@:
|
|
cmp [soften_down],dword 0
|
|
je @f
|
|
|
|
sub eax,[soften_height]
|
|
;--------------------------------------
|
|
align 4
|
|
@@:
|
|
mov cx,ax
|
|
inc ebx
|
|
mcall 13
|
|
ret
|
|
;------------------------------------------------------------------------------
|
|
align 4
|
|
minimize_left_button:
|
|
cmp [minimize_left],dword 0
|
|
je .exit
|
|
|
|
mov ecx,1 *65536
|
|
add ecx,[height]
|
|
dec ecx
|
|
mov edx,101
|
|
; add edx,[button_frames]
|
|
or edx,0x40000000
|
|
mcall 8,<0,9>,,,[wcolor] ; ABS LEFT
|
|
|
|
mov ebx,2*65536 ;+6
|
|
mov bx,[height]
|
|
shr bx,1
|
|
sub bx,3
|
|
mov ecx,[wcolor]
|
|
add ecx,0x303030
|
|
mcall 4,,,hidetext,1 ; HIDE TEXT
|
|
;--------------------------------------
|
|
align 4
|
|
.exit:
|
|
ret
|
|
;------------------------------------------------------------------------------
|
|
align 4
|
|
minimize_right_button:
|
|
cmp [minimize_right],dword 0
|
|
je .exit
|
|
mov eax,[max_x]
|
|
sub eax,77
|
|
shl eax,16
|
|
mov ebx,eax
|
|
add ebx,67
|
|
|
|
mov ecx,1 *65536
|
|
add ecx,[height]
|
|
dec ecx
|
|
add ebx,68*65536
|
|
mov bx,9
|
|
mov edx,102
|
|
; add edx,[button_frames]
|
|
or edx,0x40000000
|
|
mcall 8,,,,[wcolor] ; ABS RIGHT
|
|
|
|
mov ebx,[max_x]
|
|
sub ebx,6
|
|
shl ebx,16
|
|
mov bx,[height]
|
|
shr bx,1
|
|
sub bx,3
|
|
mov ecx,[wcolor]
|
|
add ecx,0x303030
|
|
mov esi,1
|
|
mcall 4,,,hidetext+1
|
|
;--------------------------------------
|
|
align 4
|
|
.exit:
|
|
ret
|
|
;------------------------------------------------------------------------------
|
|
align 4
|
|
draw_menu_and_clean_desktop:
|
|
pusha
|
|
; check draw for menu
|
|
cmp [menu_enable],dword 0
|
|
je no_menu
|
|
; calculate and draw menu
|
|
mov ebx, (0 shl 16) + MENU_SIZE-3
|
|
; check for left minimize button enabled
|
|
cmp [minimize_left],dword 0
|
|
je @f
|
|
|
|
add ebx, ML_SIZE shl 16
|
|
;--------------------------------------
|
|
align 4
|
|
@@:
|
|
call calculate_button_y_coordinate_and_size
|
|
mov edx, 0x40d1ff01
|
|
; mov edx, 0xd1ff01
|
|
; add edx, [button_frames]
|
|
mcall 8,,,,[wcolor] ; MENU BUTTON
|
|
|
|
mov eax,ebx
|
|
shr eax,16
|
|
mov [menu_button_x.start],eax
|
|
|
|
mov eax,ebx
|
|
and eax,0xffff
|
|
mov [menu_button_x.size],eax
|
|
|
|
mov eax,ecx
|
|
shr eax,16
|
|
mov [menu_button_y.start],eax
|
|
|
|
mov eax,ecx
|
|
and eax,0xffff
|
|
mov [menu_button_y.size],eax
|
|
|
|
mov edx,[MenuButton_color] ;0x44aa44
|
|
mov esi,[wcolor]
|
|
call draw_appl_button
|
|
|
|
add ebx, 8*65536
|
|
mov bx,[height]
|
|
shr bx,1
|
|
sub bx,3
|
|
mcall 4,,0x10ffffff,m_text,4
|
|
;--------------------------------------
|
|
align 4
|
|
no_menu:
|
|
; check draw for clean desktop button
|
|
cmp [clean_desktop_enable],dword 0
|
|
je .exit
|
|
; calculate and draw clean desktop button
|
|
mov ebx, (0 shl 16) + CLD_SIZE-5
|
|
; check for left minimize button enabled
|
|
cmp [minimize_left],dword 0
|
|
je @f
|
|
|
|
add ebx, ML_SIZE shl 16
|
|
;--------------------------------------
|
|
align 4
|
|
@@:
|
|
; check for menu button enabled
|
|
cmp [menu_enable],dword 0
|
|
je @f
|
|
|
|
add ebx, MENU_SIZE shl 16
|
|
;--------------------------------------
|
|
align 4
|
|
@@:
|
|
; Inserted code for drawing buttons 103, 104, 105 (Clean, Restore, Exchange windows)
|
|
mov esi, dword [system_colours+24] ; drawing buttons
|
|
and esi, 0x00ffffff
|
|
mov edx, 0x40000000 + 103
|
|
call calculate_button_y_coordinate_and_size
|
|
mcall 8 ;,,<3,13>
|
|
|
|
mov edx,[CleanDesktopButton_color] ;time_bgr_color
|
|
mov esi,[wcolor]
|
|
call draw_appl_button
|
|
|
|
; mov ecx, dword [system_colours+28]
|
|
; and ecx, 0x00ffffff
|
|
mov ecx,0xffffff
|
|
add ebx,5 shl 16
|
|
; mov bx,6
|
|
mov bx,[height]
|
|
shr bx,1
|
|
sub bx,2
|
|
mcall 4,,,page_clean_but,1
|
|
sub bx,2
|
|
mcall ,,,page_clean_but+1
|
|
;--------------------------------------
|
|
align 4
|
|
.exit:
|
|
popa
|
|
ret
|
|
;------------------------------------------------------------------------------
|
|
align 4
|
|
draw_application_buttons:
|
|
pusha
|
|
|
|
cmp [run_appl],dword 0 ; do not draw application buttons
|
|
je .exit
|
|
|
|
call calculate_offset_X
|
|
|
|
; mcall 14
|
|
mov eax,[screenxy]
|
|
shr eax,16
|
|
|
|
sub eax,[offset_X]
|
|
; check for tray enabled
|
|
; cmp [tray_enable],dword 0
|
|
; je @f
|
|
|
|
; sub eax, TRAY_SIZE
|
|
;--------------------------------------
|
|
;align 4
|
|
;@@:
|
|
; check for left minimize button enabled
|
|
cmp [minimize_right],dword 0
|
|
je @f
|
|
|
|
sub eax, MR_SIZE
|
|
;--------------------------------------
|
|
align 4
|
|
@@:
|
|
cmp [clock_enable],dword 0
|
|
je @f
|
|
|
|
sub eax,CLOCK_SIZE
|
|
;--------------------------------------
|
|
align 4
|
|
@@:
|
|
cmp [cpu_usage_enable],dword 0
|
|
je @f
|
|
|
|
sub eax,CPU_USAGE_SIZE
|
|
;--------------------------------------
|
|
align 4
|
|
@@:
|
|
cmp [chlang_enable],dword 0
|
|
je @f
|
|
|
|
sub eax,CHLANG_SIZE
|
|
;--------------------------------------
|
|
align 4
|
|
@@:
|
|
cmp [page_list_enable],dword 0
|
|
je @f
|
|
|
|
sub eax,PAGE_LIST_SIZE
|
|
;--------------------------------------
|
|
align 4
|
|
@@:
|
|
mov ebx, TAB_SIZE
|
|
xor edx,edx
|
|
div ebx
|
|
mov [max_applications], eax
|
|
xor edi,edi
|
|
;--------------------------------------
|
|
align 4
|
|
.nb:
|
|
mov ebx,edi
|
|
imul ebx,TAB_SIZE
|
|
add ebx,[offset_X]
|
|
shl ebx,16
|
|
mov bx, TAB_SIZE-1
|
|
mov edx,edi
|
|
add edx,52
|
|
or edx,0x60000000
|
|
mov ecx, 1*65536
|
|
add ecx, [height]
|
|
sub ecx,3
|
|
mcall 8,,,,[wcolor]
|
|
|
|
inc edi
|
|
cmp edi,[max_applications]
|
|
jb .nb
|
|
;--------------------------------------
|
|
align 4
|
|
.exit:
|
|
popa
|
|
ret
|
|
;------------------------------------------------------------------------------
|
|
align 4
|
|
calculate_offset_X:
|
|
push eax
|
|
xor eax,eax
|
|
; check for left minimize button enabled
|
|
cmp [minimize_left],dword 0
|
|
je @f
|
|
|
|
add eax, ML_SIZE
|
|
;--------------------------------------
|
|
align 4
|
|
@@:
|
|
; check for menu button enabled
|
|
cmp [menu_enable],dword 0
|
|
je @f
|
|
|
|
add eax, MENU_SIZE
|
|
;--------------------------------------
|
|
align 4
|
|
@@:
|
|
; check for clean desktop button enabled
|
|
cmp [clean_desktop_enable],dword 0
|
|
je @f
|
|
|
|
add eax, CLD_SIZE
|
|
;--------------------------------------
|
|
align 4
|
|
@@:
|
|
mov [offset_X],eax
|
|
pop eax
|
|
ret
|
|
;------------------------------------------------------------------------------
|