Subversion Repositories Kolibri OS

Compare Revisions

Regard whitespace Rev 2618 → Rev 2619

/programs/system/panel/trunk/panel.dat
File deleted
\ No newline at end of file
/programs/system/panel/trunk/@PANEL.ASM
1,9 → 1,20
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; ;
; MENUBAR for KolibriOS - Compile with fasm ;
; TASK PANEL for KolibriOS - Compile with fasm ;
; ;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;------------------------------------------------------------------------------
; version: 2.0
; last update: 17/04/2012
; changed by: Marat Zakiyanov aka Mario79, aka Mario
; changes: New logic of switching windows (turnoff/restore)
; New logic of button "clear desktop".
; Win+D (restore/clear desktop), Win+R (start RUN application).
; Using the library LibINI to set the parameters.
; New style of panel. Start application Menu with boot options.
; two versions of the location of the panel -
; the bottom of the desktop and on top of the desktop.
;------------------------------------------------------------------------------
; last update: 31/03/2012
; changed by: Marat Zakiyanov aka Mario79, aka Mario
; changes: The program uses only 20 Kb memory is now.
14,34 → 25,35
db 'MENUET01' ; 8 byte id
dd 0x01 ; header version
dd START ; program start
dd IM_END ;I_END ; program image size
dd I_END ;0xA000 ; reguired amount of memory - 10 Kb
dd stack_top ;0xA000 ; esp
dd IM_END ; program image size
dd I_END ; reguired amount of memory - 10 Kb
dd stack_top ; esp
dd 0x0 ; boot parameters
dd 0x0 ; path
dd path ; application pach
;------------------------------------------------------------------------------
include 'lang.inc'
include '..\..\..\macros.inc'
include '../../../macros.inc'
include '../../../proc32.inc'
;include 'debug.inc'
include 'MOI.INC' ;à áª« ¤ª¨ ª« ¢¨ âãàë
 
caps_lock_check fix 0
 
include '../../../develop/libraries/box_lib/load_lib.mac'
@use_library ;use load lib macros
;------------------------------------------------------------------------------
caps_lock_check fix 1
;------------------------------------------------------------------------------
time_bgr_color = 0x66cc
;PANEL_HEIGHT = 18
ML_SIZE = 10
MR_SIZE = 10
MENU_SIZE = 50
CLD_SIZE = 20
TAB_SIZE = 60
TRAY_SIZE = 140
 
width dd 305
buttons dd 1 ; 0 no frames ; 1 frames
soften_up dd 1 ; 0 no ; 1 yes
soften_down dd 0 ; 0 no ; 1 yes
minimize_left dd 1
minimize_right dd 1
icons_position dd 95
menu_enable dd 1
setup_enable dd 0
graph_text dd 1
soften_middle dd 1 ; 0 no ; 1 yes
icons dd 1 ; 0 defaults ; 1 activate
 
PANEL_HEIGHT = 18
CLOCK_SIZE = 40
CPU_USAGE_SIZE = 10
CHLANG_SIZE = 20
PAGE_LIST_SIZE = 36
;------------------------------------------------------------------------------
align 4
handle_key:
49,6 → 61,11
mov [active_process],eax
 
mcall 2
; dps "panel key: "
; dph eax
; newline
 
cmp al, 2
jnz begin_1.ret
 
80,10 → 97,10
cmp al, 8
jz alter
;--------------------------------------
align 4
prod:
;align 4
;prod:
if caps_lock_check
cmp al,58
cmp al,58 ;CAPS LOCK DOWN
jne @f
 
pusha
90,24 → 107,36
mcall 26,2,9
mov ebx,eax
mov eax,2
call draw_window ;;;???
; call draw_window ;;;???
mov [draw_flag_certainly],1
call draw_flag ; language
popa
ret
@@:
end if
cmp al, 15
cmp al, 15 ; Alt+Tab DOWN
jz alt_tab_pressed
 
cmp al, 88
cmp al, 88 ; Ctrl+Alt+F12
jz start_end_application
 
cmp al, 91
jz start_menu_application
 
cmp al, 92
jz start_menu_application
 
cmp al, 62
cmp al, 91 ; RWin DOWN
jz set_win_key_flag
 
cmp al, 92 ; LWin DOWN
jz set_win_key_flag
cmp al, 219 ; RWin UP
jz cut_win_key_flag ;start_menu_application
 
cmp al, 220 ; LWin UP
jz cut_win_key_flag ;start_menu_application
 
cmp al, 62 ; Alt+F4
jz kill_active_application
 
; cmp al, 71
116,13 → 145,27
; cmp al, 72
; jz page_list_prev
 
cmp al, 69
cmp al, 69 ; Alt+Shift+NumLock
jz start_mousemul_application
 
cmp al, 19 ; Win+R
jz start_run_application
 
cmp al, 32 ; Win+D
jz minimize_all_windows
;--------------------------------------
align 4
prod:
; cmp eax,0x20000
; je start_menu_application
; cmp eax,0x40000
; je start_menu_application
 
cmp [current_alt_tab_app], -1
jz @f
 
test ah, 0x30
test ah, 0x30 ; Alt+Tab UP
jz alt_tab_released
;--------------------------------------
align 4
134,6 → 177,20
; jz change_sys_lang
;------------------------------------------------------------------------------
align 4
set_win_key_flag:
mov [win_key_flag],1
ret
;------------------------------------------------------------------------------
align 4
cut_win_key_flag:
xor eax,eax
mov [win_key_flag],al
xchg [start_menu_flag],al
test al,al
jz start_menu_application
ret
;------------------------------------------------------------------------------
align 4
change_key_lang:
mov dword [ebx+8], chlang
mcall 70
171,13 → 228,35
mcall 72,1,3,1
jmp begin_1.ret
;------------------------------------------------------------------------------
 
align 4
start_menu_application:
mov [draw_window_1], 1
mov dword [ebx+21], menu_name
call menu_handler
jmp begin_1.ret
;------------------------------------------------------------------------------
align 4
start_run_application:
cmp [win_key_flag],1
je @f
ret
@@:
mov [start_menu_flag],1
mov [draw_window_1], 1
mov dword [ebx+21], run_name
mcall 70
jmp begin_1.ret
;------------------------------------------------------------------------------
align 4
minimize_all_windows:
cmp [win_key_flag],1
je @f
ret
@@:
mov [start_menu_flag],1
call clean_desktop
ret
;------------------------------------------------------------------------------
;align 4
;page_list_next:
; cmp [page_list],15
206,7 → 285,7
jnz has_alt_tab_app
; § ¯®«­ï¥¬ â ¡«¨æ㠯ਫ®¦¥­¨©, ¯®¤«¥¦ é¨å ¯¥à¥ª«î祭¨î
xor edx, edx
mov ebx, procinfo_window_tabs ;0x8000 ; WTF???!!!
mov ebx, procinfo_window_tabs
mov ecx, 1
.fill:
inc ecx
349,24 → 428,56
align 4
alt_tab_released:
mcall 66,5,0,0 ; 㦥 ¯®©¬ «¨, 墠â¨â :)
 
or eax, -1
xchg eax, [current_alt_tab_app]
mov ecx, [alt_tab_list+eax*8]
mcall 18,3
 
jmp redraw_window_tabs
;------------------------------------------------------------------------------
align 4
active_process dd 0
 
; .exit: mcall -1
exit:
mcall -1
;------------------------------------------------------------------------------
START:
mcall 68,11
mcall 66,1,1
 
mcall 9,process_info_buffer,-1
mov ecx,[ebx+30] ; PID
mcall 18,21
mov [my_active_slot],eax ; WINDOW SLOT
 
START:
load_libraries l_libs_start,end_l_libs
 
test eax,eax
jnz exit
 
call Get_ini
 
mcall 48,1,[button_style]
mcall 66,4,0,2 ; LShift+RShift
mcall 66,,,11h ; Ctrl+Shift
mcall 66,,88,110h ; Alt+Ctrl+F12
mcall 66,,91,0h ; LWin
mcall 66,,92 ; RWin
mcall 66,,91,0h ; RWin DOWN
mcall 66,,92 ; LWin DOWN
mcall 66,,219 ; RWin UP
mcall 66,,220 ; LWin UP
 
; mcall 66,,147,0h ; Win+R UP
mcall 66,,19,0h ; Win+R DOWN
 
; mcall 66,,23,0h ; Win+I DOWN
 
mcall 66,,32,0h ; Win+D DOWN
; mcall 66,,160,0h ; Win+D UP
 
 
; mcall 66,,91,100h ; Alt+LWin
; mcall 66,,92 ; Alt+RWin
mcall 66,,62,100h ; Alt+F4
387,48 → 498,30
xor edx,edx
mcall 66,4,58
end if
mcall 18,8,1
test eax,eax
jne @f
mcall 18,8,2
;--------------------------------------
align 4
@@:
mcall 70,dat_fileinfo
 
mov edi,width
mov esi,I_END
xor eax,eax
;--------------------------------------
align 4
new_number:
cmp [esi],byte ';'
je number_ready
 
imul eax,10
movzx ebx,byte [esi]
sub ebx,'0'
add eax,ebx
inc esi
jmp new_number
;--------------------------------------
align 4
number_ready:
stosd
xor eax,eax
inc esi
cmp [esi],byte 'x'
jne new_number
 
mcall 14
mov [screen_size],eax
 
mov ecx,eax
;eax = [xsize]*65536 + [ysize], £¤¥
shr ecx,16
and eax,0xFFFF
lea edx,[eax-PANEL_HEIGHT-1]
 
cmp [place_attachment],1
je @f
ror eax,16
add eax,[height]
rol eax,16
mov edx,eax
jmp .selected
;--------------------------------------
align 4
@@:
sub eax,[height]
lea edx,[eax-1]
;--------------------------------------
align 4
.selected:
mcall 48,6
 
mcall 9,process_info_buffer,-1
436,13 → 529,11
mcall 18,21
mov [this_slot],eax
mov [max_slot],255
 
call set_variables
;--------------------------------------
align 4
start_after_minimize:
call draw_window
call draw_info
; call draw_tray
call draw_running_applications
 
mcall 23,30
451,7 → 542,9
;------------------------------------------------------------------------------
align 4
still:
call draw_info
; call draw_tray
call draw_time
call draw_cpu_usage
call draw_running_applications
 
mcall 18,7 ; check if active window changed
481,16 → 574,32
align 4
@@:
mcall 23,20
push eax
mcall 18,7
cmp [my_active_slot],eax
je @f
mov [current_active_slot],eax
@@:
pop eax
cmp eax,1 ; redraw ?
jz red
 
cmp eax,2
jnz @f
call handle_key
jmp .key
@@:
cmp eax,3 ; button ?
jz button
 
call handle_key
; call handle_key
.key:
cmp dword [active_window_changed], 0
jnz red_active
 
call draw_flag ; language
jmp still
;------------------------------------------------------------------------------
align 4
511,13 → 620,13
rol eax,16
@@:
mov [screen_size],eax
sub ecx,PANEL_HEIGHT
mcall 67,0,,,PANEL_HEIGHT
sub ecx,[height]
mcall 67,0,,,[height]
;--------------------------------------
align 4
.lp1:
call draw_window
call draw_info
; call draw_tray
jmp still
;------------------------------------------------------------------------------
align 4
539,9 → 648,24
shl ecx,2
 
mov ecx,[app_list+ecx]
mcall 9,process_info_buffer
 
test [ebx+70],dword 10b ; window is minimized to panel
jnz @f
 
cmp ecx,[current_active_slot]
je .turn_off
@@:
mcall 18,3,
 
; mcall 55,eax,,,activatemusic
jmp .task_switching
;--------------------------------------
align 4
.turn_off:
mov edx,ecx
mcall 18,22,0
.task_switching:
mcall 68,1
jmp still
;------------------------------------------------------------------------------
align 4
584,13 → 708,13
je right_button
 
cmp ah, 103
je clean_desktop ; minimize all windows
je clean_desktop_1 ; minimize all windows
 
cmp ah, 104
je restore_desktop ; restore minimized windows
; cmp ah, 104
; je restore_desktop ; restore minimized windows
 
cmp ah, 105
je swap_minimized_desktop ; minimize normal windows, and restore minimized windows
; cmp ah, 105
; je swap_minimized_desktop ; minimize normal windows, and restore minimized windows
 
cmp ah,byte 1 ; start/terminate menu
jnz noselect
600,6 → 724,15
jmp still
;--------------------------------------
align 4
clean_desktop_1:
 
 
call clean_desktop
jmp still
;--------------------------------------
align 4
noselect:
mov ebx, exec_fileinfo
cmp ah,byte 2 ; start calendar
614,9 → 747,11
cmp ah,16
jne noid16
 
mov ebx, setup_exec
mov dword [ebx+8], chlang
mcall 70
; mov ebx, setup_exec
; mov dword [ebx+8], chlang
; mcall 70
call karu
call draw_flag ; language
jmp still
;--------------------------------------
align 4
640,25 → 775,25
;--------------------------------------
align 4
noid18:
cmp ah,19
jne noid19
; cmp ah,19 ; speaker
; jne noid19
 
mcall 18,8,2
mcall 15,3
jmp red
; mcall 18,8,2
; mcall 15,3
; jmp red
;--------------------------------------
align 4
noid19:
cmp ah,20 ; start system setup
jnz noid20
 
mov ebx, setup_exec
and dword [ebx+8], 0
mcall 70
jmp still
;align 4
;noid19:
; cmp ah,20 ; start system setup
; jnz noid20
;
; mov ebx, setup_exec
; and dword [ebx+8], 0
; mcall 70
; jmp still
;--------------------------------------
align 4
noid20:
;align 4
;noid20:
cmp ah,21
jnz noid21
 
691,20 → 826,22
inc edx
cmp edx, [max_slot]
jbe @b
jmp still
; jmp still
ret
;------------------------------------------------------------------------------
align 4
swap_minimized_desktop:
xor esi, esi
inc esi
jmp min_swap_desktop
;align 4
;swap_minimized_desktop:
; xor esi, esi
; inc esi
; jmp min_swap_desktop
;------------------------------------------------------------------------------
align 4
clean_desktop:
xor esi,esi
mov [clean_desktop_minimize],0
; xor esi,esi
;--------------------------------------
align 4
min_swap_desktop: ; input esi 0 - min, <>0 swap
;align 4
;min_swap_desktop: ; input esi 0 - min, <>0 swap
mov ecx, 2 ;  ç «ì­ë© ­®¬¥à á«®â  ¯à®æ¥áá 
mov ebx, process_info_buffer
;--------------------------------------
737,22 → 874,23
cmp [ebx+10], dword ' '
jz .loop1xx
 
pushad
pusha
mov edx, ecx
xor ecx, ecx
or esi, esi
jz @f
; or esi, esi
; jz @f
 
movzx eax, byte [process_info_buffer+70]
and eax, 2 ; mask minimize
jz @f
jnz @f
 
mov ecx, 2 ; restore
mov [clean_desktop_minimize],1
; mov ecx, 2 ; restore
mcall 18, 22
;--------------------------------------
align 4
@@:
mcall 18, 22
popad
popa
;--------------------------------------
align 4
.loop1xx:
759,260 → 897,73
inc ecx
cmp ecx, [max_slot]
jbe .loop1
jmp still
;------------------------------------------------------------------------------
align 4
draw_running_applications:
pusha
 
cmp [icons],1
jne dr_ret
 
call calculate_applications
 
cmp edi,[running_applications]
jne noret
popa
ret
;--------------------------------------
align 4
noret:
call draw_window
mov [running_applications],edi
call redraw_window_tabs
;--------------------------------------
align 4
dr_ret:
popa
ret
;------------------------------------------------------------------------------
align 4
need_window_tab:
; in: ebx->process info
; out: ZF set <=> do not draw
cmp byte [ebx+10], '@'
jz .nodraw
; do not draw undefined (zero-sized) windows
cmp dword [ebx+42], 0
jnz @f
cmp dword [ebx+46], 0
jz .nodraw
;--------------------------------------
align 4
cmp [clean_desktop_minimize],1
je @f
call restore_desktop
@@:
; do not draw OpenDialog windows
push edi
mov edi, dword [ebx+10]
or edi, 0x20202020
cmp edi, 'open'
jne @f
 
mov edi, dword [ebx+14]
or edi, 0x20202020
cmp dword [ebx+14], 'dial'
jne @f
 
pop edi
jmp .nodraw
;--------------------------------------
align 4
@@:
pop edi
cmp dword [ebx+10], 'ICON'
jnz @f
 
cmp [ebx+42], dword 51
jnz @f
 
cmp [ebx+46], dword 51
jz .nodraw
;--------------------------------------
align 4
@@:
cmp [ebx+10], dword ' '
;--------------------------------------
align 4
.nodraw:
ret
; jmp still
;------------------------------------------------------------------------------
align 4
redraw_window_tabs:
xor edi, edi
mov [contrast], 0
 
push ebp
mcall 18,7
mov ebp,eax
conversion_HEX_to_ASCII:
ror eax,12
mov ecx,4
;--------------------------------------
align 4
.loop:
mov ecx,[app_list+edi*4]
cmp ecx,-1
jz .done
mov bl,al
rol eax,4
and bl,0xf
cmp bl,0xA ; check for ABCDEF
jae @f
 
push ecx
mcall 9,procinfo_window_tabs ;0x8000 ; WTF???!!!
 
imul ebx, edi, 6*10*10000h
add ebx, 12*10*10000h + 7*10000h + 54
 
mcall 13,,<3,14>,0x383838
 
sub ebx, 10000h + 53
mcall ,,<4,12>
 
sub ebx, 10000h
mcall ,,<5,10>
 
add ebx, 56*10000h
mcall ,,<4,12>
 
add ebx, 10000h
mcall ,,<5,10>
 
mov edx, [wcolor] ; barsuk
pop ecx
cmp ebp, ecx ; ecx=active slot number
jnz @f
 
mov edx, [system_colours.work_button]
add bl,0x30 ; 0-9
jmp .store
;--------------------------------------
align 4
@@:
mov esi, [current_alt_tab_app]
cmp esi, -1
jz @f
 
cmp ecx, [alt_tab_list+esi*8]
jnz @f
 
mov edx, 0xFF8000
add bl,0x57 ; A-F
;--------------------------------------
align 4
@@:
sub ebx, 55*10000h - 53
mcall ,,<4,12>
sub ebx, 10000h + 53
mcall ,,<5,10>
 
add ebx, 55*10000h
mcall
 
sub ebx, 51*10000h - 6
mov edx, procinfo_window_tabs+10 ;0x8000+10 ; WTF???!!!
mcall 4,,[system_colours.work_button_text],,11
;--------------------------------------
align 4
.nodraw:
.store:
; dps "param_store: "
mov [edi],bl
inc edi
cmp edi, [max_applications]
jb .loop
;--------------------------------------
align 4
.done:
pop ebp
dec ecx
jnz .loop
ret
;------------------------------------------------------------------------------
align 4
calculate_applications:
mov eax,[max_applications]
mul [page_list]
test eax,eax
je @f
menu_handler:
mov edi,bootparam
 
inc eax
;--------------------------------------
align 4
@@:
mov [draw_start_position],eax
mov eax,[menu_button_x.start]
call conversion_HEX_to_ASCII
 
mov edi,app_list
mov ecx,20
mov eax,-1
cld
rep stosd
mov eax,[menu_button_x.size]
call conversion_HEX_to_ASCII
 
mov edi,0
mov ecx,2
;--------------------------------------
align 4
cnewpr:
mcall 9,procinfo_window_tabs ;0x8000 ; WTF???!!!
mov eax,[menu_button_y.start]
call conversion_HEX_to_ASCII
 
call need_window_tab
jz cnorpl
mov eax,[menu_button_y.size]
call conversion_HEX_to_ASCII
 
sub [draw_start_position], 1
jg cnorpl
mov eax,[height]
call conversion_HEX_to_ASCII
 
mov [app_list+edi*4],ecx
inc edi
;--------------------------------------
align 4
cnorpl:
inc ecx
cmp eax,ecx
jge cnewpr
mov eax,[place_attachment]
call conversion_HEX_to_ASCII
 
mov [app_tab_count], edi
ret
;------------------------------------------------------------------------------
align 4
draw_application_buttons:
pusha
xor eax,eax ; terminator for boot parameters string
stosd
 
cmp [icons],1
jne da_ret
 
mcall 14
shr eax,16
 
sub eax, 281
jnc ._01
xor eax, eax
;--------------------------------------
align 4
._01:
mov bl, 60
div bl
xor ah, ah ; eax - ª®«¨ç¥á⢮ 㬥é îè¨åáï ¯¨ªâ®¢
mov [max_applications], eax
mov edi,1
;--------------------------------------
align 4
nb:
mov ebx,edi
shl ebx,16
imul ebx,6*10 ;13
add ebx,75*65536+10*6-1 ; << Alver 25.08.2007 >> 15*65536+10*6-1 ;13
mov edx,edi
add edx,51
cmp [buttons],1
je bufr
 
or edx,0x60000000
;--------------------------------------
align 4
bufr:
mov esi,[wcolor]
sub ebx,11 shl 16
mcall 8,,<1,17>
 
inc edi
cmp edi,[max_applications]
jbe nb
;--------------------------------------
align 4
da_ret:
popa
ret
;------------------------------------------------------------------------------
align 4
menu_handler:
mov ebx, exec_fileinfo
mov [ebx+21],dword menu_name
mov [ebx+8],dword bootparam
mcall 70
mov [ebx+8],dword 0
ret
;------------------------------------------------------------------------------
align 4
1028,17 → 979,13
mcall
 
xor ecx,ecx
mov cx,[b_size_y]
mov cx,[height]
mcall 8,<0,9>,,1,[wcolor]
 
mov ebx,2*65536+16
cmp [graph_text],1
jne nos3
 
mov ebx,2*65536+7
;--------------------------------------
align 4
nos3:
mov ebx,2*65536 ;+6
mov bx,[height]
shr bx,1
sub bx,3
mov ecx,[wcolor]
add ecx,0x303030
mcall 4,,,hidetext,1
1059,36 → 1006,14
or edx, 0x01000000
mcall
 
cmp [graph_text],1
je nos4
 
mcall 8,<0,9>,<0,12>,2,[wcolor]
 
mov ecx,[wcolor]
add ecx,0x303030
mcall 4,<2,4>,,hidetext+2,1
;--------------------------------------
align 4
nos4:
mov ecx,13*65536+25
cmp [graph_text],1
jne nos6
 
xor ecx,ecx
mov cx,word [b_size_y]
;--------------------------------------
align 4
nos6:
mov cx,[height]
mcall 8,<0,9>,,1,[wcolor]
 
mov ebx,3*65536+22
cmp [graph_text],1
jne nos7
 
mov ebx,3*65536+7
;--------------------------------------
align 4
nos7:
mov ebx,3*65536 ;+6
mov bx,[height]
shr bx,1
sub bx,3
mov ecx,[wcolor]
add ecx,0x303030
mcall 4,,,hidetext+1,1
1160,1105 → 1085,40
call menu_handler
jmp small_wait
;------------------------------------------------------------------------------
align 4
set_variables:
pusha
mov [b_size_y],dword 38
cmp [graph_text],1
jne noy2
 
mov [b_size_y],dword 18
;--------------------------------------
align 4
noy2:
mov [button_frames],0x0
cmp [buttons],0
jne no_frames
 
mov [button_frames],0x40000000
;--------------------------------------
align 4
no_frames:
mcall 48,1,1 ; 3d button look
 
mov eax,0x40404040 ; dividers for processes
mov edi,pros
mov ecx,10
cld
rep stosd
 
popa
ret
;------------------------------------------------------------------------------
align 4
; eax = number (1 or 2)
; ebx = language id
draw_flag:
pusha
; eax = 2 BIG
; eax = 1 small
mov edx,ebx
 
mov ebx,[maxx]
and eax,1
imul eax,17 ;17
sub ebx,eax
sub ebx,76 ;79 ;28
 
pushad
; dec ebx
sub ebx,2
shl ebx, 16
add ebx, 15 ;25
xor edx,edx
mcall 13,,<4,13>
 
add ebx,1 shl 16
sub ebx,2
mov ecx, 5 shl 16+11
cmp [type_lang],1
je label_1
 
mov edx,0xff ;[wcolor]
jmp label_2
;--------------------------------------
align 4
label_1:
mov edx,0x7700
;--------------------------------------
align 4
label_2:
mcall
popad
 
shl ebx,16
add ebx,7 ;24
 
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
 
mov ebx,[maxx]
sub ebx,48
shl ebx,16
mov bx,34
xor edx,edx
mcall 13,,<3,14>
 
add ebx,1 shl 16
sub ebx,2
mov ecx,4 shl 16+12
mov edx,time_bgr_color
mcall
 
popa
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'
db 'ENFIGERUFRETUA'
end if
;------------------------------------------------------------------------------
; ***************************************************
; ********* WINDOW DEFINITIONS AND DRAW *************
; ***************************************************
align 4
draw_window:
pusha
mov [running_applications],-1
mov [checks],-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],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
sub ax,38
shl eax,16
mov ecx,eax
add ecx,0*65536+38
cmp [graph_text],1
jne no_text_1
mov cx,PANEL_HEIGHT
add ecx,20*65536
;--------------------------------------
align 4
no_text_1:
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 ebx,word [screenxy+2]
mov ecx,0*65536+0
mov edx,[wcolor]
add edx,0x161616
;--------------------------------------
align 4
newline_: ; debug.inc has macros with the same name
sub edx,0x040404
mov eax,38
cmp [soften_up],1
jne no_su
 
and edx,0x00FFFFFF
mcall
;--------------------------------------
align 4
no_su:
pusha
cmp [soften_down],1
jne no_sd
 
sub edx,0x141414
mov edi,[b_size_y]
shl edi,16
add edi,[b_size_y]
add ecx,edi
sub ecx,3*65536+3
and edx,0x00FFFFFF
mcall
;--------------------------------------
align 4
no_sd:
popa
 
add ecx,1*65536+1
cmp cx,5
jb newline_
 
cmp [soften_middle],1
jne no_sm
 
movzx ebx,word [screenxy+2]
mov ecx,5*65536+5
mov esi,stripe
mov edx,[wcolor]
;--------------------------------------
align 4
newline3:
add edx,[esi]
add esi,4
 
and edx,0x00FFFFFF
mcall 38
add ecx,1*65536+1
cmp cx,15
jb newline3
;--------------------------------------
align 4
no_sm:
cmp [minimize_left],1
jne no_mleft
 
mov ecx,1 *65536
add ecx,[b_size_y]
dec ecx
mov edx,101
add edx,[button_frames]
mcall 8,<0,9>,,,[wcolor] ; ABS LEFT
 
mov ebx,2*65536+17
cmp [graph_text],1
jne no_y1
 
mov bx,7
;--------------------------------------
align 4
no_y1:
mov ecx,[wcolor]
add ecx,0x303030
mcall 4,,,hidetext,1 ; HIDE TEXT
;--------------------------------------
align 4
no_mleft:
movzx eax,word [screenxy+2]
mov [maxx],eax
cmp [minimize_right],1
jne no_mright
mov eax,[maxx]
sub eax,77
shl eax,16
mov ebx,eax
add ebx,67
 
mov ecx,1 *65536
add ecx,[b_size_y]
dec ecx
add ebx,68*65536
mov bx,9
mov edx,102
add edx,[button_frames]
mcall 8,,,,[wcolor] ; ABS RIGHT
 
mov edx,hidetext+1
mov eax,4
mov ebx,[maxx]
sub ebx,6
shl ebx,16
mov bx,17
cmp [graph_text],1
jne no_y2
 
mov bx,7
;--------------------------------------
align 4
no_y2:
mov ecx,[wcolor]
add ecx,0x303030
mov esi,1
mcall
;--------------------------------------
align 4
no_mright:
call draw_menuet_icon
; call draw_program_icons
mov [ptime],0
call draw_info
call draw_application_buttons
 
mcall 12,2
popa
ret
;------------------------------------------------------------------------------
align 4
dr_button_clean:
mcall 8,,<3,13>
ret
;------------------------------------------------------------------------------
align 4
draw_menuet_icon:
pusha
; 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, 103
mov ebx, 67*65536+13
call dr_button_clean
inc edx
mov ebx, 86*65536+13
call dr_button_clean
inc edx
mov ebx, 105*65536+13
call dr_button_clean
mov ecx, dword [system_colours+28]
and ecx, 0x00ffffff
mcall 4,<71,6>,,page_clean_but,1
 
inc edx
mcall ,<90,6>
 
inc edx
mcall ,<109,6>
 
cmp [menu_enable],1
jne no_menu
 
mov ebx, 10*65536 + 47
cmp [minimize_left], 0
jne @f
 
sub ebx, 10*65536
;--------------------------------------
align 4
@@:
mov ecx, 1*65536
add ecx, [b_size_y]
dec ecx
mov edx, 0x20d1ff01
add edx, [button_frames]
mcall 8,,,,[wcolor] ; M BUTTON
 
; cmp [graph_text], 1
; jne no_mtext
 
push ebx
mcall 13,<12,44>,<1,17>,0x383838
 
mcall ,<56,1>,<2,15>
 
mcall ,<57,1>,<4,11>
 
mcall ,<58,1>,<6,7>
 
mcall ,<13,43>,<2,15>,0x7700
 
mcall ,<56,1>,<4,11>
 
mcall ,<57,1>,<6,7>
pop ebx
 
mov bx, 7
add ebx, 8*65536
 
mcall 4,,0x10ffffff,m_text,4
 
popa
ret
;--------------------------------------
;align 4
;no_mtext:
; mov eax,[wcolor]
; mov [m_icon+4],eax
;; load & display menuet.bmp
; mcall 70,m_bmp_fileinfo
 
; mov eax,40
; mov ebx,0
; mov edi,image+53
;--------------------------------------
;align 4
;new_m_pix:
; cmp byte [edi], 10
; jb nopix
 
; cmp byte [edi+1], 10
; jb nopix
 
; cmp byte [edi+2], 10
; jb nopix
 
;set_variables:
; pusha
; cmp [minimize_left],0
; jne no_m_s2
; mov [button_frames],0x0
; cmp [buttons],0
; jne no_frames
 
; sub ebx,10
; mov [button_frames],0x40000000
;--------------------------------------
;align 4
;no_m_s2:
; mov edx,[edi+1]
; mov ecx,eax
; add ebx,12
; mcall 1 ; point - WTF???!!!
 
;no_frames:
; mcall 48,1,1 ; 3d button look
; popa
;--------------------------------------
;align 4
;nopix:
; add edi,3
; add ebx,1
; cmp ebx,40
; jnz new_m_pix
 
; mov ebx,0
; dec eax
; jnz new_m_pix
;--------------------------------------
align 4
no_menu:
popa
ret
;------------------------------------------------------------------------------
;align 4
;draw_program_icons:
; pusha
 
; cmp [icons],0
; jne dp_ret
 
; mov edi,1
; push edi
;--------------------------------------
;align 4
;new_icon_file:
; pusha
; mov edx,[esp+32]
; add edx,10
 
; push edx
; mov ecx,1*65536
; add ecx,[b_size_y]
; dec ecx
; mov eax,edi
; dec eax
; imul eax,40
; mov ebx,eax
; add ebx,[icons_position]
; shl ebx,16
; mov bx,39
; pop edx
 
; add edx,[button_frames]
; or edx, 0x20000000
; mcall 8,,,,[wcolor]
; popa
 
; mov ecx,[esp]
; add ecx,48
; mov [iconf+6],cl
 
; mcall 70,iconf_fileinfo
 
; mov eax,0
; mov ebx,32
; mov edi,image+51+32*33*3
;--------------------------------------
;align 4
;np2: ; new pixel of file
; mov edx,[edi]
; and edx,0xffffff
 
; cmp eax,3 ; Y draw limits
; jb nopix2
 
; cmp eax,36
; jg nopix2
 
; cmp ebx,38 ; X draw limits
; jg nopix2
 
; cmp ebx,2
; jb nopix2
 
; cmp edx,0
; jz nopix2
 
; cmp [graph_text],1
; jne no_icon_text
 
; pusha
; mov ebx,[esp+32]
; dec ebx
; imul ebx,40
; add ebx,8
; add ebx,[icons_position]
; shl ebx,16
; mov bx,7
 
; mov edx,[esp+32]
; dec edx
; imul edx,4
; add edx,mi_text
; mcall 4,,0xffffff,,4
; popa
; jmp nopix2
;--------------------------------------
;align 4
;no_icon_text:
; mov esi,[esp]
; pusha
; push edx
; mov ecx,eax
; add ecx,2
; mov eax,esi
; dec eax
; imul eax,40
; add ebx,eax
; add ebx,3
; add ebx,[icons_position]
; pop edx
 
; mcall 1 ; WTF???!!!
; popa
;--------------------------------------
;align 4
;nopix2:
; sub edi,3
; dec ebx
; jnz np2
 
; mov ebx,32
; add eax,1
; cmp eax,32
; jnz np2
 
; add dword [esp],1
; mov edi,[esp]
; cmp dword [esp],4
; jbe new_icon_file
 
; add esp,4
 
; mov ebx,40
; imul ebx,3
; add ebx,[icons_position]
; add ebx,10
; shl ebx,16
; mov bx,23
; mcall 4,,[wcolor],gpl,3
;--------------------------------------
;align 4
;dp_ret:
; popa
; ret
;------------------------------------------------------------------------------
align 4
draw_info: ; draw cpu usage, time, date
pusha
cmp [setup_enable],1
jne no_setup
 
cmp [minimize_right],0
jne no_m_r
add [maxx],10
;--------------------------------------
align 4
no_m_r:
mov eax,3
mcall
cmp eax,[ptime]
jz _ret
 
mov [ptime],eax
 
call draw_cpu_usage
 
mov eax,[maxx] ; blink sec
sub eax,33
shl eax,16
mov ebx,eax
add ebx,9
mcall 3
 
cmp [graph_text],1
jne no_y4
 
sub bx,2
;--------------------------------------
align 4
no_y4:
mov ecx,eax
shr ecx,16
and ecx,1
mov edx,[bte]
sub edx,time_bgr_color;[wcolor]
imul ecx,edx
add ecx,time_bgr_color;[wcolor]
 
mcall 4,,,sec,1
 
mcall 26,2,9
 
mov edx,eax
mcall 3
 
and eax,0xffff
add edx,eax
cmp edx,[checks]
je _ret
 
mov [checks],edx
 
mov ebx,[maxx]
sub ebx,48 ;;94 ;;74
shl ebx,16
add ebx,33 ;;84 ;;64
 
mov ecx,3 *65536
add ecx,[b_size_y]
sub cx,5
mcall 8,,,0x40000002,[wcolor] ; time/date button
 
and edx,0xffff
add edx,[button_frames]
mcall
 
mov ebx,[maxx]
sub ebx,77 ;80
shl ebx,16
add ebx,14
 
mcall ,,<4,12>,0x60000010,[wcolor] ;button 16
 
sub ebx,17 shl 16
inc edx ;button 17
 
add ebx,33 shl 16
mov bx,8
inc edx ;button 18
mcall
 
sub ebx,30 shl 16
mov bx,10
inc edx ;button 19
mcall
 
sub ebx,14 shl 16
inc edx ;button 20
mcall
 
sub ebx,12 shl 16
mov bx,8
mov ecx,6 shl 16+10
inc edx ;button 21
mcall
 
sub ebx,24 shl 16
inc edx ;button 22
mcall
 
mcall 26,2,9
 
mov ebx,eax
 
mov eax,2
mov [type_lang],al
call draw_flag
 
mcall 18,8,1
 
mov [sound_flag],al
 
mov ebx,[maxx]
sub ebx,92 ;109 ;112 ;28
shl ebx,16
mov bx,12
xor edx,edx
mcall 13,,<4,13>
 
add ebx,1 shl 16
sub bx,2
mcall ,,<5,11>,0xcc
 
add ebx,1 shl 16
mov bx,5
mcall ,,<8,5>,0xdddd00
 
add ebx,5 shl 16
mov bx,1
mcall ,,<7,7>
 
add ebx,1 shl 16
mcall ,,<6,9>
 
add ebx,1 shl 16
mcall ,,<5,11>
 
cmp [sound_flag],0
je dalshe
 
sub ebx,8 shl 16
ror ebx,16
mov cx,bx
rol ebx,16
mov bx,cx
add bx,8
mcall 38,,<5,15>,0xff0000
 
add ebx,1 shl 16
inc bx
mcall
 
rol ecx,16
mcall
 
sub ebx,1 shl 16
dec bx
mcall
;--------------------------------------
align 4
dalshe:
mov ebx,[maxx]
sub ebx,106;123
shl ebx,16
mov bx,12
xor edx,edx
mcall 13,,<4,13>
 
add ebx,1 shl 16
sub bx,2
mcall ,,<5,11>,0xffcc00
 
mov ebx,[maxx]
sub ebx,104;121
shl ebx,16
mov bx,7
 
mcall 4,,0x10000000,file_sys,1
 
add ebx,1 shl 16
mcall
 
mov ebx,[maxx]
sub ebx,117;134
shl ebx,16
mov bx,9
xor edx,edx
mcall 13,,<6,11>
 
sub ebx,24 shl 16 ; 18 shl 16
mcall
 
add ebx,25 shl 16 ; 19 shl 16
sub bx,2
mcall ,,<7,9>,0xffffff
 
sub ebx,24 shl 16
mcall
 
mov ebx,[maxx]
sub ebx, 139
shl ebx,16
mov bx,8
mcall 4,,,page_a1,5
 
add ebx,1 shl 16
mcall
 
mov edx,[maxx]
sub edx,130
shl edx,16
mov dx,7
mcall 47,0x20000,[page_list],,0xffffff
 
mcall 3 ; get time
 
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 eax,[maxx]
sub eax,32
shl eax,16
mov ebx,eax
add ebx,9
 
mov ecx,[bte]
 
cmp [graph_text],1
jne no_y3
 
sub bx,2
;--------------------------------------
align 4
no_y3:
mov edx,[esp] ; __:_X
and edx,15
add ebx,10*65536
add edx,text
mcall 4,,0xffffff,,1
 
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
 
call draw_cpu_usage
;--------------------------------------
align 4
_ret:
cmp [minimize_right],0
jne no_m_r2
 
sub [maxx],10
;--------------------------------------
align 4
no_m_r2:
no_setup:
popa
ret
include 'libini.inc'
;------------------------------------------------------------------------------
align 4
draw_cpu_usage:
pushad
mov [ysi],30
cmp [graph_text],1
jne @f
 
mov [ysi],12
;--------------------------------------
align 4
@@:
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,[maxx]
sub ebx,60
shl ebx,16
add ebx,8
mov ecx,5 shl 16
add ecx,[ysi]
mcall 13,,,0xdd2222
 
pop eax
mov ecx,5 shl 16
add ecx,eax
mov eax,13
mcall 13,,,0x44aa44
 
popad
ret
include 'dll.inc'
;------------------------------------------------------------------------------
align 4
include 'ctx_menu.asm'
include 'drawappl.inc'
;------------------------------------------------------------------------------
align 4
; DATA
stripe:
dd -0x010101
dd -0x010101
dd -0x020202
dd -0x010101
dd -0x000000
 
dd 0x000000
dd 0x010101
dd 0x020202
dd 0x010101
dd 0x010101
 
m_icon:
dd 0x0
dd 0x808080
dd 0x000000
dd 0x000000
dd 0xffffff
 
 
lsz m_text,\
ru, "Œ…ž",\
en, "MENU",\
et, "MEN--"
 
mi_text db 'WAVETETRBGRDGPL '
 
flag_text db 'EnFiGeRuFrEtUa'
 
type_lang db 0
 
sound_flag db 0
button_frames dd 0x0
 
checks dd -1
hidetext db 0x11,0x10,0x1e
 
turn_text db '><'
gpl db 'GPL'
 
chlang db 'LANG',0
;syslang db 'SLAN',0
 
contrast db 0
 
running_applications dd 0x100
max_applications dd 11
 
current_alt_tab_app dd -1
 
page_list dd 0
draw_start_position dd 0
draw_window_1 db 0
 
b_size_y: dd 0x0
ysi dd 0
small_draw dd 0x0
 
ptime dd 0x0
maxx dd 0x0
text db '0123456789'
 
page_a1 db '< >'
page_clean_but db 25,24,18
 
bte dd 0xccddee
 
wcolor dd 0x506070
 
sec db ': '
pros db ' '
db ' '
 
screenxy dd 0x0
stcount dd 0x0
 
setup_exec:
dd 7
dd 0
.cmdline dd 0
dd 0
dd 0
db '/sys/'
file_sys db 'SETUP',0
 
exec_fileinfo:
dd 7
dd 0
dd 0
dd 0
dd 0
db 0
.name dd 0
 
end_name db '/sys/END',0
menu_name db '/sys/@MENU',0
calendar_name db '/sys/CALENDAR',0
sysmeter_name db '/sys/GMON',0
mousemul_name db '/sys/MOUSEMUL',0
 
dat_fileinfo:
dd 0
dd 0
dd 0
dd 1024
dd I_END
db '/sys/PANEL.DAT',0
 
;m_bmp_fileinfo:
; dd 0
; dd 0
; dd 0
; dd 8192
; dd image
; db '/sys/MENUET.BMP',0
 
;iconf_fileinfo:
; dd 0
; dd 0
; dd 0
; dd 8192
; dd image
; db '/sys/'
;iconf db 'MBAR_IX.BMP',0
 
this_slot dd 0 ; Slot of this process
max_slot dd 255
include 'drawbutt.inc'
;------------------------------------------------------------------------------
IM_END:
include 'drawwind.inc'
;------------------------------------------------------------------------------
align 4
last_active_window rd 1
prev_active_window rd 1
active_window_changed rd 1
app_tab_count rd 1
 
alt_tab_list_size rd 1
 
panel_x_pos rd 1
panel_y_pos rd 1
 
screen_size:
.height rw 1
.width rw 1
include 'drawtray.inc'
;------------------------------------------------------------------------------
align 4
system_colours system_colors ; rd 10
include 'ctx_menu.asm'
;------------------------------------------------------------------------------
align 4
app_list rd 50
include 'i_data.inc'
;------------------------------------------------------------------------------
align 4
alt_tab_list rd 256*2
IM_END:
;------------------------------------------------------------------------------
align 4
process_info_buffer:
rb 1024
include 'u_data.inc'
;------------------------------------------------------------------------------
align 4
procinfo_for_detect:
rb 1024
I_END:
;------------------------------------------------------------------------------
align 4
procinfo_window_tabs:
rb 1024
;-----------------------------------------------------------------------------
align 4
tictable:
rd 256
;------------------------------------------------------------------------------
align 4
rb 256
detect_stack:
;------------------------------------------------------------------------------
align 4
rb 256
ctx_menu_stack:
;------------------------------------------------------------------------------
align 4
rb 0x1000
stack_top:
;------------------------------------------------------------------------------
;align 4
;image:
;------------------------------------------------------------------------------
I_END:
/programs/system/panel/trunk/MOI.INC
124,6 → 124,8
;------------------------------------------------------------------------------
align 4
karu:
mov [draw_flag_certainly],1
 
add [key_r2],1
cmp [key_r2],3
jb .altes
166,6 → 168,8
;------------------------------------------------------------------------------
align 4
alter:
mov [draw_flag_certainly],1
 
cmp [key_r],0
je .alt_1
 
/programs/system/panel/trunk/debug.inc
0,0 → 1,147
macro debug_print str
{
local ..string, ..label
 
jmp ..label
..string db str,0
..label:
 
pushf
pushad
mov edx,..string
call debug_outstr
popad
popf
}
 
dps fix debug_print
 
macro debug_print_dec arg
{
pushf
pushad
if ~arg eq eax
mov eax,arg
end if
call debug_outdec
popad
popf
}
 
dpd fix debug_print_dec
 
;---------------------------------
debug_outdec: ;(eax - num, edi-str)
push 10 ;2
pop ecx ;1
push -'0' ;2
.l0:
xor edx,edx ;2
div ecx ;2
push edx ;1
test eax,eax ;2
jnz .l0 ;2
.l1:
pop eax ;1
add al,'0' ;2
call debug_outchar ; stosb
jnz .l1 ;2
ret ;1
;---------------------------------
 
debug_outchar: ; al - char
pushf
pushad
mov cl,al
mov eax,63
mov ebx,1
int 0x40
popad
popf
ret
 
debug_outstr:
mov eax,63
mov ebx,1
@@:
mov cl,[edx]
test cl,cl
jz @f
int 40h
inc edx
jmp @b
@@:
ret
 
_debug_crlf db 13, 10, 0
 
macro newline_1
{
pushf
pushad
mov edx, _debug_crlf
call debug_outstr
popad
popf
}
 
macro newline
{
pushf
pushad
mov edx, _debug_crlf
call debug_outstr
popad
popf
}
 
macro print message
{
dps message
newline
}
 
macro pregs
{
dps "EAX: "
dpd eax
dps " EBX: "
dpd ebx
newline
dps "ECX: "
dpd ecx
dps " EDX: "
dpd edx
newline
}
 
macro debug_print_hex arg
{
pushf
pushad
if ~arg eq eax
mov eax, arg
end if
call debug_outhex
popad
popf
}
dph fix debug_print_hex
 
debug_outhex:
; eax - number
mov edx, 8
.new_char:
rol eax, 4
movzx ecx, al
and cl, 0x0f
mov cl, [__hexdigits + ecx]
pushad
mcall 63, 1
popad
dec edx
jnz .new_char
ret
 
__hexdigits:
db '0123456789ABCDEF'
/programs/system/panel/trunk/dll.inc
0,0 → 1,144
;-----------------------------------------------------------------------------
proc dll.Load, import_table:dword
mov esi,[import_table]
.next_lib:
mov edx,[esi]
or edx,edx
jz .exit
push esi
mov esi,[esi+4]
mov edi,s_libdir.fname
@@:
lodsb
stosb
or al,al
jnz @b
mcall 68,19,s_libdir
or eax,eax
jz .fail
stdcall dll.Link,eax,edx
stdcall dll.Init,[eax+4]
pop esi
add esi,8
jmp .next_lib
.exit:
xor eax,eax
ret
.fail:
add esp,4
xor eax,eax
inc eax
ret
endp
;-----------------------------------------------------------------------------
proc dll.Link, exp:dword,imp:dword
push eax
mov esi,[imp]
test esi,esi
jz .done
.next:
lodsd
test eax,eax
jz .done
stdcall dll.GetProcAddress,[exp],eax
or eax,eax
jz @f
mov [esi-4],eax
jmp .next
@@:
mov dword[esp],0
.done:
pop eax
ret
endp
;-----------------------------------------------------------------------------
proc dll.Init, dllentry:dword
pushad
mov eax,mem.Alloc ;libini_alloc
mov ebx,mem.Free ;libini_free
mov ecx,mem.ReAlloc ;libini_realloc
mov edx,dll.Load
stdcall [dllentry]
popad
ret
endp
;-----------------------------------------------------------------------------
proc dll.GetProcAddress, exp:dword,sz_name:dword
mov edx,[exp]
xor eax,eax
.next:
or edx,edx
jz .end
cmp dword[edx],0
jz .end
stdcall strcmp,[edx],[sz_name]
test eax,eax
jz .ok
add edx,8
jmp .next
.ok:
mov eax,[edx+4]
.end:
ret
endp
;-----------------------------------------------------------------------------
proc strcmp, str1:dword,str2:dword
push esi edi
mov esi,[str1]
mov edi,[str2]
xor eax,eax
@@:
lodsb
scasb
jne .fail
or al,al
jnz @b
jmp .ok
.fail:
or eax,-1
.ok:
pop edi esi
ret
endp
;-----------------------------------------------------------------------------
s_libdir:
db '/sys/lib/'
.fname rb 32
;-----------------------------------------------------------------------------
proc mem.Alloc,size
push ebx ecx
mov ecx,[size]
mcall 68,12
pop ecx ebx
ret
endp
;-----------------------------------------------------------------------------
proc mem.ReAlloc,mptr,size
push ebx ecx edx
mov ecx,[size]
or ecx,ecx
jz @f
@@:
mov edx,[mptr]
or edx,edx
jz @f
@@:
mcall 68,20
or eax,eax
jz @f
@@:
pop edx ecx ebx
ret
endp
;-----------------------------------------------------------------------------
proc mem.Free,mptr
push ebx ecx
mov ecx,[mptr]
or ecx,ecx
jz @f
@@:
mcall 68,13
pop ecx ebx
ret
endp
;-----------------------------------------------------------------------------
/programs/system/panel/trunk/drawappl.inc
0,0 → 1,196
;------------------------------------------------------------------------------
align 4
draw_running_applications:
pusha
 
cmp [run_appl],dword 0
je .exit
 
call calculate_applications
 
cmp edi,[running_applications]
jne .noret
popa
ret
;--------------------------------------
align 4
.noret:
call draw_window
mov [running_applications],edi
call redraw_window_tabs
;--------------------------------------
align 4
.exit:
popa
ret
;------------------------------------------------------------------------------
align 4
need_window_tab:
; in: ebx->process info
; out: ZF set <=> do not draw
cmp byte [ebx+10], '@'
jz .nodraw
; do not draw undefined (zero-sized) windows
cmp dword [ebx+42], 0
jnz @f
cmp dword [ebx+46], 0
jz .nodraw
;--------------------------------------
align 4
@@:
; do not draw OpenDialog windows
push edi
mov edi, dword [ebx+10]
or edi, 0x20202020
cmp edi, 'open'
jne @f
 
mov edi, dword [ebx+14]
or edi, 0x20202020
cmp dword [ebx+14], 'dial'
jne @f
 
pop edi
jmp .nodraw
;--------------------------------------
align 4
@@:
pop edi
cmp dword [ebx+10], 'ICON'
jnz @f
 
cmp [ebx+42], dword 51
jnz @f
 
cmp [ebx+46], dword 51
jz .nodraw
;--------------------------------------
align 4
@@:
cmp [ebx+10], dword ' '
;--------------------------------------
align 4
.nodraw:
ret
;------------------------------------------------------------------------------
align 4
calculate_applications:
mov eax,[max_applications]
mul [page_list]
test eax,eax
je @f
 
inc eax
;--------------------------------------
align 4
@@:
mov [draw_start_position],eax
 
mov edi,app_list
mov ecx,20 ; show max 20 application ???!!!
mov eax,-1
cld
rep stosd
 
mov edi,0
mov ecx,2
;--------------------------------------
align 4
cnewpr:
mcall 9,procinfo_window_tabs
 
call need_window_tab
jz cnorpl
 
sub [draw_start_position], 1
jg cnorpl
 
mov [app_list+edi*4],ecx
inc edi
;--------------------------------------
align 4
cnorpl:
inc ecx
cmp eax,ecx
jge cnewpr
 
mov [app_tab_count], edi
ret
;------------------------------------------------------------------------------
align 4
redraw_window_tabs:
xor edi, edi
mov [contrast], 0
 
push ebp
mcall 18,7
mov ebp,eax
call calculate_offset_X
;--------------------------------------
align 4
.loop:
mov ecx,[app_list+edi*4]
cmp ecx,-1
jz .done
 
mov [active_slot_number],ecx
mcall 9,procinfo_window_tabs
 
imul ebx, edi, TAB_SIZE
add ebx,[offset_X]
add ebx,2
shl ebx,16
add ebx,TAB_SIZE-2 ;54
 
call calculate_button_y_coordinate_and_size
 
push edi
mov edx,[system_colours.work_button]
xor edi,edi
 
cmp ebp,[active_slot_number] ;ecx ; ecx=active slot number
jnz @f
 
mov edx,[wcolor]
inc edi
;--------------------------------------
align 4
@@:
mov esi,[current_alt_tab_app]
cmp esi,-1
jz @f
 
cmp ecx,[alt_tab_list+esi*8]
jnz @f
 
mov edx,0xFF8000 ; current select for ALT+Tab
;--------------------------------------
align 4
@@:
mov esi,[wcolor]
call draw_appl_button
pop edi
;------------------------------------------------------------------------------
add ebx,5 shl 16
mov bx,cx ;[height]
shr bx,1
sub bx,4
shr ecx,16
add bx,cx
mov edx, procinfo_window_tabs+10
mcall 4,,[system_colours.work_button_text],,11
;--------------------------------------
align 4
.nodraw:
inc edi
cmp edi, [max_applications]
jb .loop
;--------------------------------------
align 4
.done:
pop ebp
ret
;------------------------------------------------------------------------------
/programs/system/panel/trunk/drawbutt.inc
0,0 → 1,180
;------------------------------------------------------------------------------
align 4
draw_appl_button:
; in:
; ebx = [x]*65536 + [size x]
; ecx = [y]*65536 + [size y]
; edx = internal color 0xRRGGBB
; esi = external color 0xRRGGBB
; edi = 0 up or 1 down
COLOR_CHANGE_MAGNITUDE_0 = 0x080808
COLOR_CHANGE_MAGNITUDE = 0x101010
COLOR_CHANGE_MAGNITUDE_1 = 0x202020
COLOR_CHANGE_MAGNITUDE_2 = 0x404040
pusha
add ebx,2 shl 16
sub bx,4
add ecx,2 shl 16
sub cx,4
mcall 13
;------------------------------------------------------------------------------
; mov edx,esi
test edi,edi
jnz @f
 
mov eax,COLOR_CHANGE_MAGNITUDE
call add_color_change_magnitude
jmp .1
;--------------------------------------
align 4
@@:
mov eax,COLOR_CHANGE_MAGNITUDE
call subtract_color_change_magnitude
;--------------------------------------
align 4
.1:
call draw_four_extreme_lines
;------------------------------------------------------------------------------
mov edx,esi
mov eax,COLOR_CHANGE_MAGNITUDE_2
call subtract_color_change_magnitude
sub ecx,1 shl 16
add ecx,2
sub ebx,1 shl 16
add ebx,2
call draw_four_extreme_lines
;------------------------------------------------------------------------------
popa
ret
;------------------------------------------------------------------------------
align 4
draw_four_extreme_lines:
; top left point
push ebx ecx
shr ebx,16
shr ecx,16
mcall 1
pop ecx ebx
; bottom right point
push ebx ecx
movzx eax,bx
shr ebx,16
add ebx,eax
dec ebx
movzx eax,cx
shr ecx,16
add ecx,eax
dec ecx
mcall 1
pop ecx ebx
;--------------------------------------
; bottom left point
push ebx ecx
shr ebx,16
movzx eax,cx
shr ecx,16
add ecx,eax
dec ecx
mcall 1
pop ecx ebx
;--------------------------------------
; top right point
push ebx ecx
movzx eax,bx
shr ebx,16
add ebx,eax
dec ebx
shr ecx,16
mcall 1
pop ecx ebx
;--------------------------------------
; top line
push ecx
sub ecx,1 shl 16
mov cx,1
mcall 13
pop ecx
; bottom line
push ecx
mov ax,cx
shl eax,16
add ecx,eax
mov cx,1
mcall 13
pop ecx
; left line
push ebx
sub ebx,1 shl 16
mov bx,1
mcall 13
pop ebx
; right line
push ebx
mov ax,bx
shl eax,16
add ebx,eax
mov bx,1
mcall 13
pop ebx
ret
;------------------------------------------------------------------------------
align 4
subtract_color_change_magnitude:
; in:
; edx = original color
; eax = magnitude
; out:
; edx = processed color
sub dl,al
jae @f
xor dl,dl
@@:
ror edx,8
ror eax,8
sub dl,al
jae @f
xor dl,dl
@@:
ror edx,8
ror eax,8
sub dl,al
jae @f
xor dl,dl
@@:
rol edx,16
ret
;------------------------------------------------------------------------------
align 4
add_color_change_magnitude:
; in:
; edx = original color
; eax = magnitude
; out:
; edx = processed color
add dl,al
jae @f
mov dl,0xff
@@:
ror edx,8
ror eax,8
add dl,al
jae @f
mov dl,0xff
@@:
ror edx,8
ror eax,8
add dl,al
jae @f
mov dl,0xff
@@:
rol edx,16
ret
;------------------------------------------------------------------------------
calculate_button_y_coordinate_and_size:
mov ecx,[button_top_offset]
shl ecx,16
add ecx,[height]
sub ecx,[button_top_offset]
sub ecx,[button_bottom_offset]
ret
/programs/system/panel/trunk/drawtray.inc
0,0 → 1,421
;------------------------------------------------------------------------------
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
;------------------------------------------------------------------------------
/programs/system/panel/trunk/drawwind.inc
0,0 → 1,445
;------------------------------------------------------------------------------
; ***************************************************
; ********* 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
;------------------------------------------------------------------------------
/programs/system/panel/trunk/i_data.inc
0,0 → 1,249
;------------------------------------------------------------------------------
align 4
; DATA
stripe:
dd -0x010101
dd -0x010101
dd -0x020202
dd -0x010101
dd -0x000000
 
dd 0x000000
dd 0x010101
dd 0x020202
dd 0x010101
dd 0x010101
 
m_icon:
dd 0x0
dd 0x808080
dd 0x000000
dd 0x000000
dd 0xffffff
 
 
lsz m_text,\
ru, "Œ…ž",\
en, "MENU",\
et, "MEN--"
 
mi_text db 'WAVETETRBGRDGPL '
 
flag_text db 'EnFiGeRuFrEtUa'
 
type_lang db 0
 
;sound_flag db 0
;button_frames dd 0x0
 
;checks dd -1
hidetext db 0x11,0x10,0x1e
 
turn_text db '><'
gpl db 'GPL'
 
chlang db 'LANG',0
;syslang db 'SLAN',0
 
contrast db 0
 
running_applications dd 0x100
max_applications dd 11
 
current_alt_tab_app dd -1
 
page_list dd 0
draw_start_position dd 0
draw_window_1 db 0
 
;b_size_y: dd 0x0
ysi dd 0
small_draw dd 0x0
 
ptime dd 0x0
max_x dd 0x0
text db '0123456789'
 
page_a1 db '< >'
page_clean_but db 25,24,18
 
bte dd 0xccddee
 
wcolor dd 0x506070
 
sec db ': '
;pros db ' '
; db ' '
 
screenxy dd 0x0
stcount dd 0x0
 
setup_exec:
dd 7
dd 0
.cmdline dd 0
dd 0
dd 0
db '/sys/'
file_sys db 'SETUP',0
 
exec_fileinfo:
dd 7
dd 0
dd 0
dd 0
dd 0
db 0
.name dd 0
 
end_name db '/sys/END',0
menu_name db '/sys/@MENU',0
run_name db '/sys/RUN',0
calendar_name db '/sys/CALENDAR',0
sysmeter_name db '/sys/GMON',0
mousemul_name db '/sys/MOUSEMUL',0
 
;dat_fileinfo:
; dd 0
; dd 0
; dd 0
; dd 1024
; dd panel_ini_data_area ;I_END
; db '/sys/PANEL.DAT',0
 
;m_bmp_fileinfo:
; dd 0
; dd 0
; dd 0
; dd 8192
; dd image
; db '/sys/MENUET.BMP',0
 
;iconf_fileinfo:
; dd 0
; dd 0
; dd 0
; dd 8192
; dd image
; db '/sys/'
;iconf db 'MBAR_IX.BMP',0
 
this_slot dd 0 ; Slot of this process
max_slot dd 255
 
;--------------------------------------
menu_button_x:
.start dd 1234 ;0xffff
.size dd 0x999
;--------------------------------------
menu_button_y:
.start dd 0xaa
.size dd 0xc
;--------------------------------------
;------------------------------------------------------------------------------
; INI variables
width: dd 0 ;305
height: dd 30 ;18
soften_height: dd 5
button_top_offset: dd 3
button_bottom_offset: dd 3
;------------------------------------------------------------------------------
; INI flags
;buttons dd 1 ; 0 no frames ; 1 frames
soften_up: dd 1 ; 0 no ; 1 yes
soften_down: dd 0 ; 0 no ; 1 yes
minimize_left: dd 1
minimize_right: dd 1
;icons_position dd 95 ; not used!
menu_enable: dd 1
;tray_enable: dd 0 ; draw cpu usage, time, date
;graph_text dd 1 ; not used!
;soften_middle dd 1 ; not used! ; 0 no ; 1 yes
run_appl: dd 1 ; 0 defaults ; 1 activate
clean_desktop_enable: dd 1
clock_enable: dd 1
cpu_usage_enable: dd 1
chlang_enable: dd 1
page_list_enable: dd 1
place_attachment dd 1
button_style dd 1
;------------------------------------------------------------------------------
; INI colors
MenuButton_color dd 0x44aa44 ; Green
CleanDesktopButton_color dd 0x66cc ; Blue
Clock_color dd 0x66cc ; Blue
CpuUsage_color dd 0x44aa44 ; Green
CpuUsageBckgr_color dd 0xdd2222 ; Red
ChangeLang_color dd 0x66cc ; Blue
PageList_color dd 0xffffff ; White
;------------------------------------------------------------------------------
aVariables db 'Variables',0
aPanelHeight db 'PanelHeight',0
aPanelWidth db 'PanelWidth',0
aSoftenHeight db 'SoftenHeight',0
aButtonTopOffset db 'ButtonTopOffset',0
aButtonBottomOffset db 'ButtonBottOffset',0
;------------------------------------------------------------------------------
aFlags db 'Flags',0
aSoftenUp db 'SoftenUp',0
aSoftenDown db 'SoftenDown',0
aMinimizeLeftButton db 'MinLeftButton',0
aMinimizeRightButton db 'MinRightButton',0
aMenuButton db 'MenuButton',0
aRunApplButtons db 'RunApplButtons',0
aCleanDesktopButton db 'ClnDesktButton',0
aClock db 'Clock',0
aCpuUsage db 'CpuUsage',0
aChangeLang db 'ChangeLang',0
aPageList db 'PageList',0
aAttachment db 'Attachment',0
aButtonsStyle db 'ButtonsStyle',0
;------------------------------------------------------------------------------
aColors db 'Colors',0
aCpuUsageBckgr db 'CpuUsageBckgr',0
;------------------------------------------------------------------------------
plugins_directory db 0
 
ini_file_name db 'panel.ini',0
 
system_dir_Libini db '/sys/lib/libini.obj',0
 
err_message_found_lib2 db 'libini.obj - Not found!',0
err_message_import2 db 'libini.obj - Wrong import!',0
 
head_f_i:
head_f_l db 'Errors of PLugins:',0
;------------------------------------------------------------------------------
l_libs_start:
 
library02 l_libs system_dir_Libini+9, path, library_path, system_dir_Libini, \
err_message_found_lib2, head_f_l, Libini_import, err_message_import2, head_f_i, plugins_directory
 
end_l_libs:
;------------------------------------------------------------------------------
align 4
Libini_import:
lib_init dd aLib_init
version_lib_ini dd aVersion_lib_ini
ini_enum_sections dd aIni_enum_sections
ini_enum_keys dd aIni_enum_keys
ini_get_str dd aIni_get_str
ini_get_int dd aIni_get_int
ini_get_color dd aIni_get_color
ini_set_str dd aIni_set_str
ini_set_int dd aIni_set_int
ini_set_color dd aIni_set_color
dd 0
dd 0
 
aLib_init db 'lib_init',0
aVersion_lib_ini db 'version',0
aIni_enum_sections db 'ini_enum_sections',0
aIni_enum_keys db 'ini_enum_keys',0
aIni_get_str db 'ini_get_str',0
aIni_get_int db 'ini_get_int',0
aIni_get_color db 'ini_get_color',0
aIni_set_str db 'ini_set_str',0
aIni_set_int db 'ini_set_int',0
aIni_set_color db 'ini_set_color',0
;------------------------------------------------------------------------------
/programs/system/panel/trunk/libini.inc
0,0 → 1,220
;-----------------------------------------------------------------------------
Get_ini:
stdcall dll.Init,[lib_init]
mov ebx,ini_file_name
mov esi,path
mov edi,library_path
call copy_file_path
;------------------------------------------------------------------------------
; Get panel variables
;------------------------------------------------------------------------------
invoke ini_get_int,library_path,aVariables,aPanelHeight,20
cmp eax,100
ja @f
 
cmp eax,10
ja .height
@@:
mov eax,20
.height:
mov [height],eax
;--------------------------------------
invoke ini_get_int,library_path,aVariables,aPanelWidth,0
cmp eax,200
ja @f
 
mov eax,0
@@:
mov [width],eax
;--------------------------------------
invoke ini_get_int,library_path,aVariables,aSoftenHeight,3
cmp eax,10
ja @f
 
cmp eax,1
ja .soften_height
@@:
mov eax,3
.soften_height:
mov [soften_height],eax
;--------------------------------------
invoke ini_get_int,library_path,aVariables,aButtonTopOffset,3
cmp eax,10
ja @f
 
cmp eax,1
ja .button_top_offset
@@:
mov eax,3
.button_top_offset:
mov [button_top_offset],eax
;--------------------------------------
invoke ini_get_int,library_path,aVariables,aButtonBottomOffset,3
cmp eax,10
ja @f
 
cmp eax,1
ja .button_bottom_offset
@@:
mov eax,3
.button_bottom_offset:
mov [button_bottom_offset],eax
;------------------------------------------------------------------------------
; Get panel flags
;------------------------------------------------------------------------------
invoke ini_get_int,library_path,aFlags,aSoftenUp,1
cmp eax,2
jb @f
 
mov eax,1
@@:
mov [soften_up],eax
;--------------------------------------
invoke ini_get_int,library_path,aFlags,aSoftenDown,1
cmp eax,2
jb @f
 
mov eax,1
@@:
mov [soften_down],eax
;--------------------------------------
invoke ini_get_int,library_path,aFlags,aMinimizeLeftButton,1
cmp eax,2
jb @f
 
mov eax,1
@@:
mov [minimize_left],eax
;--------------------------------------
invoke ini_get_int,library_path,aFlags,aMinimizeRightButton,1
cmp eax,2
jb @f
 
mov eax,1
@@:
mov [minimize_right],eax
;--------------------------------------
invoke ini_get_int,library_path,aFlags,aMenuButton,1
cmp eax,2
jb @f
 
mov eax,1
@@:
mov [menu_enable],eax
;--------------------------------------
invoke ini_get_int,library_path,aFlags,aRunApplButtons,1
cmp eax,2
jb @f
 
mov eax,1
@@:
mov [run_appl],eax
;--------------------------------------
invoke ini_get_int,library_path,aFlags,aCleanDesktopButton,1
cmp eax,2
jb @f
 
mov eax,1
@@:
mov [clean_desktop_enable],eax
;--------------------------------------
invoke ini_get_int,library_path,aFlags,aClock,1
cmp eax,2
jb @f
 
mov eax,1
@@:
mov [clock_enable],eax
;--------------------------------------
invoke ini_get_int,library_path,aFlags,aCpuUsage,1
cmp eax,2
jb @f
 
mov eax,1
@@:
mov [cpu_usage_enable],eax
;--------------------------------------
invoke ini_get_int,library_path,aFlags,aChangeLang,1
cmp eax,2
jb @f
 
mov eax,1
@@:
mov [chlang_enable],eax
;--------------------------------------
invoke ini_get_int,library_path,aFlags,aPageList,1
cmp eax,2
jb @f
 
mov eax,1
@@:
mov [page_list_enable],eax
;--------------------------------------
invoke ini_get_int,library_path,aFlags,aAttachment,1
cmp eax,2
jb @f
 
mov eax,1
@@:
mov [place_attachment],eax
;--------------------------------------
invoke ini_get_int,library_path,aFlags,aButtonsStyle,1
cmp eax,2
jb @f
 
mov eax,1
@@:
mov [button_style],eax
;--------------------------------------
invoke ini_get_color,library_path,aColors,aMenuButton,0x44aa44
mov [MenuButton_color],eax
;--------------------------------------
invoke ini_get_color,library_path,aColors,aCleanDesktopButton,0x66cc
mov [CleanDesktopButton_color],eax
;--------------------------------------
invoke ini_get_color,library_path,aColors,aClock,0x66cc
mov [Clock_color],eax
;--------------------------------------
invoke ini_get_color,library_path,aColors,aCpuUsage,0x44aa44
mov [CpuUsage_color],eax
;--------------------------------------
invoke ini_get_color,library_path,aColors,aCpuUsageBckgr,0xdd2222
mov [CpuUsageBckgr_color],eax
;--------------------------------------
invoke ini_get_color,library_path,aColors,aChangeLang,0x66cc
mov [ChangeLang_color],eax
;--------------------------------------
invoke ini_get_color,library_path,aColors,aPageList,0xffffff
mov [PageList_color],eax
;--------------------------------------
; invoke ini_get_str,library_path,aConvertPlugins,aCP0,plugin_0_name,127,ConvertPlugins_no_key
ret
;-----------------------------------------------------------------------------
copy_file_path:
xor eax,eax
@@:
cld
lodsb
stosb
test eax,eax
jnz @b
mov esi,edi
dec esi
@@:
std
lodsb
cmp al,'/'
jnz @b
mov edi,esi
add edi,2
mov esi,ebx
@@:
cld
lodsb
stosb
test eax,eax
jnz @b
ret
;-----------------------------------------------------------------------------
/programs/system/panel/trunk/panel.ini
0,0 → 1,31
[Variables]
PanelHeight=24
PanelWidth=0
SoftenHeight=5
ButtonTopOffset=4
ButtonBottOffset=2
 
[Flags]
SoftenUp=1
SoftenDown=0
MinLeftButton=1
MinRightButton=1
MenuButton=1
RunApplButtons=1
ClnDesktButton=1
Clock=1
CpuUsage=1
ChangeLang=1
PageList=1
Attachment=1
ButtonsStyle=1
 
[Colors]
MenuButton=0,100,0
ClnDesktButton=0,128,255
Clock=0,128,255
CpuUsage=0,100,0
CpuUsageBckgr=255,0,0
ChangeLang=0,128,255
PageList=255,255,255
 
/programs/system/panel/trunk/u_data.inc
0,0 → 1,86
;------------------------------------------------------------------------------
align 4
last_active_window rd 1
prev_active_window rd 1
active_window_changed rd 1
app_tab_count rd 1
 
alt_tab_list_size rd 1
 
panel_x_pos rd 1
panel_y_pos rd 1
 
offset_X rd 1
offset_x_tray rd 1
 
pos_x_clock rd 1
pos_x_cpu_usage rd 1
pos_x_cpu_chlang rd 1
pos_x_page_list rd 1
 
active_slot_number rd 1
 
my_active_slot rd 1
current_active_slot rd 1
 
screen_size:
.height rw 1
.width rw 1
 
draw_flag_certainly rb 1
 
start_menu_flag rb 1
win_key_flag rb 1
 
clean_desktop_minimize rb 1
;------------------------------------------------------------------------------
align 4
system_colours system_colors ; rd 10
;------------------------------------------------------------------------------
align 4
app_list rd 50
;------------------------------------------------------------------------------
align 4
alt_tab_list rd 256*2
;------------------------------------------------------------------------------
align 4
path:
rb 1024
;-----------------------------------------------------------------------------
align 4
library_path:
process_info_buffer:
rb 1024
;------------------------------------------------------------------------------
align 4
procinfo_for_detect:
rb 1024
;------------------------------------------------------------------------------
align 4
procinfo_window_tabs:
rb 1024
;-----------------------------------------------------------------------------
align 4
bootparam:
rb 256
;------------------------------------------------------------------------------
align 4
tictable:
rd 256
;------------------------------------------------------------------------------
;align 4
;panel_ini_data_area:
; rb 61
;------------------------------------------------------------------------------
align 4
rb 256
detect_stack:
;------------------------------------------------------------------------------
align 4
rb 256
ctx_menu_stack:
;------------------------------------------------------------------------------
align 4
rb 1024
stack_top:
;------------------------------------------------------------------------------