1,9 → 1,6 |
|
; END |
; KolibriOS Team 2005-2021 |
|
fade equ 0 |
|
use32 ; ¢ª«îç¨âì 32-¡¨âë© à¥¦¨¬ áᥬ¡«¥à |
org 0x0 ; ¤à¥á æ¨ï á ã«ï |
|
14,7 → 11,7 |
dd I_END ; ª®«¨ç¥á⢮ ¯ ¬ï⨠|
dd stacktop ; ¤à¥á ¢¥àè¨ë á⥪ |
dd 0x0 ; ¤à¥á ¡ãä¥à ¤«ï ¯ à ¬¥â஢ |
dd cur_dir_path |
dd 0x0 |
|
include 'lang.inc' |
include '../../../macros.inc' |
22,47 → 19,29 |
include '../../../dll.inc' |
include '../../../KOSfuncs.inc' |
include '../../../load_lib.mac' |
include '../../../develop/libraries/box_lib/trunk/box_lib.mac' |
include '../../../gui_patterns.inc' |
include "../../../string.inc" |
include '../../../string.inc' |
|
WIN_W equ 440 |
WIN_H equ 200 |
BOT_PANEL_H equ 70 |
|
CANCEL_BUTTON_ID equ 1+BT_HIDE |
HOME_BUTTON_ID equ 2 |
REBOOT_BUTTON_ID equ 3 |
POWEROFF_BUTTON_ID equ 4 |
|
@use_library |
|
|
align 4 |
START: |
mcall SF_SYS_MISC, SSF_HEAP_INIT |
mcall SF_SYS_MISC, SSF_MEM_OPEN, checkbox_sharedname |
mov [checkbox_img], eax |
|
|
load_libraries l_libs_start,end_l_libs |
inc eax |
test eax,eax |
jz close |
|
stdcall [init_checkbox], check1 |
|
stdcall dll.Init,[init_lib] |
|
invoke ini_get_int,ini_file,asettings,aautosave,0 |
mov [autosave],eax |
dec eax |
jnz @f |
bts dword [check1.flags],1 |
@@: |
mcall SF_SET_EVENTS_MASK,0x80000027 |
redraw: |
call draw_window |
still: |
mov al,SF_WAIT_EVENT |
mcall ;wait here for event |
mcall SF_WAIT_EVENT ;wait here for event |
dec eax |
jz redraw |
dec eax |
69,19 → 48,10 |
jz key |
dec eax |
jz button |
|
stdcall [check_box_mouse], check1 |
bt dword [check1.flags],1 |
jnc @f |
mov [autosave],1 |
jmp still |
@@: |
mov [autosave],0 |
jmp still |
|
key: |
mov al,SF_GET_KEY |
mcall ;get key code |
mcall SF_GET_KEY ;get key code |
mov al,ah |
cmp al,13 |
je restart |
121,27 → 91,11 |
push 4 |
|
mcall_and_close: |
if fade=1 |
; === FADE IN === |
mov eax, color1 |
@@: |
mov ebx, [eax + 32] |
mov [eax], ebx |
add eax, 4 |
cmp eax, color21 |
jne @b |
|
call draw_window |
end if |
|
invoke ini_set_int,ini_file,asettings,aautosave,[autosave] |
cmp [autosave],1 |
jne no_save |
|
if fade=0 |
mov al,SF_DRAW_TEXT |
mcall ,<50,120> ,0x800000cc,label7 |
end if |
mcall SF_DRAW_TEXT,<55,108>,0x90FF990A,TEXT_SAVING |
|
mcall SF_FILE,rdsave |
test eax,eax |
168,21 → 122,20 |
ret |
|
checkbox: |
btc dword [check1.flags],1 |
jc .1 |
cmp [autosave],1 |
je .1 |
mov [autosave],1 |
jmp .draw |
.1: |
mov [autosave],0 |
.draw: |
stdcall [check_box_draw], check1 |
call draw_checkbox_flag |
jmp still |
|
draw_window: |
mcall SF_REDRAW,SSF_BEGIN_DRAW |
|
mov al,SF_GET_SCREEN_SIZE |
mcall ;get screen max x & max y |
mcall SF_GET_SCREEN_SIZE |
movzx ecx,ax |
shr eax,17 |
shl eax,16 |
196,66 → 149,80 |
mcall ;define and draw window |
|
DrawWideRectangle 0, 0, WIN_W, WIN_H, 2, 0xA3A7AA |
DrawBar 2, 2, WIN_W-4, WIN_H-BOT_PANEL_H-2, 0x202020 |
DrawBar 2, WIN_H-BOT_PANEL_H-2, WIN_W-4, BOT_PANEL_H, 0x4B4B4B |
WriteText 30, 27, 10010001b, 0xFFFfff, TEXT_TITLE |
WriteText 55, 70, 10010000b, 0xFFFfff, TEXT_RDSAVE1 |
WriteText 55, 86, 10010000b, 0xFFFfff, TEXT_RDSAVE2 |
mcall SF_DRAW_RECT, <2,WIN_W-4>, <2,WIN_H-BOT_PANEL_H-2>, 0x202020 |
mcall SF_DRAW_RECT, <2,WIN_W-4>, <WIN_H-BOT_PANEL_H-2,BOT_PANEL_H>, 0x4B4B4B |
|
DefineButton WIN_W-33, 2, 32, 20, CANCEL_BUTTON_ID, 0 |
WriteText WIN_W-23, 5, 10000001b, 0xFFFfff, TEXT_CANCEL |
mcall SF_DRAW_TEXT, <30,27>, 0x91FFFfff, TEXT_WTITLE |
mcall SF_DRAW_TEXT, <55,70>, 0x90FFFfff, TEXT_RDSAVE1 |
mcall SF_DRAW_TEXT, <55,86>, 0x90FFFfff, TEXT_RDSAVE2 |
mcall SF_DRAW_TEXT, <WIN_W-23,5>, 0x81FFFfff, TEXT_CANCEL |
|
stdcall [check_box_draw], check1 |
mcall SF_DEFINE_BUTTON, <WIN_W-35,32>, <2,22>, CANCEL_BUTTON_ID |
mcall SF_DEFINE_BUTTON, <32,14>, <70,14>, CHECKBOX_BUTTON_ID |
mcall SF_DEFINE_BUTTON, <47,WIN_W-47>, <68,34>, CHECKBOX_BUTTON_ID+BT_NOFRAME |
;DefineButton WIN_W-33, 2, 32, 20, CANCEL_BUTTON_ID, 0 |
;DefineButton 32, 70, 14, 14, CHECKBOX_BUTTON_ID, 0 |
;DefineButton 47, 68, WIN_W-47, 34, CHECKBOX_BUTTON_ID+BT_NOFRAME, 0 |
DrawRectangle3D 32, 70, 14, 14, 0x606060, 0xAFAFAF |
call draw_checkbox_flag |
|
macro EndButton x, bgcol, id, but_text, hotkey_text |
{ |
buty equ WIN_H-60 |
butw equ 116 |
buth equ 43 |
DrawWideRectangle x-3, buty-3, butw+6, buth+6, 3, 0x202020 |
DefineButton x, buty, butw-1, buth-1, id, bgcol |
; WriteTextBold -strlen(but_text)*8 + butw / 2 + x, buty+8, 10010000b, 0xFFFfff, but_text |
; WriteText -strlen(but_text)*6 + butw / 2 + x, buty+26, 10000000b, 0xFFFfff, hotkey_text |
stdcall string.length, but_text |
mov ebx,eax |
imul ebx,4 |
neg ebx |
add ebx,butw / 2 + x |
shl ebx,16 |
add ebx,buty+8 |
mcall SF_DRAW_TEXT, , 10010000b shl 24 + 0xFFFfff, but_text |
stdcall EndButton, 20, 0x4E91C5, HOME_BUTTON_ID, TEXT_KERNEL, TEXT_HOME |
stdcall EndButton, 160, 0x55C891, REBOOT_BUTTON_ID, TEXT_REBOOT, TEXT_ENTER |
stdcall EndButton, 300, 0xC75C54, POWEROFF_BUTTON_ID, TEXT_OFF, TEXT_END |
|
mcall SF_REDRAW,SSF_END_DRAW |
ret |
|
proc EndButton x, bgcol, id, but_text, hotkey_text |
BUTY = WIN_H-60 |
BUTW = 116 |
mov ebx,[x] |
sub ebx,3 |
mcall SF_DRAW_RECT, <ebx,BUTW+6>, <BUTY-3,43+6>, 0x202020 |
mcall SF_DEFINE_BUTTON, <[x],BUTW>, <BUTY,43-1>, [id], [bgcol] |
; -strlen(but_text)*8 + BUTW / 2 + x, BUTY+8 |
stdcall string.length, [but_text] |
neg eax |
lea ebx,[eax*4+BUTW/2] |
add ebx,[x] |
mcall SF_DRAW_TEXT, <ebx,BUTY+8>, 0x90FFFfff, [but_text] |
add ebx,1 shl 16 |
mcall |
stdcall string.length, hotkey_text |
mov ebx,eax |
imul ebx,3 |
neg ebx |
add ebx,butw / 2 + x |
stdcall string.length, [hotkey_text] |
neg eax |
lea ebx,[eax*3+BUTW/2] |
add ebx,[x] |
shl ebx,16 |
add ebx,buty+26 |
mcall SF_DRAW_TEXT, , 10000000b shl 24 + 0xFFFfff, hotkey_text |
} |
add ebx,BUTY+26 |
mcall SF_DRAW_TEXT, , 0x80FFFfff, [hotkey_text] |
ret |
endp |
|
EndButton 20, 0x4E91C5, HOME_BUTTON_ID, TEXT_KERNEL, TEXT_HOME |
EndButton 160, 0x55C891, REBOOT_BUTTON_ID, TEXT_REBOOT, TEXT_ENTER |
EndButton 300, 0xC75C54, POWEROFF_BUTTON_ID, TEXT_OFF, TEXT_END |
|
mov al,SF_REDRAW |
mcall ,SSF_END_DRAW |
draw_checkbox_flag: |
cmp [autosave],0 |
je .flag_unset |
cmp [checkbox_img],0 |
je .flag_set_but_no_checkbox_img |
.flag_set: |
mcall SF_PUT_IMAGE, [checkbox_img], <13,13>, <33,71> |
ret |
.flag_set_but_no_checkbox_img: |
mcall SF_DRAW_RECT, <33,13>, <71,13>, 0xffffff |
mcall SF_DRAW_RECT, <34,11>, <72,11>, 0x58C33C |
ret |
.flag_unset: |
DrawRectangle3D 33, 71, 12, 12, 0xDDDddd, 0xffffff |
mcall SF_DRAW_RECT, <34,12>, <72,12>, 0xFFFfff |
ret |
;--------------------------------------------------------------------- |
;data |
include 'data.inc' |
;--------------------------------------------------------------------- |
IM_END: |
;--------------------------------------------------------------------- |
align 4 |
|
proc_info rb 1024 |
|
autosave rd 1 |
;--------------------------------------------------------------------- |
cur_dir_path rb 4096 |
library_path rb 4096 |
;--------------------------------------------------------------------- |
align 32 |