From 210849b561a230c3f058262c88f55f750a85b2b3 Mon Sep 17 00:00:00 2001 From: IgorA Date: Wed, 8 Dec 2010 18:45:24 +0000 Subject: [PATCH] update: 1) 'kol_f_edit' 2) documentation 'info_checkbox.htm' git-svn-id: svn://kolibrios.org@1714 a494cfbc-eb01-0410-851d-a64ba20cac60 --- programs/develop/kol_f_edit/ced_code_g.inc | 79 ++-- programs/develop/kol_f_edit/ced_constr.inc | 12 +- programs/develop/kol_f_edit/ced_wnd_m.inc | 178 +++++---- programs/develop/kol_f_edit/ced_wnd_prop.inc | 342 ++++++++++++++++++ programs/develop/kol_f_edit/kol_f_edit.asm | 167 ++++----- programs/develop/kol_f_edit/ob_o.asm | 98 ++--- programs/develop/kol_f_edit/obj_codes.inc | 23 ++ .../trunk/doc/checkbox/info_checkbox.htm | 22 +- .../libraries/box_lib/trunk/tree_list.mac | 146 ++++---- 9 files changed, 716 insertions(+), 351 deletions(-) create mode 100644 programs/develop/kol_f_edit/ced_wnd_prop.inc create mode 100644 programs/develop/kol_f_edit/obj_codes.inc diff --git a/programs/develop/kol_f_edit/ced_code_g.inc b/programs/develop/kol_f_edit/ced_code_g.inc index a7c30696b9..cf1641cf98 100644 --- a/programs/develop/kol_f_edit/ced_code_g.inc +++ b/programs/develop/kol_f_edit/ced_code_g.inc @@ -164,7 +164,7 @@ push ebx cmp eax,0 je .find_no - cmp byte[eax],C_ST + cmp byte[eax],C_STR jne @f stdcall get_code_struct,eax ;юсЁрсюЄър юс·хъЄр stdcall dword[tl_node_poi_get_next_info], esi,tree2 @@ -181,31 +181,31 @@ push ebx stdcall [ted_text_add], tedit0,txt_ends,6,ted_opt_ed_move_cursor jmp .beg_iterat @@: - cmp byte[eax],C_TT + cmp byte[eax],C_TXT jne @f stdcall get_code_text,eax ;юсЁрсюЄър юс·хъЄр @@: - cmp byte[eax],C_IN + cmp byte[eax],C_INC jne @f stdcall get_code_incl,eax ;юсЁрсюЄър юс·хъЄр @@: - cmp byte[eax],C_CO + cmp byte[eax],C_COM jne @f stdcall get_code_comment,eax ;юсЁрсюЄър юс·хъЄр @@: - cmp byte[eax],C_VR + cmp byte[eax],C_VAR jne @f stdcall get_code_variable,eax,ebx ;юсЁрсюЄър юс·хъЄр @@: - cmp byte[eax],C_WI + cmp byte[eax],C_WND jne @f stdcall get_code_window,eax ;юсЁрсюЄър юс·хъЄр @@: - cmp byte[eax],C_AC + cmp byte[eax],C_ACO jne @f stdcall get_code_auto,eax ;юсЁрсюЄър юс·хъЄр @@: - cmp byte[eax],C_KE ;ъыртшрЄєЁр + cmp byte[eax],C_KEY ;ъыртшрЄєЁр jne @f stdcall get_code_key,eax ;юсЁрсюЄър юс·хъЄр @@: @@ -298,7 +298,7 @@ proc get_code_auto_m cmp ebx,0 je .find_no - cmp byte[ebx],C_ED + cmp byte[ebx],C_EDB jne @f stdcall insert_text, txt_std_mouse_ed ;insert_sp @@ -307,7 +307,7 @@ proc get_code_auto_m stdcall [ted_text_add], tedit0,edx,eax,ted_opt_ed_move_cursor insert_nl @@: - cmp byte[ebx],C_CB + cmp byte[ebx],C_CHB jne @f stdcall insert_text, txt_std_mouse_cb ;insert_sp @@ -343,7 +343,7 @@ proc get_code_auto_data_el cmp ebx,0 je .find_no - cmp byte[ebx],C_ED + cmp byte[ebx],C_EDB jne @f ;1,2,3,4,...,6,...8,...,10 - w,x,y,col_fon,...,col_frame,...,col_txt,...,txt stdcall insert_text_prop, ebx,0 @@ -362,7 +362,7 @@ proc get_code_auto_data_el stdcall insert_text, txt_txt mov edx,fp_icon - stdcall get_obj_id, ebx,edx + stdcall get_obj_id_str, ebx,edx stdcall insert_text,edx stdcall insert_text, txt_mouse_dd @@ -396,11 +396,11 @@ proc get_code_auto_data_el .null_string: insert_nl @@: - cmp byte[ebx],C_DT + cmp byte[ebx],C_DTT jne @f stdcall insert_text, txt_txt mov edx,fp_icon - stdcall get_obj_id, ebx,edx + stdcall get_obj_id_str, ebx,edx stdcall insert_text,edx stdcall insert_text, txt_db stdcall insert_text_prop, ebx,0 @@ -440,7 +440,7 @@ proc get_code_auto_data_libs_param stdcall insert_text, txt_sys_dir ;object code mov edx,fp_icon - stdcall get_obj_id, ebx,edx + stdcall get_obj_id_str, ebx,edx stdcall insert_text,edx stdcall insert_text,txt_db ;stdcall insert_text, txt_str_beg @@ -508,7 +508,7 @@ proc get_code_auto_data_libs_struc stdcall insert_text, txt_lib ;object code mov edx,fp_icon - stdcall get_obj_id, ebx,edx + stdcall get_obj_id_str, ebx,edx stdcall insert_text,edx insert_sp stdcall insert_text, txt_ll @@ -666,12 +666,12 @@ proc get_code_auto_data_dop cmp ebx,0 je .find_no - cmp byte[ebx],C_ED + cmp byte[ebx],C_EDB jne @f ;1,2,3,4,...,6,...8,...,10 - w,x,y,col_fon,...,col_frame,...,col_txt,...,txt stdcall insert_text, txt_txt mov edx,fp_icon - stdcall get_obj_id, ebx,edx + stdcall get_obj_id_str, ebx,edx stdcall insert_text,edx stdcall get_obj_text_col,ebx,10 @@ -690,7 +690,7 @@ proc get_code_auto_data_dop stdcall insert_text, txt_rb stdcall insert_text, txt_txt mov edx,fp_icon - stdcall get_obj_id, ebx,edx + stdcall get_obj_id_str, ebx,edx stdcall insert_text,edx stdcall insert_text, txt_minus @@ -717,7 +717,7 @@ proc get_code_auto_data_dop insert_0 insert_nl @@: - ;cmp byte[ebx],C_CB + ;cmp byte[ebx],C_CHB ;jne @f ;@@: @@ -745,7 +745,7 @@ proc get_code_auto_but cmp ebx,0 je .find_no - cmp byte[ebx],C_BU + cmp byte[ebx],C_BUT jne @f insert_tab insert_cmp @@ -797,7 +797,7 @@ proc get_code_a_but_fun cmp ebx,0 je .find_no - cmp byte[ebx],C_BU + cmp byte[ebx],C_BUT jne @f stdcall get_obj_text_col,ebx,6 stdcall str_len,edx @@ -851,7 +851,7 @@ proc get_code_funct_key cmp ebx,0 je .find_no - cmp byte[ebx],C_ED + cmp byte[ebx],C_EDB jne @f stdcall insert_text, txt_std_key_ed stdcall insert_text_prop,ebx,0 @@ -984,19 +984,19 @@ proc get_code_draw_obj cmp ebx,0 je .find_no - cmp byte[ebx],C_ED + cmp byte[ebx],C_EDB jne @f stdcall insert_text, txt_editb_draw stdcall insert_text_prop, ebx,0 insert_nl @@: - cmp byte[ebx],C_CB + cmp byte[ebx],C_CHB jne @f stdcall insert_text, txt_cbox_draw stdcall insert_text_prop, ebx,0 insert_nl @@: - cmp byte[ebx],C_BU + cmp byte[ebx],C_BUT jne @f insert_tab stdcall insert_text, txt_mov @@ -1048,7 +1048,7 @@ proc get_code_draw_obj stdcall insert_text, txt_i_40 insert_nl @@: - cmp byte[ebx],C_RE + cmp byte[ebx],C_REC jne @f insert_tab stdcall insert_text, txt_mov @@ -1087,7 +1087,7 @@ proc get_code_draw_obj stdcall insert_text, txt_i_40 insert_nl @@: - cmp byte[ebx],C_DT ;Ёшёютрэшх ЄхъёЄр ўхЁхч ёшёЄ. Ї. 4 + cmp byte[ebx],C_DTT ;Ёшёютрэшх ЄхъёЄр ўхЁхч ёшёЄ. Ї. 4 jne @f insert_tab stdcall insert_text, txt_mov @@ -1120,7 +1120,7 @@ proc get_code_draw_obj insert_coma stdcall insert_text, txt_txt mov edx,fp_icon - stdcall get_obj_id, ebx,edx + stdcall get_obj_id_str, ebx,edx stdcall insert_text,edx insert_nl @@ -1295,8 +1295,11 @@ txt_key_2: db 9,'jmp still',13 txt_key_3: +;яюыєўрхь яюЁ фъют√щ эюьхЁ юс·хъЄр юЄэюёшЄхы№эю ярь Єш ¤ыхьхэЄр tree2 +;output: +; txt_buf - ёЄЁюър ё эюьхЁюь юс·хъЄр align 4 -proc get_obj_id, p_obj:dword, txt_buf:dword +proc get_obj_id_str, p_obj:dword, txt_buf:dword push eax ecx edx mov eax,dword[p_obj] sub eax,[tree2.data_info] @@ -1312,6 +1315,22 @@ proc get_obj_id, p_obj:dword, txt_buf:dword ret endp +;яюыєўрхь яюЁ фъют√щ эюьхЁ юс·хъЄр юЄэюёшЄхы№эю ярь Єш ¤ыхьхэЄр tree2 +;output: +; eax - эюьхЁ юс·хъЄр +align 4 +proc get_obj_id, p_obj:dword + push ecx edx + mov eax,dword[p_obj] + sub eax,[tree2.data_info] + xor edx,edx + xor ecx,ecx + mov cx,word[tree2.info_size] + div ecx + pop edx ecx + ret +endp + ;--- ЄхъёЄют√х ЇєэъЎшш --- align 4 diff --git a/programs/develop/kol_f_edit/ced_constr.inc b/programs/develop/kol_f_edit/ced_constr.inc index 3e00b4f7bf..eebc80eed2 100644 --- a/programs/develop/kol_f_edit/ced_constr.inc +++ b/programs/develop/kol_f_edit/ced_constr.inc @@ -24,7 +24,7 @@ pushad @@: xor edx,edx - mov dl,C_WI + mov dl,C_WND stdcall find_obj_in_file,edx ;eax - указатель на структуру окна cmp eax,0 je .end_draw @@ -81,15 +81,15 @@ pushad .end_skin: xor edx,edx ;рисуем графические элементы - mov dl,C_BU + mov dl,C_BUT stdcall draw_arr_objects, edx,draw_obj_but - mov dl,C_ED + mov dl,C_EDB stdcall draw_arr_objects, edx,draw_obj_edit - mov dl,C_CB + mov dl,C_CHB stdcall draw_arr_objects, edx,draw_obj_check - mov dl,C_DT + mov dl,C_DTT stdcall draw_arr_objects, edx,draw_obj_text - mov dl,C_RE + mov dl,C_REC stdcall draw_arr_objects, edx,draw_obj_rect_f13 .end_draw: diff --git a/programs/develop/kol_f_edit/ced_wnd_m.inc b/programs/develop/kol_f_edit/ced_wnd_m.inc index 8226b14a92..2eee9e7d56 100644 --- a/programs/develop/kol_f_edit/ced_wnd_m.inc +++ b/programs/develop/kol_f_edit/ced_wnd_m.inc @@ -1,91 +1,3 @@ -align 4 -draw_obj_info: ;окно со свойствами объекта - mov eax,13 ;rect - mov edx,WND_CAPT_COLOR - mov ebx,[wndObjI.left] - shl ebx,16 - add ebx,[wndObjI.width] - mov ecx,[wndObjI.top] - add ecx,[recMain.top] - shl ecx,16 - add ecx,[wndObjI.height] - sub ecx,[recMain.top] - mov edx,0xffffff ;0x80ffffff - int 0x40 ;прямоугольник для окна - - mov ecx,[wndObjI.top] ;draw caption - shl ecx,16 - add ecx,[recMain.top] - mov edx,WND_CAPT_COLOR - int 0x40 - - mov edx,[foc_obj] ;берем указатель на объект - cmp edx,0 - je .exit_fun -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; - pushad - ;draw caption wndObjI - mov eax,4 ;подпись - название объекта - - mov bl,[edx] - call find_obj_in_opt - mov edx,edi - - mov ebx,[wndObjI.left] - add ebx,[recMain.left] - add ebx,4 - shl ebx,16 - add ebx,[wndObjI.top] - add ebx,4 - mov ecx,0xc0d000ff - mov edi,WND_CAPT_COLOR - add edx,obj_opt.info-obj_opt - int 0x40 - - mov eax,8 ;кнопка для сохранения изменений - mov ebx,[wndObjI.left] - add ebx,119 - shl ebx,16 - add ebx,18 - mov ecx,[wndObjI.top] - add ecx,1 - shl ecx,16 - add ecx,18 - mov edx,10 - mov esi,0xd040 - int 0x40 - - ror ebx,16 ;вычисляем координаты для иконки - ror ecx,16 - and ebx,0xffff - and ecx,0xffff - inc ebx - inc ecx - stdcall draw_icon, 17,ebx,ecx ;17 - save - - mov edi,edit2 - .cycle: - stdcall [edit_box_draw], edi ;рисуем поля со свойствами объекта - add edi,ed_struc_size - cmp edi,prop_wnd_edits_end - jl .cycle - - popad -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; - - xor ebx,ebx ;номер поля - .draw_column: - mov eax,ebx - imul eax,[recMain.height] - add eax,[recMain.top] - add eax,[wndObjI.top] - stdcall draw_icon_obj,[edx],ebx,eax - - inc ebx - cmp ebx,MAX_OPT_FIELDS - jl .draw_column - .exit_fun: - ret ;поднимаем объект вверх по списку align 4 @@ -134,20 +46,47 @@ align 4 but_element_change: ;foc_obj - указатель на последний выбранный узел в tree2 cmp dword[foc_obj],0 - je @f + je .err_obj pushad + ;установка текстовых свойств xor ebx,ebx mov edi,edit2 - .cycle: + @@: call get_obj_win_param inc ebx add edi,ed_struc_size cmp edi,prop_wnd_edits_end - jl .cycle + jl @b + + ;установка ссылки на объект типа + mov edx,dword[foc_obj] + mov dword[edx+u_object.typid-u_object],0 ;на случай если ничего не выбрано + stdcall [tl_node_get_data],tree3 + pop eax + cmp eax,0 + je @f + mov eax,dword[eax] ;берем порядковый номер (в памяти) выбранного объекта + mov dword[edx+u_object.typid-u_object],eax + @@: + + ;установка логических свойств + mov edi,ch1.flags + mov eax,1 + xor ebx,ebx + @@: + bt dword[edi],1 ;почему оно тут не работает я не знаю ... ??? + jnc .opt_no_sel + or ebx,eax ;накопление отмеченных опций + .opt_no_sel: + shl eax,1 + add edi,ch_struc_size + cmp edi,check_boxes_end + jl @b + mov dword[edx+u_object.modif-u_object],ebx popad - @@: + .err_obj: call draw_constructor ;обновляем окно конструктора - call draw_window + ;call draw_window ret ;input: @@ -259,7 +198,7 @@ pop ebx endp align 4 -proc draw_icon_obj, o_type:dword,n_col:dword, coord_y:dword +proc draw_obj_icon, o_type:dword,n_col:dword, coord_y:dword pushad xor ebx,ebx mov bl,byte[o_type] @@ -283,8 +222,7 @@ proc draw_icon_obj, o_type:dword,n_col:dword, coord_y:dword mov eax,7 mov ecx,0x100010 ;ecx - size:16*16 - mov edx,[wndObjI.left] - add edx,3 ;отступ от левого края рамки до иконки + mov edx,3 ;отступ от левого края рамки до иконки shl edx,16 add edx,[coord_y] int 0x40 @@ -293,6 +231,54 @@ proc draw_icon_obj, o_type:dword,n_col:dword, coord_y:dword ret endp +;вывод текста с подписью +align 4 +proc draw_obj_caption, o_type:dword,n_col:dword, coord_y:dword + pushad + stdcall get_obj_text_len_col, [foc_obj], [n_col] ;eax - длинна поля + cmp eax,1 + jl .no_draw + + xor ebx,ebx + mov bl,byte[o_type] + call find_obj_in_opt + + mov edx,edi + add edx,obj_opt.caption-obj_opt + + mov eax,[n_col] + mov ebx,150 + shl ebx,16 + add ebx,dword[coord_y] + add ebx,3 + mov ecx,0 ;text color + + mov esi,edx + .beg_found: + cmp byte[esi],0 + je .end_found + cmp byte[esi],'*' + je @f + inc esi + jmp .beg_found + @@: + cmp eax,0 + je .end_found + dec eax + inc esi + mov edx,esi ;переключаем начало строки на след. подпись + jmp .beg_found + .end_found: + cmp esi,edx + jle .no_draw + sub esi,edx ;esi = text len + mov eax,4 + int 0x40 + .no_draw: + popad + ret +endp + align 4 proc draw_icon, ind:dword,coord_x:dword,coord_y:dword pushad diff --git a/programs/develop/kol_f_edit/ced_wnd_prop.inc b/programs/develop/kol_f_edit/ced_wnd_prop.inc new file mode 100644 index 0000000000..214f2c15e7 --- /dev/null +++ b/programs/develop/kol_f_edit/ced_wnd_prop.inc @@ -0,0 +1,342 @@ +; +; в этом файле собраны функции нужные для создания и +; работы окна со свойствами объекта +; + +prop_edits_top equ 25 +prop_edits_height equ 18 +prop_wnd_width equ 520 ;ширина окна со свойствами объекта + +prop_wnd_run db 0 ;переменная следящая за тем что-бы не запускать больше 1-го окна со свойствами одновременно + +;даное окно (процесс) вызываеться функцией on_file_object_select +align 4 +prop_start: +pushad + mcall 40,0x27 ;маска ожидаемых событий + + ; настройка текстовых полей + xor ebx,ebx + mov edi,edit2 + @@: + stdcall set_obj_win_param, ebx,edi + inc ebx + add edi,ed_struc_size + cmp edi,prop_wnd_edits_end + jl @b + + ; настройка списка объектов, определяющих типы переменных + stdcall dword[tl_data_init], tree3 + cmp byte[err_ini0],1 + je @f + mov dword[tree3.data_img],bmp_icon + @@: + mov eax,dword[icon_tl_sys] + mov dword[tree3.data_img_sys],eax + + mov edx,[foc_obj] + cmp byte[edx],C_VAR + jne .sel_end + + stdcall [tl_node_poi_get_info], 0,tree2 + pop edx + @@: + cmp edx,0 + je @f + stdcall [tl_node_poi_get_data], edx,tree2 + pop esi ;получаем данные узла +;------ добавление объекта в список ------------------------------------------- + mov ebx,[foc_obj] + cmp ebx,esi + je .add_end ;избегаем циклической ссылки + mov bl,[esi] + cmp bl,C_TDF + je .add_beg + cmp bl,C_STR + je .add_beg + jmp .add_end + .add_beg: + stdcall get_obj_id,esi + mov edi,u_object + mov dword[edi],eax + add edi,4 + inc esi ;переходим на имя объекта + mov ecx,MAX_LEN_OBJ_TXT + cld + rep movsb + + call find_obj_in_opt ;edi = pointer to ObjOpt struct + mov cx,word[edi+obj_opt.img-obj_opt] + cmp cx,0 + jge .zero + xor cx,cx ;что-бы не глючило с отрицательным индексом + .zero: + shl ecx,16 ;в ecx индекс иконки + + stdcall dword[tl_node_add], u_object, ecx, tree3 ;структура u_object в данном случае не соблюдается, она нужна просто как память для вставки + stdcall dword[tl_cur_next], tree3 ;переносим курсор вниз, что-бы не поменялся порядок + .add_end: +;------- + stdcall [tl_node_poi_get_next_info], edx,tree2 + pop edx ;переходим к следущему узлу + jmp @b + @@: + + ;ставим курсор на нужную позицию + mov edx,[foc_obj] ;берем указатель на объект + cmp edx,0 + je .sel_end + mov edx,dword[edx+u_object.typid-u_object] + stdcall [tl_cur_beg],tree3 + @@: + stdcall [tl_node_get_data],tree3 + pop eax + cmp eax,0 + je .sel_end + cmp dword[eax],edx + je .sel_end ;если нашли указатель + stdcall [tl_cur_next],tree3 + jmp @b + .sel_end: + + ;чистка подписей + mov dword[ch1.text],ch_text + mov dword[ch2.text],ch_text + mov dword[ch3.text],ch_text + mov dword[ch4.text],ch_text + + ;установка новых подписей + mov esi,[foc_obj] ;берем указатель на объект + mov bl,byte[esi] + call find_obj_in_opt + mov edi,dword[edi+obj_opt.bit_prop-obj_opt] + cmp edi,0 + je .no_bit_capts ;если 1-е битовое свойство пустое, то в цикл не заходим + mov edx,ch1.text + xor al,al ;0 - символ конца строки + add edi,obj_opt + @@: + mov [edx],edi ;записываем текст в check_box + xor ecx,ecx + dec ecx ;ecx - число просматриваемых байт + cld + repne scasb ;ищем конец строки (al=0) + cmp byte[edi],0 + je .no_bit_capts ;если следующей строки нет выход из цикла + + add edx,ch_struc_size + cmp edx,check_boxes_end + jl @b + .no_bit_capts: + + ;установка флажков + mov esi,[foc_obj] ;берем указатель на объект + mov edx,ch1.flags + xor eax,eax + @@: + bt dword[esi+u_object.modif-u_object],eax + jc .flag_set + btr dword[edx],1 ;снимаем галочку + jmp .end_set + .flag_set: + bts dword[edx],1 ;ставим галочку (ch_flag_en = 10b = 2^1) + .end_set: + + inc eax + add edx,ch_struc_size + cmp edx,check_boxes_end + jl @b + + init_checkboxes2 check_boxes,check_boxes_end + check_boxes_set_sys_color2 check_boxes,check_boxes_end,sc +popad + +align 4 +prop_red_win: +pushad + mcall 12,1 + + xor eax,eax + mov edi,hed + mov edx,[foc_obj] ;берем указатель на объект + cmp edx,0 + je @f + mov bl,[edx] + call find_obj_in_opt + add edi,obj_opt.info-obj_opt ;edi - подпись (название объекта) + @@: + mov ebx,30*65536+prop_wnd_width + mov ecx,50*65536+250 + mov edx,0xffffd0 + or edx,0x33000000 + int 0x40 + + mov edx,[foc_obj] ;берем указатель на объект + cmp edx,0 + je .exit_fun + + mov eax,8 ;кнопка для сохранения изменений + mov ebx,prop_wnd_width-18-20 + shl ebx,16 + add ebx,18 + mov ecx,3 + shl ecx,16 + add ecx,18 + mov edx,10 + mov esi,0xd040 + int 0x40 + + ror ebx,16 ;вычисляем координаты для иконки + ror ecx,16 + and ebx,0xffff + and ecx,0xffff + inc ebx + inc ecx + stdcall draw_icon, 17,ebx,ecx ;17 - save + + mov edi,edit2 + .cycle: + stdcall [edit_box_draw], edi ;рисуем поля со свойствами объекта + add edi,ed_struc_size + cmp edi,prop_wnd_edits_end + jl .cycle + + cmp [err_ini0],1 + je .exit_fun + cmp [err_ini1],1 + je .exit_fun + + mov edx,[foc_obj] ;берем указатель на объект + xor ebx,ebx ;номер поля + .draw_column: + mov eax,ebx + imul eax,prop_edits_height + add eax,prop_edits_top + stdcall draw_obj_icon,[edx],ebx,eax + stdcall draw_obj_caption,[edx],ebx,eax + + inc ebx + cmp ebx,MAX_OPT_FIELDS + jl .draw_column + + cmp byte[edx],C_VAR + jne .no_tree + mov dword[w_scr_t3.all_redraw],1 + stdcall [tl_draw], tree3 + .no_tree: + + checkboxes_draw2 check_boxes,check_boxes_end + + .exit_fun: + mcall 12,2 +popad + +align 4 +prop_still: + pushad + mcall 10 + + cmp al,1 ;изм. положение окна + jz prop_red_win + cmp al,2 + jne @f + call prop_key + @@: + cmp al,3 + jz prop_button + cmp al,6 + jne @f + call prop_mouse + @@: + popad + jmp prop_still + +align 4 +prop_key: +push eax edi + mcall 2 + mov edi,edit2 + .cycle: + stdcall [edit_box_key], edi + add edi,ed_struc_size + cmp edi,prop_wnd_edits_end + jl .cycle + + mov edi,[foc_obj] + cmp byte[edi],C_VAR + jne @f + stdcall [tl_key], tree3 + @@: +pop edi eax + ret + +align 4 +prop_mouse: + push edi + mov edi,edit2 + .cycle: + stdcall [edit_box_mouse], edi + add edi,ed_struc_size + cmp edi,prop_wnd_edits_end + jl .cycle + + mov edi,[foc_obj] + cmp byte[edi],C_VAR + jne @f + stdcall [tl_mouse], tree3 + @@: + + checkboxes_mouse2 check_boxes,check_boxes_end + + pop edi + ret + +align 4 +prop_button: + mcall 17 ;получить код нажатой кнопки + + cmp ah,10 + jne @f + call but_element_change + mov ah,1 ;для закрытия окна + @@: + + cmp ah,1 + jne prop_still +.exit: + mov dword[tree3.data_img],0 ;чистим указатели на иконки что-бы их не удалил деструктор + mov dword[tree3.data_img_sys],0 ;т. к. они еще используються в других элементах + stdcall dword[tl_data_clear], tree3 + mov byte[prop_wnd_run],0 ;обнуляем счетчик окон + mcall -1 ;выход из программы + +;дерево с объектами в пользовательском файле +tree3 tree_list sizeof.object,(MAX_CED_OBJECTS shr 2)+2, tl_key_no_edit+tl_list_box_mode,\ + 16,16, 0xffffff,0xb0d0ff,0xd000ff, 320,30,165,125, 0,4,MAX_LEN_OBJ_TXT, el_focus,\ + w_scr_t3,0 + +align 4 +w_scr_t3: +.size_x dw 16 ;+0 +rb 2+2+2 +.btn_high dd 15 ;+8 +.type dd 1 ;+12 +.max_area dd 100 ;+16 +rb 4+4 +.bckg_col dd 0xeeeeee ;+28 +.frnt_col dd 0xbbddff ;+32 +.line_col dd 0 ;+36 +rb 4+2+2 +.run_x: +rb 2+2+2+2+4+4+4+4+4+4 +.all_redraw dd 0 ;+80 +.ar_offset dd 1 ;+84 + +check_boxes: +ch1 check_box2 (320 shl 16+11),(160 shl 16 +11),5,0xffffff,0,0x80000000,ch_text,ch_flag_en+ch_flag_middle +ch2 check_box2 (320 shl 16+11),(175 shl 16 +11),5,0xffffff,0,0x80000000,ch_text,ch_flag_en+ch_flag_middle +ch3 check_box2 (320 shl 16+11),(190 shl 16 +11),5,0xffffff,0,0x80000000,ch_text,ch_flag_en+ch_flag_middle +ch4 check_box2 (320 shl 16+11),(205 shl 16 +11),5,0xffffff,0,0x80000000,ch_text,ch_flag_en+ch_flag_middle +check_boxes_end: + +ch_text db 0 diff --git a/programs/develop/kol_f_edit/kol_f_edit.asm b/programs/develop/kol_f_edit/kol_f_edit.asm index a6d3aaa5eb..96f6bad3f7 100644 --- a/programs/develop/kol_f_edit/kol_f_edit.asm +++ b/programs/develop/kol_f_edit/kol_f_edit.asm @@ -16,10 +16,11 @@ include '../../develop/libraries/box_lib/trunk/box_lib.mac' include 'mem.inc' include 'dll.inc' include 'strlen.inc' +include 'obj_codes.inc' @use_library_mem mem.Alloc,mem.Free,mem.ReAlloc, dll.Load -hed db 'kol_f_edit 29.11.10',0 +hed db 'kol_f_edit 08.12.10',0 sizeof.TreeList equ 20 ;need for element 'tree_list' @@ -33,39 +34,38 @@ buf2d_size_lt equ dword[edi+4] ; buf2d_color equ dword[edi+16] ;цвет фона буфера buf2d_bits equ byte[edi+20] ;количество бит в 1-й точке изображения -MAX_LEN_OBJ_TXT equ 200 + MAX_CED_OBJECTS equ 200 MAX_OPT_FIELDS equ 11 -MAX_OBJ_TYPES equ 18 +MAX_OBJ_TYPES equ 18 ;максимальное число объектов +MAX_OBJ_CAPTIONS equ 1000 ;размер дополнительных подписей подписей WND_CAPT_COLOR equ 0xb0d0ff BUF_SIZE equ 1000 -C_TD equ 't' ;typedef -C_AC equ 'a' ;автоматические коды (auto code) -C_ST equ 's' ;struct -C_IN equ '#' ;include -C_TT equ 'd' ;блок кода (данных) -C_VR equ '-' ;переменная -C_CO equ ';' ;комментарий -C_WI equ 'w' ;окно -C_CB equ 'c' ;CheckBox -C_OP equ 'o' ;OptionBox -C_ED equ 'e' ;EditBox -C_BU equ 'b' ;Button -C_DT equ 'x' ;рисовать текст -C_RE equ 'r' ;рисовать прямоугольник -C_KE equ 'k' ;клавиатура -C_LIB equ 'l' -C_IFN equ 'f' - ;modif CPP_MOD_ACM equ 2 ;события мыши BIT_MOD_ACM equ 1 ;события мыши +CPP_MOD_ACI equ 4 ; включения +BIT_MOD_ACI equ 2 ; включения CPP_MOD_ACD equ 8 ;данные объектов BIT_MOD_ACD equ 3 ;данные объектов CPP_MOD_ABU equ 16 ;связывание кнопок BIT_MOD_ABU equ 4 ;связывание кнопок +CPP_MOD_WI_CA equ 16 ; стиль окна подпись +CPP_MOD_WI_AO equ 32 ; стиль окна координаты относительно клиентской области +CPP_MOD_WI_RD equ 64 ; стиль окна перерисовка окна +CPP_MOD_WI_GR equ 128 ; стиль окна градиент +CPP_MOD_CHE equ 512 ; ch_flag_en - выбран CheckBox +CPP_MOD_TXT_ASCII_0 equ 1 ; текст заканчив. 0 +CPP_MOD_TXT_TRAN equ 4 ; текст прозрачный +CPP_MOD_TXT_CHAR2 equ 2 ; текст 2-м шрифтом +CPP_MOD_EDIT_FOC equ 1 ; EditBox в фокусе +CPP_MOD_EDIT_FIO equ 2 ; +CPP_MOD_RE_GR equ 1 ; градиентный прямоугольник +CPP_MOD_BUT_NFON equ 1 ; стиль Button не рисовать кнопку +CPP_MOD_BUT_NBORD equ 2 ; стиль Button не рисовать границу + macro load_image_file path,buf,size ;макрос для загрузки изображений { copy_path path,sys_path,fp_icon,0x0 ;формируем полный путь к файлу изображения, подразумеваем что он в одной папке с программой @@ -116,13 +116,14 @@ struct object ends struct ObjOpt - c db ? + db ? bl_type db ? graph db ? info rb 30 caption rb 200 Col rw MAX_OPT_FIELDS img rw MAX_OPT_FIELDS ;индексы картинок (в файле 'icon.bmp') + bit_prop dd 0 ;битовые свойства ends SKIN_H equ 22 @@ -151,6 +152,7 @@ icon_font_s1 dd 0 ;ука fn_syntax db 'asm.syn',0 ;имя загружаемого файла синтаксиса include 'ced_wnd_m.inc' +include 'ced_wnd_prop.inc' ;файл с функциями окна свойств объекта include 'ced_constr.inc' ;файл с функциями окна конструктора include 'ced_code_g.inc' ;файл с функциями генерирования кодов @@ -180,17 +182,15 @@ start: mcall -1 ;exit not correct @@: - mov eax,[wndObjI.top] - add eax,[recMain.top] - inc eax - mov ebx,[wndObjI.left] - add ebx,16+6 ;ширина иконки + отступы + ;задание размеров полей со свойствами + mov eax,prop_edits_top + mov ebx,16+6 ;ширина иконки + отступы mov edi,edit2 @@: mov ed_top,eax ;отступ сверху mov ed_left,ebx ;отступ слева add edi,ed_struc_size - add eax,[recMain.height] + add eax,prop_edits_height cmp edi,prop_wnd_edits_end jl @b @@ -226,8 +226,9 @@ start: load_image_file fn_icon_tl_sys, icon_tl_sys,TREE_ICON_SYS16_BMP_SIZE ;если изображение не открылось, то в icon_tl_sys будут ;не инициализированные данные, но ошибки не будет, т. к. буфер нужного размера - m2m dword[tree1.data_img_sys],dword[icon_tl_sys] - m2m dword[tree2.data_img_sys],dword[icon_tl_sys] + mov eax,dword[icon_tl_sys] + mov dword[tree1.data_img_sys],eax + mov dword[tree2.data_img_sys],eax ;1-й файл скина load_image_file fn_skin_1, icon_font_s1,IMAGE_FILE_SKIN1_SIZE @@ -254,7 +255,7 @@ start: ;load options file mov eax,70 mov [run_file_70.Position], 0 - mov [run_file_70.Count], sizeof.ObjOpt*MAX_OBJ_TYPES + mov [run_file_70.Count], sizeof.ObjOpt*MAX_OBJ_TYPES+MAX_OBJ_CAPTIONS mov [run_file_70.Buffer], obj_opt mov [run_file_70.FileName], fp_obj_opt mov ebx,run_file_70 @@ -271,7 +272,7 @@ start: cmp bl,0 je @f ;xor ecx,ecx ;в ecx будет индекс иконки - mov cx,word[eax+sizeof.ObjOpt-2*MAX_OPT_FIELDS] + mov cx,word[eax+obj_opt.img-obj_opt] cmp cx,0 jge .zero xor cx,cx ;что-бы не глючило с отрицательным индексом @@ -454,21 +455,15 @@ pushad int 0x40 @@: - cmp [err_ini0],1 - je err_init_icon - cmp [err_ini1],1 - je err_init_icon - call draw_obj_info ;окно редактирования выбранного объекта - err_init_icon: - stdcall [edit_box_draw], dword edit1 stdcall [edit_box_draw], dword edit_sav - stdcall [tl_draw],dword tree1 + mov dword[w_scr_t1.all_redraw],1 - stdcall [scrollbar_ver_draw],dword w_scr_t1 - stdcall [tl_draw],dword tree2 + ;stdcall [scrollbar_ver_draw],dword w_scr_t1 + stdcall [tl_draw],dword tree1 mov dword[w_scr_t2.all_redraw],1 - stdcall [scrollbar_ver_draw],dword w_scr_t2 + ;stdcall [scrollbar_ver_draw],dword w_scr_t2 + stdcall [tl_draw],dword tree2 cmp byte[show_mode],0 ;условие видимости окна конструктора jne @f @@ -485,14 +480,6 @@ popad align 4 mouse: stdcall [edit_box_mouse], dword edit1 - push edi - mov edi,edit2 - .cycle: - stdcall [edit_box_mouse], edi - add edi,ed_struc_size - cmp edi,prop_wnd_edits_end - jl .cycle - pop edi stdcall [edit_box_mouse], dword edit_sav stdcall [tl_mouse], dword tree1 stdcall [tl_mouse], dword tree2 @@ -507,26 +494,9 @@ align 4 key: mcall 2 stdcall [edit_box_key], dword edit1 - push edi - mov edi,edit2 - .cycle: - stdcall [edit_box_key], edi - add edi,ed_struc_size - cmp edi,prop_wnd_edits_end - jl .cycle - pop edi stdcall [edit_box_key], dword edit_sav stdcall [tl_key], dword tree1 stdcall [tl_key], dword tree2 - -; cmp ah,178 ;Up -; jne @f -; cmp [cur_y],0 -; je @f -; dec [cur_y] -; call get_obj_pos -; call draw_window -; @@: jmp still @@ -541,10 +511,10 @@ button: jne @f call but_save_proj @@: - cmp ah,10 - jne @f - call but_element_change - @@: + ;cmp ah,10 + ;jne @f + ;call but_element_change + ;@@: cmp ah,11 jne @f call but_show_constructor @@ -653,7 +623,7 @@ but_open_proj: call find_obj_in_opt ;edi = pointer to ObjOpt struct - mov cx,word[edi+sizeof.ObjOpt-2*MAX_OPT_FIELDS] + mov cx,word[edi+obj_opt.img-obj_opt] cmp cx,0 jge .zero xor cx,cx ;что-бы не глючило с отрицательным индексом @@ -743,6 +713,8 @@ but_save_proj: ret ;берет номер по порядку по указателю на структуру объекта +;output: +; eax - номер объекта align 4 proc get_obj_npp, p_obj_str:dword mov eax,2 @@ -820,22 +792,19 @@ ted_save_err_msg: ;функция обратная к данной but_element_change align 4 on_file_object_select: - stdcall [tl_node_get_data], tree2 - pop dword[foc_obj] - cmp dword[foc_obj],0 - je @f - push ebx edi - xor ebx,ebx - mov edi,edit2 - .cycle: - stdcall set_obj_win_param, ebx,edi - inc ebx - add edi,ed_struc_size - cmp edi,prop_wnd_edits_end - jl .cycle - pop edi ebx + cmp byte[prop_wnd_run],0 + jne @f + mov byte[prop_wnd_run],1 + stdcall [tl_node_get_data], tree2 + pop dword[foc_obj] + cmp dword[foc_obj],0 + je @f + pushad + ;все действия по настройке элементов управления выполняются в окне со свойствами + mcall 51,1,prop_start,prop_thread + popad @@: - call draw_window + ;call draw_window ret align 4 @@ -944,9 +913,9 @@ buf_skin3: show_mode db 0 ;режим для показа определенного окна txtErrOpen db 'Не найден файл, проверьте правильность имени',0 txtErrIni1 db 'Не открылся файл с опциями',0 -err_opn db 0 -err_ini0 db 0 ;??? -err_ini1 db 0 +err_opn db 0 ;рез. открытия файла проэкта +err_ini0 db 0 ;рез. открытия файла с иконками +err_ini1 db 0 ;рез. открытия файла с опциями edit1 edit_box 210, 10, 5, 0xffffff, 0xff80, 0xff, 0xff0000, 0x4080, 300, ed_text1, mouse_dd, 0, 7, 7 @@ -987,7 +956,7 @@ mouse_dd dd ? el_focus dd tree1 ;дерево со списком возможных типов объектов tree1 tree_list sizeof.ObjOpt,20+2, tl_key_no_edit+tl_draw_par_line+tl_list_box_mode,\ - 16,16, 0xffffff,0xb0d0ff,0xd000ff, 5,50,125,100, 0,3,0, el_focus,\ + 16,16, 0xffffff,0xb0d0ff,0xd000ff, 5,50,125,280, 0,3,0, el_focus,\ w_scr_t1,on_add_object ;дерево с объектами в пользовательском файле tree2 tree_list sizeof.object,MAX_CED_OBJECTS+2, tl_draw_par_line,\ @@ -1187,15 +1156,13 @@ sc system_colors image_data dd 0 ;память для преобразования картинки функциями libimg -recMain BOX 3,20,16,18 ;координаты: 1,2 - отступы; 3,4 - размер ced_info object 0 ;on start == 0 rb sizeof.object*(MAX_CED_OBJECTS-1) -wndObjI BOX 5,155,125+16,175 text_buffer db BUF_SIZE dup(0) fn_obj_opt db 'ob_o.opt',0 obj_opt ObjOpt - rb sizeof.ObjOpt*(MAX_OBJ_TYPES-1) + rb sizeof.ObjOpt*(MAX_OBJ_TYPES-1)+MAX_OBJ_CAPTIONS db 0 ;eof options cur_x dd 0 @@ -1308,6 +1275,10 @@ import_box_lib: edit_box_mouse dd aEdit_box_mouse edit_box_set_text dd aEdit_box_set_text + init_checkbox dd aInit_checkbox + check_box_draw dd aCheck_box_draw + check_box_mouse dd aCheck_box_mouse + scrollbar_ver_draw dd aScrollbar_ver_draw scrollbar_hor_draw dd aScrollbar_hor_draw @@ -1370,6 +1341,10 @@ dd 0,0 aEdit_box_mouse db 'edit_box_mouse',0 aEdit_box_set_text db 'edit_box_set_text',0 + aInit_checkbox db 'init_checkbox2',0 + aCheck_box_draw db 'check_box_draw2',0 + aCheck_box_mouse db 'check_box_mouse2',0 + aScrollbar_ver_draw db 'scrollbar_v_draw',0 aScrollbar_hor_draw db 'scrollbar_h_draw',0 @@ -1508,6 +1483,8 @@ i_end: fp_icon rb 1024 ;icon file path fp_obj_opt rb 1024 ;obj options file patch rb 1024 + prop_thread: + rb 1024 thread: ;вверху дочерний стек для окна сообщения rb 1024 stacktop: ;вверху стек основной программы diff --git a/programs/develop/kol_f_edit/ob_o.asm b/programs/develop/kol_f_edit/ob_o.asm index 81b26a1bd7..e74264b459 100644 --- a/programs/develop/kol_f_edit/ob_o.asm +++ b/programs/develop/kol_f_edit/ob_o.asm @@ -1,26 +1,8 @@ ;lang equ ru -MAX_LEN_OBJ_TXT equ 200 +include 'obj_codes.inc' -C_TD equ 't' ;typedef -C_AC equ 'a' ;автоматические коды (auto code) -C_ST equ 's' ;struct -C_IN equ '#' ;include -C_TT equ 'd' ;блок кода (данных) -C_VR equ '-' ;переменная -C_CO equ ';' ;комментарий -C_WI equ 'w' ;окно -C_CB equ 'c' ;CheckBox -C_OP equ 'o' ;OptionBox -C_ED equ 'e' ;EditBox -C_BU equ 'b' ;Button -C_DT equ 'x' ;рисовать текст -C_RE equ 'r' ;рисовать прямоугольник -C_KE equ 'k' ;клавиатура -C_LIB equ 'l' -C_IFN equ 'f' - -macro ObjOpt c,bl_type,graph,info,caption,Col,img +macro ObjOpt c,bl_type,graph,info,caption,Col,img,bit_prop { db c db bl_type @@ -30,43 +12,49 @@ rb @b+30-$ @@: db caption rb @b+MAX_LEN_OBJ_TXT-$ dw Col -dw img +dw img ;индексы картинок (в файле 'icon.bmp') +dd bit_prop+0 } -ObjOpt C_TD, 0,0,'Тип данного','',\ +ObjOpt C_TDF, 0,0,'Тип данного','',\ < 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0>,\ < 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1> -ObjOpt C_VR, 0,0,'Переменная','имя переменной*значение по умолчанию*комментарий',\ +ObjOpt C_VAR, 0,0,'Переменная','имя переменной*значение по умолчанию*комментарий',\ <40, 80, 0, 0, 0, 0, 0, 0, 0, 0, 0>,\ < 0, -1, 5, -1, -1, -1, -1, -1, -1, -1, -1> -ObjOpt C_ST, 1,0,'Структура','имя структуры*параметры для макроса',\ +ObjOpt C_STR, 1,0,'Структура','имя структуры*параметры для макроса',\ <40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0>,\ < 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1> -ObjOpt C_AC, 1,0,'Авто код','',\ +ObjOpt C_ACO, 1,0,'Авто код','',\ <0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0>,\ - <2, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1> -ObjOpt C_BU, 1,1,'Кнопка','идентификатор*отступ слева*отступ сверху*ширина*высота*цвет*имя метки при нажатии',\ + <2, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1>,\ + txt_bit_auto +ObjOpt C_BUT, 1,1,'Кнопка','идентификатор*отступ слева*отступ сверху*ширина*высота*цвет*имя метки при нажатии',\ <20, 40, 60, 80,100,120, 0, 0, 0, 0, 0>,\ - <29, 15, 16, 26, 27, 25, -1, -1, -1, -1,-1> -ObjOpt C_ED, 1,1,'Текстовое поле','***отступ сверху*цвет фона*цвет выделения при удерживании shift или мышкой*цвет рамки*при неактивном боксе цвет рамки*цвет текста*максимальная длина текста*начальный текст',\ + <29, 15, 16, 26, 27, 25, -1, -1, -1, -1,-1>,\ + txt_bit_but +ObjOpt C_EDB, 1,1,'Текстовое поле','***отступ сверху*цвет фона*цвет выделения при удерживании shift или мышкой*цвет рамки*при неактивном боксе цвет рамки*цвет текста*максимальная длина текста*начальный текст',\ <30, 40, 50, 60, 80,100,120,140,160,170, 0>,\ - <10, 26, 15, 16, 25, 25, 25, 25, 25, -1, 4> -ObjOpt C_OP, 1,1,'Радио кнопка','имя*отступ слева*отступ сверху*цвет фона внутри*цвет рамки и внутр. галочки*цвет текста*подпись*отступ до надписи*размер квадрата',\ + <10, 26, 15, 16, 25, 25, 25, 25, 25, -1, 4>,\ + txt_bit_edit +ObjOpt C_OPT, 1,1,'Радио кнопка','имя*отступ слева*отступ сверху*цвет фона внутри*цвет рамки и внутр. галочки*цвет текста*подпись*отступ до надписи*размер квадрата',\ <40, 50, 60, 80,100,120,180,190, 0, 0, 0>,\ < 9, 15, 16, 25, 25, 25, 4, 26, 27, -1, -1> -ObjOpt C_CB, 1,1,'Флажок','***подпись*цвет фона внутри*цвет рамки и внутр. галочки*цвет текста*отступ до надписи*размер квадрата',\ +ObjOpt C_CHB, 1,1,'Флажок','***подпись*цвет фона внутри*цвет рамки и внутр. галочки*цвет текста*отступ до надписи*размер квадрата',\ <40, 50, 60,120,140,160,180,190, 0, 0, 0>,\ - < 8, 15, 16, 4, 25, 25, 25, 26, 27, -1, -1> -ObjOpt C_TT, 1,0,'asm код','',\ + < 8, 15, 16, 4, 25, 25, 25, 26, 27, -1, -1>,\ + txt_bit_che +ObjOpt C_TXT, 1,0,'asm код','',\ < 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0>,\ <11, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1> -ObjOpt C_WI, 1,1,'Окно','**отступ слева*отступ сверху*ширина*высота*цвет клиентской области*цвет заголовка (если есть)',\ +ObjOpt C_WND, 1,1,'Окно','**отступ слева*отступ сверху*ширина*высота*цвет клиентской области*цвет заголовка (если есть)',\ <98,100,110,120,130,150,170, 0, 0, 0, 0>,\ - <12, -1, 15, 16, 26, 27, 25, 25, -1, -1, -1> -ObjOpt C_CO, 1,0,'Комментарий','строка комментария',\ + <12, -1, 15, 16, 26, 27, 25, 25, -1, -1, -1>,\ + txt_bit_wnd +ObjOpt C_COM, 1,0,'Комментарий','строка комментария',\ < 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0>,\ < 5, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1> -ObjOpt C_IN, 1,0,'Включение файла','имя файла*комментарий',\ +ObjOpt C_INC, 1,0,'Включение файла','имя файла*комментарий',\ <100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0>,\ < 6, 5, -1, -1, -1, -1, -1, -1, -1, -1, -1> ObjOpt C_LIB, 1,0,'Импорт библиотеки','имя библ.*сист. дир.*метка импорта*приставка*ошибка не найдена*ошибка не могу открыть',\ @@ -75,18 +63,44 @@ ObjOpt C_LIB, 1,0,' ObjOpt C_IFN, 1,0,'Функция из библиотеки','програмное имя функции*импортируемое имя функции',\ <100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0>,\ <21, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1> -ObjOpt C_DT, 1,1,'Рисование текста','***цвет текста*цвет фона (если есть)',\ +ObjOpt C_DTT, 1,1,'Рисование текста','текстовая строка*координата по x*координата по y*цвет текста*цвет фона (если есть)',\ <40, 50, 60, 80, 0, 0, 0, 0, 0, 0, 0>,\ - < 4, 15, 16, 25, 25, -1, -1, -1, -1, -1, -1> -ObjOpt C_RE, 1,1,'Прямоугольник','цвет*отступ слева*отступ сверху*ширина*высота',\ + < 4, 15, 16, 25, 25, -1, -1, -1, -1, -1, -1>,\ + txt_bit_caption +ObjOpt C_REC, 1,1,'Прямоугольник','цвет*отступ слева*отступ сверху*ширина*высота',\ <20, 40, 60, 80, 0, 0, 0, 0, 0, 0, 0>,\ <25, 15, 16, 26, 27, -1, -1, -1, -1, -1, -1> -ObjOpt C_KE, 1,0,'Событие на клавиатуру','',\ +ObjOpt C_KEY, 1,0,'Событие на клавиатуру','',\ < 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0>,\ <28, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1> ObjOpt 0x0d, 1,0, '-','',\ <20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0>,\ <-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1> +dd 0 ;разделитель + +;названия битовых свойств +txt_bit_auto db 'подключения файлов',0 + db 'события от мыши',0 + db 'коды элементов',0 + db 'нажатия на кнопки',0 + db 0 +txt_bit_wnd db 'подпись окна',0 + db 'окно не закрашивает клиентскую обл.',0 + db 'коорд. относительно клиентской обл.',0 + db 'градиентная заливка раб. обл.',0 + db 0 +txt_bit_edit db 'в фокусе',0 + db 'цифры от 0-9',0 + db 0 +txt_bit_che db 'check_box выбран',0 + db 0 +txt_bit_but db 'не рисовать кнопку',0 + db 'не рисовать границу при нажатии',0 + db 0 +txt_bit_caption db 'строка ASCII заканч. 0',0 + db 'заливка фона',0 + db '2-й шрифт',0 + db 0 diff --git a/programs/develop/kol_f_edit/obj_codes.inc b/programs/develop/kol_f_edit/obj_codes.inc new file mode 100644 index 0000000000..bb43bfcfa2 --- /dev/null +++ b/programs/develop/kol_f_edit/obj_codes.inc @@ -0,0 +1,23 @@ +; +; в этом файле собраны коды объектов +; + +C_TDF equ 't' ;typedef +C_ACO equ 'a' ;автоматические коды (auto code) +C_STR equ 's' ;struct +C_INC equ '#' ;include +C_TXT equ 'd' ;блок кода (данных) +C_VAR equ '-' ;переменная +C_COM equ ';' ;комментарий +C_WND equ 'w' ;окно +C_CHB equ 'c' ;CheckBox +C_OPT equ 'o' ;OptionBox +C_EDB equ 'e' ;EditBox +C_BUT equ 'b' ;Button +C_DTT equ 'x' ;рисовать текст +C_REC equ 'r' ;рисовать прямоугольник +C_KEY equ 'k' ;клавиатура +C_LIB equ 'l' ;библиотека +C_IFN equ 'f' ;библиотечная подключаемая функция + +MAX_LEN_OBJ_TXT equ 200 \ No newline at end of file diff --git a/programs/develop/libraries/box_lib/trunk/doc/checkbox/info_checkbox.htm b/programs/develop/libraries/box_lib/trunk/doc/checkbox/info_checkbox.htm index f5c4888adf..428ad9c6a6 100644 --- a/programs/develop/libraries/box_lib/trunk/doc/checkbox/info_checkbox.htm +++ b/programs/develop/libraries/box_lib/trunk/doc/checkbox/info_checkbox.htm @@ -55,6 +55,7 @@

┬хЁёш  ¤ыхьхэЄр

╤ЄЁєъЄєЁр checkbox2

+

╨рчьхЁ ёЄЁєъЄєЁ√ checkbox2 єърчрэ тэєЄЁш Їрщыр box_lib.mac т ярЁрьхЄЁх ch_struc_size.

struc check_box2 left_s,top_s,ch_text_margin,color,border_color,text_color,text,flags
 {				;ёЄЁєъЄєЁр ярЁрьхЄЁют фы  ўхъ сюъёр
 .left_s: 	dd left_s	;+0 яюыюцхэшх яю ї dw + ЁрчьхЁ dw
@@ -68,19 +69,22 @@
 .size_of_str:	dd 0x0		;фышээр ёЄЁюъш, т√ўшёы хЄё  яЁш шэшЎшрышчрЎшш ъюьяюэхэЄр
 }
 
-

left_s - юЄёЄєя ёыхтр + фышээр т ЇюЁьрЄх (яюыюцхэшх яю x * 65536 +фышээр яю ї).

-

top - юЄёЄєя ётхЁїє + фышээр яю y (яюыюцхэшх яю y* 65536 +фышээр яю y).

+

left_s - юЄёЄєя ёыхтр + °шЁшэр (т ЇюЁьрЄх: яюыюцхэшх яю x * 65536 + фышээр яю ї).

+

top_s - юЄёЄєя ётхЁїє + т√ёюЄр (т ЇюЁьрЄх: яюыюцхэшх яю y * 65536 + фышээр яю y).

ch_text_margin - ЁрёёЄю эшх юЄ яЁ ьюєуюы№эшър ўхъ сюъёр фю эрфяшёш.

color - ЎтхЄ тэєЄЁш ўхъсюъёр.

╤Єшыш ¤ыхьхэЄр

-
-ch_flag_en  =   10b		;Їыру єёЄрэютыхээюую ўхъ сюъёр.
-ch_flag_top =   0x0             ;Їыру Ёрёяюыюцхэш  ЄхъёЄр ттхЁїє Є.х. 3-щ сшЄ
-ch_flag_middle  =   100b        ;Їыру Ёрёяюыюцхэш  ЄхъёЄр т ЎхэЄЁх Є.х. 4-щ сшЄ.
-ch_flag_bottom  =   1000b	;Їыру Ёрёяюыюцхэш  ЄхъёЄр т эшчє Є.х. яю єьюыўрэш■ яЁшэшьрхЄё  чэрўхэшх тэшчє Є.х. юЄёєёЄтшх 3-ую ш 4-ую сшЄр
-
+

ch_flag_en = 10b

+

╘ыру єёЄрэютыхээюую ўхъ сюъёр.

+

ch_flag_top = 0x0

+

╘ыру Ёрёяюыюцхэш  ЄхъёЄр ттхЁїє Є.х. 3-щ сшЄ.

+

ch_flag_middle = 100b

+

╘ыру Ёрёяюыюцхэш  ЄхъёЄр т ЎхэЄЁх Є.х. 4-щ сшЄ.

+

ch_flag_bottom = 1000b

+

╘ыру Ёрёяюыюцхэш  ЄхъёЄр т эшчє Є.х. яю єьюыўрэш■ яЁшэшьрхЄё  чэрўхэшх тэшчє Є.х. юЄёєёЄтшх 3-ую ш 4-ую сшЄр

+

Checkbox version 1

@@ -122,6 +126,6 @@ ch_flag_bottom = 1000b ;

╘ырцюъ т√сЁрэ.


-

─юъєьхэЄрЎш  юсэюты ырё№ яюёыхфэшщ Ёрч 10.01.10.

+

─юъєьхэЄрЎш  юсэюты ырё№ яюёыхфэшщ Ёрч 08.12.10.

\ No newline at end of file diff --git a/programs/develop/libraries/box_lib/trunk/tree_list.mac b/programs/develop/libraries/box_lib/trunk/tree_list.mac index e41d9e7f3a..b0bdb872fc 100644 --- a/programs/develop/libraries/box_lib/trunk/tree_list.mac +++ b/programs/develop/libraries/box_lib/trunk/tree_list.mac @@ -1,6 +1,6 @@ ; ьръЁюё фы  ёшёЄхьэющ сшсышюЄхъш box_lib.obj ; ¤ыхьхэЄ TreeList фы  Kolibri OS -; Їрщы яюёыхфэшщ Ёрч шчьхэ ыё  09.06.2010 IgorA +; Їрщы яюёыхфэшщ Ёрч шчьхэ ыё  01.12.2010 IgorA ; эр ъюф яЁшьхэхэр GPL2 ышЎхэчш  @@ -918,87 +918,87 @@ tl_get_display_cur_pos: ; ; esi = coord of bottom border align 4 tl_draw_node: ;ЁшёєхЄ єчхы ё: ърЁЄшэъющ, яюфяшё№■, шъюэъющ юЄъЁ√Єш /чръЁ√Єш  ш ышэш ьш ъ ЁюфшЄ. єчыє - push eax ebx ecx edx esi + push eax ebx ecx edx esi - mov ebx,1 ;1 - ьхёЄю яюф ъєЁёюЁ ш яюф чэръ +,- - bt tl_style,2 ;tl_list_box_mode - jc @f - inc ebx ;+1 - ьхёЄю яюф чэръ +,- - @@: - add bl,byte[edx+2];get level - imul bx,tl_img_cx - add ebx,tl_box_left + mov ebx,1 ;1 - ьхёЄю яюф ъєЁёюЁ + bt tl_style,2 ;tl_list_box_mode + jc @f + inc ebx ;+1 - ьхёЄю яюф чэръ +,- + add bl,byte[edx+2] ;фюсрты хь єЁютхэ№ ¤ыхьхэЄр фы  хую єўхЄр т ыхтюь юЄёЄєях шъюэъш + @@: + imul bx,tl_img_cx + add ebx,tl_box_left - shl ebx,16 - mov bx,tl_img_cx - xor ecx,ecx - mov cx,tl_img_cy - imul ecx,eax - add ecx,tl_box_top - add cx,tl_capt_cy + shl ebx,16 + mov bx,tl_img_cx + xor ecx,ecx + mov cx,tl_img_cy + imul ecx,eax + add ecx,tl_box_top + add cx,tl_capt_cy - ;crop image if on the border - cmp esi,ecx ;хёыш єчхы тэшчє ш хую тююс∙х эх тшфэю - jl .end_draw + ;crop image if on the border + cmp esi,ecx ;хёыш єчхы тэшчє ш хую тююс∙х эх тшфэю + jl .end_draw - sub esi,ecx - shl ecx,16 - mov cx,tl_img_cy - cmp si,tl_img_cy - jge @f - mov cx,si ;хёыш єчхы тшфхэ ўрёЄшўэю (яюяры эр эшцэ■■ уЁрэшЎє) - jmp .crop ;яЁюяєёърхь Ёшёютрэшх эрфяшёш, ъюЄюЁр  ёъюЁхх тёхую Єюцх т√ыхчхЄ чр эшцэ■■ уЁрэшЎє - @@: - call tl_draw_node_caption - .crop: - mov esi,ecx ;save ecx + sub esi,ecx + shl ecx,16 + mov cx,tl_img_cy + cmp si,tl_img_cy + jge @f + mov cx,si ;хёыш єчхы тшфхэ ўрёЄшўэю (яюяры эр эшцэ■■ уЁрэшЎє) + jmp .crop ;яЁюяєёърхь Ёшёютрэшх эрфяшёш, ъюЄюЁр  ёъюЁхх тёхую Єюцх т√ыхчхЄ чр эшцэ■■ уЁрэшЎє + @@: + call tl_draw_node_caption + .crop: + mov esi,ecx ;save ecx - cmp tl_data_img,0 - jne .draw_img_n - push edx - mov edx,tl_col_txt - mov eax,13 - int 0x40 ;draw node rect - pop edx - jmp @f - .draw_img_n: - push ebx edx esi - xor esi,esi - mov si,word[edx] ;get icon type - mov edx,ebx - ror ecx,16 - mov dx,cx - mov cx,bx - ror ecx,16 - mov ebx,3 ;rgb = 3 bytes - imul bx,tl_img_cx - imul bx,tl_img_cy - imul ebx,esi ;esi = icon index - add ebx,tl_data_img + cmp tl_data_img,0 + jne .draw_img_n + push edx + mov edx,tl_col_txt + mov eax,13 + int 0x40 ;draw node rect + pop edx + jmp @f + .draw_img_n: + push ebx edx esi + xor esi,esi + mov si,word[edx] ;get icon type + mov edx,ebx + ror ecx,16 + mov dx,cx + mov cx,bx + ror ecx,16 + mov ebx,3 ;rgb = 3 bytes + imul bx,tl_img_cx + imul bx,tl_img_cy + imul ebx,esi ;esi = icon index + add ebx,tl_data_img - mov eax,7 - int 0x40 ;draw node icon '-' - pop esi edx ebx - @@: + mov eax,7 + int 0x40 ;draw node icon '-' + pop esi edx ebx + @@: - mov al,byte[edx+2] ;draw minus '-' - mov ecx,tl_data_nodes - add ecx,sizeof.TreeList + mov al,byte[edx+2] ;draw minus '-' + mov ecx,tl_data_nodes + add ecx,sizeof.TreeList - mov ah,10 ;get icon index '+' or '-' ? - cmp byte[edx+3],1 - jne .close - dec ah - .close: + mov ah,10 ;get icon index '+' or '-' ? + cmp byte[edx+3],1 + jne .close + dec ah + .close: - call tl_draw_node_icon_opn_clo ;Ёшёютрэшх шъюэъш юЄъЁ√Єюую шыш чръЁ√Єюую єчыр - bt tl_style,1 - jae .end_draw - call tl_draw_node_icon_par_lin ;Ёшёютрэшх ышэшш ъ ЁюфшЄхы№ёъюьє ¤ыхьхэЄє - call tl_draw_node_icon_par_lin_up ;Ёшёютрэшх тхЁЄшъры№эющ ышэшш ъ ЁюфшЄхы№ёъюьє ¤ыхьхэЄє - .end_draw: - pop esi edx ecx ebx eax - ret + call tl_draw_node_icon_opn_clo ;Ёшёютрэшх шъюэъш юЄъЁ√Єюую шыш чръЁ√Єюую єчыр + bt tl_style,1 + jae .end_draw + call tl_draw_node_icon_par_lin ;Ёшёютрэшх ышэшш ъ ЁюфшЄхы№ёъюьє ¤ыхьхэЄє + call tl_draw_node_icon_par_lin_up ;Ёшёютрэшх тхЁЄшъры№эющ ышэшш ъ ЁюфшЄхы№ёъюьє ¤ыхьхэЄє + .end_draw: + pop esi edx ecx ebx eax + ret ;input: ; ecx = pointer to 1 node struct