forked from KolibriOS/kolibrios
386 lines
9.3 KiB
PHP
386 lines
9.3 KiB
PHP
|
;---------------------------------------------------------------------
|
||
|
k_option:
|
||
|
test dword [status],64
|
||
|
jnz still
|
||
|
or dword [status],64
|
||
|
|
||
|
call get_memory_for_tread_stack
|
||
|
mov [thread_stack_7],eax
|
||
|
mcall 51,1,thread7 ;,thread_stack_7
|
||
|
jmp still
|
||
|
;---------------------------------------------------------------------
|
||
|
get_memory_for_tread_stack:
|
||
|
mcall 68,12,4096
|
||
|
mov edx,eax
|
||
|
add edx,4096
|
||
|
ret
|
||
|
;---------------------------------------------------------------------
|
||
|
thread7: ; start of bgrd thread
|
||
|
mcall 9, procinfo_threads, -1
|
||
|
mov eax,[ebx+30]
|
||
|
mov [PID7],eax
|
||
|
mcall 40, 0x27
|
||
|
mov eax,[slide_show_delay]
|
||
|
mov [slide_show_delay_old],eax
|
||
|
mov eax,[arrows_offset]
|
||
|
mov [arrows_offset_old],eax
|
||
|
mov eax,[check1+32]
|
||
|
mov [show_file_name_old],eax
|
||
|
mov eax,[check2+32]
|
||
|
mov [filtering_flag_old],eax
|
||
|
xor eax,eax
|
||
|
mov [option_pointer],eax
|
||
|
call .set_pointers
|
||
|
.red:
|
||
|
call .draw_window
|
||
|
|
||
|
.still:
|
||
|
|
||
|
mov eax,10 ; wait here for event
|
||
|
mcall
|
||
|
|
||
|
cmp eax,1 ; redraw request ?
|
||
|
je .red
|
||
|
cmp eax,2 ; key in buffer ?
|
||
|
je .key
|
||
|
cmp eax,3 ; button in buffer ?
|
||
|
je .button
|
||
|
cmp eax,6 ; mouse in buffer ?
|
||
|
je .mouse
|
||
|
jmp .still
|
||
|
|
||
|
.mouse:
|
||
|
mov ebx,[check1+32]
|
||
|
and ebx,10b
|
||
|
push dword check1
|
||
|
call [check_box_mouse]
|
||
|
mov eax,[check1+32]
|
||
|
and eax,10b
|
||
|
cmp ebx,eax
|
||
|
je @f ;.still
|
||
|
mov [option_pointer],2
|
||
|
call .set_pointers
|
||
|
call .draw_all_options_values
|
||
|
jmp .still
|
||
|
@@:
|
||
|
mov ebx,[check2+32]
|
||
|
and ebx,10b
|
||
|
push dword check2
|
||
|
call [check_box_mouse]
|
||
|
mov eax,[check2+32]
|
||
|
and eax,10b
|
||
|
cmp ebx,eax
|
||
|
je .still
|
||
|
mov [option_pointer],3
|
||
|
call .set_pointers
|
||
|
call .draw_all_options_values
|
||
|
jmp .still
|
||
|
;---------------------------------------------------------------------
|
||
|
.key:
|
||
|
mcall
|
||
|
cmp ah,27
|
||
|
je .close
|
||
|
cmp ah,13
|
||
|
je .kok
|
||
|
cmp ah,32
|
||
|
je .select_space
|
||
|
cmp ah,56 ;plus
|
||
|
je .select_plus ;.plus_slide_show_delay
|
||
|
cmp ah,43 ;plus
|
||
|
je .select_plus ;.plus_slide_show_delay
|
||
|
cmp ah,61 ;plus
|
||
|
je .select_plus ;.plus_slide_show_delay
|
||
|
cmp ah,54 ;minus
|
||
|
je .select_minus ;.minus_slide_show_delay
|
||
|
cmp ah,45 ;minus
|
||
|
je .select_minus ;.minus_slide_show_delay
|
||
|
cmp ah,95 ;minus
|
||
|
je .select_minus ;.minus_slide_show_delay
|
||
|
cmp ah,178 ;up arrow
|
||
|
je .up_arrow
|
||
|
cmp ah,177 ;down arrow
|
||
|
je .down_arrow
|
||
|
jmp .still
|
||
|
;---------------------------------------------------------------------
|
||
|
.button: ; button
|
||
|
mov eax,17 ; get id
|
||
|
mcall
|
||
|
|
||
|
cmp ah,5
|
||
|
je .minus_arrows_offset
|
||
|
|
||
|
cmp ah,4
|
||
|
je .plus_arrows_offset
|
||
|
|
||
|
cmp ah,3
|
||
|
je .minus_slide_show_delay
|
||
|
|
||
|
cmp ah,2
|
||
|
je .plus_slide_show_delay
|
||
|
|
||
|
cmp ah,1 ; button id=1 ?
|
||
|
jne .noclose
|
||
|
.close:
|
||
|
mov eax,[slide_show_delay_old]
|
||
|
mov [slide_show_delay],eax
|
||
|
mov eax,[arrows_offset_old]
|
||
|
mov [arrows_offset],eax
|
||
|
mov eax,[show_file_name_old]
|
||
|
mov [check1+32],eax
|
||
|
mov eax,[filtering_flag_old]
|
||
|
mov [check2+32],eax
|
||
|
jmp .close_all
|
||
|
.close_1:
|
||
|
mov eax,[check2+32]
|
||
|
test eax,10b
|
||
|
jz @f
|
||
|
mov [filtering_flag],1
|
||
|
jmp .redraw_flag
|
||
|
@@:
|
||
|
mov [filtering_flag],0
|
||
|
.redraw_flag:
|
||
|
mov [redraw_flag],byte 1
|
||
|
.close_all:
|
||
|
xor dword [status],64
|
||
|
xor eax,eax
|
||
|
mov [PID7],eax
|
||
|
|
||
|
mcall 68,13,[thread_stack_7]
|
||
|
|
||
|
mov eax,-1 ; close this program
|
||
|
mcall
|
||
|
.noclose:
|
||
|
|
||
|
.kok:
|
||
|
|
||
|
jmp .close_1
|
||
|
;---------------------------------------------------------------------
|
||
|
.select_plus:
|
||
|
jmp [plus_pointer]
|
||
|
;---------------------------------------------------------------------
|
||
|
.select_minus:
|
||
|
jmp [minus_pointer]
|
||
|
;---------------------------------------------------------------------
|
||
|
.select_space:
|
||
|
jmp [space_pointer]
|
||
|
;---------------------------------------------------------------------
|
||
|
.plus_slide_show_delay:
|
||
|
cmp [option_pointer],0
|
||
|
je @f
|
||
|
mov [option_pointer],0
|
||
|
call .draw_all_options_values
|
||
|
@@:
|
||
|
cmp [slide_show_delay],99990
|
||
|
je .still
|
||
|
add [slide_show_delay],10
|
||
|
call .draw_slide_show_delay
|
||
|
jmp .still
|
||
|
;---------------------------------------------------------------------
|
||
|
.minus_slide_show_delay:
|
||
|
cmp [option_pointer],0
|
||
|
je @f
|
||
|
mov [option_pointer],0
|
||
|
call .draw_all_options_values
|
||
|
@@:
|
||
|
cmp [slide_show_delay],0
|
||
|
je .still
|
||
|
sub [slide_show_delay],10
|
||
|
call .draw_slide_show_delay
|
||
|
jmp .still
|
||
|
;---------------------------------------------------------------------
|
||
|
.plus_arrows_offset:
|
||
|
cmp [option_pointer],1
|
||
|
je @f
|
||
|
mov [option_pointer],1
|
||
|
call .draw_all_options_values
|
||
|
@@:
|
||
|
cmp [arrows_offset],100
|
||
|
je .still
|
||
|
inc [arrows_offset]
|
||
|
call .draw_arrows_offset
|
||
|
call calculate_arrows_offset
|
||
|
jmp .still
|
||
|
;---------------------------------------------------------------------
|
||
|
.minus_arrows_offset:
|
||
|
cmp [option_pointer],1
|
||
|
je @f
|
||
|
mov [option_pointer],1
|
||
|
call .draw_all_options_values
|
||
|
@@:
|
||
|
cmp [arrows_offset],1
|
||
|
je .still
|
||
|
dec [arrows_offset]
|
||
|
call .draw_arrows_offset
|
||
|
call calculate_arrows_offset
|
||
|
jmp .still
|
||
|
;---------------------------------------------------------------------
|
||
|
.space_check1:
|
||
|
test [check1+32],dword 10b
|
||
|
jnz @f
|
||
|
or [check1+32],dword 10b
|
||
|
jmp .space_check1_1
|
||
|
@@:
|
||
|
xor [check1+32],dword 10b
|
||
|
.space_check1_1:
|
||
|
call .draw_all_options_values
|
||
|
jmp .still
|
||
|
;---------------------------------------------------------------------
|
||
|
.space_check2:
|
||
|
test [check2+32],dword 10b
|
||
|
jnz @f
|
||
|
or [check2+32],dword 10b
|
||
|
jmp .space_check2_1
|
||
|
@@:
|
||
|
xor [check2+32],dword 10b
|
||
|
.space_check2_1:
|
||
|
call .draw_all_options_values
|
||
|
jmp .still
|
||
|
;---------------------------------------------------------------------
|
||
|
.down_arrow:
|
||
|
cmp [option_pointer],3
|
||
|
je .still
|
||
|
inc [option_pointer]
|
||
|
.draw_all_points:
|
||
|
call .set_pointers
|
||
|
call .draw_all_options_values
|
||
|
jmp .still
|
||
|
;---------------------------------------------------------------------
|
||
|
.up_arrow:
|
||
|
cmp [option_pointer],0
|
||
|
je .still
|
||
|
dec [option_pointer]
|
||
|
jmp .draw_all_points
|
||
|
;---------------------------------------------------------------------
|
||
|
.set_pointers:
|
||
|
cmp [option_pointer],0
|
||
|
jne @f
|
||
|
mov [plus_pointer],thread7.plus_slide_show_delay
|
||
|
mov [minus_pointer],thread7.minus_slide_show_delay
|
||
|
mov [space_pointer],thread7.still
|
||
|
ret
|
||
|
@@:
|
||
|
cmp [option_pointer],1
|
||
|
jne @f
|
||
|
mov [plus_pointer],thread7.plus_arrows_offset
|
||
|
mov [minus_pointer],thread7.minus_arrows_offset
|
||
|
mov [space_pointer],thread7.still
|
||
|
ret
|
||
|
@@:
|
||
|
cmp [option_pointer],2
|
||
|
jne @f
|
||
|
mov [plus_pointer],thread7.still
|
||
|
mov [minus_pointer],thread7.still
|
||
|
mov [space_pointer],thread7.space_check1
|
||
|
ret
|
||
|
@@:
|
||
|
mov [plus_pointer],thread7.still
|
||
|
mov [minus_pointer],thread7.still
|
||
|
mov [space_pointer],thread7.space_check2
|
||
|
ret
|
||
|
;---------------------------------------------------------------------
|
||
|
.draw_all_options_values:
|
||
|
call .draw_slide_show_delay
|
||
|
call .draw_arrows_offset
|
||
|
call .draw_check1
|
||
|
call .draw_check2
|
||
|
ret
|
||
|
;---------------------------------------------------------------------
|
||
|
; *********************************************
|
||
|
; ******* WINDOW DEFINITIONS AND DRAW ********
|
||
|
; *********************************************
|
||
|
|
||
|
|
||
|
.draw_window:
|
||
|
mcall 12,1
|
||
|
; DRAW WINDOW
|
||
|
xor eax,eax ; function 0 : define and draw window
|
||
|
mov ebx,100*65536+300 ; [x start] *65536 + [x size]
|
||
|
mov ecx,100*65536+120 ; [y start] *65536 + [y size]
|
||
|
mov edx,0x03909090 ; color of work area RRGGBB,8->color gl
|
||
|
mcall
|
||
|
|
||
|
mcall 8,<15,10>,<50,11>,2,0xdddddd
|
||
|
inc edx
|
||
|
mcall ,<77,10>
|
||
|
;---------------------------------
|
||
|
inc edx
|
||
|
mcall ,<15,10>,<90,11>
|
||
|
inc edx
|
||
|
mcall ,<77,10>
|
||
|
;---------------------------------
|
||
|
inc edx
|
||
|
mcall ,<250,40>,<50,20>
|
||
|
;---------------------------------
|
||
|
|
||
|
; mcall 13,<50,45>,<25,12>,0xffffff
|
||
|
; mov ecx,[ch_flag_en]
|
||
|
; mcall 47,0x800a0000,,<72,27>,0x10000000; 0x40000000,0xffffff
|
||
|
; WINDOW LABEL
|
||
|
mcall 71,1, optiontext
|
||
|
|
||
|
; mov eax,4 ; function 4 : write text to window
|
||
|
; mov ebx,46*65536+28 ; [x start] *65536 + [y start]
|
||
|
; mov ecx,0xffffff
|
||
|
; mov edx, sorttext
|
||
|
; mov esi, sorttext.size
|
||
|
; mcall
|
||
|
; mov ebx,135*65536+57
|
||
|
; mov edx, ok_btn
|
||
|
; mov esi, ok_btn.size ;2
|
||
|
mcall 4,<10,35>,0x80ffffff,slide_show_delay_title
|
||
|
mcall ,<17,53>,0x90000000,slide_show_delay_text
|
||
|
mcall ,<10,75>,0x80ffffff,arrows_offset_title
|
||
|
mcall ,<17,93>,0x90000000,slide_show_delay_text
|
||
|
mcall ,<265,57>, ,ok_btn
|
||
|
|
||
|
call .draw_all_options_values
|
||
|
|
||
|
; mcall 47,0x80000,[PID5],<200, 5>,0xffffff
|
||
|
mcall 12,2
|
||
|
|
||
|
ret
|
||
|
;---------------------------------------------------------------------
|
||
|
;.draw_opt_boxes:
|
||
|
; draw_option_boxes option_boxes_sort,option_boxes_sort_end
|
||
|
; ret
|
||
|
;---------------------------------------------------------------------
|
||
|
.draw_slide_show_delay:
|
||
|
mov edx,0xffffff
|
||
|
cmp [option_pointer],0
|
||
|
jne @f
|
||
|
mov edx,0xffff80
|
||
|
@@:
|
||
|
mcall 13,<29,45>,<50,12>,
|
||
|
mcall 47,0x800a0000,[slide_show_delay],<32,52>,0x10000000; 0x40000000,0xffffff
|
||
|
ret
|
||
|
;---------------------------------------------------------------------
|
||
|
.draw_arrows_offset:
|
||
|
mov edx,0xffffff
|
||
|
cmp [option_pointer],1
|
||
|
jne @f
|
||
|
mov edx,0xffff80
|
||
|
@@:
|
||
|
mcall 13,<29,45>,<90,12>,
|
||
|
mcall 47,0x800a0000,[arrows_offset],<32,92>,0x10000000; 0x40000000,0xffffff
|
||
|
ret
|
||
|
;---------------------------------------------------------------------
|
||
|
.draw_check1:
|
||
|
mov [check1+12],dword 0xffffff
|
||
|
cmp [option_pointer],2
|
||
|
jne @f
|
||
|
mov [check1+12],dword 0xffff80
|
||
|
@@:
|
||
|
push dword check1
|
||
|
call [check_box_draw]
|
||
|
ret
|
||
|
;---------------------------------------------------------------------
|
||
|
.draw_check2:
|
||
|
mov [check2+12],dword 0xffffff
|
||
|
cmp [option_pointer],3
|
||
|
jne @f
|
||
|
mov [check2+12],dword 0xffff80
|
||
|
@@:
|
||
|
push dword check2
|
||
|
call [check_box_draw]
|
||
|
ret
|
||
|
;---------------------------------------------------------------------
|