diff --git a/programs/develop/libraries/box_lib/asm/trunk/editbox_ex.mac b/programs/develop/libraries/box_lib/asm/trunk/editbox_ex.mac index 4c021b6cac..3001133fdc 100644 --- a/programs/develop/libraries/box_lib/asm/trunk/editbox_ex.mac +++ b/programs/develop/libraries/box_lib/asm/trunk/editbox_ex.mac @@ -1,3 +1,25 @@ +ed_width equ [edi] ;ширина компонента +ed_left equ [edi+4] ;положение по оси х +ed_top equ [edi+8] ;положение по оси у +ed_color equ [edi+12] ;цвет фона компонента +shift_color equ [edi+16] ;=0x6a9480 для примера возьем желеный цвет бокса +ed_focus_border_color equ [edi+20] ;цвет рамки компонента +ed_blur_border_color equ [edi+24] ;цвет не активного компонента +ed_text_color equ [edi+28] ;цвет текста +ed_max equ [edi+32] ;кол-во символов которые можно максимально ввести +ed_text equ [edi+36] ;указатель на буфер +ed_mouse_variable equ [edi+40] ; указатель на переменную для бокса/группы +ed_flags equ [edi+44] ;флаги +bp_flags equ [ebp+44] ;в некоторых процедурах edi используется, взамен указатель храниться в ebp +ed_size equ [edi+48] ;кол-во символов +bp_size equ [ebp+48] ;кол-во симвполов, для адресации испльзуется ebpб edi занят +ed_pos equ [edi+52] ;позиция курсора +ed_offset equ [edi+56] ;смещение +cl_curs_x equ [edi+60] ;предыдущее координата курсора по х +cl_curs_y equ [edi+64] ;предыдущее координата курсора по у +ed_shift_pos equ [edi+68] ;положение курсора +ed_shift_pos_old equ [edi+72] ;старое положение курсора + ed_struc_size=76 struc edit_box width,left,top,color,shift_color,focus_border_color,\ blur_border_color,text_color,max,text,mouse_variable,flags,size,pos @@ -47,6 +69,49 @@ ed_height=14 ; .shift dd 0 .shift_old dd 0 } +macro edit_boxes_set_sys_color start,end,color_table +{ + mov edi,start + mov ecx,((end-start)/ed_struc_size) + mov esi,color_table +@@: + mov eax,dword [esi+36] + mov ebx,dword [esi+20] + push dword eax + pop dword ed_focus_border_color + shr bh,1 + shr bl,1 + shr ah,1 + shr al,1 + add ah,bh + add al,bl + ror eax,16 + ror ebx,16 + shr bl,1 + shr al,1 + add al,bl + ror eax,16 + mov dword ed_blur_border_color,eax + mov dword shift_color,eax + add edi,ed_struc_size + loop @b +} +macro get_sys_colors col_buf +{ + ;mov eax,48 + push 48 + pop eax + ;mov ebx,3 + push 3 + pop ebx + ;mov ecx,col_buf + push col_buf + pop ecx + ;mov edx,40 + push 40 + pop edx + mcall +} struc check_box left,top,ch_text_margin,ch_size,color,border_color,text_color,text,ch_text_length,flags { ;структура параметров для чек бокса ch_flag_en=10b diff --git a/programs/develop/libraries/box_lib/trunk/editbox.mac b/programs/develop/libraries/box_lib/trunk/editbox.mac index 3750ca21a7..fa1331ac3d 100644 --- a/programs/develop/libraries/box_lib/trunk/editbox.mac +++ b/programs/develop/libraries/box_lib/trunk/editbox.mac @@ -1,18 +1,6 @@ ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;Basic macros for use editbox ; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -macro init_editbox -{ -pushad - mcall - -popad -} - - -macro use_editbox_draw -{ -edit_box: ed_width equ [edi] ;ширина компонента ed_left equ [edi+4] ;положение по оси х ed_top equ [edi+8] ;положение по оси у @@ -58,6 +46,19 @@ ed_mouse_on_off=1111111011111111b ed_height=14 ; высота + +macro init_editbox +{ +pushad + mcall + +popad +} + + +macro use_editbox_draw +{ +edit_box: .draw: pushad ;--- рисуем рамку --- @@ -1334,55 +1335,6 @@ macro debug_func ret ;вернуться чень интересный ход т.к. пока в стеке храниться кол-во вызовов то столько раз мы и будем вызываться } -;;;;;;;;;;;;;;; -;For LibGui -;;;;;;;;;;;;;;; -macro srt_ed_libgui -{ -ed_width equ [EditBox.ed_width] ;ширина компонента -ed_left equ [EditBox.ed_left] ;положение по оси х -ed_top equ [EditBox.ed_top] ;положение по оси у -ed_color equ [EditBox.ed_color] ;цвет фона компонента -shift_color equ [EditBox.shift_color] ;=0x6a9480 -ed_focus_border_color equ [EditBox.ed_focus_border_color] ;цвет рамки компонента -ed_blur_border_color equ [EditBox.ed_blur_border_color] ;цвет не активного компонента -ed_text_color equ [EditBox.ed_text_color] ;цвет текста -ed_max equ [EditBox.ed_max] ;кол-во символов которые можно максимально ввести -ed_text equ [EditBox.ed_text] ;указатель на буфер -ed_flags equ [EditBox.ed_flags] ;флаги -ed_size equ [EditBox.ed_size] ;кол-во символов -ed_pos equ [EditBox.ed_poz] ;позиция курсора -ed_offset equ [EditBox.ed_offset] ;смещение -cl_curs_x equ [EditBox.cl_curs_x] ;предыдущее координата курсора по х -cl_curs_y equ [EditBox.cl_curs_y] ;предыдущее координата курсора по у -ed_shift_pos equ [EditBox.ed_shift_pos] ;положение курсора -ed_shift_pos_old equ [EditBox.ed_shift_pos_old] ;старое положение курсора -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -;Bit mask from editbox -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -ed_figure_only= 1000000000000000b ;одни символы -ed_always_focus= 100000000000000b -ed_focus= 10b ;фокус приложения -ed_shift_on= 1000b ;если не установлен -значит впервые нажат shift,если был установлен, значит мы уже что - то делали удерживая shift -ed_shift_on_off=1111111111110111b -ed_shift= 100b ;включается при нажатии на shift т.е. если нажимаю -ed_shift_off= 1111111111111011b -ed_shift_bac= 10000b ;бит для очистки выделеного shift т.е. при установке говорит что есть выделение -ed_shift_bac_cl=1111111111101111b ;очистка при удалении выделения -ed_shift_cl= 1111111111100011b -ed_shift_mcl= 1111111111111011b -ed_left_fl= 100000b -ed_right_fl= 1111111111011111b -ed_offset_fl= 1000000b -ed_offset_cl= 1111111110111111b -ed_insert= 10000000b -ed_insert_cl= 1111111101111111b -ed_mouse_on = 100000000b -ed_mous_adn_b= 100011000b -ed_mouse_on_off=1111111011111111b -ed_height=24 ; высота -} - ed_struc_size=76 struc edit_box width,left,top,color,shift_color,focus_border_color,\ blur_border_color,text_color,max,text,mouse_variable,flags,size,pos diff --git a/programs/media/scrshoot/scrshoot.asm b/programs/media/scrshoot/scrshoot.asm index e153b4f4a0..3460f138c5 100644 --- a/programs/media/scrshoot/scrshoot.asm +++ b/programs/media/scrshoot/scrshoot.asm @@ -4,15 +4,15 @@ ; 01.02.07 - обновлён editbox ; 31.01.07 - всё теперь рисуется относительно клиентской области -title equ 'Screenshooter v 0.91' ; Заголовок окна +title equ 'Screenshooter v 0.92' ; Заголовок окна include '../../develop/libraries/box_lib/load_lib.mac' include '../../develop/libraries/box_lib/asm/trunk/editbox_ex.mac' ;include '../../develop/examples/editbox/trunk/editbox.inc' include '../../macros.inc' -include 'scrshoot.mac' include 'txtbut.inc' include 'label.inc' include 'textwork.inc' +include 'scrshoot.mac' ;include 'macros.inc' ; вставляем макросы ; meos_header cmdstr ; вставляем заголовок программы @@ -28,13 +28,13 @@ use32 dd cur_dir_path align 4 -include 'scrwin.inc' ; вставляем код окна прдпросмотра -include 'scrsavef.inc'; вставляем процедуру сохранения файла - @use_library use_txt_button ; | use_label ; |-- GUI компоненты и некоторые процедуры use_text_work ; / +include 'scrwin.inc' ; вставляем код окна прдпросмотра +include 'scrsavef.inc'; вставляем процедуру сохранения файла + include 'gp.inc' include 'srectwin.inc' include 'lang.inc' @@ -556,7 +556,7 @@ show_set_rect_window: ret @@: - mov eax,18 + mov eax,18 mov ebx,eax mov ecx,[set_rect_window_pid] mcall @@ -602,10 +602,10 @@ status label 5,201,0,no_shoot labels_end: editboxes: -edit1 edit_box 300,5,35,cl_white,0xaabbcc,0,0,0,300,ed_buffer.1,mouse_dd,ed_focus,10,10 ; путь к файлу -edit2 edit_box 35,75,134,cl_white,0xaabbcc,0,0,0,9,ed_buffer.2,mouse_dd,ed_figure_only,3,3 ; задержка -edit3 edit_box 35,165,164,cl_white,0xaabbcc,0,0,0,9,ed_buffer.3,mouse_dd,ed_figure_only ; автонумерация -edit4 edit_box 16,165,181,cl_white,0xaabbcc,0,0,0,1,sign_n_input,mouse_dd,ed_figure_only,1 +edit1 edit_box 300,5,35,cl_white,0,0,0,0,300,ed_buffer.1,mouse_dd,ed_focus,10,10 ; путь к файлу +edit2 edit_box 35,75,134,cl_white,0,0,0,0,9,ed_buffer.2,mouse_dd,ed_figure_only,3,3 ; задержка +edit3 edit_box 35,165,164,cl_white,0,0,0,0,9,ed_buffer.3,mouse_dd,ed_figure_only ; автонумерация +edit4 edit_box 16,165,181,cl_white,0,0,0,0,1,sign_n_input,mouse_dd,ed_figure_only,1 editboxes_end: buttons: diff --git a/programs/media/scrshoot/scrshoot.mac b/programs/media/scrshoot/scrshoot.mac index 90fae1efa3..662461d018 100644 --- a/programs/media/scrshoot/scrshoot.mac +++ b/programs/media/scrshoot/scrshoot.mac @@ -127,34 +127,6 @@ macro get_key pop eax mcall } -macro edit_boxes_set_sys_color start,end,color_table -{ - -ed_focus_border_color equ [edi+20] ;ЎтхЄ Ёрьъш ъюьяюэхэЄр -ed_blur_border_color equ [edi+24] ;ЎтхЄ эх ръЄштэюую ъюьяюэхэЄр - mov edi,start - mov ecx,((end-start)/ed_struc_size) - mov esi,color_table -@@: - mov eax,[esi+36] - mov ebx,[esi+20] - mov dword ed_focus_border_color,eax - shr bh,1 - shr bl,1 - shr ah,1 - shr al,1 - add ah,bh - add al,bl - ror eax,16 - ror ebx,16 - shr bl,1 - shr al,1 - add al,bl - ror eax,16 - mov dword ed_blur_border_color,eax - add edi,ed_struc_size - loop @b -} ;--- яюыєўшЄ№ ъюф эрцрЄющ ъэюяъш --- macro get_pressed_button { @@ -188,22 +160,6 @@ else end if mcall } -macro get_sys_colors col_buf -{ - ;mov eax,48 - push 48 - pop eax - ;mov ebx,3 - push 3 - pop ebx - ;mov ecx,col_buf - push col_buf - pop ecx - ;mov edx,40 - push 40 - pop edx - mcall -} macro get_screen_prop struc_ptr { mov eax,61 diff --git a/programs/media/scrshoot/srectwin.inc b/programs/media/scrshoot/srectwin.inc index e849e1be9d..6015c4b5b8 100644 --- a/programs/media/scrshoot/srectwin.inc +++ b/programs/media/scrshoot/srectwin.inc @@ -260,17 +260,14 @@ aOption_box_draw db 'option_box_draw',0 aOption_box_mouse db 'option_box_mouse',0 aVersion_op db 'version_op',0 - +;width,left,top,color,shift_color,focus_border_color,\ +; blur_border_color,text_color,max,text,mouse_variable,flags,size,pos rect_input: -.left edit_box 35,95,5,cl_white,0,0,0,5,rect_input_buffer.left,\ -mouse_dd1,ed_figure_only+ed_focus -.top edit_box 35,95,25,cl_white,0,0,0,5,rect_input_buffer.top,\ -mouse_dd1,ed_figure_only -.width edit_box 35,95,45,cl_white,0,0,0,5,rect_input_buffer.width,\ -mouse_dd1,ed_figure_only -.height edit_box 35,95,65,cl_white,0,0,0,5,rect_input_buffer.height,\ -mouse_dd1,ed_figure_only +.left edit_box 35,95,5, cl_white,0,0,0,5,rect_input_buffer.left,mouse_dd1,ed_figure_only+ed_focus +.top edit_box 35,95,25,cl_white,0,0,0,5,rect_input_buffer.top,mouse_dd1,ed_figure_only +.width edit_box 35,95,45,cl_white,0,0,0,5,rect_input_buffer.width,mouse_dd1,ed_figure_only +.height edit_box 35,95,65,cl_white,0,0,0,5,rect_input_buffer.height,mouse_dd1,ed_figure_only rect_input_end: mouse_dd1 rd 1 rect_input_labels: diff --git a/programs/system/cpu/trunk/cpu.asm b/programs/system/cpu/trunk/cpu.asm index 078403d535..fbd1c752d5 100644 --- a/programs/system/cpu/trunk/cpu.asm +++ b/programs/system/cpu/trunk/cpu.asm @@ -38,6 +38,8 @@ err_message_found_lib, head_f_l, myimport, err_message_import, head_f_i ;main loop when process name isn't edited. red: + mcall 48,3,sc,40 + edit_boxes_set_sys_color edit1,edit1_end,sc xor ebp,ebp inc ebp ; mov ebp,1 @@ -659,7 +661,7 @@ aEdit_box_mouse db 'edit_box_mouse',0 ;aVersion_op db 'version_op',0 edit1 edit_box 350,(64-offset_x),(398-offset_y),0xffffff,0x6f9480,0,0xAABBCC,0,start_application_c,start_application,mouse_dd,ed_focus,start_application_e,start_application_e - +edit1_end: list_start dd 0 sys_reboot: @@ -722,6 +724,7 @@ rb 60 start_application_c=$-start_application-1 I_END: +sc system_colors winxpos rd 1 winypos rd 1 mouse_dd rd 1 diff --git a/programs/system/rdsave/trunk/rdsave.asm b/programs/system/rdsave/trunk/rdsave.asm index 5a9f306906..3ba9e238ce 100644 --- a/programs/system/rdsave/trunk/rdsave.asm +++ b/programs/system/rdsave/trunk/rdsave.asm @@ -31,8 +31,8 @@ include '../../../develop/libraries/box_lib/asm/trunk/editbox_ex.mac' @use_library ;use_edit_box -al equ eax ; \ decrease kpack'ed size -purge mov ; / +;al equ eax ; \ decrease kpack'ed size +;purge mov ; / ;--------------------------------------------------------------------- ;--- НАЧАЛО ПРОГРАММЫ ---------------------------------------------- @@ -44,10 +44,17 @@ err_message_found_lib, head_f_l, myimport, err_message_import, head_f_i cmp eax,-1 jz close + mov eax, 40 mov ebx, 100111b mcall red: ; перерисовать окно + mov eax,48 + mov ebx,3 + mov ecx,sc + mov edx,sizeof.system_colors + mcall + edit_boxes_set_sys_color editbox,editbox_end,sc call draw_window ; вызываем процедуру отрисовки окна ;--------------------------------------------------------------------- @@ -167,12 +174,6 @@ clear_err: draw_window: - mov eax,48 - mov ebx,3 - mov ecx,sc - mov edx,sizeof.system_colors - mcall - mov eax,12 ; функция 12: сообщить ОС об отрисовке окна mov bl,1 ; 1 - начинаем рисовать mcall @@ -343,7 +344,7 @@ myimport: edit_box_draw dd aEdit_box_draw edit_box_key dd aEdit_box_key edit_box_mouse dd aEdit_box_mouse -version_ed dd aVersion_ed +;version_ed dd aVersion_ed dd 0 dd 0 @@ -351,7 +352,7 @@ version_ed dd aVersion_ed aEdit_box_draw db 'edit_box',0 aEdit_box_key db 'edit_box_key',0 aEdit_box_mouse db 'edit_box_mouse',0 -aVersion_ed db 'version_ed',0 +;aVersion_ed db 'version_ed',0 ;mouse_flag: dd 0x0 @@ -367,8 +368,8 @@ rb 514 sc system_colors mouse_dd rd 1 -cur_dir_path rb 4096 -library_path rb 4096 +cur_dir_path rb 1096 +library_path rb 1096 align 4 rb 0x100 ; for stack I_END: ; метка конца программы diff --git a/programs/system/run/trunk/run.asm b/programs/system/run/trunk/run.asm index 3496d2261e..f743f834d8 100644 --- a/programs/system/run/trunk/run.asm +++ b/programs/system/run/trunk/run.asm @@ -45,6 +45,7 @@ err_message_found_lib, head_f_l, myimport, err_message_import, head_f_i mcall 40,EVM_MOUSE+EVM_BUTTON+EVM_KEY+EVM_REDRAW red: mcall 48,3,sc,40 + edit_boxes_set_sys_color input_fn,input_fn_end,sc set_sys_colors_txt_button run_but,sc push dword [sc.work_graph] pop [input_fn.focus_border_color] @@ -240,7 +241,7 @@ ret run_but txt_button 0,5,15,25,2,0,0,run_but_text, input_fn edit_box 0,5,5,0xffffff,0x6a9480,0,0xaaaaaa,0,511,fn,mouse_dd,ed_focus+ed_always_focus ;mouse_flag: dd 0x0 - +input_fn_end: if lang eq ru hello db 'Введите полный путь к файлу и нажмите Enter',0 bad_file_sys db 'Неизвестная файловая система',0 ; 3 @@ -307,7 +308,7 @@ file_info: dd 0,0 .name rb 512 -flags dw ? +flags rw 1 sc system_colors