old version 'check_box' deleted from 'box_lib.obj'

git-svn-id: svn://kolibrios.org@3178 a494cfbc-eb01-0410-851d-a64ba20cac60
This commit is contained in:
IgorA 2013-01-17 19:25:01 +00:00
parent 881d6e5933
commit 0e11f72f02
6 changed files with 53 additions and 232 deletions

View File

@ -1,5 +1,4 @@
include 'editbox.mac' ;macro which should make life easier :) specially for editbox
include 'checkbox.mac' ;macro implements checkbox old version
include 'checkbox2.mac' ;macro implements checkbox version 2
include 'optionbox.mac' ;macro implements optionbox
include 'scrollbar.mac' ;macro implements scrollbar

View File

@ -36,14 +36,6 @@ use_editbox_key ;macro reveals processing function of the keypad.
align 16
use_editbox_mouse ;macro reveals processing function of the mouse.
;----------------------------------------------------
;CheckBox old version
;----------------------------------------------------
align 16
use_checkbox_draw ;macro reveals the function of the display.
align 16
use_checkbox_mouse ;macro reveals processing function of the mouse.
;----------------------------------------------------
;CheckBox2
;----------------------------------------------------
@ -248,16 +240,11 @@ dd sz_edit_box_mouse, edit_box_mouse
dd sz_edit_box_set_text, edit_box_set_text
dd szVersion_ed, 0x00000001
dd sz_check_box_draw, check_box_draw
dd sz_check_box_mouse, check_box_mouse
dd szVersion_ch, 0x00000001
dd sz_init_checkbox2, init_checkbox2
dd sz_check_box_draw2, check_box_draw2
dd sz_check_box_mouse2, check_box_mouse2
dd szVersion_ch2, 0x00000002
dd sz_option_box_draw, option_box_draw
dd sz_option_box_mouse, option_box_mouse
dd szVersion_op, 0x00000001
@ -352,10 +339,6 @@ sz_edit_box_mouse db 'edit_box_mouse',0
sz_edit_box_set_text db 'edit_box_set_text',0
szVersion_ed db 'version_ed',0
sz_check_box_draw db 'check_box_draw',0
sz_check_box_mouse db 'check_box_mouse',0
szVersion_ch db 'version_ch',0
sz_init_checkbox2 db 'init_checkbox2',0
sz_check_box_draw2 db 'check_box_draw2',0
sz_check_box_mouse2 db 'check_box_mouse2',0

View File

@ -104,58 +104,19 @@ macro edit_boxes_set_sys_color start,end,color_table
add edi,ed_struc_size
loop @b
}
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;Basic macros for use CheckBox ;
;Last change 17.01.2013 ;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
ch_struc_size=36
ch_flag_en=10b ;í«¥¬¥­â ¢ë¡à ­
ch_left equ [edi] ;ª®®à¤¨­ â  ­ ç «  à¨á®¢ ­¨ï ¯® å
ch_top equ [edi+2] ;ª®®à¤¨­ â  ­ ç «  à¨á®¢ ­¨ï ¯® ã
ch_text_margin equ [edi+4] ;=4 à ááâ®ï­¨¥ ®â ¯àאַ㣮«ì­¨ª  祪 ¡®ªá  ¤® ­ ¤¯¨á¨
ch_size equ [edi+8] ;12 à §¬¥à ª¢ ¤à â  祪 ¡®ªá 
ch_text_margin equ [edi+8] ;=4 à ááâ®ï­¨¥ ®â ¯àאַ㣮«ì­¨ª  祪 ¡®ªá  ¤® ­ ¤¯¨á¨
ch_color equ [edi+12] ;梥⠢­ãâਠcheckbox
ch_border_color equ [edi+16] ; or [edi+4] ;梥â à ¬ª¨ checkbox ¥¥ ¬®¦­® § ¤ âì á ¬®áâ®ï⥫쭮
ch_text_color equ [edi+20] ;[edi+4] ;梥â ⥪áâ 
ch_text_ptr equ [edi+24] ;㪠§ â¥«ì ­  ­ ç «® ⥪á⮢®© áâப¨
ch_text_length equ [edi+28]
ch_flags equ [edi+32] ;ä« £¨
ch_flags equ [edi+28] ;ä« £¨
struc check_box left,top,ch_text_margin,ch_size,color,border_color,text_color,text,ch_text_length,flags
{ ;áâàãªâãà  ¯ à ¬¥â஢ ¤«ï 祪 ¡®ªá 
.left: dw left ;+0 ¯®«®¦¥­¨¥ ¯® å
.top: dw top ;+2 ¯®«®¦¥­¨¥ ¯® ã
.ch_text_margin: dd ch_text_margin ;à ááâ®ï­¨¥ ®â ¯àאַ㣮«ì­¨ª  祪 ¡®ªá  ¤® ­ ¤¯¨á¨
.ch_size: dd ch_size ;à §¬¥à ª¢ ¤à â  祪 ¡®ªá , ¤«ï ¯à¨¬¥à  12
.color: dd color ;梥⠢­ãâਠ祪¡®ªá 
.border_color: dd border_color ;梥â à ¬ª¨
.text_color: dd text_color ;梥⠭ ¤¯¨á¨
.text: dd text ; ¤à¥á ¢ ª®¤¥ ¯à®£à ¬¬ë £¤¥ à á¯®«®¦¥­ ⥪áâ
.ch_text_length: dd ch_text_length ;¤«¨­­  áâப¨ á ᨬ¢®« ¬¨
.flags: dd flags+0 ; ä« £¨
}
macro check_boxes_set_sys_color start,end,color_table
{
mov edi,start
mov ecx,((end-start)/ch_struc_size)
mov esi,color_table
@@:
; push dword [esi+20] ;梥â à ¡®ç¥© ®¡« á⨠®ª­ 
; pop dword ch_color
push dword [esi+32] ;梥â ⥪áâ  ¢ à ¡®ç¥© ®¡« á⨠®ª­ 
pop dword ch_text_color
push dword [esi+36] ;梥⠣à ä¨ª¨ ¢ ®ª­¥ (à §¤¥«¨â¥«ì­ë¥ «¨­¨¨ ¨ â.¯.)
pop dword ch_border_color
add edi,ch_struc_size
loop @b
}
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;Basic macros for use CheckBox ;
;Last change 12.10.2010 ;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
ch_struc_size=36 ;à §¬¥à áâàãªâãàë
ch_flag_en=10b ;ä« £ ãáâ ­®¢«¥­­®£® 祪 ¡®ªá .
ch_flag_top=0x0 ;ä« £ à á¯®«®¦¥­¨ï ⥪áâ  ¢¢¥àåã â.¥. 3-© ¡¨â
@ -186,39 +147,60 @@ struc check_box2 left_s,top_s,ch_text_margin,color,border_color,text_color,text,
}
;Œ ªà®á ¯à®¢¥àª¨ 饫窠 ¬ë誨 ­ ¤ £à㯯®© checkboxes.
macro init_checkboxes2 start,end
macro init_checkboxes2 start,end_cb
{
if start+ch_struc_size eq end_cb
;ª®£¤  ®¤¨­ í«¥¬¥­â
push start ;㪠§ â¥«ì ­  checkbox
call [init_checkbox] ;­ áâனª  checkbox' 
else
;ª®£¤  ­¥áª®«ìª® í«¥¬¥­â®¢
mov ebp,start
mov ecx,((end-start)/ch_struc_size)
mov ecx,((end_cb-start)/ch_struc_size)
@@:
push ebp ;㪠§ â¥«ì ­  ¯¥à¢ë© checkbox
call [init_checkbox] ;¬ ªà®á ¯à®¢¥àª¨ ¬ë誨 ­ ¤ checkbox'®¬
call [init_checkbox] ;­ áâனª  checkbox'®¢
add ebp,ch_struc_size
loop @b
end if
}
;Œ ªà®á ¯à®¢¥àª¨ ¬ë誨 £à㯯ë checkboxes.
macro checkboxes_mouse2 start,end
macro checkboxes_mouse2 start,end_cb
{
if start+ch_struc_size eq end_cb
;ª®£¤  ®¤¨­ í«¥¬¥­â
push start ;㪠§ â¥«ì ­  checkbox
call [check_box_mouse] ;¬ ªà®á ¯à®¢¥àª¨ ¬ë誨 ­ ¤ checkbox'®¬
else
;ª®£¤  ­¥áª®«ìª® í«¥¬¥­â®¢
mov ebp,start
mov ecx,((end-start)/ch_struc_size)
mov ecx,((end_cb-start)/ch_struc_size)
@@:
push ebp ;㪠§ â¥«ì ­  ¯¥à¢ë© checkbox
call [check_box_mouse] ;­ à¨á®¢ âì checkbox
call [check_box_mouse] ;¬ ªà®á ¯à®¢¥àª¨ ¬ë誨 ­ ¤ checkbox' ¬¨
add ebp,ch_struc_size
loop @b
end if
}
;Œ ªà®á ®âà¨á®¢ª¨ £à㯯ë checkboxes.
macro checkboxes_draw2 start,end
macro checkboxes_draw2 start,end_cb
{
if start+ch_struc_size eq end_cb
;ª®£¤  ®¤¨­ í«¥¬¥­â
push start ;㪠§ â¥«ì ­  checkbox
call [check_box_draw] ;­ à¨á®¢ âì checkbox
else
;ª®£¤  ­¥áª®«ìª® í«¥¬¥­â®¢
mov ebp,start
mov ecx,((end-start)/ch_struc_size)
mov ecx,((end_cb-start)/ch_struc_size)
@@:
push ebp ;㪠§ â¥«ì ­  ¯¥à¢ë© checkbox
call [check_box_draw] ;­ à¨á®¢ âì checkbox
call [check_box_draw] ;­ à¨á®¢ âì checkbox
add ebp,ch_struc_size
loop @b
end if
}
macro check_boxes_set_sys_color2 start,end,color_table

View File

@ -1,142 +0,0 @@
;файл создан 13.02.2009 <Lrz> На код применена GPL2 лицензия
;Макрос для системной библиотеки box_lib.obj
;Checkbox
macro use_checkbox_draw
{
check_box_draw:
pusha ;сохраним все регистры
mov edi,dword [esp+36]
mov eax,13
movzx ebx,word ch_left
shl ebx,16
add ebx,ch_size
mov ecx,ch_top
shl ecx,16
add ecx,dword ch_size
mov edx,dword ch_border_color
mcall ;рисуем рамку
mov edx,dword ch_color
add ebx,1 shl 16 - 2
add ecx,1 shl 16 - 2
mcall ;закрашиваем внутренности чекбокса
test dword ch_flags,2 ;достать значение бита из переменной и поместить в флаг CF
jz @f ;в если CF=1, то выполним следующую процедуру иначе перейти на нижнюю @@
call check_box_draw_ch ;нарисовать включенный чек бокс
@@:
;----------------------------
;расчет куда будет произведен вывод текста
;----------------------------
movzx ebx,word ch_left ;загрузить значение х для чек бокса
add ebx,dword ch_size
add ebx,dword ch_text_margin;добавить размер стороны и расстояние на котором начнется вывод текста
shl ebx,16 ;сдвинем на 16 разрядов в лево (умножим на 65536)
mov bx,word ch_top ;загрузим значение по y
mov eax,ch_size
shr eax,1
add eax,4
add ebx,eax
mov ecx,dword ch_text_color ;загрузим цвет надписи + flags
sub ebx,7 ;добавим значение длины стороны -9+2
mov edx,dword ch_text_ptr ;укажем адрес от куда нужно выводить строку
mov esi,dword ch_text_length
;внесем в eax значение вывода надписи на канву
mov eax,4
mcall ;Вывод
popa ;восстановить значения регистров из стека
ret 4 ;выйдем из процедуры
check_box_clear_ch: ;очистка чек бокса
mov edx,dword ch_color ;цвет внутри чек бокса
jmp @f ;безусловный прыжок на нижнюю метку @@
check_box_draw_ch: ;нарисовать включенный чек бокс
mov edx,dword ch_border_color ;загрузить цвет
@@:
movzx ebx,word ch_left ;загрузить координату по х
mov eax,dword ch_size
mov bp,ax
shr eax,2
push ax
push ax
add ebx,eax
shl ebx,16 ;сдвинем на 16 разрядов в лево (умножим на 65536)
pop ax
lea eax,[eax*2]
sub bp,ax ;сохраним регистр bx в регистре указателя базы
mov bx,bp
movzx ecx,word ch_top ;загрузить координату по у
pop ax
add cx,ax
shl ecx,16 ;сдвинем на 16 разрядов в лево (умножим на 65536)
mov cx,bp ;загрузим значения регистра указателя базы в cx
mov eax,13 ;в eax - значения функции для вывода полосы т.е. по сути прямоугольника, который отображает включенный компонент чек бокс
mcall ;вывод
ret ;выйти из процедуры
}
macro use_checkbox_mouse
{
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;Обработчик mouse
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
check_box_mouse: ;обработка мыши
pusha
mov edi,dword [esp+36]
mov eax,37 ;будем что то делать если у нас что - нить нажато
mov ebx,2 ;внести в регистр значение 2
mcall ;проверка не нажал ли пользователь кнопку мышки
test eax,eax ;проверка если у нас в eax=0, то установим флаг и выйдем
jnz @f ;перейти на нижнюю метку @@
btr dword ch_flags,2 ;извлечение значения заданного бита в флаг cf и изменение его значения на нулевое.
jmp check_box_mouse_end
@@:
bts dword ch_flags,2 ;проверка флага т.е. перенос в cf значение бита и установка бита в состояние включено
jc check_box_mouse_end ;если CF=1 то перейти в конец т.е. это выход
mov esi,dword ch_text_length ;загрузить кол-во символов в текстовой строке
;Умножение на 6 Быстрое умножение можно воспользоваться любым мз методов, но на старых Процессорах (386,486,P1)быстрее будет с инструкцией Lea
lea esi,[eax*3]
shl esi,1
; imul esi,6 ; или можно и так умножить на 6
add esi,dword ch_text_margin ;добавить 3 - расстояние от чек бокса до надписи
mov eax,37 ;получим координаты мышки
mov ebx,1 ;добавить 1
mcall ;получить координаты курсора относительно окна
movzx ebx,word ch_top ;загрузить в bx значение координаты у
cmp ax,bx ;сравнить с с координатой курсора
jl check_box_mouse_end ;SF <> OF если меньше
add ebx,dword ch_size ;добавить размер
cmp ax,bx ;сравнить
jg check_box_mouse_end ;ZF = 0 и SF = OF если больше
shr eax,16 ;разделим на 65536 или просто сдвинем биты на 16 значений
movzx ebx,word ch_left ;произведем аналогичное сравнение
cmp ax,bx ;сравнить регистры
jl check_box_mouse_end ;если меньше
add ebx,dword ch_size ;добавить длину стороны прямоугольника
add ebx,esi ;Учесть в значении по х еще и длину надписи к чекбоксу
cmp ax,bx ;стравнить регистры
jg check_box_mouse_end ;если больше
bts dword ch_flags,1 ;извлечение значения заданного бита в флаг cf и изменение его значения на 1.
jc @f ;CF=1 то перейти на нижнюю @@
call check_box_draw_ch ;отобразить включенный чек бокс
; mov dword [esp+24],1 ;дальнейшая проверка чек боксов бесмыслена, по этому в стек, где располагается ecx поместитм 0
jmp check_box_mouse_end ;выйти
@@:
btr word ch_flags,1 ;извлечение значения заданного бита в флаг cf и изменение его значения на нулевое.
call check_box_clear_ch ;выключить чек бокс т.е. на месте закрашенного прямоугольника отобразить цвет фона.
check_box_mouse_end:
popa ;восстановить регистры из стека
ret 4 ;выйти
}

View File

@ -61,8 +61,9 @@ load_libraries l_libs_start,load_lib_end
cmp eax,-1
je exit
push check1
call [init_checkbox]
init_checkboxes2 check1,check1_end
;push check1
;call [init_checkbox]
call clear_messages
; set default path = /RD/1/
@ -201,9 +202,8 @@ button:
dec eax
jnz nopack
mov eax,[check1+32]
test eax,10b
jnz @f
bt dword[check1.flags],1
jc @f
call pack
jmp still

View File

@ -80,9 +80,10 @@ err_message_found_lib, head_f_l, myimport, err_message_import, head_f_i
;winypos=ycoord*65536+ysize
mov [winypos],eax
;------------------------------------------------------------------------------
init_checkboxes2 check1,check1_end
mcall 48,3,sc,40
edit_boxes_set_sys_color edit1,edit1_end,sc ;set color
check_boxes_set_sys_color check1,check1_end,sc ;set color
check_boxes_set_sys_color2 check1,check1_end,sc ;set color
;------------------------------------------------------------------------------
align 4
;main loop when process name isn't edited.
@ -105,14 +106,14 @@ still:
push dword edit1
call [edit_box_mouse]
push dword[check1+32]
push dword[check1.flags]
push dword check1
call [check_box_mouse]
pop eax
cmp eax, dword[check1+32]
cmp eax, dword[check1.flags]
jz still_end
push dword check1
@ -605,6 +606,7 @@ edit_box_key dd aEdit_box_key
edit_box_mouse dd aEdit_box_mouse
;version_ed dd aVersion_ed
init_checkbox dd aInit_checkbox
check_box_draw dd aCheck_box_draw
check_box_mouse dd aCheck_box_mouse
;version_ch dd aVersion_ch
@ -621,8 +623,9 @@ aEdit_box_key db 'edit_box_key',0
aEdit_box_mouse db 'edit_box_mouse',0
;aVersion_ed db 'version_ed',0
aCheck_box_draw db 'check_box_draw',0
aCheck_box_mouse db 'check_box_mouse',0
aInit_checkbox db 'init_checkbox2',0
aCheck_box_draw db 'check_box_draw2',0
aCheck_box_mouse db 'check_box_mouse2',0
;aVersion_ch db 'version_ch',0
;aOption_box_draw db 'option_box_draw',0
@ -630,7 +633,7 @@ aCheck_box_mouse db 'check_box_mouse',0
;aVersion_op db 'version_op',0
;------------------------------------------------------------------------------
align 4
check1 check_box 10,383,6,11,0x80AABBCC,0,0,check_text,check_t_e,0;ch_flag_en
check1 check_box2 (10 shl 16)+11,(383 shl 16)+11,6, 0x80AABBCC,0,0,check_text, ch_flag_bottom ;ch_flag_en
check1_end:
edit1 edit_box 350,95,381,0xffffff,0x6f9480,0,0xAABBCC,0,start_application_c,\
start_application,mouse_dd,ed_focus,start_application_e,start_application_e
@ -656,8 +659,7 @@ tbts: db 'SEITE ZURUECK SEITE VOR REBOOT SYSTEM'
tbte:
tbts_3 db 'START'
tbte_2:
check_text db '@ on/off'
check_t_e=$-check_text
check_text db '@ on/off',0
title db 'Prozesse - Ctrl/Alt/Del',0
;--------------------------------------
else if lang eq et
@ -670,8 +672,7 @@ tbts: db 'EELMINE LEHT J
tbte:
tbts_3 db 'START'
tbte_2:
check_text db '@ on/off'
check_t_e=$-check_text
check_text db '@ on/off',0
title db 'Protsessid - Ctrl/Alt/Del'
;--------------------------------------
else if lang eq ru
@ -684,8 +685,7 @@ tbts: db '
tbte:
tbts_3 db '‡€<E280A1>Š'
tbte_2:
check_text db '@ ¢ª«/¢ëª«'
check_t_e=$-check_text
check_text db '@ ¢ª«/¢ëª«',0
title db '„¨á¯¥âç¥à ¯à®æ¥áᮢ - Ctrl/Alt/Del',0
;--------------------------------------
else
@ -698,8 +698,7 @@ tbts: db 'PREV PAGE NEXT PAGE REBOOT SYSTEM'
tbte:
tbts_3 db ' RUN'
tbte_2:
check_text db '@ on/off'
check_t_e=$-check_text
check_text db '@ on/off',0
title db 'Process manager - Ctrl/Alt/Del',0
end if